CTF Web安全

Windows下参数污染跨目录执行文件

Posted on 2020-06-11,2 min read

原文链接

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

下一篇: 记录一次渗透测试。→