利用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 06 Python
在Python中使用全局日志时需要注意的问题
May 06 Python
python开发之tkinter实现图形随鼠标移动的方法
Nov 11 Python
Python绑定方法与非绑定方法详解
Aug 18 Python
Python实现的json文件读取及中文乱码显示问题解决方法
Aug 06 Python
python中的tcp示例详解
Dec 09 Python
Python简单基础小程序的实例代码
Apr 28 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
python join方法使用详解
Jul 30 Python
python怎么判断模块安装完成
Jun 19 Python
matplotlib 三维图表绘制方法简介
Sep 20 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 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/06/14 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
jquery.validate使用攻略 第一部
2010/07/01 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
javascript实现抽奖程序的简单实例
2016/06/07 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
老生常谈js-react组件生命周期
2017/05/02 Javascript
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
Windows下PyMongo下载及安装教程
2015/04/27 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
2017/07/20 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
Python列表对象实现原理详解
2019/07/01 Python
电脑饰品店的创业计划书
2014/01/21 职场文书
食品安全承诺书范文
2014/08/29 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
先进个人材料怎么写
2014/12/30 职场文书
导游词欢迎词
2015/02/02 职场文书
确保工程质量承诺书
2015/04/29 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
参加招聘会后的感想
2015/08/10 职场文书