日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

thinkcmfx漏洞太大_ThinkCMF5 代码执行漏洞及后续有关思考

發(fā)布時(shí)間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 thinkcmfx漏洞太大_ThinkCMF5 代码执行漏洞及后续有关思考 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘要

修改配置時(shí),大多數(shù)情況下都會對配置文件/緩存文件/數(shù)據(jù)庫進(jìn)行操作,而在這個(gè)過程中不論如何實(shí)現(xiàn),幾乎都會對“管理員” 所做的修改輸入有過濾。當(dāng)繞過了這些過濾方法之后,通常可以達(dá)到同一個(gè)目的:代碼執(zhí)行。

Remark:文章簡單易懂,新手向;

在過去的一段時(shí)間里面,我和好基友論過有關(guān)CMS“修改” 會存在的代碼執(zhí)行的問題;我們在這個(gè)方面對于少量CMS進(jìn)行了分析,分析過程暫且不表,直接說結(jié)論:修改配置時(shí),大多數(shù)情況下都會對配置文件/緩存文件/數(shù)據(jù)庫進(jìn)行操作,而在這個(gè)過程中不論如何實(shí)現(xiàn),幾乎都會對“管理員” 所做的修改輸入有過濾。當(dāng)繞過了這些過濾方法之后,通常可以達(dá)到同一個(gè)目的:代碼執(zhí)行;

ThinkCMF版本為:thinkcmf-5.0.190111

以下是分析過程,使用的方法是監(jiān)控文件動態(tài)并分析Controller分析;

后臺中有這樣一個(gè)功能:

圖0x0 thinkCMF后臺-URL美化功能

這是一個(gè)URL美化的功能,在看到這個(gè)地方的時(shí)候我感覺這個(gè)功能所進(jìn)行的”修改“可能會出問題;首先我以正常的管理員操作進(jìn)行嘗試:

圖0x1 URL美化功能-添加URL規(guī)則

這里我選擇是一個(gè)默認(rèn)的有關(guān)Index的規(guī)則,我進(jìn)行保存:

圖0x2 保存時(shí)的第一個(gè)POST請求

圖0x3 保存時(shí)的第二個(gè)POST請求

在這里看整體變化:

0x0:通過數(shù)據(jù)庫general_log收集到執(zhí)行了: INSERT INTO `cmf_route` (`full_url` , `url` , `status`) VALUES (‘portal/List/index’ , ‘list/:id’ , ‘1’) 這樣的一條語句;

0x1:通過對文件進(jìn)行監(jiān)控發(fā)現(xiàn)修改了/data/conf/route.php 文件;

圖0x4 修改之后的/data/conf/route.php文件

這時(shí)候我只有一個(gè)想法:應(yīng)該有戲;

進(jìn)入到代碼層進(jìn)行分析:

處理這個(gè)請求的Controller位于:\app\admin\controller\RouteController.php

圖0x5 addPost()

這個(gè)方法在上面的注釋寫的很詳細(xì):添加路由規(guī)則提交;

作為我們實(shí)驗(yàn)室的十萬個(gè)為什么,我理所因當(dāng)?shù)膯栕约?#xff1a;提交到了哪?

那么加入調(diào)試信息:

圖 0x6 加入調(diào)試信息,打印可控變量

這里很明顯是save()對于數(shù)據(jù)庫進(jìn)行了操作,那么單獨(dú)發(fā)包+數(shù)據(jù)庫general_log監(jiān)控:

圖 0x7 單獨(dú)發(fā)包

監(jiān)控general_log得到結(jié)果:INSERT INTO `cmf_route` (`full_url` , `url` , `status`) VALUES (‘portal/List/index’ , ‘list/:id’ , ‘1’)

和之前在整體分析的一致,那么我這里作為一個(gè)備用點(diǎn):可能在這里有一個(gè)可用的SQL注入;

圖0x8 index()

梳理思路:第一個(gè)Request將我們設(shè)置的配置信息寫進(jìn)了數(shù)據(jù)庫,這里我們找到了一個(gè)可能可以導(dǎo)致SQL的點(diǎn),但是不急于研究局部,繼續(xù)看整體;

那么我們繼續(xù)下去:

這個(gè)方法應(yīng)該是請求頁面/回顯頁面的index方法,getRoutes()方法根據(jù)我的猜測是獲得這些規(guī)則的方法,跟進(jìn):

圖0x9 跟進(jìn)getRoutes(),發(fā)現(xiàn)了這里寫入的文件正是我們剛才關(guān)注的route.php文件

對route.php進(jìn)行了文件寫入,這里使用拼接,而我們可能控制的變量為:$allRoutes,經(jīng)過了兩個(gè)函數(shù)處理,只是簡單的刪除了反斜杠,并未對單引號進(jìn)行處理,造成了逃逸單引號寫入內(nèi)容;

那么最后需要分析的是傳入的變量$allRoutes,我們先加調(diào)試:

圖0xA 加入調(diào)試信息,逆向追蹤參數(shù)傳入

隨便找到之前的一個(gè)Request,再次請求并定位:

圖0xB 再次訪問Index,然后找到其打印的調(diào)試信息,觀察傳入?yún)?shù)

在這里可以觀察到和我們之前寫進(jìn)數(shù)據(jù)庫的值是一樣的,我猜測$allRoutes很有可能就是從數(shù)據(jù)庫里面直接讀出來的;

那么形成利用思路:

0x0:首先我們可以控制數(shù)據(jù)庫的寫入

0x1:間接的控制了$allRoutes變量

0x2:逃逸單引號,我們可以往route.php中寫入代碼并再寫入之后再次觸發(fā)執(zhí)行

實(shí)際利用之前清空一下之前的環(huán)境,將所有規(guī)則先刪除,回頭觀察route.php(圖0x4):

圖0xC 沒有規(guī)則時(shí)候的route.php

對比圖0x4與圖0xC,構(gòu)造payload:’.file_put_contents(‘f1ower.php’,'<?php @eval($_POST[f]); ?>’).’

在添加URL的時(shí)候?qū)︼@示網(wǎng)址欄插入Paylaod:

圖0xD 在添加URL規(guī)則-顯示網(wǎng)址中插入Payload

然后保存,這時(shí)候應(yīng)該寫進(jìn)了數(shù)據(jù)庫,然后寫進(jìn)了route.php;

圖0xE 返回頁面中,之前我們加入的打印信息更加印證了我們的利用思路

然后我查看route.php:

圖0xF 修改之后的route.php

直接重新點(diǎn)擊訪問URL美化功能,或者直接發(fā)一個(gè)Request進(jìn)行觸發(fā):

圖0x10 觸發(fā)route.php,執(zhí)行代碼

圖0x11 寫出文件成功

利用思路總結(jié)一下:

寫文件->執(zhí)行文件->寫出文件

同樣是寫文件的例子,在之前審計(jì)的一個(gè)CMS中甚至用簡單的黑盒也找到過一個(gè)更簡單的代碼執(zhí)行:

名稱/版本:SchoolCMS_2.3.1_UTF8

圖0x12 SchoolCMS后臺-后臺配置功能

這里的分頁數(shù)量當(dāng)時(shí)進(jìn)行了一個(gè)簡單嘗試,發(fā)現(xiàn)修改的內(nèi)容會寫進(jìn)緩存文件中:

圖0x13 緩存文件Application/Runtime/Temp/38432eb7369925b9a826f2b9f64e2262.php

圖 0x14 在admin_page_number的值中加入Payload

圖0x15 修改后的緩存文件

在這個(gè)CMS中同樣造成了代碼執(zhí)行漏洞;

在實(shí)際的環(huán)境中,配置功能是必不可少的,幾乎所有的CMS都會具有這個(gè)功能點(diǎn);開發(fā)人員使用不同的方法實(shí)現(xiàn),但是在代碼審計(jì)中,我們可以通過文件監(jiān)控與數(shù)據(jù)庫監(jiān)控等輔助手段進(jìn)行此方面的漏洞嘗試;

Tips:

0x0:把握整體大局變化

0x1:文件變化與數(shù)據(jù)庫變化的把握

0x2:然后針對性代碼分析

相信對于大家在文件監(jiān)控或多或少有一些幫助;

以上;

總結(jié)

以上是生活随笔為你收集整理的thinkcmfx漏洞太大_ThinkCMF5 代码执行漏洞及后续有关思考的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。