九零登录

[【通过】] 带你挖掘文件包含漏洞之代码审计#4实战五个案例

[复制链接]
发表于 2017-7-24 22:06:32 | 显示全部楼层 |阅读模式
没啥技术含量,主要是讲解下挖掘文件包含漏洞的技巧。
在PHP安全中,文件包含漏洞是很严重的漏洞!今天我不讲基础了,直接实战!
        怎么挖掘文件包含漏洞?注意require(),require_once(),include(),include_once(),还有就是()变成空格也是一样的效果!
        这次我演示的CMS是:ECShop_V2.7.3_GBK_release1106
        我就随手测试就挖到了四个文件包含漏洞。哈哈,我和我的小伙伴都惊呆了。因为文件包含漏洞太多!
        首先我们关键字搜索:include_once
http://img2.ph.126.net/PLA7iQc-m ... 282726048314526.png
搜索发现很多用include_once,这时候我们应该开心这么多include_once,肯定有几个是可以利用的地方233,我说这句话是相对的,不是绝对的!
        很快我就找到一处可疑的:
        第一处文件包含漏洞存在地址:
http://img1.ph.126.net/38cvb4kGS_W1AyexfUQtIw==/6632035335934744219.png
双击打开这个文件:
http://img1.ph.126.net/iNVDvkCvehDt-cRSF3he-g==/6631857215051040547.png
直觉告诉我这里有漏洞,自己看他的判断就知道,在这里$file可控!
        看代码知道:$directory = ROOT_PATH . 'includes/modules/shipping';
        所以我们找到这个目录下看看:
http://img0.ph.126.net/lG-WpzvbKXrQy4QZP8pSQA==/6632514723001778922.png
我们知道了$file可以控制,所以我们在这个文件下面添加个test.php的文件,文件里面写phpinfo代码:
http://img0.ph.126.net/mlUEmct9kk8F0xolpK1g4A==/6632056226655672057.png
然后直接访问php构造的地址直接访问:
http://img2.ph.126.net/nr8vKpTNQrGtBOoOsdjj8A==/6632531215676198621.png
这时候我们会发现我们的phpinfo被成功执行了!

        现在我开始讲解第二个文件包含漏洞:
http://img2.ph.126.net/dcrgJ3Ll4sB5hXf7LxuwPA==/6632531215676198702.png
这里很可疑,我们打开文件:
http://img1.ph.126.net/tCg-hgME89kw3EBNLC5Pww==/6631879205283593254.png
这里可能存在安全问题经验证发现$shipping是可控的!我们查询$shipping是什么?
http://img1.ph.126.net/Kf2OFgtWCNh5SRSkQHrpOw==/6632365189420403254.png
POST请求哎,这里意思就是如果变量里面有内容,就把shipping赋值过去!
                include_once(ROOT_PATH . 'includes/modules/shipping/' . $shipping . '.php');

        找到这个包含文件位置:
http://img2.ph.126.net/4HOKInp7JbxnWuGfcxeV2A==/6631999052051008967.png
        test.php里面的代码是phpinfo代码!我们开始构造地址访问:
http://img2.ph.126.net/0t4tYpGpPf-SbsvzclxdSQ==/6632499329838985925.png
成功!

第三个文件包含漏洞:
http://img1.ph.126.net/nC6npKfwMoH9PLorNnqnyA==/6632198063655647518.png
同样存在,利用方式和前两种差不多,我快速讲解了,这里一样的问题这里是$payment可控:
        查询:$payment
http://img2.ph.126.net/MLskQwykB2fRCXJBNl63og==/6632343199187849810.png
POST请求可以!
                include_once(ROOT_PATH.'includes/modules/payment/' . $payment . '.php');
  这是包含的文件目录,找到这个目录:
http://img2.ph.126.net/u9vT-OSqcgxB7N7QM0Ig3g==/6631992454981242374.png
写个2.php进去,然后构造地址访问:
http://img2.ph.126.net/G3NFLkNvlSAvUxlBZtUFOw==/6632121097841704583.png
有点麻木了。。

第四个文件包含漏洞:
http://img2.ph.126.net/czi1bEMIvr23g6J1J-qoeQ==/6631988056934753927.png
这里!
http://img2.ph.126.net/9qvWHpp3yIKzbyG5J4KFtA==/6632504827397124923.png
这里直接request请求,没有做过滤,code参数可控!
        一样的道理:
include_once(ROOT_PATH.'includes/modules/payment/' . $_REQUEST['code'] . '.php');
这是包含文件进入这个目录新建一个文件写点内容:
我这里直接构造地址吧:
http://img2.ph.126.net/5FhGwN0iR3wzDN8Ip5KbtQ==/6632211257795216318.png
第五个文件包含:
http://img2.ph.126.net/7pPVl-PcaED2GEj7HGM8Ag==/6632590589304102347.png
不废话了这里我直接:
http://img0.ph.126.net/6bxpK3jy_1A7gGcny5aZyA==/6632579594187815796.png
然后构造代码:
http://img2.ph.126.net/u9iLjOfDc46n0ERFcxwpEQ==/6632056226655672434.png
直接访问!文件包含漏洞太多了呜呜!累了,就这样!
技巧很简单,看哪里可控直接艹!

评分

参与人数 1酒票 +5 收起 理由
管理05 + 5 欢迎加入90!

查看全部评分

发表于 2017-7-24 23:24:07 | 显示全部楼层
本帖最后由 hundan 于 2017-7-24 23:31 编辑

问题都点出来了,但是利用没讲到,比如如何利用包含漏洞,显然真实环境不会让你传个test.php上去,建议加上利用这点,否则像是一知半解的样子。
说起来,下面几个我没仔细看,第一个包含,在真实环境下应该是利用不了的吧,第一个包含,你说“可控”,实际上不好控制,我想我们对“可控”这个概念理解有些偏差,那个test文件也是你自己传上去的。

发表于 2017-7-25 00:07:40 | 显示全部楼层
真实环境不会让你传个test.php上去,"可控"实际上很多cms很多变量都可控,但是你要考虑环境,过滤等等因素,自己上服务器创建一个test文件勉强能说是个bug,实际环境如果都能让你上传php文件了还要这个干哈!,没事瞎意淫什么,快来好好当绿帽社社长来
发表于 2017-7-25 09:21:12 | 显示全部楼层
我去,其实我是想看图的。。。。2333
发表于 2017-7-25 09:28:49 | 显示全部楼层
找上传点 传图片马 抓路径 包含
发表于 2017-7-25 09:37:09 | 显示全部楼层
按这样说只要有include_once就是包含漏洞了……楼主没考虑过滤因素啊,大概类似于poc与exp之间的鸿沟,甚至连exp都算不上

还是感谢分享,应该有能用的
发表于 2017-7-25 10:33:36 | 显示全部楼层
还是感觉楼主分享 谢谢了 希望楼主继续发一些挖漏洞的实践过程
发表于 2017-7-25 14:44:58 | 显示全部楼层

RE: 带你挖掘文件包含漏洞之代码审计#4实战五个案例

胖虎 发表于 2017-7-25 09:28
找上传点 传图片马 抓路径 包含

楼主找的几个地方都是有限制的,$test . '.php'
现在很多都不能截断的,即使你上传了图片这个包含也利用不了。再说了,如果包含没限制的话,也完全可以包含日志,不需要上传图像文件。

发表于 2017-7-25 23:13:33 | 显示全部楼层
有点懵,如果能传php,在无其他条件下为什么还需要文件包含。。
发表于 2017-7-26 09:20:54 | 显示全部楼层
控是可控,艹一个试试,这只能算正常的功能吧

发表于 2017-7-26 09:50:33 | 显示全部楼层
还是支持一下,不过的确算不上包含"漏洞",漏洞指的是非正常情况,这个都是正常的,因为这些前提是你要有带有恶意代码的php后缀文件在服务器上面,漏洞的话,是属于,随便什么样文件都可以的
发表于 2017-7-26 10:20:55 | 显示全部楼层
如果后台能上传zip文件的话 可以试试zip/phar伪协议 zip://D:/WWW/shell.zip%23shell.php
 楼主| 发表于 2017-7-31 17:44:24 | 显示全部楼层
感谢各位前辈教诲
发表于 2017-8-23 20:18:52 | 显示全部楼层
代码审计时你有用什么特殊的工具吗?

九零

GMT+8, 2026-10-22 12:50

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表