代码注入
原理以及成因
PHP代码执行(注入)(web应用方面,应用脚本在服务器执行)是指应用程序过滤不严,用户可以通过请求将代码注入到应用中执行。
代码执行(注入)类似于SQL注入漏洞,SQLi是将SQL语句注入到数据库中执行,而代码执行则是可以把代码注入到应用中最终由服务器运行它。这样的漏洞如果没有特殊的过滤,相当于直接有一个web后门的存在。
原因
1、程序中含有可执行PHP代码的函数或者语言结构。
2、传入第一点中的参数,客户端可控,直接修改或者影响。
漏洞危害
web
应用如果存在代码执行漏洞是一件非常可怕的事情,可以通过代码执行漏洞继承Web用户权限,执行任意代码。如果具有服务器没有正确配置,web用户权限比较高的话,我们可以读写目标服务器任意文件内容,甚至控制整个网站以及服务器。
以PHP为例子来说明,代码执行漏洞。PHP
中有很多函数和语句都会造成PHP代码执行漏洞。
相关函数和语句*
1、eval()
eval()会将字符串当作php 代码执行。测试代码如下
访问执行结果如下图:
<?php
if(isset($_GET[ 'code' ])){
$code=$_GET['code'];
eval($code);
}else{
echo "Please submit code!<br />?code=phpinfo();";
}
?>
访问结果如下:
然后提交变量[?code=phpinfo();]