安服福音--第一弹!wvs结果批量整理工具
本文原創作者:3s_NwGeek
原創投稿詳情:重金懸賞 | 合天原創投稿等你來!
0x01 應用背景
無論是安全服務的苦逼還批量挖洞的滲透伙伴時不時會使用到wvs批量掃描,而且結果要逐個打開wvs報告,然后把漏洞整理漏洞等級、名稱、描述、修復建議到excel里。歷經40小時開發和調整,現在實現了自動化完成而且免python環境執行,批量輸出漏洞等級,漏洞名稱,漏洞url,掃描資產的url,還自動翻譯漏洞名稱、漏洞描述和修復建議英文,大大改善重復體力工作。
0x02 使用示范
wvs批量提取掃描結果工具使用說明書。已升級到3.0版本,比較完善,可以提取漏洞等級,漏洞名稱,漏洞url,掃描地址,漏洞參考數據包,漏洞描述,漏洞修復建議,使用百度翻譯api,自動翻譯,聯網即可使用。
使用wvs 10.5
批量掃描時,使用以下模式生成報告(Affected Items)
生成html報告
掃描完成結果會自動存放在C:\Users\Public\Documents\Acunetix WVS 10\Saves
打開cmd,把wvsReprot3.0.exe拖進cmd (需要聯網環境)
然后再加保存wvs掃描結果的文件夾的路徑
(默認是這個: C:\Users\Public\Documents\Acunetix WVS 10\Saves)
回車執行即可輸出報告
輸出結果示例如下:
漏洞等級|漏洞名稱|漏洞url| 掃描資產|參考數據包|漏洞描述|修復建議
按照是wvs報告使用百度翻譯api輸出。
工具在文末發放!
0x03 實現原理
1.python爬蟲
2.python excel處理模塊
3.百度翻譯api
4.python 2 exe 打包編譯
1.首先來看一下wvs報告的html格式
每個掃描到的漏洞的信息都會有標簽順序
漏洞url
Alertgroup 漏洞名稱
漏洞等級
漏洞描述
漏洞參考數據包
漏洞修復建議
所以大概實現的原理只需定位一個Alertgroup,然后再上下按順序找每個特定的標簽即可。
Python爬蟲只爬取中高危漏洞
用到模塊
importos,sys,re ? ? ?#文件i/o
frombs4 importBeautifulSoup #標簽爬取
importhttplib,md5,urllib,random,time#baidu翻譯
importxlwt#excel寫入
關鍵代碼如下
sites= soup.find_all(class_=re.compile('^s'),text="Alertgroup")
#獲取host
tem=str(soup.find_all(class_=re.compile('^s'),text=re.compile('^Scanof'))[0].string).split("/")
host=(tem[0].replace("Scanof ","")+"//"+tem[2])
scanurl= str(soup.find_all(class_=re.compile('^s'),text=re.compile('^Scanof'))[0].string).replace("Scanof ","")#掃描的資產url,跟漏洞url會不一樣
===================================================================
#定義標準attrs爬取
#漏洞名稱attrs爬取
vulname_attrs=sites[0].find_next(class_=re.compile('^s')).attrs
#漏洞等級attrs爬取
vullevel_attrs=sites[0].find_next(class_=re.compile('^s')).find_next(class_=re.compile('^s')).find_next(class_=re.compile('^s')).attrs
#漏洞urlattrs爬取
vulurl_attrs=sites[0].find_previous(class_=re.compile('^s')).attrs
test=sites[0].find_previous(class_=re.compile('^s'))
if"Parameter"intest.find_previous(class_=re.compile('^s')).string:
? ?vulurl_attrs =test.find_previous(class_=re.compile('^s')).find_previous(class_=re.compile('^s')).attrs
##############################
#漏洞描述爬取
vuldes= site.find_next(class_=re.compile('^s'),text="Description").find_next()
vuldes= ''.join(vuldes.parent.stripped_strings)
vuldes= str(vuldes).decode("unicode_escape")
vuldes= translate(vuldes)#百度翻譯
time.sleep(1) ? ? ? ? ? ? ?#百度翻譯api只允許1秒1次
#print vuldes
##############################
# 修復建議爬取
vulre= site.find_next(class_=re.compile('^s'),text="Recommendations").find_next()
vulre= ''.join(vulre.parent.stripped_strings)
vulre= str(vulre).decode("unicode_escape")
vulre= translate(vulre)#百度翻譯
time.sleep(1) ? ? ? ? ? ? ?#百度翻譯api只允許1秒1次
###############################
#獲取數據包
try:
? requestattrs = vulname.parent ?#漏洞名tag
? request =site.find_previous(attrs=vulurl_attrs).string # 路徑
? #上面已定義sep= re.compile(r'\s*\((.*?)\).*?' ) ? ? ? ? ?#同一個漏洞不同參數會出現路徑后有(md5)導致出錯,正則去除
? request = sep.sub('',request)
? rex = "^(GET|POST|OPTION|DELETE).+"+ request + ".+" # 正則
? if request== "Web Server" andrequest =="/":
? ? ? ?req = "WebServer"
? ?else:
? ? ? req = requestattrs.find_next(text=re.compile(rex))
? ? ? req=''.join(req.parent.stripped_strings) # 數據包tag
? ? ? req =str(req).decode("unicode_escape")
exceptException asdes:
? ?req="Nodata"
2.python excel處理模塊
file= xlwt.Workbook(encoding ='utf-8') # 注意這里的Workbook首字母是大寫,
table= file.add_sheet('wvs')
table.col(1).width=320*20
table.col(2).width=320*20
table.col(3).width=320*20
table.col(4).width=220*20
table.col(5).width=520*20
table.col(6).width=520*20
table.write(k,0, u"漏洞等級")#寫入第一行
table.write(k,1,u"漏洞名稱")
table.write(k,2,u"漏洞url")
table.write(k,3,u"掃描資產url")
table.write(k,4,u"漏洞參考數據包")
table.write(k,5,u"漏洞描述")
table.write(k,6,u"修復建議")
table.write(k,7,u"漏洞驗證")
table.write(k,8, u"備注")
table.write(k,0,vullevel) #寫入爬取的標簽
table.write(k,1,vulname)
table.write(k, 2,vulurl)
table.write(k, 3,scanurl)
table.write(k, 4,req)
table.write(k, 5,vuldes)
table.write(k, 6,vulre)
genpath="%s\\wvsReport.xls"%sys.argv[1] ? ? ?# 保存文件
file.save(genpath)
print"\n\n\n\nVultotal:", k
print"xls Report in%s\\wvsReport.xls"%sys.argv[1]
3.百度翻譯api
比較好理解:輸入英文輸出中文
deftranslate(WORD):
? ?appid ='20151113000005349'
? secretKey = 'osubCEzlGjzvw8qdQc41'
? httpClient = None
? myurl = '/api/trans/vip/translate'
? q = WORD
? ?fromLang ='en'
? ?toLang= 'zh'
? ?salt= random.randint(32768,65536)
? sign = appid+q+str(salt)+secretKey
? m1 = md5.new()
? ?m1.update(sign)
? ?sign =m1.hexdigest()
? ?myurl =myurl+'?appid='+appid+'&q='+urllib.quote(q)+'&from='+fromLang+'&to='+toLang+'&salt='+str(salt)+'&sign='+sign
? try:
? ? ? httpClient = httplib.HTTPConnection('api.fanyi.baidu.com')
? ? ? httpClient.request('GET',myurl)
? ? ? ?response = httpClient.getresponse()
? ? ? trword=response.read().split("\"")[-2].decode('unicode_escape')
? except Exception,e:
? ? ? ?print e
? finally:
? ? ? if httpClient:
? ? ? ? ? httpClient.close()
? ?returntrword
4.python 2 exe 打包編譯
使用py2exe
fromdistutils.core importsetup
importpy2exe
#cli # python C:\Users\lenovo\PycharmProjects\untitled\test100\打包.pypy2exe
def main():
?setup(console=["C:\Users\lenovo\PycharmProjects\untitled\\3s_NwGeek\work\\wvsReport.py"])
if__name__ == '__main__':
? ?main()
? ?pass
編譯打包后就可以不需要python環境運行。
0x04 文末福利
工具分享鏈接
鏈接:https://pan.baidu.com/s/1a3crdN-UFf-1WBeUa5SWcg
密碼:mo32
看不過癮?合天2017年度干貨精華請點擊《【精華】2017年度合天網安干貨集錦》
別忘了投稿哦!
合天公眾號開啟原創投稿啦!!!
大家有好的技術原創文章。
歡迎投稿至郵箱:edu@heetian.com
合天會根據文章的時效、新穎、文筆、實用等多方面評判給予100元-500元不等的稿費喲。
有才能的你快來投稿吧!
點擊了解投稿詳情?重金懸賞 | 合天原創投稿等你來!
總結
以上是生活随笔為你收集整理的安服福音--第一弹!wvs结果批量整理工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [aapt包管理]aapt查询Apk最低
- 下一篇: 华三无线控制器的配置优化