利用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中实现两个字典(dict)合并的方法
Sep 23 Python
Python中__new__与__init__方法的区别详解
May 04 Python
Python获取系统默认字符编码的方法
Jun 04 Python
Python六大开源框架对比
Oct 19 Python
python文件的md5加密方法
Apr 06 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
May 05 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 Python
Python3.x爬虫下载网页图片的实例讲解
May 22 Python
Python用for循环实现九九乘法表
May 31 Python
Python使用scipy模块实现一维卷积运算示例
Sep 05 Python
Matplotlib中%matplotlib inline如何使用
Jul 28 Python
Anaconda详细安装步骤图文教程
Nov 12 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对象相互引用的内存溢出实例分析
2014/08/28 PHP
PHP实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
广告显示判断
2006/08/31 Javascript
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
详解如何实现一个简单的Node.js脚手架
2017/12/04 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
2018/08/22 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
浅谈用VSCode写python的正确姿势
2017/12/16 Python
使用python对多个txt文件中的数据进行筛选的方法
2019/07/10 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
人力资源经理自我评价
2014/01/04 职场文书
即将毕业大学生自荐信
2014/01/24 职场文书
运动会开幕式主持词
2014/03/28 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
2014全年工作总结
2014/11/27 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
新人入职感言
2015/07/31 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS
Java 通过手写分布式雪花SnowFlake生成ID方法详解
2022/04/07 Java/Android
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript