某小型CMS漏洞復現審計

蚁景网安实验室發表於2024-11-01

SQL隱碼攻擊

漏洞復現:

某小型CMS漏洞復現審計

登陸後臺,點選頁面刪除按鈕,抓包:

某小型CMS漏洞復現審計

rid引數存在sql注入,放入sqlmap檢測成功:

某小型CMS漏洞復現審計

程式碼分析:

Ctrl+Shift+F檢索路由:

某小型CMS漏洞復現審計

定位具體程式碼,為刪除功能:

某小型CMS漏洞復現審計

某小型CMS漏洞復現審計

發現deleteByIds呼叫了傳參rid,跟進:

某小型CMS漏洞復現審計

發現進入Dao層,此處依舊呼叫的deleteByIds,於是找ICommonDao介面實現類:

某小型CMS漏洞復現審計

某小型CMS漏洞復現審計

定位到該類,發現以ids引數接受原先使用者傳入的rid引數,並在new一個sql物件後,直接將ids引數進行拼接,並透過原生jdbc執行返回結果。

【----幫助網安學習,以下所有學習資料免費領!加vx:dctintin,備註 “部落格園” 獲取!】

 ① 網安學習成長路徑思維導圖
 ② 60+網安經典常用工具包
 ③ 100+SRC漏洞分析報告
 ④ 150+網安攻防實戰技術電子書
 ⑤ 最權威CISSP 認證考試指南+題庫
 ⑥ 超1800頁CTF實戰技巧手冊
 ⑦ 最新網安大廠面試題合集(含答案)
 ⑧ APP客戶端安全檢測指南(安卓+IOS)

模板注入

內容管理-檔案管理-themes-flatweb-about.html,選擇編輯,插入payload:

<#assignvalue="freemarker.template.utility.Execute"?new()>${value("calc.exe")}

某小型CMS漏洞復現審計

訪問首頁,點選關與我們:

某小型CMS漏洞復現審計

執行命令,彈出計算機:

某小型CMS漏洞復現審計

程式碼分析:

配置檔案存在freemark

某小型CMS漏洞復現審計

檔案上傳

漏洞復現:

這個CMS感覺上傳檔案路徑不是很好找,所以上傳時先找個合適的目錄再點選上傳檔案。

檔案管理處點選admin進入目錄:

某小型CMS漏洞復現審計

再點選檔案上傳:

某小型CMS漏洞復現審計

透過上傳jsp馬,不過需要以jspx或者jspf字尾繞過上傳。

某小型CMS漏洞復現審計

程式碼分析:

上傳時抓包,根據路由全域性搜尋:

某小型CMS漏洞復現審計

定位到具體程式碼段:

某小型CMS漏洞復現審計

用filePath引數接受path引數與file引數拼接,再從filePth引數中取出檔名賦值給fname引數。

跟進getSuffix:

某小型CMS漏洞復現審計

發現只是以簡單點來獲取字尾。

檢測是否為jsp檔案後,如果不為則進入為空判斷,並以FileOutputStream與write直接上傳寫入。

某小型CMS漏洞復現審計

某小型CMS漏洞復現審計

任意檔案刪除

漏洞復現:

上傳jsp馬後,點選右方刪除檔案,抓包。

某小型CMS漏洞復現審計

將下方資料包改為admin上級目錄,刪除我先前上傳但沒找到路徑的test.jspx檔案,刪除成功:

某小型CMS漏洞復現審計

程式碼分析:

根據資料包在IDEA全域性搜尋,定位到delete程式碼段:

某小型CMS漏洞復現審計

該方法接收三個引數:path、name 和 data,這些引數透過 \@RequestParam註解從請求中提取,並進行簡單拼接,賦值給file物件,此時file物件代表實際的檔名稱。

跟進delete方法:

某小型CMS漏洞復現審計

發現對傳入的path引數進行了檢查,繼續跟進:

某小型CMS漏洞復現審計

發現僅僅採用java自帶的類java.security.AccessController下的checkPermission(Permissionperm)靜態方法校驗許可權。

如果許可權滿足便直接透過fs.delete()方法刪除,造成任意檔案刪除漏洞。

更多網安技能的線上實操練習,請點選這裡>>

相關文章