渗透测试报告自动化工具PwnDoc(一)

PwnDoc是一个渗透测试报告的自动化工具,旨在帮助渗透测试工程师可以更简单快速地根据所有的发现项,生成一个可定制化的Docx格式的报告。
PwnDoc的主要目标很简单:花更多的时间来Pwn,花更少的时间来Doc.

安装步骤

PwnDoc需要使用到3个容器:前端,后端与数据库。
3个容器可以通过docker-compose同时运行。

首先下载项目源码

1
git clone https://github.com/pwndoc/pwndoc

进入项目根目录,运行Docker容器

1
docker-compose up -d --build

如果在程序在npm install那一步出现报错,可能是由于与官方镜像源连接过程中的网络问题。
可以尝试修改backend/Dockerfilefrontend/Dockerfile中的

1
RUN npm install

替换为

1
RUN npm --registry https://registry.npm.taobao.org install

但是在npm安装Electron的时候,又再次遇到了下载问题

一翻搜索以后发现了这篇文章详细解释了具体的原因:
https://cloud.tencent.com/developer/article/1722304

于是相应地再做些修改

1
RUN ELECTRON_MIRROR="https://npm.taobao.org/mirrors/electron/" npm --registry https://registry.npm.taobao.org install

这下可以顺利安装了!

安装完成后,可以直接通过https://localhost:8443访问应用。

需要进行升级的话:

1
2
3
docker-compose down
git pull
docker-compose up -d --build

备份方法

使用PwnDoc的过程中,最好可以经常备份backend/mongo-data目录。所有的数据库都包含在这个文件家中。

备份恢复方法:

  • 终止容器docker-compose stop
  • 将备份的文件进行替换
  • 重新启动容器docker-compose start

准备工作

在开始使用这个工具前,有几个配置是一定要先定义好的。

基本配置

协作者 Collaborators

这个工具是个多人协作工具,所以这边其实相当于是这个工具的用户管理界面。同样的有三种用户权限可以选择:user, report, admin.

公司 Companies

可以定义渗透测试目标系统所属的公司的名称以及logo。

语言设置

PwnDoc可以对多种语言进行设定,适用于自定义数据漏洞说明部分。
这里我设置了英语与中文两种。实际用到的比较多的是英语。

导入漏洞列表

PwnDoc支持从外部直接导入漏洞。导入入口如下:

导入的文件需要符合Serpico使用的格式。我在网上找到一个还算比较完整的模板:https://github.com/ministryofjustice/serpico-templates/tree/master/template_findings

当然一项一项逐个导入,可能比较费事费力。所以我做了一下文件处理,将他们全部合并到了同一个文件中:
https://github.com/UPWNothing/SecurityDataset/blob/master/Vulnerabilities/merged.json

成功导入后可以在Vulnerabilities标签页中看到导入的所有漏洞。当然,如果要实际使用的话,还需要手动进行一定程度的配置。

导入报告模板

在可以正式开始使用之前,需要先导入报告模板。

报告模板中的格式定义可以参照这个官方的参考模板:http://github.com/pwndoc/pwndoc/tree/master/backend/report-templates

看了这个模板以后,可以比较详细地理解各个变量应该在报告中如何使用了。

之后有时间的话,会再写一篇详细说一下如何更好地编排渗透测试模板。

模板准备好之后,可以在Data->Templates点击右上角Create Template进行上传。

配置Audit Type

在正式开始使用前,还剩下最后一个步骤需要完成:我们必须要定义至少一个Audit Type.
这里可以预定义不同的测试类型:Web Application, Network, OS Level等等。
对于不同类型的测试,我们可以预先定义使用哪种渗透测试报告模板,需要在对应的渗透测试报告中包含哪些板块。

这里,我先创建了一个针对Web Application的测试类型,这里偷懒没有准备中文的报告模板,所以在两种语言里面都选择了英文模板。同时由于是针对Web Application的测试,所以我勾选了隐藏Network Scan的选项。

至此为止,点击Audit我们就可以看到成功进入了这个应用的核心功能模块了。


参考资料