利用phpinfo信息LFI临时文件[附POC]

还记得之前国外某牛提出的LFI包含临时文件么?

当时确实觉得有些鸡肋,因为临时文件的路径及名字是未知的,虽然临时文件的名字可以 利用类似<>*?等通配符(我们暂且称其为通配符)匹配,而同时N个人一起请求的话可能同时生成很多临时文件,因此用通配符也不一定能匹配 成,而且临时文件保存的路径也只能靠猜。

我们知道在向服务器上任意php文件post请求上传数据时,都会生成临时文件,以前不知道临时文件的路径和名字只能乱猜,这次国外友人提出利用phpinfo()。

当向任意php文件post请求上传数据时,可以直接在phpinfo页面找到临时文件的路径及名字。

参考:

http://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf

http://www.insomniasec.com/publications/LFI%20With%20PHPInfo%20Assistance.pdf

这个paper里带了一个python写的利用脚本,至少我用了N次也没成功过一次,或许是缩进的原因?把python代码写进pdf里可不是一个好主意:(

于是自己写了一个,如果网站快的话需要几秒,如果网站慢的话需要几十秒来getshell。

地址:http://secer.org/pentest/lfi_tmp.py

如果空间挂了,请将图片另存为rar解压。

本脚本仅为网络安全从业人员及网络安全爱好者研究交流之用,请勿用于非法用途……这个还是要顺便说一下的……

# ———————– 2011.9.12 update ———————– #

sogili测试了我的脚本说报错,于是找到了解决方案给他,顺便更新在这里。

有的时候对方网站本身就响应非常慢,这个时候解决办法:尝试逐渐增加padding的长度来拖一下phpinfo页面响应。

另外,有的服务器本身就不能%00截断,这个时候自己想办法截断吧,.或者/什么的。

我现在测试了本地的windows没问题、德国ping值在500+的linux也没问题。

[via@idwar]