0x01 前言

  Nessus是一个功能强大而又易于使用的远程安全扫描器,Nessus对个人用户是免费的,只需要在官方网站上填邮箱,立马就能收到注册号了,对应商业用户是收费的。当然,个人用户是有16个IP限制,通过企业邮箱可以体验免费7天的Nessus专业版,IP无限制。

  Nessus激活码获取地址:https://www.tenable.com/products/nessus/activation-code

0x02  Nessus使用

  登录后通过New Scan创建扫描任务,扫描完成后,我们即可导出扫描报告。Nessus提供4种报告类型导出:

我们选择HTML类型,Report选择Custom,Croup By 选择Host,导出HTML报告。

但这些报告还需要进一步整理成我们想要的格式,并且去掉不必要的消息,得到最终我们希望能够得到信息。

那首先我们确认一下,想要得到的信息是哪些呢?

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])

脚本运行效果如下:

在同目录下生成result.csv,内容如下:

最后,通过excel进行相关信息的筛选、删除和整理,最后汇总成报告。

0x04  小结

  本文提供了一个demo,用于半自动化生成Nessus报告,有需要的话,可入库扩展,增加自动翻译,提供修复建议等。Nessus中文漏洞库可参见这个项目,NessusReportInChinese:半自动化将 Nessus 英文报告(csv格式)生成中文 excel ,中文漏洞库已有700多条常见漏洞。

github地址:https://github.com/FunnyKun/NessusReportInChinese

利用Python半自动化生成Nessus报告的更多相关文章

  1. Python+selenium自动化生成测试报告

    批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTest ...

  2. python UI自动化生成BeautifulReport测试报告并保存截图

    前面已经写过利用BeautifulReport生成测试报告,那么接下来讲讲如何在测试报告里面保存截图 首先需要在测试用例中定义一个截图的方法: # 截图方法 """ os ...

  3. 利用在线工具自动化生成findviewById

    我们在编码的时候经常会用到findviewById,不厌其烦,我之前介绍过一个很取巧的方法,挺好用的,这里再贴一下: public class KaleBaseActivity extends Act ...

  4. 自动化生成html报告

    package Utils; import java.io.File; import java.util.Date; import org.apache.commons.lang3.time.Date ...

  5. 利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素)

    对WebElement截图 WebDriver.Chrome自带的方法只能对当前窗口截屏,且不能指定特定元素.若是需要截取特定元素或是窗口超过了一屏,就只能另辟蹊径了. WebDriver.Phant ...

  6. Python脚本自动化破解大白鲨摄像头(Shodan)

    关于本文的技术知识点,Shodan模块的用法,传送门-->  Python中shadon模块的使用    Shodan的使用 今天我们要利用python进行自动化破解的摄像头叫大白鲨摄像头,他的 ...

  7. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)

    可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html 原文地址https://ww ...

  8. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(已弃用)

    前言 1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请 ...

  9. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告

    1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请求参数 ...

随机推荐

  1. Java 状态模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的:状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模 ...

  2. chardet查看字符串的编码(非常好用)

    chardet不是python自带的包需要手动安装 chardet安装命令(dos下): pip install chardet 或: pip.exe install chardet 案例: > ...

  3. python之模块4

    1 模块与包 1.1 模块的定义 什么是模块 模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 为什么使用模块 在退出python解释器然后重新进入,之前定义的函数 ...

  4. Asp.Net HttpPostedFile和base64两种上传图片(文件)方式

    之前上传图片基本都是用的HttpPostedFile方式获取图片,这次因为需求关系,要对准备上传的图片进行删除,最后提交的时候才去保存图片到服务器, 找了下资料,html5有个新的东西出来,js 里面 ...

  5. C#_02.13_基础三_.NET类基础

    C#_02.13_基础三_.NET类基础 一.类概述: 类是一个能存储数据和功能并执行代码的数据结构,包含数据成员和函数成员.(有什么和能够干什么) 运行中的程序是一组相互作用的对象的集合. 二.为类 ...

  6. 输出cglib以及jdk动态代理产生的class文件

      --该设置用于输出jdk动态代理产生的类 System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles&q ...

  7. 如何确定一台linux主机是Linux (i386/i686)还是Linux (x86_64)

    在下软件包的时候,往往会遇到一个选择: 假设自己的主机是Linux,那么Linux (i386/i686)和Linux (x86_64)究竟应该选哪一个呢? 针对当今的硬件而言,如果你主机的CPU是6 ...

  8. 自动化web前端测试,自动登录网站.目前发现最靠谱的方法是imacros

    imacros免费版 登录宏代码的示例: //首先登出URL GOTO=http://yoursite/logout.html//打开登录页面URL GOTO=http://yoursite/logi ...

  9. MySQL之You can't specify target table for update in FROM clause解决办法

    这篇文章主要介绍了mysql中You can't specify target table for update in FROM clause错误解决方法,需要的朋友可以参考下 MySQL中You c ...

  10. 在Ubuntu下添加自定义服务

    https://blog.csdn.net/xkjcf/article/details/78698232 在Ubuntu系统中添加自定义服务需要遵从设计启动脚本的模式,下面就是如何编写启动脚本的示例程 ...