文章来源|MS08067 红队培训班 第2期
本文作者:Mustard404(红队培训班2期学员)
背景
在安服仔的日子里,发现下面的人输出的渗透测试报告结果不规范,主要在报告质量、内容、字体、及修复方案中存在诸多问题,而且大部分安服仔需要对每次的项目结果进行统计整理,方便后续跟踪复测。
因此研发了Savior-渗透测试报告辅助生成系统,起这个名字也是为了拯救大多数逗逼渗透测试工程师,告别繁琐的渗透测试报告编写过程及漏洞统计过程。
系统框架
l
前端:Ant Design Pro
l
后端:Django REST Framework
l
数据库:Mysql
主要功能
l
用户管理:主要是方便统计漏洞的发现者,后续可能大概也许会添加漏洞统计模块,根据提交数据、漏洞类型、时间等进行统计报表,当前用户管理模块仅允许通过Django后台进行修改
。
l
项目管理:根据项目的不同可上传项目的专属渗透测报告模板,并可以根据需要进行模板自定义模板(/Demo/demo.docx);
l
模板自定义:不用修改源代码,仅需修改word即可进行模板自定义;
l
整改建议管理:此平台主要就是为了体现标准化输出,因此可通过内置漏洞描述及修复建议进行快速输出,并支持自定义修改(/Demo/常规WEB渗透测试漏洞描述及修复方法.docx);
l
一键生成:通过提交报告模块,内联项目模板,快速生成渗透测试报告,真正达到了一键生成,并确保报告内数据准确、字体统一、格式标准;
l
自动邮件:在生成报告后可通过用户管理配置的自动邮件发送功能进行邮件通知,可自定义邮件模板,这样再报告给客户的时候就可以直接转发了(暖男功能);
l
漏洞统计:每次渗透过后,需要挨个查找报告进行统计整理,现在只要提交报告后,后台会自动联动;
l
漏洞报表一键导出
l
漏洞跟踪:增加了漏洞状态字段,创建报告后,漏洞状态默认为新增,漏洞管理模块可进行复测,包括已整改、未整改两种状态;
相关预览
Demo:
http://savior.sec404.cn
演示账号:admin
演示密码:[email protected]
视频预览:
https://www.bilibili.com/video/BV1QL4y1v7gg?share_source=copy_web
安装指南
首先将代码clone到本地:
git clone https://github.com/Mustard404/Savior.git
Docker部署
我们推荐使用Docker进行部署,相对于源码部署更为简单和快速。
部署前请务必先安装Docker及docker-compose。
修改配置文件
:
首先复制根目录的.env.docker并重命名为.env,修改其中的Email Settings和initial Administrator配置。这两个配置分别控制邮件提醒,以及初始管理帐号密码及邮箱。 同时需要注意以下两点:
l
务必把邮箱修改为自己邮箱,不然可能会出现非预期错误!
l
如果使用阿里云、腾讯云服务器,请使用smtp的ssl协议,两家云厂商默认封禁了25端口。
一键启动
docker-compose up -d
访问http://127.0.0.1:8000即可看到页面。
使用手册
初始化说明
其中Savior平台包含两个后台页面。考虑到安全性,目前用户管理、项目管理托管于Django管理后台(主要是这两个模块不会写),其余功能均可通过前台页面实现。
l
前台页面:http://127.0.0.1:8000
l
Django管理后台:http://127.0.0.1:8000/api/admin/
用户管理
访问Django管理后台:http://127.0.0.1:8000/api/admin/, 请完善API>用户的Name、Avatar、Autosentmail三个字段,分别控制报告的作者、头像(图片Url)、生成报告后自动发送渗透测试报告到邮箱。
项目管理
访问Django管理后台:
http://127.0.0.1:8000/api/admin/
请通过API>Projects进行添加项目,可根据不通项目选择不通的渗透测试报告模板。参数说明:Project logo(项目Logo)、Project center(项目名称)、Project description(项目描述)、Project template(渗透测试报告模板,目前标准模板可使用Demo/demo.docx,如需自定义模板,请参考*模版自定义*部分)
整改设置
访问http://127.0.0.1:8000 可进入Savior平台,通过个人设置>整改设置>添加漏洞模板可进行设置漏洞类型、漏洞描述、修复建议从而达到标准化。目前整理了一些通用的修复建议模板,请参考Demo/常规WEB渗透测试漏洞描述及修复方法.docx。
模板自定义
目前根据我经常使用的渗透测试报告模板生成了一个demo版本(请参考/Demo/demo.docx)。当然您也可以根据自己的需求进行模板自定义,其中仅需在WORD模板中进行参数替换,目前Savior中具体参数如下:
- {{report_no}} - 漏洞编号,通过时间戳自动生成,确保漏洞编号的唯一性
- {{report_center}} - 测试项目,为项目管理中项目名称
- {{report_systemname}} - 系统名称
- {{report_start_time}} - 测试开始时间
- {{report_end_time}} - 测试结束时间
- {{report_author}} - 测试提交人,对应用户管理的Name参数
- {{report_test_url}} - 测试Url
- {{vuls|length}} - 漏洞个数
- {{vuls|vul_statistics(3)}} - 高危漏洞个数
- {{vuls|vul_statistics(2)}} - 中危漏洞个数
- {{vuls|vul_statistics(1)}} - 低危漏洞个数
- {% if vuls|vul_statistics(3) >=2 %}紧急状态{% elif vuls|vul_statistics(2) >2 %}紧急状态{% elif vuls|vul_statistics(3) ==1 %}严重状态{% elif vuls|vul_statistics(2) ==2 %}严重状态{% elif vuls|vul_statistics(1) ==0 and vuls|vul_statistics(2) ==0 and vuls|vul_statistics(3) ==0 %}良好状态{% else %}预警状态{% endif %} - 整体风险评级 感谢[decadecaomm](https://github.com/decadecaomm)提供相关逻辑
- 以下漏洞详情请利用{%tr for item in vuls %}{%tr endfor %}进行循环遍历。如想列出所有漏洞URL,则使用参数{%tr for item in vuls %}{{item.vul_url}}{%tr endfor %}
- {{item.vul_url}} - 漏洞Url
- {{item.vul_recurrence}} - 漏洞复现
- {{item.vul_level}} - 漏洞危险等级
- {{item.vul_describe}} - 漏洞描述
- {{item.vul_modify_repair}} - 修复建议
注:
Savior平台渗透测试模板遵循Jinja2语法,更多内容请参考[https://jinja.palletsprojects.com/en/3.0.x/](https://jinja.palletsprojects.com/en/3.0.x/)
创建报告
如果我们完善了用户信息、项目管理、整改设置后,就可以通过前端页面进行创建报告,其大概流程如下:
首先完善报告的基本信息。
选择漏洞管理的添加漏洞功能。选择漏洞类型后,漏洞名称、漏洞描述、修复建议会根据整改设置进行自动联动,并可根据需求进行自定义修改。需要注意的是漏洞详情处如果需要插入XSS语句,请进行url编码后进行输入!如果想插图,请使用微信/QQ的截图快捷键,然后ctrl+v粘贴即可!
注:
未提交前请勿刷新页面,此时漏洞详情保存为前端。提交后会自动生成渗透测试报告并进行下载。
打开报告会提示更新域,更新请选择是,再选择更新整个目录,此问题主要是为了更新目录,不然渗透测试报告中目录无法自动更新。
如果在用户管理打开了Autosentmail功能,渗透测试报告会自动发送至我们邮箱,方便转给甲方爸爸。
漏洞列表
访问Savior平台,选择漏洞列表可进行漏洞统计并进行漏洞复测。其中漏洞包含三个状态(新发现、已修复、未修复)
通过选择导出数据功能,可将漏洞列表导出为Excle。
内置
漏洞修复建议导
入
docker cp Demo/api_program.sql savior_mysql_1:/
docker exec -it savior_mysql_1 /bin/bash
mysql -u root -p
#输入密码,默认[email protected]
use savior;
source /api_program.sql;
常见问题
- Q:重启容器后,账户丢失。
A:需要docker exec到容器内,修改/Savior/docker/run.sh,按照以下方式将部分代码注释掉。
```
#!/bin/bash
/bin/bash /Savior/docker/wait-for-it.sh -t 0 mysql:3306
export PYTHONPATH=/Savior/
#python3 /Savior/manage.py makemigrations api
#python3 /Savior/manage.py migrate
#python3 /Savior/manage.py init_admin
supervisord -n
```
- Q:Docker部署后,出现登入500错误。
A:检查.env文件是否创建,并核查邮箱配置是否正确。如果使用云服务器,请务必使用smp的SSL协议端口。
- Q:生成报告后,漏洞复线内容为空。
A:根据反馈大部分情况是因为使用了WPS导致,建议使用Office 2013版本以上。
- Q:提交报告模板时,请使用Docx后缀模板,doc后缀模板会生成错误。
A:生成报告模板时,会使用.docx进行拼接,此部分未进行容错处理。
红队攻防 第6期 4.1号
开班报名中
课程费用
报名方式
1.可直接登录官网在线报名,报名地址:https://www.ms08067.com/my/course/12
2.加客服微信报名
学习资源
上课时间
上课方式
讲师介绍
讲师B:MS08067安全实验室核心成员,主要从事渗透测试、安全开发等方向研究。多次参加国家护网行动,拥有多年红队经验。
讲师C:MS08067安全实验室核心成员,前知名乙方研究员,擅长免杀。
全新课程目录6.0版
第1天课 | 信息收集总体概念 被动信息收集 信息收集的总体概念以及在整个红队流程中的位置; 被动信息收集的基本结构和基本逻辑; 被动信息收集的常见手段(网络空间搜索、被动信息收集工具、传统搜索); 被动信息收集后的信息处理; 被动信息收集工具的底层原理以及如何编写; |
第2天课 | 主动信息收集 信息收集完成之后的信息综合处理 主动信息收集的基本结构和基本逻辑; 主动信息收集的常见手段(仅限扫描的nmap和扫描带有poc的goby); 主动信息收集后的信息处理; 主动信息收集工具的底层原理以及如何编写; 如何将主动信息收集和被动信息收集的信息综合处理; 收集到的信息如何衔接到下一步的红队流程中; |
第3天课 | 社会工程学 社会工程学的含义以及实际应用; 社会工程学的知识体系; 社会工程学的学习方法; |
第4天课 | 社会工程学中的交互 社会工程学中的常见钓鱼方式以及应用; 社会工程学中如何根据收集到的信息利用目标的社会属性弱点进行交互; 社会工程学中的信任获得和信任利用方式; |
第5天课 | 实战中的快速审计 寻找源码中的多种途径; 快速查找源码中可利用的脆弱点; 使用工具发现脆弱点; |
第6天课 | POC的编写 POC编写应具备的哪些条件; Idea工具的安装; 本地IO进行内容读写; 网络请求进行发包模拟; POC实战; |
第7天课 | 红队之反溯源 工作机器;攻击资源; 匿名攻击; 识别反制; 反溯源案例; |
第8天课 | Windows内网提权 Potato家族提权;补丁提权;系统配置错误提权; 第三方服务提权;组策略提权;Bypassuac; 数据库提权;令牌窃取;密码收集提权; |
第9天课 | Liunx内网提权 系统内核提权;第三方服务提权; 数据库提权;密码收集提权; 键盘记录提权;Suid提权; Sudo提权;反弹shell提权; |
第10天课 | 内网穿透 内网穿透概述及正向代理和反向代理; 花生壳内网穿透;Frp内网穿透; Ngrok内网穿透;reGeorg+Proxifier; 向日葵代理及teamviewer; 最小化渗透概述;云函数;域前置; |
第11天课 | 外网打点技巧和Kerberos认证原理 入口权限获取;java中间件Nday; php集成环境;开源程序Nday; 边界网络设备利用;基础服务getshell; kerberos认证;kerberos认证流程; |
第12天课 | 域内信息收集及域信任 域内信息收集概述; 域内用户组收集;域信任关系收集; 用户目录收集;预控日志收集; Arp信息收集;Tcpdump;Sshkey收集; 铭感配置读取;网络拓扑架构分析判断; |
第13天课 | 域渗透工具实操实战 Setspn;Nslookup;AdFind; Psloggendon;360safebrowserdecrypt; SchtaskBackDoorWebshell;regeditBypassUAC; |
第14天课 | 票据伪造、域委派攻击、域控攻击 PTH认证过程解析;票据伪造攻击原理; Mimikatz实现票据伪造攻击; 域委派原理;域委派攻击方法; zerologin;nopac |
第15天课 | 域林渗透 域林渗透概述和父域子域及域信任关系分析;大型域渗透思路; 预控定位;Pth喷射;域信任攻击; 组策略漏洞;Web及系统漏洞;逃逸漏洞; |
第16天课 | Windows权限维持 Windows权限维持概述及隐藏技巧;关闭杀软; 注册表自启动;组策略脚本; 计划任务;服务自启动; 内存码;进程劫持;隐蔽隧道; |
第17天课 | Liunx权限维持 Liunx权限维持概述及隐藏技巧; 添加用户;SUIDshell; SSH公私钥;软连接; crontab计划任务;Strace后门;Openssh后门; 隐蔽隧道;关杀软; |
第18天课 | 痕迹清理 Windows操作系统的痕迹清理; Windows痕迹清理的基本思路和思考逻辑; Windows清理登录痕迹、操作痕迹及时间痕迹; Linux操作系统的痕迹清理; Linux痕迹清理的基本思路和思考逻辑; Linux清理登录痕迹、操作痕迹及时间痕迹; |
第19天课 | Meterpreter木马分析 反编译meterprter源码; 分析meterpreter源码; 源码级别免杀深入浅出; |
第20天课 | 免杀代码基础 编程语言基础; windowsapi基础; socket编程基础; shellcode加载器基础; |
第21天课 | shellcode基础 现代远控的基本结构; shellcode生成方式与可以使用的类型; shellcode源码内容; |
第22天课 | 代码上的免杀 杀毒软件基本原理; 杀毒软件基础复现; 针对杀毒软件特点免杀; 护网过程中如何手动和自动识别恶意代码; |
第23天课 | 人工层面的免杀 通信的加密; 通信内容的伪造; ip地址的保护; 护网过程中如何识别通信特征与内容; 反调试; |
第24天课 第25天课 | 实际红队案例分享、红队攻击思路 红队模拟面试; 实际红队案例分享; 红队攻击思路;红队护网准备工具及蓝队分析反制方法及思路 红队准备工具; 邮件溯源工作; 水坑反制案例; |
如何提前预习
为更顺利的完成课程相关内容,请同学一定要提前预习相关知识点,已经报名的同学,请购买实验室出版的《内网安全攻防:渗透测试实战指南》一书或参加转发朋友圈赠送“内网知识星球”活动,学习相关的内容。
你距离红队大佬,只差一个决定
报名咨询联系小客服
扫描下方二维码加入星球学习
加入后邀请你进入内部微信群,内部微信群永久有效!