CmsEasy 漏洞挖掘
寫在前面
在index.php ,定義了一些常量,設(shè)置 文件包含的目錄,和注冊(cè)了自定義加載類。
lib目錄中前兩個(gè)文件夾分別存放的是后臺(tái)和前臺(tái)的控制器。
inc文件夾提供一些必要的支撐,數(shù)據(jù)庫(kù)的操作,以及控制器的基類,模板渲染類。
所有的控制器都繼承于 act 類。同時(shí)他還給所有數(shù)據(jù)庫(kù)的表,設(shè)計(jì)了相對(duì)應(yīng)的操作,位于table文件夾下,此文件夾下的類也都繼承于 table類。
tool文件夾存放一些小工具,自定義函數(shù),waf之類的,應(yīng)用調(diào)度,也是在此文件夾處理。
繼續(xù)跟進(jìn)入口文件。
實(shí)例化了 front對(duì)象,并調(diào)用 dispatch 方法。
他的構(gòu)造方法就是獲取對(duì)應(yīng)的參數(shù),
同時(shí)對(duì)所有的請(qǐng)求進(jìn)行轉(zhuǎn)義和html實(shí)體的處理。
這里獲取對(duì)應(yīng)的控制器和操作。
這兩個(gè)靜態(tài)變量,在 dispatch 方法 中,用于實(shí)例化控制器,并調(diào)用方法。
前臺(tái)sql注入
在 crossall_act.php 中存在 execsql_action 方法
他接受一個(gè)get請(qǐng)求的 sql參數(shù),然后進(jìn)行一個(gè)解碼的操作【網(wǎng)絡(luò)安全學(xué)習(xí)攻略】
但此文件還同樣提供了加密的函數(shù),都不需要逆向他的算法,直接利用其加密sql語(yǔ)句。
我們可以利用此函數(shù)加密 sql語(yǔ)句,最后執(zhí)行我們的sql語(yǔ)句
執(zhí)行一個(gè)sql查詢。
后臺(tái)RCE
一
在language_admin.php 中,有add_action方法,這個(gè)方法用于給語(yǔ)言文件添加規(guī)則,
當(dāng)id是1時(shí),語(yǔ)言包是中文語(yǔ)言包,由于hackbar 沒(méi)辦法提交submit參數(shù) ,我這里直接改成了 submi。
system_custom.php文件中有空數(shù)組,用他來(lái)進(jìn)行嘗試。
插入新定義的鍵值對(duì),且文件名和插入內(nèi)容都是可以控制的,由于對(duì)表單數(shù)據(jù)存在waf,被轉(zhuǎn)義的和轉(zhuǎn)成html實(shí)體,無(wú)法對(duì)原文件造成危險(xiǎn)。
注意這句話,他插入鍵值對(duì)的邏輯就是講文件中的 );替換為 換行符 加上
,再補(bǔ)上); 。【網(wǎng)絡(luò)安全學(xué)習(xí)攻略】
他的想法是沒(méi)錯(cuò)的,但我覺(jué)得不應(yīng)該,萬(wàn)一字符里有了 ); 呢。
把); 去掉,再插一條。
報(bào)錯(cuò)是好事情,說(shuō)明里面可以做文章。由于 此php文件 是直接 return 一個(gè)數(shù)組的,沒(méi)辦法直接在數(shù)組外面寫東西的,這些是語(yǔ)法問(wèn)題。
php的數(shù)組比較隨意的。
觀察上面的錯(cuò)誤,因?yàn)橄惹?拼接的 ); 導(dǎo)致中間逃出了一個(gè)單引號(hào),剩下的就好辦了,配合 , 和 /* 解決后面的問(wèn)題。
成功拼接。
二
在update_admin.php 中存在 downfile_action 操作,存在可控url參數(shù),
導(dǎo)致我們可以從任意服務(wù)器下載壓縮文件,
并解壓,壓縮文件中可以寫入 upgrade/upgrade.sql ,sql注入,對(duì)數(shù)據(jù)庫(kù)信息造成破壞。
并解壓,壓縮文件中可以寫入 upgrade/upgrade.sql ,sql注入,對(duì)數(shù)據(jù)庫(kù)信息造成破壞。
還可以寫入木馬文件。
成功寫入。
最后
想學(xué)技術(shù)自己挖洞的朋友,可以關(guān)注私我,學(xué)習(xí)網(wǎng)絡(luò)安全
【網(wǎng)絡(luò)安全學(xué)習(xí)攻略】
總結(jié)
以上是生活随笔為你收集整理的CmsEasy 漏洞挖掘的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Web安全实战训练营
- 下一篇: 一款针对Outlook的红队安全研究工具