【问题标题】:How to evade php sanitizer function?如何规避 php sanitizer 功能?
【发布时间】:2015-07-09 07:46:31
【问题描述】:

我正在使用一个guestbook.php 代码来研究代码注入。 我使用的琐碎的消毒器功能如下:

php echo htmlspecialchars($messages)

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

这些攻击都无法绕过过滤器。

有人可以建议一种可以避开此过滤器并被执行的攻击吗?

【问题讨论】:

    标签: php code-injection


    【解决方案1】:

    回显的上下文很重要。

    如果htmlspecialchars 的结果是..

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

    .. 那么它应该是“安全的”;由于这些限制和 htmlspecialchars 的操作,它不受大多数​​所示 XSS 的影响。

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

    以下是一些可能失败的示例。请注意,所使用的字符都不是“html 特殊”,因此它绕过了 [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=..>
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多