版權(quán)聲明:本教程為筆者原創(chuàng),轉(zhuǎn)載需征求筆者同意。
港真,這其實(shí)是一篇教你怎么賺錢的PoC指南,所以呢,如果你通過這篇文章賺錢了,請不要吝嗇你的轉(zhuǎn)發(fā)跟點(diǎn)贊。呀比!
講完了無框架編寫PoC,現(xiàn)在就來說說怎么將我們的代碼 2_2_2.py
改寫成基于 Bugscan 框架的 PoC。
Bugscan 框架要求所有的邏輯代碼都必須是基于 Python 2.7 的標(biāo)準(zhǔn)庫的,所以像 requests 這種第三方庫就不能在這里使用了。
Bugscan 提供了一個(gè)自己 sdk 封裝好的 HTTP 請求發(fā)送工具 miniCurl,經(jīng)歷過一次改版后又提供了 miniCurl2, curl2 相比其它類庫最大的特點(diǎn)是支持 raw 類型數(shù)據(jù),也就是說,你從 burpsuite 里面截到的包直接復(fù)制出來就能直接發(fā)送,這大大方便了安全人員編寫 PoC ,然而我并不喜歡這種方式,后面會講講這個(gè)東西怎么用。
官方出了更好用的 curl2 所以 curl 我就不在這里講了。關(guān)于 miniCurl2 的用法,詳細(xì)看這里(http://q.bugscan.net/t/749)
代碼 2_2_4.py
:
我們下載 Bugscan 官方 sdk 之后,將其解壓,sdk 目錄下有一個(gè) dummy 目錄,我們將 dummy 目錄拷貝到和 2_2_4.py
在相同目錄下:
代碼 2_2_4.py
中 if __name__ == '__main__':
部分已經(jīng)指定了我們待測試的目標(biāo)地址。然后我們執(zhí)行 2_2_4.py
,看到如下結(jié)果:
看到這個(gè)就是執(zhí)行成功了。本地是以 log 形式輸出的,這玩意在網(wǎng)頁上就會以掃描報(bào)告形式輸出的。
好吧我們直接看代碼結(jié)構(gòu)了:
整體結(jié)構(gòu)就像上面說的那樣,最上面,是引入自己要用到的標(biāo)準(zhǔn)庫,assign
就是任務(wù)分配函數(shù),是來判斷本次掃描任務(wù)是否可以調(diào)用這個(gè) PoC 的, audit
就是整個(gè)驗(yàn)證邏輯的入口了,最下面的if __name__ == '__main__':
這段代碼是為了讓你在本地測試用的。
好了,看下具體的部分吧。
這就是 assign 部分的代碼了,Bugscan 在掃描任務(wù)開始的時(shí)候,會先去識別組件是什么樣的 CMS ,然后再調(diào)用相對應(yīng)的 PoC 去檢測是否有對應(yīng)的漏洞,你想啊,你用一個(gè) CmsEasy 特有的漏洞的 PoC 去驗(yàn)證 WordPress 搭的一個(gè)站, 你這不是搞笑嘛?大部分情況下都不會有啊。
service 就是這個(gè)指紋識別的結(jié)果,類型是個(gè)字符串。具體支持什么,你去看官方文檔就好了。這里我們直接寫 cmseasy ,看代碼邏輯啊,如果我們的 service 識別出來是 cmseasy , 那么就返回一個(gè)列表 (True, arg) 這里的 arg 就是 url 了。
根據(jù) main 里面的 audit(assign('cmseasy', 'http://localhost/cmseasy/')[1])
我們知道, audit 的 arg 參數(shù)就是初始的 url 。
吶,我已經(jīng)不想解釋了,你和代碼 2_2_2.py
對比下吧。區(qū)別有兩點(diǎn),第一個(gè)就是發(fā)送數(shù)據(jù)使用了 curl.curl2, 這個(gè)的用法看官方說明 然后就是輸出不再是 print 而是調(diào)用了 security_hole 來輸出我們想要輸出的字符串。
security_hole 是高危,在網(wǎng)頁上顯示紅色
security_warning 是中危,黃色
security_info 低危,藍(lán)色
security_note 信息收集,綠色
好了,基于 Bugscan 框架的 PoC 編寫也講完了。
點(diǎn)擊“閱讀原文”就可以跟Medici.Yan在評論區(qū)交流哦
聯(lián)系客服