【问题标题】:URL encode can bypass xss filetering?URL 编码可以绕过 xss 过滤吗?
【发布时间】:2012-08-20 20:04:43
【问题描述】:

这里的第二段代码http://anautonomouszone.com/blog/xss-cheat-sheet,声称通过url编码绕过html特殊字符过滤(意思,):

Bypass filter when it strips <script> tags:
%253cscript%253ealert(document.cookie)%253c/script%253e

显然这是 URL 编码,它使服务器不知道原始内容,但我看不出它何时会转换回 &lt;script&gt;

服务器像这样得到它,然后把它发回去。 HTTP 内容未编码,因此用户将按原样获取。

我错过了什么? php函数htmlspecialchars是这样吗?

编辑:

在我在聊天中被误解之后,我会尽量让自己清楚。

这取自 XSS 备忘单。和其他 XSSes 教程。意思是,这是一种尝试绕过一些针对 XSS的方法。

我想理解的很简单:

  • 它可以绕过哪些方法(即在什么情况下这对攻击者有帮助)?
  • 是如何发生的?什么时候解码回到 http-respone 中的&lt;script&gt;
  • 我可以做些什么来避免我的网站出现这种情况?

注意,这在许多网站中都有,所以它可能不是指百万分之一的开发人员错误,而是在某种程度上很可能发生的事情。

非常感谢。

【问题讨论】:

  • 我认为一些浏览器(IE?!)仍然将其解释为
  • IE 不会对 html 进行 url 解码,也不会对整个 http-response-content 进行解码。我刚刚检查过。
  • 当服务器 URL 解码两次时,您将获得 &lt;script&gt;…
  • 为什么会被解码两次?它在 http 响应内容上,它不应该被解码一次..
  • 它在哪里声明它绕过了 htmlspecialchars 过滤器?看起来更像是黑名单过滤器预防。

标签: php xss


【解决方案1】:

几种方法:

  • 简单的 XSS 过滤器/IDS 等寻找标签如果不解码两次可能会被愚弄
  • 由于软件的复杂性,有时会发生应用服务器两次解码值的情况
  • 也有开发者对框架有误解并添加额外的 url 解码,即使它已经由服务器完成

编辑: 这是描述攻击的 OWASP 页面。在底部有两个指向真正漏洞的链接: https://www.owasp.org/index.php/Double_Encoding

【讨论】:

  • 即使开发者误解了框架,他也会尽快解码。意思是,在验证之前。你说的有趣的是关于解码两次的应用服务器。你知道吗? IIS?阿帕奇?这被认为是一个错误吗?安全漏洞?这是一个已知问题吗?在什么情况下会发生?
  • 这是一个框架本身的错误示例:ntdsxtract.com/downloads/struts2.pdf
  • 哦,IIS 在 2001 年就有这样的错误,它被认为是一个漏洞。可能还有更多最近的例子。
猜你喜欢
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多