带你挖掘文件包含漏洞之代码审计#4实战五个案例
在PHP安全中,文件包含漏洞是很严重的漏洞!今天我不讲基础了,直接实战!
怎么挖掘文件包含漏洞?注意require(),require_once(),include(),include_once(),还有就是()变成空格也是一样的效果!
这次我演示的CMS是:ECShop_V2.7.3_GBK_release1106
我就随手测试就挖到了四个文件包含漏洞。哈哈,我和我的小伙伴都惊呆了。因为文件包含漏洞太多!
首先我们关键字搜索:include_once
搜索发现很多用include_once,这时候我们应该开心这么多include_once,肯定有几个是可以利用的地方233,我说这句话是相对的,不是绝对的!
很快我就找到一处可疑的:
第一处文件包含漏洞存在地址:
双击打开这个文件:
直觉告诉我这里有漏洞,自己看他的判断就知道,在这里$file可控!
看代码知道:$directory = ROOT_PATH . 'includes/modules/shipping';
所以我们找到这个目录下看看:
我们知道了$file可以控制,所以我们在这个文件下面添加个test.php的文件,文件里面写phpinfo代码:
然后直接访问php构造的地址直接访问:
这时候我们会发现我们的phpinfo被成功执行了!
现在我开始讲解第二个文件包含漏洞:
这里很可疑,我们打开文件:
这里可能存在安全问题经验证发现$shipping是可控的!我们查询$shipping是什么?
POST请求哎,这里意思就是如果变量里面有内容,就把shipping赋值过去!
include_once(ROOT_PATH . 'includes/modules/shipping/' . $shipping . '.php');
找到这个包含文件位置:
test.php里面的代码是phpinfo代码!我们开始构造地址访问:
成功!
第三个文件包含漏洞:
同样存在,利用方式和前两种差不多,我快速讲解了,这里一样的问题这里是$payment可控:
查询:$payment
POST请求可以!
include_once(ROOT_PATH.'includes/modules/payment/' . $payment . '.php');
这是包含的文件目录,找到这个目录:
写个2.php进去,然后构造地址访问:
有点麻木了。。
第四个文件包含漏洞:
这里!
这里直接request请求,没有做过滤,code参数可控!
一样的道理:
include_once(ROOT_PATH.'includes/modules/payment/' . $_REQUEST['code'] . '.php');
这是包含文件进入这个目录新建一个文件写点内容:
我这里直接构造地址吧:
第五个文件包含:
不废话了这里我直接:
然后构造代码:
直接访问!文件包含漏洞太多了呜呜!累了,就这样!
技巧很简答,看哪里可控直接艹!