渗透测试报告自动化工具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/Dockerfile
和frontend/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 | docker-compose |
备份方法
使用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我们就可以看到成功进入了这个应用的核心功能模块了。