Lucene search

K
seebugRootSSV:4624
HistoryJan 06, 2009 - 12:00 a.m.

PHP FILTER_UNSAFE_RAW过滤器失效漏洞

2009-01-0600:00:00
Root
www.seebug.org
19

EPSS

0.004

Percentile

72.8%

CVE(CAN) ID: CVE-2008-5844

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

PHP 5.2.7错误地更改了FILTER_UNSAFE_RAW功能,无论实际的magic_quotes_gpc设置如何都可能无意中禁用magic_quotes_gpc。根据设计unsafe_raw过滤器应可选的剥离或转义特殊字符,该过滤器失效可能允许攻击者相对容易的执行SQL注入等攻击。

PHP 5.2.7
厂商补丁:

PHP

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

<a href=“http://ookoo.org/svn/snip/php_5_2-broken_filter_and_magic_quotes.patch” target=“_blank”>http://ookoo.org/svn/snip/php_5_2-broken_filter_and_magic_quotes.patch</a>


                                                - 显示filter.default和filter.default_flags值
- 检查$_GET['a']是否包含有空字节(FILTER_UNSAFE_RAW应通过FILTER_FLAG_STRIP_LOW标记过滤掉空字节)
- 通过带有相同过滤器/标记的filter_input()检查$_GET['a']是否包含有空字节

&lt;?php
echo &quot;filter.default = &quot; . ini_get('filter.default') . &quot; &lt;br /&gt;\n&quot;;
echo &quot;filter.default_flags = &quot; . ini_get('filter.default_flags') . &quot; &lt;br
/&gt;\n&quot;;
echo &quot;&lt;br /&gt;&quot;;
echo &quot;\$_GET['a'] contains \\0: &quot; . (strpos($_GET['a'], &quot;\0&quot;) !== false
? 'Yes' : 'No') . &quot; &lt;br /&gt;\n&quot;;
echo &quot;&lt;br /&gt;&quot;;
echo &quot;\$_GET['a'] throught filter_var() contains \\0: &quot; .
(strpos(filter_var($_GET['a'], FILTER_UNSAFE_RAW,
FILTER_FLAG_STRIP_LOW), &quot;\0&quot;) !== false ? 'Yes' : 'No') . &quot;&lt;br /&gt;&quot;;
echo &quot;&lt;br /&gt;&quot;;
?&gt;

预期结果
----------------
filter.default: unsafe_raw
filter.default_flags: 4

$_GET['a'] contains \0: No

$_GET['a'] through filter_var() contains \0: No

实际结果
--------------
filter.default: unsafe_raw
filter.default_flags: 4

$_GET['a'] contains \0: Yes

$_GET['a'] through filter_var() contains \0: No

                              

EPSS

0.004

Percentile

72.8%