安全研究

安全漏洞
PHP ext/filter HTML标签去除绕过漏洞

发布日期:2007-03-10
更新日期:2007-03-12

受影响系统:
PHP PHP 5.2.0
描述:
BUGTRAQ  ID: 22914

PHP是广泛使用的通用目的脚本语言,特别适合于Web开发,可嵌入到HTML中。

PHP的ext/filter在执行HTML标记检查过滤过程时存在漏洞,远程攻击者可能利用特定的字串序列绕过标记过滤,向PHP应用注入HTML代码。

PHP的ext/filter在执行过滤时首先从输入中去除HTML标签,但跟随了空格字符的左标签括号除外。这些括号被认为是足够安全的,不必去除。标签去除之后是低ASCII字符去除进程。由于一些空格字符低于ASCII值32,因此如果选择了FILTER_FLAG_STRIP_LOW的话也会从输入中去除,这样就修复了上述没有去除的无效标签,导致完全绕过HTML标签去除,向站点注入恶意HTML内容。

<*来源:Stefan Esser (s.esser@ematters.de
  
  链接:http://www.php-security.org/MOPB/MOPB-18-2007.html
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

保存以下代码并使用类似于var=<%0bscript>alert(/XSS/);<%0b/script>的方法调用:

<?php
  $var = filter_input(INPUT_GET, "var", FILTER_SANITIZE_STRING,
                      array("flags" => FILTER_FLAG_STRIP_LOW));
  echo $var;
?>

建议:
厂商补丁:

PHP
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.php.net

浏览次数:3468
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障