文件包含漏洞_Thinkphp5 文件包含漏洞分析复现

本文详细介绍了ThinkPHP5的文件包含漏洞,包括受影响的版本、复现步骤以及漏洞分析过程。通过搭建环境,演示了如何利用漏洞,并在分析中解释了变量覆盖和文件包含的工作原理。
摘要由CSDN通过智能技术生成

文章目录

        闲扯

        影响版本

        搭建复现

        分析

闲扯

        无,略。

影响版本

5.0.0~~5.0.18
5.1.0~~5.1.10

搭建复现

之前5.0.12的被我插入了好多自己的代码,懒得删了= =直接去下5.0.18的,

http://www.thinkphp.cn/donate/download/id/1141.html

然后在application\index\controller\Index.php 把index改成这样,调用漏洞函数:582038a55e6bd8777980b2e0e4630040.png
发现访问报错,查看日志,找不到assign()函数:9757e991710a549969666a4c52bdce05.png
全局搜索找到它,然后加上,现在index类就变成了:94025eeb1bd6265eda65208c1e23b2df.png
再去访问,还是报错,查看日志,不存在模板文件:2b2750afbc97eb23565320907a84b4e8.png
自己创建目录创建文件,index.html文件内容随意:bc6bc8bf7f958a63570309b66dd01b2f.png
然后在public目录下放一张图片马:7cbb141054fe727d744d4091fb446c10.png
访问:
/public/index.php/index/index/index?cacheFile=shell.jpg1c54dbbf8faa74420e0f0daf61dc823e.png

分析

get()函数就是获取字段的,不需要跟。

跟入assign()
thinkphp\library\think\Controller.php 144617161b9b7bdb2680bb795ae1c9554f9.png
然后又跳入了另一个assign()
thinkphp\library\think\View.php 92b9ae31a0be5433caf9c2563a1dd4df19.png
我以为是在这里发生覆盖的,结果看到后面的值发现不是:(以前学习变量覆盖的时候都没找到这个函数,知识点+1)166f74b636fefcb90a296d3b50f3b08e.png
然后进入fetch()函数:
thinkphp\library\think\Controller.php 118961a8ba4080b1501a28ab810de6e9abd.png
跳转到另一个fetch()
thinkphp\library\think\View.php 148177198a4d49df3d5b2afc1690db293f6.png
一直跟呀跟,不知道过了多久,跟到了
thinkphp\library\think\Template.php 160行 fetch()函数

在188行的地方跳转到了read()函数里e424accab5d09ab44118b1b452da7f46.png5b32d47b19007d3103e179ea9e648d09.png
thinkphp\library\think\template\driver\File.php 43 read()8e550f83fc5921812a80393e015c386f.png
到这里的时候,如果$vars不为空,且是数组的话,就调用extract函数进行覆盖,而且第二个参数是默认的:edf78f3be8b192d55e4a0c6f35fd20f9.png
再看看现在的参数值:e83719e6a703205825f1323e74c5f418.png
哦吼,覆盖之后变成了这样,然后调用了下面的include 进行包含:aa123ab5a84445ee747b5d650dbb9a88.png
按道理来说,include完成之后,页面应该就直接回显了,但是我在fetch()函数里,把echo注释之后,就不能回显了?a39eea283588357591085ade8a193885.png
找到了这个:不过还是有一点不太明白的样子,略。beb59acf59482639bf187d79dbf15411.png

还剩下缓存文件rce和版本6的洞,冲冲冲。

原文链接:

https://blog.csdn.net/qq_43622442/article/details/108976791

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值