编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

thinkCMF文件包含漏洞复现(thinkphp文件包含漏洞利用)

wxchong 2024-09-06 01:10:14 开源技术 9 ℃ 0 评论

前不久给大家复现了tomcat CVE-2020-1938漏洞,那今天咱们一起再来看看,最为经典的thinkCMF文件包含漏洞。

首先我们在去介绍这个漏洞之前,我们需要先了解一下这个漏洞thinkCMF。

thinkCMF它是一个开源的,支持swoole的开源内容管理框架,让web开发更快,节约时间,这个框架的话是基于thinkphp的二次开发框架,所以说在我们国内还是有大部分的网站使用到这样的一个框架的。

那么我们可以想象一下如果这个框架出现了一个漏洞,那它的影响范围是不是也同样很广呢?那接下来我们今天进一步的去探索一下thinkCMF的文件包含漏洞。

接下来我们就直接去复现一下这个漏洞。

1、构造a参数的fetch方法,实现任意文件写入,把php代码写入文件。

?a=fetch&templateFile=public/index&prefix="&content=<php>file_put_contents('test.php','<?php phpinfo();?>')</php>

这个时候我先在本地搭建了这样的一个框架,如果说你们也想去复现一下这个漏洞,同样也是可以在本地搭建这个框架的。


这边我们所搭建的版本是ThinkCMFX 2.2.3的版本,然后我们去构造一个这样的漏洞攻击代码。

当我们构造完成以后,回车就会发现网页是空白的,那这个时候我们可以想到test.php文件,我们去访问它一下。

当我们访问test.php文件的时候,就会通过刚才的代码将phpinof写入到test.php里面去。

我们可以看到这个文件在当前根目录下方生成了这样的一个文件。

这个就是任意文件的一个写入。

那么说恶意的用户,把样的一个代码写成一些一句话代码,那么就能够将一句话的木马写入到对方的网站路径下面去,在通过webshell管理工具去进行连接。

我们再去看一下任意内容的包含漏洞。

通过构造a参数的display方法,再去选择模板文件内容为README.md,那么通过这样的一个payload我们就能够去把README.md的这样一个文件给包含出来。

?a=display&templateFile=README.md

然后我们去到浏览器界面输入README.md回车,就可以发现我们能够成功的包含出这样的一个代码。

为了给大家演示得更加明显一点,我们确定能够包含,那么小狸这里手动在网站的根路径下面去创建了一个test.txt文件。

那这个文件我们去看一下它的内容。

我们通过这样一个文件包含漏洞去包含了一个.txt的文件,那么我们也是能够成功的去解析这里面的phpinof的代码的。那么这个也是一个包含。

那这个漏洞怎么去修复呢?

漏洞修复

将HomebaseController.class.php和AdminbaseController.class.php类中display和fetch函数修饰符改为protected。

这个的原因就是因为它的这两个方法是公用的,我们需要把它改为私用的,这样才可以不被前端的用户去任意的利用。

那么今天就为大家复现到这里,我们今天讲解了thinkCMF文件包含漏洞的一个复现和它的修复方式,如果接下来有什么不懂的可以来问一下我哦,时时刻刻都在为大家服务。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表