原文链接
https://hackingiscool.pl/cmdhijack-command-argument-confusion-with-path-traversal-in-cmd-exe
大致意思就是当你是cmd.exe /c执行命令的时候
cmd.exe -c "ping 127.0.0.1/../../../../../../../../windows/system32/ipconfig.exe"
ping 127.0.0.1被当作一个目录。然后../到其他目录执行exe
最后就变成了cmd.exe -c "windows/system32/ipconfig.exe"
成功执行了ipconfig.exe
开始复现
服务器配置:Server2012+phpstudy2018(PHP7.2-nts+Nginx)
index.php
<?php
if(isset($_POST['host'])){
$host=$_POST['host'];
$command=escapeshellcmd("dir $host");
echo system($command);
}else{
echo "No host specified.";
}
利用escapeshellcmd函数。对所有可能产生命令注入的符号进行转义
然后执行dir 拼接
当我们输入恶意的payload。成功跳出计算器
具体执行的就是windows/system32/calc.exe
C盘下存在很多exe
system32目录下主要是
cmd.exe 会创建一个cmd进程
calc.exe 弹计算器
systeminfo.exe systeminfo命令
ipconfig.exe ipconfig命令
并且。他可以执行任意目录的可执行文件
windows下又有exe和com两种可执行文件。只要你知道目录。想办法把文件传上去
就可以跨目录执行exe。比如自己写的C语言程序。Msf木马等。反弹shell