利用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 15 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
Oct 20 Python
Python爬虫框架Scrapy常用命令总结
Jul 26 Python
对python3新增的byte类型详解
Dec 04 Python
FFrpc python客户端lib使用解析
Aug 24 Python
Python实现代码统计工具
Sep 19 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
Sep 20 Python
Python importlib动态导入模块实现代码
Apr 16 Python
TensorFLow 数学运算的示例代码
Apr 21 Python
Python实现一个简单的毕业生信息管理系统的示例代码
Jun 08 Python
对python中list的五种查找方法说明
Jul 13 Python
Python中Selenium对Cookie的操作方法
Jul 09 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者的疑难问答(1)
2006/10/09 PHP
PHP学习笔记之数组篇
2011/06/28 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
JavaScript this 深入理解
2009/07/30 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
JS SetInterval 代码实现页面轮询
2017/08/11 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
python检查URL是否正常访问的小技巧
2017/02/25 Python
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
Python3.5文件修改操作实例分析
2019/05/01 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
Python读取实时数据流示例
2019/12/02 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
python怎么判断模块安装完成
2020/06/19 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
经典C++面试题一
2016/11/06 面试题
临床护理求职信
2014/04/26 职场文书
《社戏》教学反思
2016/02/22 职场文书