利用Python半自动化生成Nessus报告的方法


Posted in Python onMarch 19, 2019

0x01 前言

Nessus是一个功能强大而又易于使用的远程安全扫描器,Nessus对个人用户是免费的,只需要在官方网站上填邮箱,立马就能收到注册号了,对应商业用户是收费的。当然,个人用户是有16个IP限制,通过企业邮箱可以体验免费7天的Nessus专业版,IP无限制。

Nessus激活码获取地址:https://www.tenable.com/products/nessus/activation-code

利用Python半自动化生成Nessus报告的方法

0x02 Nessus使用

登录后通过New Scan创建扫描任务,扫描完成后,我们即可导出扫描报告。Nessus提供4种报告类型导出:

利用Python半自动化生成Nessus报告的方法

我们选择HTML类型,Report选择Custom,Croup By 选择Host,导出HTML报告。

利用Python半自动化生成Nessus报告的方法

但这些报告还需要进一步整理成我们想要的格式,并且去掉不必要的消息,得到最终我们希望能够得到信息。

那首先我们确认一下,想要得到的信息是哪些呢?

1、服务器IP

2、漏洞危害级别

3、漏洞名称

这三个最基本的信息,对我来说就差不都足够了,我就知道哪些服务器存在高危漏洞,并提供解决漏洞修复建议。

0x03 Python脚本

通过解析html文件,获取相关漏洞信息,并输出到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"严重 - "+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(['服务器IP','漏洞级别','漏洞编号','漏洞名称'])

    for i in list_host:

      data=i.split('-',3)

      w.writerow([item.encode('utf8') for item in data])

脚本运行效果如下:

利用Python半自动化生成Nessus报告的方法

在同目录下生成result.csv,内容如下:

利用Python半自动化生成Nessus报告的方法

最后,通过excel进行相关信息的筛选、删除和整理,最后汇总成报告。

0x04 小结

本文提供了一个demo,用于半自动化生成Nessus报告,有需要的话,可入库扩展,增加自动翻译,提供修复建议等。Nessus中文漏洞库可参见这个项目,NessusReportInChinese:半自动化将 Nessus 英文报告(csv格式)生成中文 excel ,中文漏洞库已有700多条常见漏洞。

github地址:https://github.com/FunnyKun/NessusReportInChinese

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
布同自制Python函数帮助查询小工具
Mar 13 Python
Python中操作MySQL入门实例
Feb 08 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
Python3.遍历某文件夹提取特定文件名的实例
Apr 26 Python
解决Pycharm运行时找不到文件的问题
Oct 29 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
详解基于Scrapy的IP代理池搭建
Sep 29 Python
Pandas替换及部分替换(replace)实现流程详解
Oct 12 Python
Pytorch 使用tensor特定条件判断索引
Apr 08 Python
python 三边测量定位的实现代码
Apr 22 Python
Python Django搭建文件下载服务器的实现
May 10 Python
PyTorch中permute的使用方法
Apr 26 Python
python实现手机销售管理系统
Mar 19 #Python
Python使用修饰器进行异常日志记录操作示例
Mar 19 #Python
python学生管理系统学习笔记
Mar 19 #Python
Python操作rabbitMQ的示例代码
Mar 19 #Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 #Python
浅谈python中get pass用法
Mar 19 #Python
使用matplotlib中scatter方法画散点图
Mar 19 #Python
You might like
在php中取得image按钮传递的name值
2006/10/09 PHP
PHP入门
2006/10/09 PHP
PHP 变量类型的强制转换
2009/10/23 PHP
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
jQuery中hover与mouseover和mouseout的区别分析
2015/12/24 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
浅谈js的异步执行
2016/10/18 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
[54:29]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第二场
2018/04/09 DOTA
[01:07:57]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第二场 1月19日
2021/03/11 DOTA
python实现指定字符串补全空格的方法
2015/04/30 Python
Python SQLite3简介
2018/02/22 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
python中for in的用法详解
2020/04/17 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
英国现代绅士品牌:Hackett
2017/12/17 全球购物
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
班主任工作经验材料
2014/02/02 职场文书
美容院营销方案
2014/03/05 职场文书
初三学习计划书范文
2014/04/30 职场文书
2015年电工工作总结
2015/04/10 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
《桂花雨》教学反思
2016/02/19 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android