利用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 自动化表单提交实例代码
Jun 08 Python
python使用folium库绘制地图点击框
Sep 21 Python
在linux系统下安装python librtmp包的实现方法
Jul 22 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
Jan 07 Python
python3 使用traceback定位异常实例
Mar 09 Python
django中的数据库迁移的实现
Mar 16 Python
Python selenium爬虫实现定时任务过程解析
Jun 08 Python
解决Keras使用GPU资源耗尽的问题
Jun 22 Python
基于Python的图像阈值化分割(迭代法)
Nov 20 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
Jan 12 Python
Python使用DFA算法过滤内容敏感词
Apr 22 Python
python读取mat文件生成h5文件的实现
Jul 15 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 addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
增强的 JavaScript 的 trim 函数的代码
2007/08/13 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
javascript 动态创建表格
2015/01/08 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
React组件refs的使用详解
2018/02/09 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
极简的Python入门指引
2015/04/01 Python
Python中splitlines()方法的使用简介
2015/05/20 Python
python机器学习之随机森林(七)
2018/03/26 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
python实现图片转字符画的完整代码
2021/02/21 Python
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
本科生个人求职自荐信
2013/09/26 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
教师远程培训感言
2014/03/06 职场文书
学生请假条
2014/04/11 职场文书
销售顾问工作计划书
2014/09/15 职场文书
办公室领导干部作风整顿个人整改措施
2014/09/17 职场文书
单位接收函范文
2015/01/30 职场文书
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL