渗透测试报告自动化生成系统开发

目录

一:背景

二:效果

1.管理员首页

 2.项目管理列表 

2.1 项目新增

 3.漏洞管理

3.1漏洞新增

4,模板管理

三 总结


一:背景

最近比较忙,没怎么挖洞,平时我们经常写渗透测试报告,驻场和公司的报告模板又不一样,每次改起来好麻烦,网上也有一些开源的产品,比如0x727的bugreport等,但本着学习java安全的态度,打算自己用纯java开发一个系统,利用下班的时间。经过两个星期终于完成。采用ruoyi-vue前后端分离框架

二:效果

1.管理员首页

管理员,进行用户,菜单的管理,以及首页报表展示

 漏洞库管理 添加各种web app漏洞

 

 2.项目管理列表 

2.1 项目新增

先添加一个项目,这里主要就是报告的主体信息,选好模板,按照对应的字段填好就行。不同的模板对应不同的字段

 3.漏洞管理

 当新建好项目之后就可以添加漏洞了

3.1漏洞新增

选择自己的项目,会带出对应的模板,不同的模板,显示对应的输入框和校验条件

 漏洞大类选择是web,还是安卓,IOS漏洞

然后漏洞小类会自动带出下面的子类

 

 当我们勾选小类之后,下面的漏洞描述,修复建议,风险等级,则会自动带出来,同时你也可以修改补充,此时我们只需要关注测试漏洞过程就可以

最后我们只要勾选要导出的漏洞,点击导出报告就好,如果选的不是同一个项目的漏洞,还会提示

 因为项目已经绑定了模板,所以当我们导出漏洞的时候,系统会自动匹配对应的模板,通过poi-Tl渲染数据生成报告。

4,模板管理

可以增删,改查,没什么说的,

 

三 总结

后端 基本就是CRUD,没啥麻烦的,麻烦的就是POI-Tl 这个库通过模板生成报告,需要去看看官方的文档,当然也没什么难度官方文档在这里自己看吧

Poi-tl Documentation

这里简单说明下 测试过程肯定是图文混合的,所以我们要把内容清洗出来

因为ruoyi-vue自带的编辑器文字是<p>包裹,图片是<img>base64的,所以用以下代码把测试过程清洗出来,放到一个List<Map<String, String>> 里

public List<Map<String, String>> clearContent(String content) {

        String regex = "<p>(.*?)</p>";
        Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
        Matcher matcher = pattern.matcher(content);
        String regex2 = ".*?<img.*?src=\"data:image/png;base64,(.*?)\"";

        List<String> data = new ArrayList<>();

        while (matcher.find()) {
            data.add(matcher.group(0));
        }
        List<Map<String, String>> result = new ArrayList<>();
        for (String item : data) {
            Map<String, String> data2 = new HashMap<>();
//            System.out.println(item);
            Pattern pattern2 = Pattern.compile(regex2, Pattern.MULTILINE);
            Matcher matcher2 = pattern2.matcher(item);
            if (matcher2.find()) {
//                System.out.println(matcher2.group(1));
                data2.put("img", matcher2.group(1));
                data2.put("type", "2");

            } else {
//                System.out.println(item);
                data2.put("text", item.replaceAll("<p>", "").replaceAll("</p>", ""));
                data2.put("type", "1");
            }
            result.add(data2);


        }
        return result;

    }

然后取每个漏洞的测试过程,如果是文字就添加文字对象,如果是图片就用

Pictures.ofBase64创建一个图片对象,在设置回给这个漏洞

 最后配置config的时候记得把这个listrenderPolicy插件绑定就可以

当然,我们的模板也必须有这个变量,才能正常渲染

 如果就搞定了这部分最核心的

 

反而最麻烦的就是前端了,前端的自控控制,根据

比如根据不同的条件显示字段

 根据漏洞大类展示不同的漏洞小类

 其他就不一一展示了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pyth0nn

送人玫瑰,手留余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值