命令执行漏洞的原理
程序应用有时需要调用一些执行系统命令的函数,如php中的system,exec,shell exec,passthru,popen,proc popen等,当用户可以控制这些函数的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令注入攻击
两个条件
(1)用户可以控制函数输入
(2)存在可以执行代码的危险函数
命令执行漏洞产生原因
1.开发人员编写源码时,未针对代码中可执行的特殊函数入口作过滤,导致客户端可以恶意构造语句,并提交服务端执行
2.命令注入攻击中,web服务器没有过滤类似system,eval,exec等函数,是该漏洞攻击成功的主要原因。
命令执行漏洞的危害
1.继承web服务程序的权限去执行系统命令或读写文件
2.反弹shell
3.控制整个网站甚至服务器
4.进一步内网渗透
实例
<?php echo shell_exec($_GET['a']); ?>
将url中的参数a作为cmd命令行指令执行
危险函数导致代码执行
<?php
$arr = $_GET['arr'];
$array = $_GET['array'];
$new_array = arraymap($arr,$array);
?>
arraymap是一个危险函数,它会默认将参数作