利用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实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
Jun 04 Python
用Python制作简单的朴素基数估计器的教程
Apr 01 Python
Python中关于字符串对象的一些基础知识
Apr 08 Python
Python中字典的浅拷贝与深拷贝用法实例分析
Jan 02 Python
python破解zip加密文件的方法
May 31 Python
Python实现账号密码输错三次即锁定功能简单示例
Mar 29 Python
python 自动轨迹绘制的实例代码
Jul 05 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
Python count函数使用方法实例解析
Mar 23 Python
学习python需要有编程基础吗
Jun 02 Python
详解python的super()的作用和原理
Oct 29 Python
利用python 下载bilibili视频
Nov 13 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中定时计划任务的实现原理
2013/01/08 PHP
php控制文件下载速度的方法
2015/03/24 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
ThinkPHP5&5.1框架关联模型分页操作示例
2019/08/03 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
Python线程中对join方法的运用的教程
2015/04/09 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
Django 静态文件配置过程详解
2019/07/23 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
python 使用tkinter+you-get实现视频下载器
2020/11/17 Python
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
《木笛》教学反思
2014/03/01 职场文书
幼儿园安全责任书
2014/04/14 职场文书
给公司的建议书范文
2014/05/13 职场文书
Redis数据结构之链表与字典的使用
2021/05/11 Redis
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python
JavaScript实现班级抽签小程序
2021/05/19 Javascript
pytorch 中nn.Dropout的使用说明
2021/05/20 Python
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis
Python中super().__init__()测试以及理解
2021/12/06 Python
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android