如何规避php sanitizer功能?

时间:2015-07-09 07:46:31

标签: php code-injection

我正在使用guestbook.php代码进行代码注入研究。 我使用的琐碎消毒剂功能如下:

php echo htmlspecialchars($ messages)

并尝试了几乎所有来自OWASP列表的不同攻击:https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

这些攻击都没有能够逃避过滤器。

有人会建议一个可以逃避这个过滤器并被执行的攻击吗?

1 个答案:

答案 0 :(得分:0)

回声的上下文非常重要。

如果 htmlspecialchars的结果是..

  • 放在之外的完整HTML标记 - 意思是,用于属性值 - 并且;
  • 放置在有效的 HTML标记中,其中可以显示文本,并且;;
  • 一个SCRIPT元素(或旧IE的STYLE元素),并且;
  • 外部可用于二阶攻击的上下文

..那么它应该是“安全的”;通过这些限制和htmlspecialchars的操作,它可以从大多数显示的XSS中免费获得。

这是因为由于转义<>&字符而无法通过创建不需要的HTML元素来输入恶意上下文。同样,它也会从另一个方向切断XSS,因为"'转义无法终止引用的 HTML属性值。

以下是一些可能失败的示例案例。请注意,所使用的字符都不是'html special',因此它绕过了[not]执行的引用:

<!-- value used directly in script context -->
<script>alert(/hacked/)</script>
        ^^^^^^^^^^^^^^^

<!-- value used as an attribute -->
<a href="javascript:alert(/hacked/)">Hello!</a>
         ^^^^^^^^^^^^^^^^^^^^^^^^^^

<!-- if the attribute is not quoted a new attribute can be injected -->
<a id=fail href=javascript:alert(/hacked/) href=..>
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^