SQL隱碼攻擊
漏洞復現:
登陸後臺,點選頁面刪除按鈕,抓包:
rid引數存在sql注入,放入sqlmap檢測成功:
程式碼分析:
Ctrl+Shift+F檢索路由:
定位具體程式碼,為刪除功能:
發現deleteByIds呼叫了傳參rid,跟進:
發現進入Dao層,此處依舊呼叫的deleteByIds,於是找ICommonDao介面實現類:
定位到該類,發現以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")}
訪問首頁,點選關與我們:
執行命令,彈出計算機:
程式碼分析:
配置檔案存在freemark
檔案上傳
漏洞復現:
這個CMS感覺上傳檔案路徑不是很好找,所以上傳時先找個合適的目錄再點選上傳檔案。
檔案管理處點選admin進入目錄:
再點選檔案上傳:
透過上傳jsp馬,不過需要以jspx或者jspf字尾繞過上傳。
程式碼分析:
上傳時抓包,根據路由全域性搜尋:
定位到具體程式碼段:
用filePath引數接受path引數與file引數拼接,再從filePth引數中取出檔名賦值給fname引數。
跟進getSuffix:
發現只是以簡單點來獲取字尾。
檢測是否為jsp檔案後,如果不為則進入為空判斷,並以FileOutputStream與write直接上傳寫入。
任意檔案刪除
漏洞復現:
上傳jsp馬後,點選右方刪除檔案,抓包。
將下方資料包改為admin上級目錄,刪除我先前上傳但沒找到路徑的test.jspx檔案,刪除成功:
程式碼分析:
根據資料包在IDEA全域性搜尋,定位到delete程式碼段:
該方法接收三個引數:path、name 和 data,這些引數透過 \@RequestParam註解從請求中提取,並進行簡單拼接,賦值給file物件,此時file物件代表實際的檔名稱。
跟進delete方法:
發現對傳入的path引數進行了檢查,繼續跟進:
發現僅僅採用java自帶的類java.security.AccessController下的checkPermission(Permissionperm)靜態方法校驗許可權。
如果許可權滿足便直接透過fs.delete()方法刪除,造成任意檔案刪除漏洞。
更多網安技能的線上實操練習,請點選這裡>>