面向ChatGPT開發(fā)Nuclei漏洞模版解析
前言
沒什么要說的,簡單來說還是公司的需求,所以搞了一下,正好看ChatGPT蠻火的就嘗試了一下面向ChatGPT進(jìn)行開發(fā),本篇代碼大部分都是ChatGPT進(jìn)行開發(fā)的,我只是在部分存在Bug的地方和不符合需求的地方進(jìn)行了優(yōu)化修改。
開始
struct.go
定義一些結(jié)構(gòu)體用于存儲Nuclei漏洞信息,因?yàn)闃I(yè)務(wù)需求不需要 matchers字段,所以直接沒錄入.
parse.go
這個文件主要是用于解析識別漏洞請求信息轉(zhuǎn)換成http請求信息
根據(jù)代碼可以看到,[label color="indigo" shape="round"] {{Hostname}} [/label] 替換為目標(biāo)Url(BaseURL 變量)
因?yàn)槲也恍枰獙Y(jié)果進(jìn)行判斷,所以不需要解析訪問結(jié)果判斷,只需要獲取到請求的信息即可.
這個代碼是為了解析Raw類型的漏洞請求信息,例如:

結(jié)合ChatGPT輔助開發(fā)Nuclei漏洞模版解析
http.go
這個就是一個簡單的根據(jù)解析后的漏洞請求信息進(jìn)行發(fā)包。
PocScan.go
這個文件主要是實(shí)現(xiàn)加載指定目錄下的yaml/yml漏洞信息文件
結(jié)尾
大概就是這些,那里不懂的話你們再問我吧,評論區(qū)我??础?/p>
如何面向ChatGPT開發(fā)
關(guān)于怎么面向ChatGPT開發(fā)這個事情我也研究了幾十分鐘,說白了你可以把ChatGPT當(dāng)作一個對話模型,這個模型是可增長型的,所以你新建一個新的聊天窗口時需要先向他介紹你要用到的東西。
比如我一開始先介紹了Nuclei是做什么的,哪個組織發(fā)布的,然后他理解后再給他說自己的需求。
這個需求你可以先從簡單的來說。
比如先告訴他:“我需要解析Nuclei的漏洞模版,注意我需要的是通用的而不是指定的.”。
我們根據(jù)他生成的代碼看看有沒有問題。
沒有問題后再告訴他:“我有很多Nuclei的漏洞模版,我需要對他們進(jìn)行批量解析,然后進(jìn)行http發(fā)包,請注意請求方式,并且Nuclei的漏洞模版存在Raw格式的信息.”
然后我們繼續(xù)根據(jù)他生成的代碼看看有沒有問題,以此類推,一直到這個聊天框內(nèi)的機(jī)器人完全弄懂你要做什么后你再讓他進(jìn)行后續(xù)的拓展開發(fā)也好,優(yōu)化也好給出的代碼大部分都沒啥問題,無非就是語法上或需求實(shí)現(xiàn)上出錯。


