1. 代码注入原理
PHP代码注入是指应用程序过滤不严,用户可以通过请求讲代码注入到应用中执行。代码注入类似于SQL注入漏洞,SQL漏洞时将SQL语句注入到数据库中执行,而代码执行则是可以把代码注入到应用中最终由服务器运行它。这样的漏洞如果没有特殊的过滤,相当于直接有一个web后门存在。
(1)程序中含有可以执行PHP代码的函数或者语言结构
(2)传入第一点的参数,客户端可控,直接修改或者影响
2. 漏洞危害
Web应用如果存在代码执行漏洞时一件非常可怕的事情,就像一个人没有穿衣服,赤裸裸的暴露在光天化日之下。可以通过代码执行漏洞继承Web用户权限,执行任意代码。如果具有服务器没有正确配置,web用户权限比较高的话,我们可以读写目标服务器任意文件内容,甚至控制整个网站以及服务器。本课程中以PHP为例子来说明,执行代码漏洞。
3. 相关函数和语句
(1)eval()
eval()会将字符串当做php代码来执行。
<?php
if(isset($GET['code'])){
$code=$_GET['code'];
eval($code);
}else{
echo "please submit code!<br />?code=phoinfo();"