关于thinkphp5的文件包含漏洞
简介
之前由于一直没有遇到过实际案例,所以对词比较随意
最近遇到了两种,遂记录
影响版本
- thinkphp3
- thinkphp 5.0.0-5.0.18
- thinkphp 5.1.0-5.1.10
这里以5.0.18进行分析
漏洞分析
第一种写法
1 | public function index() |
这里通过调用父类控制器的assign方法,继而调用view的assign方法
调用完成之后会继续调用view的fetch方法,
在框架中默认都是使用的think解析器
所以会继续调用think类的fetch方法
然后检测到模板文件之后,调用template类的fetch方法
继续调用file类的read方法,在这个方法中完成变量覆盖和文件包含
漏洞复现
创建一个1.txt文件
传入参数cacheFile
第二种方式
分析
1 | public function index() |
达到的效果是一样的,在fetch方法中如果第二个参数完全可控,则也会被归并到vars变量中
复现
end
上面两种写法都遇到了,一记