利用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 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
跟老齐学Python之变量和参数
Oct 10 Python
Python学习教程之常用的内置函数大全
Jul 14 Python
解决pandas使用read_csv()读取文件遇到的问题
Jun 15 Python
python实现朴素贝叶斯算法
Nov 19 Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 Python
Python自定义一个类实现字典dict功能的方法
Jan 19 Python
详解django+django-celery+celery的整合实战
Mar 19 Python
详解Python Opencv和PIL读取图像文件的差别
Dec 27 Python
pandas中ix的使用详细讲解
Mar 09 Python
django使用JWT保存用户登录信息
Apr 22 Python
Python定时从Mysql提取数据存入Redis的实现
May 03 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数组函数
2008/08/18 PHP
php后门URL的防范
2013/11/12 PHP
PHP读取大文件的类SplFileObject使用介绍
2014/04/09 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
jquery中 $.expr使用实例介绍
2014/06/09 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
jquery zTree异步加载简单实例讲解
2016/02/25 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
Vue.directive()的用法和实例详解
2018/03/04 Javascript
Vue2.0 事件的广播与接收(观察者模式)
2018/03/14 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
python判断字符串是否纯数字的方法
2014/11/19 Python
python实现类之间的方法互相调用
2018/04/29 Python
python中删除某个元素的方法解析
2019/11/05 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
关于Pytorch MaxUnpool2d中size操作方式
2020/01/03 Python
python enumerate内置函数用法总结
2020/01/07 Python
python matplotlib.pyplot.plot()参数用法
2020/04/14 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
销售人员管理制度
2015/08/06 职场文书
python通过函数名调用函数的几种方法总结
2021/06/07 Python
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android