您的位置:首页 > 编程语言

代码注入漏洞以及修复方法

2016-10-12 17:32 1046 查看
1.漏洞概述

PHP代码执行漏洞指应用程序本身过滤不严格,用户可以通过请求将代码注入到程序中执行,类似于SQL注入漏洞,可以把SQL语句通过网页注入到SQL服务执行,而PHP代码执行漏洞则是可以把代码注入应用到网站后端中,如果漏洞没有特殊的过滤,相当于直接有一个web后门存在,该漏洞主要由动态代码执行函数的参数过滤不严格导致。

2.技术概述

执行PHP代码写入WebShell

3.风险概述

控制网站甚至服务器

4.黑盒测试

在自己搭建的平台上表单处键入 phpino()语句



这条语句在后端中没有被当做正常字符串信息显示出来而是当做PHP代码执行



接下来我们在键入一个能写webshell的语句



显示正常



服务器中已经被写入了一个webshell



5.查看源码,可以看见动态代码执行函数eval,该函数将字符串直接以PHP代码形式执行,反斜杠‘\’作为转义符号将从表单提交的数据转义成了字符串,这样就构成了代码注入的漏洞,即输入的代码被转义为字符串又被eval以php形式执行。



6.修复方案

业内最新的修复方案基于黑名单的思想,将一些函数必有的符号进行过滤。

<?php

//判断字符串包含函数
function checkstr($str,$find){
$find_str = $find;
$tmparray = explode($find_str,$str); //explode()函数把字符串通过某个指定的字符拆分为数组。$str为原始字符串 $findstr为
if(count($tmparray)>1){ //要查找的字符,如果存$findstr 那么这个字符串就会被拆分成两份或者两份以上 那么数组里的元素就在两个或者两个以上
return true;
} else{
return false;
}
}
/*判断请求表单字段含下划线,左括号,右括号,分号 */
if(isset($_REQUEST['submit']) && !checkstr($_REQUEST['name'],';') && !checkstr($_REQUEST['name'],'(') && !checkstr($_REQUEST['name'],')') && !checkstr($_REQUEST['name'],'_')&& !checkstr($_REQUEST['email'],';') && !checkstr($_REQUEST['email'],'(') && !checkstr($_REQUEST['email'],')') && !checkstr($_REQUEST['email'],'_')&& !checkstr($_REQUEST['message'],';') && !checkstr($_REQUEST['message'],'(') && !checkstr($_REQUEST['message'],')') && !checkstr($_REQUEST['message'],'_')){

/*用filter过滤特殊编码*/
//filter 函数编码,过滤特殊字符HTML 转义字符 '"<>& 以及 ASCII 值小于 32 的字符。
$name = filter_var($_REQUEST["name"],FILTER_SANITIZE_SPECIAL_CHARS); //filter 函数编码,过滤特殊字符HTML 转义字符 '"<>& 以及 ASCII 值小于 32 的字符。

$email = filter_var($_REQUEST["email"],FILTER_SANITIZE_SPECIAL_CHARS); //filter 函数编码,过滤特殊字符HTML 转义字符 '"<>& 以及 ASCII 值小于 32 的字符。

$message = filter_var($_REQUEST["message"],FILTER_SANITIZE_SPECIAL_CHARS); //filter 函数编码,过滤特殊字符HTML 转义字符 '"<>& 以及 ASCII 值小于 32 的字符。

@eval("\$var1 = $name;");
echo $var1;

@eval("\$var2 = $email;");
echo $var2;

@eval("\$var3 = $message;");
echo $var3;

}else{

echo "<b>请勿提交非法字符</b>";

}

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  WEB渗透测试 漏洞 PHP