Ở phần 1, tôi đã giới thiệu một số kiến thức cơ bản về XSS. Trên thực tế, các dev thường sẽ áp dụng các bộ lọc (filter) hoặc chuẩn hóa input (sanitize) để ngăn chặn XSS attack. Tôi sẽ giới thiệu các filter hay gặp và cách bypass.
1. Filter thẻ
Ví dụ server như sau:

Server đã loại bỏ tất cả input có chứa <script. Bypass đợn giản bằng cách thay <script thành <SCRIPT hoặc <ScRiPt, …

2. Filter thẻ (case insensitive)

Payload ở trên không thực hiện được. Bypass bằng cách:

Hoặc không cần dùng thẻ . Có rất nhiều thẻ HTML khác có thể thực thi script. Một số ví dụ:

Thậm chí ta có thể chèn thẻ có tên tùy ý:

Các browser khác nhau có cách xử lý các thẻ HTML khác nhau đôi chút. Do đó một số payload trên chỉ hoạt động trên một loại browser cụ thể hoặc ở 1 số version của browser.

3. Filter kí tự space

Bypass:

4. Filter kí tự ‘, “, `

Payload:

5. Filter Script code

Bypass: Dùng Unicode character

Hoặc tạo chuỗi động (các payload dưới đây để bypass filter cụm ‘alert’):

6. Sanitize kí tự quote, doublequote trong string

Server phát hiện kí tự double quote và sanitize bằng cách thêm dấu \ phía trước.
Bypass bằng \”, kí tự \ đầu tiên sẽ triệt tiêu hiệu quả của dấu \ được chèn vào, nên “ vẫn có hiệu lực để unquote string.

7. Limit input length

Bypass: Chuyển Reflected XSS thành DOM based XSS

Hoặc khi server có nhiều trường bị lỗi XSS, ta sẽ dùng kĩ thuật multi injection:

Trong đó /* */ là cách để comment trong javascript. Kĩ thuật multi injection cũng được dùng để bypass các bộ lọc khác bằng cách chia nhỏ payload ra thành nhiều phần.
Lời kết
XSS filter thì muôn hình vạn trạng. Developper có thể nghĩ ra đủ kiểu filter. Và cách bypass thì cũng đa dạng vô cùng. Ở đây tôi chỉ nêu 1 vài payload bypass điển hình. Bạn đọc có thể tham khảo thêm ở link sau:
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
https://github.com/masatokinugawa/filterbypass/wiki/Browser’s-XSS-Filter-Bypass-Cheat-Sheet
Còn đây là hướng dẫn cho dev để có thể phát triển một ứng dụng an toàn chống XSS
https://www.owasp.org/images/0/07/Xenotix_XSS_Protection_CheatSheet_For_Developers.pdf
https://code.google.com/archive/p/browsersec/wikis/Main.wiki
Phần sau, tôi sẽ nói về bộ lọc XSS của browser, cụ thể là XSS Auditor của Google Chrome.