PART.1 前 言
在之前幾篇文章中,搭建試用了幾款目前市面上比較熱門的開(kāi)源AI自動(dòng)化(輔助)滲透測(cè)試工具,效果參差不一,總的來(lái)說(shuō)這幾款工具離AI自動(dòng)化安全測(cè)試離工程化、商業(yè)化還有一定的距離。本文參考已有的方案,基于Web越權(quán)漏洞這個(gè)常見(jiàn)的細(xì)分漏洞,利用AI大模型從零搭建一個(gè)自動(dòng)化安全測(cè)試流程。
針對(duì)Web越權(quán)漏洞,其實(shí)已經(jīng)有很多很好用的輔助插件可以方便滲透測(cè)試人員進(jìn)行測(cè)試,比如BurpSuite中的Autorize插件,只需要自定義需要替換的認(rèn)證頭即可被動(dòng)測(cè)試?;贏I的測(cè)試插件也有很多,構(gòu)建提示詞對(duì)流量返回包進(jìn)行對(duì)比分析省去人工核驗(yàn)的步驟。下面就基于水平越權(quán)且只有單個(gè)測(cè)試賬號(hào)的場(chǎng)景,跑通AI自動(dòng)化修改參數(shù)發(fā)包->AI自動(dòng)比對(duì)響應(yīng)包檢測(cè)漏洞的流程,如下圖所示(圖片由AI生成)
PART.2 AI編寫檢測(cè)系統(tǒng)
我們的目標(biāo)是做一個(gè)水平越權(quán)檢測(cè)系統(tǒng),AI修改參數(shù),重放,AI比對(duì)響應(yīng)得出漏洞檢測(cè)結(jié)果,既然目標(biāo)清晰,就可以編寫提示詞讓AI IDE(本文使用的是Trae)將整個(gè)系統(tǒng)實(shí)現(xiàn)出來(lái),參考提示詞:
我想利用大模型技術(shù)開(kāi)發(fā)一個(gè)被動(dòng)式的Web越權(quán)漏洞檢測(cè)系統(tǒng):
1.傳統(tǒng)的自動(dòng)化越權(quán)漏洞檢測(cè)原理為burpsuite的Authorize插件,通過(guò)被動(dòng)式捕獲http流量,對(duì)指定請(qǐng)求頭進(jìn)行替換如cookie,判斷返回包長(zhǎng)度大小是否一致,一致則存在越權(quán)漏洞;
2.我發(fā)現(xiàn)上述檢測(cè)手段存在局限:一個(gè)是設(shè)置固定的替換請(qǐng)求頭太過(guò)死板,只能檢測(cè)淺層的越權(quán)漏洞,有些認(rèn)證頭如cookie參數(shù)非常多,應(yīng)該根據(jù)參數(shù)名的含義和特征進(jìn)行動(dòng)態(tài)替換,如uid=1001可以替換為加uid=1(可能為管理員)或者隨機(jī)減數(shù)如uid=998,或者phone=13811111111替換為phone=18888888888,這些都需要大模型識(shí)別參數(shù)含義進(jìn)行動(dòng)態(tài)替換;
3.另一個(gè)是只通過(guò)判斷返回包長(zhǎng)度大小過(guò)于局限,需要大模型根據(jù)返回包內(nèi)容進(jìn)行判斷,防止誤報(bào);
4.另外為了節(jié)約token開(kāi)銷,需要過(guò)濾掉返回包靜態(tài)資源如html、js、文件、圖片等等,只判斷返回格式為json、xml、txt獲取其他有效數(shù)據(jù)返回格式的請(qǐng)求包
AI開(kāi)發(fā)系統(tǒng)架構(gòu)如下圖所示
最終經(jīng)過(guò)多輪對(duì)話,AI編寫除了一個(gè)檢測(cè)系統(tǒng)和一個(gè)存在水平越權(quán)的測(cè)試應(yīng)用
啟動(dòng)檢測(cè)系統(tǒng),檢測(cè)系統(tǒng)啟動(dòng)在5000端口,監(jiān)聽(tīng)了一個(gè)8080端口的被動(dòng)代理,待測(cè)應(yīng)用只需要代理這個(gè)端口即可
點(diǎn)擊啟動(dòng)掃描啟動(dòng)測(cè)試應(yīng)用,這個(gè)測(cè)試應(yīng)用的多個(gè)接口存在水平越權(quán)漏洞,如訂單查詢接口
/api/user/orders?user_id=1
可以看到使用檢測(cè)系統(tǒng)成功檢測(cè)出了這個(gè)接口的水平越權(quán)漏洞
從上面流程可以看出,我們僅僅通過(guò)對(duì)話的方式,就讓AI做出了一個(gè)“看起來(lái)可用”的Web水平越權(quán)漏洞檢測(cè)系統(tǒng),甚至對(duì)于如何修改參數(shù)、如何對(duì)比響應(yīng)包的提示詞都是AI自行編寫的。但是全部使用AI完成這套流程存在一個(gè)比較麻煩的問(wèn)題,就是維護(hù)和擴(kuò)展只能依賴AI繼續(xù)完成,自己和別人都無(wú)法很好的理解和擴(kuò)展這段代碼,最后可能變成一個(gè)“屎山”系統(tǒng)。那有沒(méi)有更好的方式,既能完全使用AI大模型解放生產(chǎn)力又能更好維護(hù)呢,下面就用大模型配合原生AI工作流平臺(tái)結(jié)合的方式進(jìn)行探索。
PART.3 AI大模型+N8N工作流重構(gòu)檢測(cè)系統(tǒng)
N8N和coze、Dify等系統(tǒng)一樣,都是原生支持AI大模型的工作流平臺(tái),擁有非常豐富的組件和社區(qū)模板,用戶只需要在工作臺(tái)拖動(dòng)組件進(jìn)行配置就可以完成,如下圖所示,這樣的方式對(duì)于維護(hù)和擴(kuò)展來(lái)說(shuō)都非常簡(jiǎn)潔直觀
首先先寫一個(gè)代理腳本,作為初步的數(shù)據(jù)過(guò)濾和格式化,減少并標(biāo)準(zhǔn)化發(fā)送到n8n進(jìn)行AI處理的流量(腳本由AI生成)

然后讓AI生成N8N工作流json文件

導(dǎo)入到N8N平臺(tái)經(jīng)過(guò)調(diào)整之后流程如下

最后只需在主機(jī)上運(yùn)行一個(gè)代理即可,N8N的工作流就相當(dāng)于一個(gè)AI AGENT,完成了所有的測(cè)試工作

如此以來(lái),就對(duì)整個(gè)檢測(cè)系統(tǒng)進(jìn)行了解耦,N8N作為檢測(cè)中樞,其中的所有模塊都可以復(fù)用,如流量解析、請(qǐng)求重放、去重、告警通知等,如果想要測(cè)試其他漏洞,只需修改AI節(jié)點(diǎn)中的提示詞即可,從維護(hù)和擴(kuò)展上來(lái)說(shuō),都非常的方便直觀。對(duì)于測(cè)試人員來(lái)說(shuō),不需要知道檢測(cè)系統(tǒng)怎么啟動(dòng)運(yùn)行,只需要啟動(dòng)一個(gè)代理接入即可;對(duì)于設(shè)計(jì)人員來(lái)說(shuō),只需要在N8N工作流平臺(tái)中進(jìn)行流程設(shè)計(jì)即可。這樣的模式對(duì)于集成到CI/CD會(huì)更有優(yōu)勢(shì)。
PART.4 總結(jié)
本文僅對(duì)水平越權(quán)漏洞的AI全自動(dòng)化發(fā)現(xiàn)流程進(jìn)行了研究,而且并未考慮系統(tǒng)通用性、性能、提示詞設(shè)計(jì)等因素,只是一次實(shí)驗(yàn)性的探索。從結(jié)果上來(lái)說(shuō),流程上是跑通了但是還沒(méi)有落地可用,但在設(shè)計(jì)過(guò)程中,確實(shí)感覺(jué)讓AI融入現(xiàn)有流程的效果確實(shí)比讓AI從零實(shí)現(xiàn)一個(gè)目標(biāo)的效果要好得多,很多單位內(nèi)部其實(shí)都有了一套安全測(cè)試(運(yùn)營(yíng))流程(工作流),可以讓AI集成到這一流程中,既能夠真實(shí)的節(jié)省人力,也不至于有很大的學(xué)習(xí)維護(hù)成本。