命令执行漏洞

        在web应用开发中,通过调用代码或系统函数去提高应用灵活性、简洁性,而忽略用户输入是否可以被控制时,所产生的漏洞。可以获取服务器权限、获取敏感数据、写入恶意shell。

产生原因

        代码层过滤不严、系统自身漏洞、调用第三方组件存在的漏洞

PHP命令执行

        System函数:

<?php
$cmd = $_GET["cmd"]; //获取参数
$last_line = system($cmd,$text); //执行命令
echo '</br>';
echo $last_line; //输出结果
?>

        Exec函数:

<?php
$cmd = $_GET["cmd"]; //获取参数

echo exec($cmd); //输出结果
?>

        Shell_exec函数:

<?php
$cmd = $_GET["cmd"]; //获取参数
$cmd_text = shell_exec($cmd); 
echo $cmd_text; //输出结果
?>

        Passthru函数:

<?php
$cmd = $_GET["cmd"]; //获取参数
passthru($cmd,$cmd_text); 
echo $cmd_text; //输出结果
?>

        Popen函数:

<?php
$cmd = $_GET["cmd"]; //获取参数
$cmd_text = popen($cmd,'w'); //设置写入模式
pclose ($cmd_text); //输出结果
?>

常用绕过方式

        空格绕过:${IFS}、重定向符<>、%09

        黑名单绕过:拼接、base64编码、单双引号、反斜线、$1/$@

        读文件绕过:采取其他命令执行(More、Less等)

        通配符绕过:?单字符,*任意字符,[...]任意字符

        内联执行绕过:反引号命令执行

常见防御手段

        减少或禁用执行命令函数disable_function(php.ini文件中);

        输入时,过滤参数,进行敏感字符转义;

        参数值尽量使用引号,在拼接前调用addslashe转义;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值