AzoPay
Tất cả bài viết
Bảo mậtLừa đảoSelf-XSS

Bẫy Self-XSS: Khi hacker lừa bạn tự hack chính mình

Không cần bẻ khóa, không cần mã OTP, kẻ lừa đảo chỉ cần thao túng bạn để chiếm quyền AzoPay Dashboard.

06 tháng 6, 20269 phút đọcbởi AzoPay
Mục lục

Bạn đang xử lý một đơn hàng chưa cập nhật trạng thái thì nhận được tin nhắn từ một “kỹ thuật viên” hoặc đối tác:

  • “Webhook bên bạn đang lỗi, mở Console rồi dán đoạn này để kiểm tra.”
  • “Giao dịch bị treo, chạy lệnh này trên trình duyệt để đồng bộ lại.”
  • “Bên kỹ thuật cần bạn chạy đoạn này để xác minh tài khoản ngân hàng.”

Nghe rất chuyên nghiệp, thậm chí giống một quy trình hỗ trợ kỹ thuật. Nhưng nếu bạn làm theo khi đang đăng nhập AzoPay Dashboard, bạn có thể vừa tự tay cho kẻ gian quyền thao tác với các cấu hình rất quan trọng của doanh nghiệp.

Trò này gọi là Self-XSS.

1. Self-XSS trên dashboard của AzoPay là gì?

Console là công cụ dành cho lập trình viên để chạy lệnh JavaScript trực tiếp trên trang web. Người dùng vận hành bình thường gần như không có lý do gì để mở cửa sổ này khi đang dùng dashboard của AzoPay.

Khi bạn đã đăng nhập AzoPay Dashboard, trình duyệt của bạn đang có một phiên đăng nhập hợp lệ. Nếu bạn dán một đoạn mã lạ vào Console và nhấn Enter, đoạn mã đó có thể chạy trong chính phiên đăng nhập của bạn.

Nói dễ hiểu: kẻ gian không cần phá cửa. Chúng chỉ cần lừa bạn tự mở cửa sau.

Bật 2FA rồi có an toàn không?

Không hoàn toàn.

2FA giúp bảo vệ bước đăng nhập. Nhưng trong trường hợp Self-XSS, bạn đã hoàn tất thao tác đăng nhập. Lúc này, kẻ xấu không cần biết mật khẩu của bạn, cũng không cần nhập OTP. Phiên làm việc hiện tại đã được hệ thống chấp nhận.

Mã độc không cần đăng nhập lại. Nó lợi dụng chính trình duyệt đang đăng nhập của bạn để đọc dữ liệu hoặc gửi yêu cầu thao tác như thể bạn đang bấm nút, thực hiện các thao tác đó.

Vì vậy, 2FA vẫn rất cần bật, nhưng không phải lý do để chủ quan với mã lạ.

2. Vì sao Self-XSS nguy hiểm với merchant dùng AzoPay?

AzoPay không hoạt động theo kiểu giữ tiền của merchant rồi tự chuyển đi. Khách hàng chuyển khoản trực tiếp vào tài khoản ngân hàng của bạn. AzoPay đọc biến động, khớp đơn và gửi webhook về hệ thống của bạn.

Vì vậy, rủi ro không phải là “AzoPay bị rút sạch tiền”. Rủi ro nằm ở việc kẻ gian thao túng các cấu hình vận hành xung quanh luồng thanh toán.

Các khu vực nhạy cảm trên dashboard gồm API key, webhook, nhật ký sự kiện, đơn hàng, giao dịch, QR tĩnh, ngân hàng liên kết và thông báo.

Khu vực bị nhắm tớiKịch bản tấn côngHậu quả thực tế với merchant
API Key ProductionSao chép key, tạo key mới hoặc dùng key có quyền quá rộng.Kẻ gian có thể gọi API từ bên ngoài trong phạm vi quyền của key, chẳng hạn đọc đơn hàng, tạo đơn, hủy đơn chờ thanh toán, đọc giao dịch hoặc quản lý webhook.
WebhookĐổi webhook URL hoặc lấy webhook secret.Dữ liệu thanh toán có thể bị gửi sai nơi. Nếu backend merchant không kiểm tra chữ ký chặt chẽ, kẻ gian có thể tìm cách giả mạo thông báo thanh toán.
Nhật ký sự kiệnĐọc hoặc copy body webhook, request log, event log.Lộ mã đơn, số tiền, nội dung chuyển khoản, mã giao dịch bank, trạng thái đơn, tài khoản nhận và các dữ liệu đối soát nhạy cảm.
Đơn hàng và giao dịch chưa khớpĐọc dữ liệu đơn, mã đối soát, trạng thái thanh toán hoặc can thiệp vào quy trình xử lý thủ công.Sai lệch đối soát, xử lý nhầm giao dịch, bỏ sót giao dịch thật hoặc ghi nhận sai trạng thái đơn hàng.
QR tĩnhLấy thông tin QR, link thanh toán hoặc cấu hình liên quan để dựng kịch bản giả mạo.Gây nhầm lẫn cho khách hàng hoặc đội vận hành, làm khó việc phân loại và đối soát nguồn tiền.
Thông báoTắt thông báo qua email, Telegram hoặc đổi nơi nhận cảnh báo.Sự cố bị phát hiện chậm hơn. Webhook lỗi, giao dịch tồn hoặc thay đổi nhạy cảm có thể kéo dài nhiều giờ trước khi có người biết.

Trong thanh toán, không phải lúc nào rủi ro cũng là “mất tiền ngay lập tức”. Nhiều khi rủi ro bắt đầu từ việc hệ thống ghi nhận sai, webhook gửi sai nơi, API key bị lộ, hoặc dữ liệu giao dịch rơi vào tay người không nên có.

3. Các kịch bản lừa đảo thường đánh trúng người vận hành

Kẻ gian thường ra tay vào đúng lúc bạn đang bối rối: có đơn lỗi, khách đang giục, webhook fail, giao dịch chưa khớp hoặc báo cáo bị lệch.

Hãy cảnh giác nếu nhận được các yêu cầu kiểu này qua Zalo, Telegram, Facebook hoặc email lạ:

  • “API key của anh có dấu hiệu lỗi quyền, chạy đoạn này để refresh.”
  • “QR tĩnh bị lệch dữ liệu, bên em cần anh chạy script xác minh.”
  • “Webhook đang treo, dán đoạn này để đồng bộ lại event.”
  • “Giao dịch chưa khớp do cache trình duyệt, mở Console chạy lệnh này là được.”
  • “Đừng thoát trang, phiên kiểm tra lỗi chỉ còn hiệu lực trong 5 phút.”

Điểm chung là chúng tạo áp lực thời gian. Khi bị giục làm nhanh, người vận hành dễ bỏ qua bước kiểm tra.

Càng gấp, càng phải chậm lại. Và tốt nhất bạn là nên liên hệ ngay với đội ngũ hỗ trợ của AzoPay khi gặp lỗi bằng tính năng "Yêu cầu hỗ trợ" nằm ngay bên trong dashboard.

4. Các quy tắc để tránh Self-XSS

  • Một nền tảng thanh toán nghiêm túc không yêu cầu merchant phổ thông mở Developer Tools hoặc Console để sửa lỗi thanh toán.
  • Không dán mã lạ vào Console.
  • Không gửi API key Production qua chat cá nhân.
  • Không chụp màn hình webhook secret.
  • Không gửi mã OTP ngân hàng, mã 2FA hoặc ảnh màn hình liên kết ngân hàng cho bất kỳ ai.
  • Không đổi webhook URL sang domain không thuộc hệ thống của bạn.
  • Không tắt 2FA, tắt cảnh báo hoặc bỏ giới hạn IP chỉ để “kiểm tra nhanh”.
  • Không cấp quyền admin cho tài khoản lạ ngoài quy trình chính thức.
  • Với API key của môi trường Production, nên bật giới hạn IP nếu có thể. Một key bị lộ nhưng chỉ gọi được từ IP máy chủ của merchant sẽ khó bị lạm dụng hơn nhiều so với key gọi được từ mọi nơi.
  • Ở phía nhận webhook của AzoPay, luôn kiểm tra chữ ký webhook bằng webhook secret. Không nên tin một request chỉ vì nó gửi đúng đến URL webhook.
  • Nếu đối tác kỹ thuật, agency, freelancer hoặc nhân viên cũ nhắn tin yêu cầu thao tác nhạy cảm, không xác minh ngay trong cùng khung chat đó. Hãy gọi điện trực tiếp, mở ticket chính thức, hoặc kiểm tra qua email/domain đã biết.

5. Nếu lỡ dán mã lạ vào Console thì làm gì?

Nếu bạn vừa dán một đoạn mã lạ vào Console khi đang mở AzoPay Dashboard, hãy xem đây là một sự cố bảo mật. Không cần chờ xem có hậu quả chưa.

Làm ngay các bước sau:

  1. Cắt phiên đăng nhập và đổi mật khẩu

    Đăng xuất khỏi các phiên đăng nhập khác nếu dashboard có chức năng này. Sau đó đổi mật khẩu mới hoàn toàn và bật 2FA nếu chưa bật.

  2. Rotate API key và webhook secret

    Tạo API key mới, cập nhật key mới vào hệ thống merchant, kiểm tra hệ thống hoạt động ổn, rồi thu hồi key cũ.

    Tạo webhook secret mới và cập nhật lại ở backend merchant.

  3. Rà soát webhook

    Kiểm tra từng ký tự của webhook URL. Domain giả mạo thường chỉ khác một chữ, thêm dấu gạch ngang, dùng đuôi miền lạ hoặc dùng subdomain gây nhầm lẫn.

    Kiểm tra nhật ký webhook xem có event gửi đến endpoint lạ, event fail bất thường hoặc resend bất thường không.

  4. Kiểm tra dữ liệu vận hành

    Xem lại đơn hàng lớn, giao dịch chưa khớp, QR tĩnh, thông báo, ngân hàng liên kết, API key, quyền người dùng và các thay đổi gần thời điểm xảy ra sự cố.

  5. Báo qua kênh hỗ trợ chính thức

    Liên hệ kênh hỗ trợ chính thức của AzoPay để phối hợp kiểm tra. Nếu dashboard đang dùng cho shop có đơn thật, không xử lý âm thầm.

Điều cần nhớ

Self-XSS nguy hiểm vì nó biến chính người dùng thành người kích hoạt tấn công.

Với AzoPay Dashboard, kẻ gian không cần điều khiển tài khoản ngân hàng của bạn. Chúng chỉ cần làm bạn mất kiểm soát các phần bao quanh luồng thanh toán: API key, webhook, đơn hàng, giao dịch, QR tĩnh, thông báo, dữ liệu đối soát và môi trường Production.

Một webhook bị đổi có thể làm dữ liệu thanh toán gửi sai nơi.

Một API key bị lộ có thể mở đường cho thao tác từ bên ngoài.

Một webhook secret bị lộ có thể khiến hệ thống merchant tin nhầm thông báo giả.

Một log giao dịch bị gửi ra ngoài có thể giúp kẻ gian dựng kịch bản lừa đảo thuyết phục hơn.

Không cần hiểu code để tránh Self-XSS.

Chỉ cần nhớ rõ:

Đang đăng nhập AzoPay Dashboard thì tuyệt đối không dán bất kỳ đoạn mã lạ nào vào Console.

Nếu ai đó bảo bạn làm vậy, dù họ nói là kỹ thuật viên, đối tác tích hợp, nhân viên hỗ trợ hay người quen, hãy dừng lại và xác minh qua kênh chính thức.

Thông tin liên hệ chính thức của AzoPay

Hỏi AI về bài viết này

Mở một trợ lý AI với câu hỏi đã điền sẵn kèm liên kết bài, để hỏi sâu thêm về chủ đề.