利用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 相关文章推荐
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
Jan 23 Python
详解在Python中处理异常的教程
May 24 Python
剖析Python的Tornado框架中session支持的实现代码
Aug 21 Python
python实现文本去重且不打乱原本顺序
Jan 26 Python
python爬虫实战之爬取京东商城实例教程
Apr 24 Python
Python探索之修改Python搜索路径
Oct 25 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
Dec 18 Python
Python+AutoIt实现界面工具开发过程详解
Aug 07 Python
解析python的局部变量和全局变量
Aug 15 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
Sep 29 Python
Python字节单位转换(将字节转换为K M G T)
Mar 02 Python
Pygame Rect区域位置的使用(图文)
Nov 17 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月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
解析php DOMElement 操作xml 文档的实现代码
2013/05/10 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
smarty简单分页的实现方法
2014/10/27 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
PHP文件上传类实例详解
2016/04/08 PHP
PHP简单遍历对象示例
2016/09/28 PHP
YII框架常用技巧总结
2019/04/27 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
JavaScript QueryString解析类代码
2010/01/17 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
浅谈webpack4 图片处理汇总
2018/09/12 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
详解Python的Django框架中的中间件
2015/07/24 Python
Python正则抓取网易新闻的方法示例
2017/04/21 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
celery4+django2定时任务的实现代码
2018/12/23 Python
Python 实现训练集、测试集随机划分
2020/01/08 Python
西班牙购买隐形眼镜、眼镜和太阳镜网站:Lentiamo.es
2020/06/11 全球购物
大学生入党思想汇报
2014/01/01 职场文书
中秋节礼品促销方案
2014/02/02 职场文书
写给老婆的检讨书
2014/02/21 职场文书
公司任命书范本
2014/06/04 职场文书
社区娱乐活动方案
2014/08/21 职场文书
幼师小班个人总结
2015/02/12 职场文书