利用Python半自動(dòng)化生成Nessus報(bào)告的方法
0x01 前言
Nessus是一個(gè)功能強(qiáng)大而又易于使用的遠(yuǎn)程安全掃描器,Nessus對(duì)個(gè)人用戶是免費(fèi)的,只需要在官方網(wǎng)站上填郵箱,立馬就能收到注冊(cè)號(hào)了,對(duì)應(yīng)商業(yè)用戶是收費(fèi)的。當(dāng)然,個(gè)人用戶是有16個(gè)IP限制,通過(guò)企業(yè)郵箱可以體驗(yàn)免費(fèi)7天的Nessus專(zhuān)業(yè)版,IP無(wú)限制。
Nessus激活碼獲取地址:https://www.tenable.com/products/nessus/activation-code

0x02 Nessus使用
登錄后通過(guò)New Scan創(chuàng)建掃描任務(wù),掃描完成后,我們即可導(dǎo)出掃描報(bào)告。Nessus提供4種報(bào)告類(lèi)型導(dǎo)出:

我們選擇HTML類(lèi)型,Report選擇Custom,Croup By 選擇Host,導(dǎo)出HTML報(bào)告。

但這些報(bào)告還需要進(jìn)一步整理成我們想要的格式,并且去掉不必要的消息,得到最終我們希望能夠得到信息。
那首先我們確認(rèn)一下,想要得到的信息是哪些呢?
1、服務(wù)器IP
2、漏洞危害級(jí)別
3、漏洞名稱(chēng)
這三個(gè)最基本的信息,對(duì)我來(lái)說(shuō)就差不都足夠了,我就知道哪些服務(wù)器存在高危漏洞,并提供解決漏洞修復(fù)建議。
0x03 Python腳本
通過(guò)解析html文件,獲取相關(guān)漏洞信息,并輸出到csv文件。
#! /usr/bin/env python
# _*_ coding:utf-8 _*_
#Author:Aaron
from lxml import etree
import csv
import sys
host=''
title=''
result_list=[]
def htm_parse(l):
if '#d43f3a' in etree.tostring(l):
info=u"嚴(yán)重 - "+l.text
elif '#ee9336' in etree.tostring(l):
info=u"高危 - "+l.text
elif '#fdc431' in etree.tostring(l):
info=u"中危 - "+l.text
elif '#3fae49' in etree.tostring(l):
info=u"低危 - "+l.text
elif '#0071b9' in etree.tostring(l):
info=u'信息泄露 - '+l.text
else:
info='Parsing error,Check that the versions are consistent.'
return info
def main(filename):
html = etree.parse(filename,etree.HTMLParser())
ls =html.xpath('/html/body/div[1]/div[3]/div')
for i in ls:
if "font-size: 22px; font-weight: bold; padding: 10px 0;" in etree.tostring(i):
host=i.text
elif "this.style.cursor" in etree.tostring(i):
result=host+" - "+htm_parse(i)
print result
result_list.append(result)
return result_list
if __name__ == '__main__':
filename=sys.argv[1]
list_host = main(filename)
with open('result.csv','wb') as f:
f.write(u'\ufeff'.encode('utf8'))
w = csv.writer(f)
w.writerow(['服務(wù)器IP','漏洞級(jí)別','漏洞編號(hào)','漏洞名稱(chēng)'])
for i in list_host:
data=i.split('-',3)
w.writerow([item.encode('utf8') for item in data])
腳本運(yùn)行效果如下:

在同目錄下生成result.csv,內(nèi)容如下:

最后,通過(guò)excel進(jìn)行相關(guān)信息的篩選、刪除和整理,最后匯總成報(bào)告。
0x04 小結(jié)
本文提供了一個(gè)demo,用于半自動(dòng)化生成Nessus報(bào)告,有需要的話,可入庫(kù)擴(kuò)展,增加自動(dòng)翻譯,提供修復(fù)建議等。Nessus中文漏洞庫(kù)可參見(jiàn)這個(gè)項(xiàng)目,NessusReportInChinese:半自動(dòng)化將 Nessus 英文報(bào)告(csv格式)生成中文 excel ,中文漏洞庫(kù)已有700多條常見(jiàn)漏洞。
github地址:https://github.com/FunnyKun/NessusReportInChinese
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python如何為被裝飾的函數(shù)保留元數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了python如何為被裝飾的函數(shù)保留元數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
Python?matplotlib實(shí)戰(zhàn)之氣泡圖繪制
氣泡圖是一種多變量的統(tǒng)計(jì)圖表,可以看作是散點(diǎn)圖的變形,這篇文章主要為大家介紹了如何使用Matplotlib繪制氣泡圖,需要的小伙伴可以參考下2023-08-08
Pandas中把dataframe轉(zhuǎn)成array的方法
下面小編就為大家分享一篇Pandas中把dataframe轉(zhuǎn)成array的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Tensorflow加載預(yù)訓(xùn)練模型和保存模型的實(shí)例
今天小編就為大家分享一篇Tensorflow加載預(yù)訓(xùn)練模型和保存模型的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07

