Nessus报告翻译脚本修改记录

lock丶念拥
2021-02-21 / 0 评论 / 4 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年02月21日,已超过78天没有更新,若内容或图片失效,请留言反馈。

缘起

本人在某公司内从事安全相关职位,需要对公司内网进行漏扫,因公司规模原因我直接使用的nessus进行的扫描。扫描报告为英文的,为方便查看和报告领导需要翻译为中文,于是本着快捷偷懒的想法就直接去找大佬们的轮子。但大佬们的造轮子的时候也是根据自己需求来的所以和自己想要的会有误差,而本文记录了我修改翻译轮子的过程,希望能给带来诸位一丢丢的助益。

缘生

Emm,为了翻译报告,初期我选择好几种格式的翻译脚本,各有优劣,然鹅因漏洞库以及脚本后期的维护需求而言我最后以该脚本为基础进行修改的:

1612334401_601a4541ba115e9344e93.png!small?1612334401365

链接:https://github.com/wysec2020/vulnReport

功能描述

初步介绍下该脚本的nessus部分漏洞翻译的思路吧,首先从本地nessus数据库比对插件id值,如果本地数据库存在直接以数据库内漏洞名、漏洞级别和解决建议;如果不存在将对应的插件id的英语传至google翻译接口,翻译后替换和写入本地数据库。(本人开始忽略了脚本还有这个功能,还在犯傻的想如何维护这个数据库,,,)

跑通脚本

调试走起,安装依赖啥的相信各位大佬都没有问题,唯一注意的是该作者用的pandas版本过低,直接安装不带版本号就行。

1612334479_601a458fd98273cfe124d.png!small?1612334502762

运行报解码错误:

1612334474_601a458a01c7547c527c5.png!small?1612334484939

追踪发现是该处解码有问题,查询原因为数据库编码是单字节类编码,通过以下方式转换即可:

1612334545_601a45d1769b927174489.png!small?1612334546597

细微修改后执行:

1612334481_601a459199731514531c7.png!small?1612334513165

缺少目录:

1612334545_601a45d1495165ed3ea82.png!small?1612334546597

修改为相对路径并创建文件即可在当前环境运行。Emm当前环境python3.8,我之前在另一台机器上使用的python3.8.5未报编码错误问题,搞不清楚python的更新是真的难受!

改用csv

好了,基础脚本调通我们现在可以进行魔改了。

首先该脚本的使用的模板为word形式,但因格式需求不一样需要改成表格的格式。

1612334545_601a45d1c7ac91e360f6f.png!small?1612334546597

取消以上类注释加上编码转换并调用即可:

1612334545_601a45d1eb17530522808.png!small?1612334546598

同时因使用的是表格不用合并IP所以取消调用相关方法:

1612334546_601a45d2a0fcfc9c4468d.png!small?1612334546598

1612334587_601a45fb263a7547742fa.png!small?1612334586700

1612334608_601a46100975d5178661b.png!small?1612334608719

欧克,到这一步已经改为表格了,如果对样式啥的有需求可以根据需要找找代码进行修改。

数据调优

最后才是本文主要目的,先看看开始的时候脚本生成的报告数据:

1612334625_601a462125ac21ddd0da8.png!small

可以发现有些整改建议是不完整的。简单说下当时排查问题的思路,首先根据脚本流程判断是否是读取源csv文件出现错误,未传缺少内容(通过漏洞插件ID判断读取的csv内容是否正确)

1612334649_601a463939e2f91202762.png!small?1612334649310

打印后发现内容正确,随后查询数据库发现数据库内容不正确,想当然的认为是数据录入是的时候出了问题,当时并未想到是翻译时遗漏了字符串,因为读取数据未出问题,就想翻译不会遗漏字符。后续偷懒使用sqlite3连接工具删除已存在的数据,再次运行时结果仍然一样,让我发现事情并不简单,我就着重排查翻译过程中的问题。果不其然,是在赋值中被换行符坑了,导致换行符后的内容缺失。

1612334662_601a4646199bd7e732950.png!small?1612334661832

通过消除换行符的方式得以解决。Emm,就是简单的说了下过程有兴趣的可以自己进行下尝试,本人犯懒不想继续尝试了……

这儿说个批量删除已存储在数据库数据中的小技巧,针对翻译后漏洞名在excle中批量生成数据库语句一并删除即可。

缘终

在对于该脚本的改写中再一次感觉自己代码功底还需要加强!然后在细心方面还有很大的不足,使用脚本时未对功能等有清晰的了解,导致浪费了不少时间去做了无用功。还有就是耐心方面,本身修改脚本其实并不难,但因为时不时需要连接数据进行修改,以及修改数据库本身存在问题;感觉不耐烦又拖延了不少时间!这种情绪不太好,好活还是需要耐心和细心的!(改完后的想法,面对以后遇上类似的活我真能做到而不是事后感慨)python的版本控制是一个神奇的迷,大佬们较好的思路可以指导下萌新。还有感谢下我的小伙伴改问题的帮助了我很多。

附:

修改后nessus脚本下载地址:https://github.com/windmoon-Lotus/nessus-report/

0

评论 (0)

取消