利用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 相关文章推荐
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
python实现ipsec开权限实例
Nov 11 Python
Python中操作文件之write()方法的使用教程
May 25 Python
给Python入门者的一些编程建议
Jun 15 Python
python和bash统计CPU利用率的方法
Jul 10 Python
Python3实现的字典遍历操作详解
Apr 18 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
解析python的局部变量和全局变量
Aug 15 Python
python循环输出三角形图案的例子
Nov 22 Python
Python二次规划和线性规划使用实例
Dec 09 Python
Python如何将函数值赋给变量
Apr 28 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
Sep 29 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
PHP.vs.JAVA
2016/04/29 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
javascript 的Document属性和方法集合
2010/01/25 Javascript
js防止表单重复提交实现代码
2012/09/05 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
jquery trigger实现联动的方法
2016/02/29 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
python常用函数与用法示例
2019/07/02 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
行政求职信
2014/07/04 职场文书
2014年世界艾滋病日宣传活动总结
2014/11/18 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
小班上学期个人总结
2015/02/12 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python