利用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解释执行原理分析
Aug 22 Python
Python 的内置字符串方法小结
Mar 15 Python
Python在图片中添加文字的两种方法
Apr 29 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
Nov 18 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
Python实现的旋转数组功能算法示例
Feb 23 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
Jul 08 Python
python超时重新请求解决方案
Oct 21 Python
python使用OpenCV模块实现图像的融合示例代码
Apr 10 Python
解决在keras中使用model.save()函数保存模型失败的问题
May 21 Python
python 密码学示例——凯撒密码的实现
Sep 21 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 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
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
PHP 常见郁闷问题答解
2006/11/25 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
2015/03/24 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
js 文件引入实现代码
2010/04/23 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
2014/05/03 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
[01:11:32]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python学习笔记:字典的使用示例详解
2014/06/13 Python
Anaconda入门使用总结
2018/04/05 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
python实现字符串中字符分类及个数统计
2018/09/28 Python
django+mysql的使用示例
2018/11/23 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
俄罗斯名牌服装网上商店:UNIQUE FABRIC
2019/07/25 全球购物
口腔医学技术应届生求职信
2013/11/09 职场文书
小学毕业家长寄语
2014/01/19 职场文书
大学学习个人的自我评价
2014/02/18 职场文书
个人求职自荐信范文
2015/03/06 职场文书
小学感恩节活动总结
2015/03/24 职场文书
在人间读书笔记
2015/06/30 职场文书
送给客户微信问候语!
2019/07/04 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python