我正在https://www.owasp.org阅读一篇有关 XSS 过滤器规避的文章。本文中描述的定位漏洞的方法之一是尝试注入以下内容:
'';!--"<XSS>=&{()}
然后,如果文档源中存在与
该代码片段试图摆脱属性和标签的束缚,此外它还嵌入了自己的标签。您应该查找 GUI 中 HTML 的消失或格式错误或 JavaScript 中的错误。
为什么上面的代码片段会绕过一些 XSS 和转义过滤器?
事实并非如此。是什么让您认为应该这样做?文字说明了您在哪里找到此内容的?
这允许您检查 HTTP 响应中是否返回未经编码的字符。没有内置的
<XSS>
标签,所以这永远不会运行或触发任何东西,这三个字母只是为了在一堆其他内容中间再次找到你的有效负载,同时也是一个有效的标签,这样你请注意过滤器不会删除 <>
但会删除 <tag>
。
旁路注入看起来更像是这样的:
';window['ale'+'rt'](window['doc'+'ument']['dom'+'ain']);//
这避免了从字面上使用诸如“警报”之类的词,因为一些愚蠢的过滤器可能会阻止它(即使攻击者没有使用警报功能:它不允许您窃取任何数据等等,所以这相当惹恼白人帽子测试者与真正的攻击者相比......)。