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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

一次代码审计实战案例【思路流程】

發(fā)布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一次代码审计实战案例【思路流程】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言:

利用這個 CMS 看看能不能挖到漏洞,運氣還是不錯的挖到了兩個,分別是 SSRF 與文件覆蓋 GETSHELL,下面給大家講解一下這次審計的思路過程。該 CMS 版本是 4.2。以下漏洞均被 CNVD 收錄。

環(huán)境說明:

PHP版本用 7.0.9 就好了。

SSRF:

根據(jù)功能點定向?qū)徲?#xff0c;在后臺的工具欄有一個采集功能,根據(jù)經(jīng)驗這種功能一般存在 SSRF。

使用 python3 在本地開啟簡易的 http 服務(wù)。

點擊下一步,果不其然存在 SSRF。

進行漏洞分析。

【→所有資源關(guān)注我,私信回復(fù)“資料”獲取←】
1、網(wǎng)絡(luò)安全學(xué)習(xí)路線
2、電子書籍(白帽子)
3、安全大廠內(nèi)部視頻
4、100份src文檔
5、常見安全面試題
6、ctf大賽經(jīng)典題目解析
7、全套工具包
8、應(yīng)急響應(yīng)筆記

根據(jù) burpsuite 抓到的請求包很容易定位到代碼位置。

在文件 upload/plugins/sys/admin/Collect.php#Collect->add,POST 的參數(shù)cjurl 未做安全處理被傳入到 $this->caiji->str 方法。

那么我們跟進到 $this->caiji->str 方法,但是 phpstorm 找不到定義該方法的位置。

解決辦法,我們可以連續(xù)按兩下 Shift 鍵直接尋找。

跟進到 str 方法后,發(fā)現(xiàn) url 參數(shù)被傳入 htmlall 方法,繼續(xù)跟進該方法。

可以看到 htmlall 方法使用了 curl 請求 url。

基本上有調(diào)用 $this->caiji->str 方法的地方都存在 SSRF 漏洞。

文件覆蓋導(dǎo)致 GETSHELL:

通過敏感函數(shù)回溯參數(shù)過程的方式找到該漏洞。
在 upload/cscms/app/helpers/common_helper.php#write_file 使用了文件寫入的敏感函數(shù),跟 SSRF 的 htmlall 是同一個文件。

使用 Ctrl+Shift+F 查找哪些位置調(diào)用了 write_file,在 upload/plugins/sys/admin/Plugins.php#Plugins->_route_file 調(diào)用了 write_file函數(shù),并且 note[note[note[key][‘name’] 和 note[note[note[key][‘url’] 的值是以字符串方式拼接到文件內(nèi)容的,該內(nèi)容是注釋,我們可以使用換行繞過。

查找哪些位置調(diào)用了 _route_file,跟蹤 $note 的值是否可控,調(diào)用該函數(shù)的位置有很多,最終找到一處可利用。在 upload/plugins/sys/admin/Plugins.php#Plugins->setting_save 調(diào)用了 _route_file,由于該函數(shù)內(nèi)容有點多,所以我將它拆分成兩個界面,一些不重要的內(nèi)容進行閉合。畫紅線的位置是調(diào)用到 _route_file 必須設(shè)置的,可以看到在標(biāo)藍色3的位置獲取到了 $note 的值,分析到這里可以開始復(fù)現(xiàn)了。

使用 burpsuite 抓取請求包。

修改請求包內(nèi)容寫入構(gòu)造好的代碼,可以看到我使用了 %0a 換行去繞過注釋。

在 upload/cscms/config/dance/rewrite.php 可以看到成功寫入。

尋找引用 rewrite.php 的位置,懶得去看代碼了,通過點擊各個頁面,經(jīng)過不懈努力終于在個人中心的音樂頁面找到,所以你需要注冊一個會員用戶。

重放 burpsuite 抓到的請求包,成功輸出內(nèi)容。

到這里其實事情還沒有結(jié)束,當(dāng)我嘗試寫入惡意內(nèi)容發(fā)現(xiàn)被轉(zhuǎn)義了。

試了 eval、shell_exec 等均被轉(zhuǎn)義,但是 assert 沒有被轉(zhuǎn)義,考慮到 assert 在PHP7版本之后的問題,我還是需要找一個更好的辦法。懶得去看轉(zhuǎn)義的代碼了,我根據(jù)PHP的動態(tài)特性使用以下方法成功 RCE。

總結(jié):

此次代碼審計使用了通用代碼審計思路的兩種,第一種:根據(jù)功能點定向?qū)徲嫛⒌诙N:敏感函數(shù)回溯參數(shù)過程,沒有用到的是通讀全文代碼?;钣?phpstorm 可以讓代碼審計的效率大大增加。

總結(jié)

以上是生活随笔為你收集整理的一次代码审计实战案例【思路流程】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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