利用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中的格式化输出用法总结
Jul 28 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
tf.truncated_normal与tf.random_normal的详细用法
Mar 05 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
Apr 05 Python
python3实现163邮箱SMTP发送邮件
May 22 Python
Python 支付整合开发包的实现
Jan 23 Python
python3安装crypto出错及解决方法
Jul 30 Python
python创建学生成绩管理系统
Nov 22 Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 Python
pyinstaller打包找不到文件的问题解决
Apr 15 Python
解决paramiko执行命令超时的问题
Apr 16 Python
PyTorch安装与基本使用详解
Aug 31 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 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
javascript操作JSON的要领总结
2012/12/09 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
jQuery插件分享之分页插件jqPagination
2014/06/06 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
python搭建虚拟环境的步骤详解
2016/09/27 Python
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019/09/24 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
人力资源管理专业应届生求职信
2013/09/28 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
年度考核自我鉴定
2014/03/19 职场文书
销售个人求职信范文
2014/04/28 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
鲁迅故居导游词
2015/02/05 职场文书
债务纠纷代理词
2015/05/25 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS
Python办公自动化解决world文件批量转换
2021/09/15 Python