diff --git a/payloads/XSS/XSS-Filter-Evasion-Cheat-Sheet-CN.txt b/payloads/XSS/XSS-Filter-Evasion-Cheat-Sheet-CN.txt new file mode 100644 index 0000000..0cd971c --- /dev/null +++ b/payloads/XSS/XSS-Filter-Evasion-Cheat-Sheet-CN.txt @@ -0,0 +1,817 @@ +XSS Filter Evasion Cheat Sheet 中文版 +================================== +源文档地址:https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet + +翻译文档github地址:https://github.com/caomulaodao/XSS-Filter-Evasion-Cheat-Sheet-CN + +----- +##xss 探测器## +注入下面这些代码,在大多数没有特殊xss向量要求而易遭受脚本攻击的地方将会弹出单词“xss”。使用[url编码器][1]去编码你的整个代码。小技巧:如果你是急切的需要快去检测一个页面,通常只需要注入轻量的 "<任意字符>" 标签,然后判断输出点是否受到干扰就可以判断是否xss漏洞了。 + + ';alert(String.fromCharCode(88,83,83))//';alert(String.fromCharCode(88,83,83))//"; + alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//-- + >">'> + +------- + +##xss 探测器2## +如果你没有充足的输入空间去检测页面是否存在xss漏洞。下面这段代码是一个好的简洁的xss注入检测代码。在注入这段代码后,查看页面源代码寻找是否存在看起来像 =&{()} + +--------- + +##无过滤绕过## +这是一个常规的xss注入代码,虽然通常它会被防御,但是我们建议首先去尝试它。(引号是不被需要的在任何现代浏览器中,因此这里省略了它。) + + + +------- + +------- +##通过javascript指令实现的图片xss## + +图片xss依靠javascript指令实现。(IE7.0不支持javascript指令在图片上下文中,但是可以在其他上下文触发。下面的例子展示了一种其他标签依旧通用的原理。) + + + +----- +##无引号无分号## + + + +----- +##不区分大小写的xss攻击向量## + + + +------ +##html 实体## +The semicolons are required for this to work: + + + +----- +##重音符混淆## +如果你的javascript代码中需要同时使用单引号和双引号,那么可以使用重音符(`)来包裹javascript代码。它也经常会非常有用因为xss过滤代码未考虑到这个字符。 + + + +----- +##畸形的A标签## +跳过href属性,而直接获取xss实质攻击代码...提出被David Cross ~ 已验证在chrome浏览器 + + xxs link + +此外,chrome浏览器喜欢去补全缺失的引号为你。如果你遇到阻碍那么直接省略它们吧,chrome将会正确的帮你补全缺失的引号在URL和script中。 + + xxs link + +------ +##畸形的IMG标签## +最早被 Begeek发现(可以短小而干净的运行于任何浏览器),这个xss向量依靠松散的渲染引擎解析IMG标签中被引号包含的字符串来实现。我猜测它最初是为了正确编码而这样实现,但这样让它更加困难去解析html。 + + "> + +----- +##fromCharCode## +如果没有任何形式的引号被允许,你可以eval()一串fromCharCode在javascript中来创建任何你需要的xss向量。 + + + +----- +##默认SRC属性去绕过SRC域名检测过滤器## +这将绕过绝大多数SRC域名过滤器。插入javascript代码在任何一个事件方法同样适用于任何一个HTML标签,例如Form、Iframe、Input、Embed等等。它也允许任何该标签的相关事件去替换,例如onblur, onclick等,后面我们会附加一个可用的事件列表。由David Cross提供,Abdullah Hussam编辑。 + + + +--- +##默认SRC属性通过省略它的值## + + + +--- +##默认SRC属性通过完全不设置它## + + + +---- +##通过error事件触发alert## + + + +---- +##十进制html编码引用## +所有在中使用javascript指令的xss示例将无法工作在 Firefox 或 Netscape 8.1+,因为它们使用了 Gecko 渲染引擎。使用 XSS [Calculator][2] 获取更多信息。 + + + +----- +##结尾没有分号的十进制html编码引用## +它是经常有用的在绕过寻找"&#XX;"格式的xss过滤,因为大多数人不知道最多允许7位字符的编码限制。这也是有用的对那些对字符串解码像$tmp_string =~ s/.*\&#(\d+);.*/$1/; 的过滤器,它们错误的认为一个html编码必须要用;去结束。(我是无意中发现) + + + +----- +##结尾没有分号的十六进制html编码引用## +这也是一种实用的xss攻击针对上文的$tmp_string =~ s/.*\&#(\d+);.*/$1/; ,错误的认为数字编码跟随在#后面(十六进制htnl编码并非如此),。使用 XSS [Calculator][3] 获取更多信息。 + + + +---- +##内嵌TAB## +用来分开xss攻击代码 + + + +---- +##内嵌被编码的TAB## +用来分开xss攻击代码 + + + +----- +##内嵌换行符去分开xss代码## +一些网站声称09-13编码的所有字符(十进制)都可以实现这种形式的攻击。这是不正确的。只有09(tab), 10 (换行) 和 13 (回车)可以使用。你可以查看ascii表为更详细的信息。下面四个xss例子展示了这个向量。 + + + +------ +##编码回车符去分开xss代码## +注意:上面我编写的三个xss字符串比必须长度的字符串更长,原因是0可以被省略。通常我看到的过滤器假设十六进制和十进制的编码是两到三个字符,正确的应该是一到七个字符。 + + + +---- +##没有分割的javascript指令## +null字符也可以作为一个xss向量,但不同于上面。你需要直接注入它们利用一些工具例如Burp Proxy,或是使用 %00 在你的url字符串里。或者如果你想写你自己的注入工具你可以使用vim(^V^@ 会生成null),以及用下面的程序去生成它到一个文本文件中。好吧,我再一次撒谎了。 Opera的老版本(大约 7.11 on Windows)是脆弱的对于一个额外的字符173(软连字符)。但是null字符 %00 是更加的有用或者帮助我们绕过某些真实存在的过滤器通过变动像这个例子中的。 + + perl -e 'print "";' > out + +------ +##IMG中javascript之前添加空格和元字符为xss绕过## +xss过滤拼配模式没有考虑单词"javascript:"中可能存在空格是正确的,因为否则将无法渲染。但是这也导致了错误的假设认为你不可以有一个空格在引号和 "javascript:" 单词之间。事实上你可以插入 1-32编码字符(十进制)中的任何字符。 + + + +------ +##非字母数字字符的xss## + Firefox html解析器认为一个非数字字母的字符在一个html关键字中不是有效的,因此这些字符会被视为空白符或是无效的token在html标签之后。这导致很多xss过滤器错误的认为html标签必须是被空白符隔断的。例如," + +和上面的原理相同,我们继续扩大,Gecko渲染引擎允许字母、数字、html封装字符以外的任何字符位于事件处理器与等号之间。借此我们可以绕过xss过滤器。注意这也是适用于重音符如下所示: + + + +Yair Amit 提示我有一个小区别在 ie和Gecko 渲染引擎之间是在不使用空格的情况下,Gecko仅允许一个斜杠在html标签和参数之间。这可能是有用的在那些不允许输入空格的系统中。 + + + +----- +##额外的开括号## + Franz Sedlmaier提出,利用这个xss向量可以绕过某些检测引擎,因为这些引擎通过拼配最早出现的一对尖括号,并且提取其内部内容作为标签,而没有使用更加有效的算法例如 Boyer-Moore(寻找打开的尖括号以及相关标签的模糊拼配)。最后,代码中的双斜杠可以抑制额外尖括号导致的javascript错误。 + + < + +------ +##没关闭的script标签## +对于使用了 Gecko渲染引擎的Firefox 和 Netscape 8.1 ,你并不需要常规xss中"></SCRIPT>"这部分。 Firefox会帮你闭合标签,并且加入结束标签。多么的体贴啊! Unlike the next one, which doesn't effect Firefox, this does not require any additional HTML below it. 如果需要,你可以加入引号,但通常他并不是必须的。注意,我并不清楚这个代码被注入后html代码会闭合成什么样子。 + + 在结尾的 Opera。这是非常有用的在输入长度受到限制。域名越短越好。 ".j"是有效的,不需要考虑编码问题因为浏览拿起可以自动识别在一个script标签中。 + + + +----- +##INPUT image## + + + +----- +##BODY image## + + + +---- +##IMG DYNSRC(视频剪辑) ## + + + +---- +##IMG lowsrc(低分辨率图片)## + + + +----- +##List-style-image## + +