XSS 过滤器绕过指南
黑盒视角下如何反向推理 XSS 过滤器后端的正则表达式
绕过 xss 检测机制 (翻译)
https://www.cnblogs.com/xsserhaha/p/10743671.html?from=timeline
原文
https://github.com/s0md3v/MyPapers/tree/master/Bypassing-XSS-detection-mechanisms
三个步骤
1 determing payload structure
2 probing
3 obfuscation
URL unsafe characters +, &
现阶段(2018/04),使用机器学习来检测 XSS 仍然是一个实验性特性, WAF 厂商更多还是使用传统正则来检测恶意 payload 。
HTML Context
XSS 存在的场景
用户输入被反射在 HTML 页面上,即可能存在 XSS, 可以说这个 输入是在 HTML 上下文中 (in the HTML context)。 HTML 上下文通常由两种情况
假设用户输入为 $input 。
1 用户输入被反射在 HTML 标签内
2 用户输入被反射在 HTML 标签外
You entered $input
用户输入被反射在 HTML 标签外
primary character (核心字符)
为了构造 XSS payload 不可或缺的字符
对于用户输入被反射在 HTML 标签外的情况,核心字符 (primary character) 是 左尖括号
根据这些信息,为了尝试确定后端的正则表达式
1
2
3 x
4
5
6
如果所有的 probe 都没有通过,很大概率这个用户输入反射点是无法被绕过的。如果这几个 probe 由任意一个被通过了,我们可以尝试一系列 payload 结构 (payload scheme)。
Payload Scheme #1
While probing, a harmless string should be used instead of {javascript}.