利用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 添加用户设置密码并发邮件给root用户
Jul 25 Python
python的Tqdm模块的使用
Jan 10 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
python的scikit-learn将特征转成one-hot特征的方法
Jul 10 Python
浅谈Pandas:Series和DataFrame间的算术元素
Dec 22 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
django框架中间件原理与用法详解
Dec 10 Python
Python打印特殊符号及对应编码解析
May 07 Python
Mysql数据库反向生成Django里面的models指令方式
May 18 Python
paramiko使用tail实时获取服务器的日志输出详解
Dec 06 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 Python
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
Jun 08 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
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
jcrop基本参数一览
2013/07/16 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
js实现随机数小游戏
2019/06/28 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
python中zip()方法应用实例分析
2016/04/16 Python
django如何通过类视图使用装饰器
2019/07/24 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
业务助理岗位职责
2013/11/18 职场文书
招股说明书范本
2014/05/06 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
预防艾滋病宣传活动总结
2015/05/09 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android