命令注入
原因
当应用需要调用一些外部程序时会用到一些系统命令的函数。应用在调用这些函数执行系统命令的时候,如果将用户的输入作为系统命令的参数拼接到命令行中,在没有过滤用户的输入情况下,会造成命令执行漏洞。
漏洞危害
1、继承Web 服务器程序权限,去执行系统命令
2、继承Web 服务器权限,读取文件
3、反弹Shell
4、控制整个网站
5、控制整个服务器
相关函数和语言结构
system():能够将字符串作为OS命令执行,自带输出功能。
<?php
if(isset($__GET('cmd'))){
echo "<pre>";
system($__GET['cmd']);
}else{
echo "?cmd=ipconfig";
}
?>
exec():能够将字符串作为OS命令执行,需要输出执行结果。返回结果是有限的。
<?php
if(isset($__GET['cmd'])){
echo "<pre>";
print exec($__GET['cmd']);
}else{
echo "?cmd=whoami";
}
?>