1、明确目标
确定测试需求
- Web应用服务漏洞
- 针对业务逻辑漏洞
- 针对管理人员管理权限漏洞
确定客户要求的渗透测试范围
- 目标ip
- 域名
- 内外网
- 整站渗透/部分渗透
确定渗透测试规则
- 渗透程度(确定漏洞为止/继续利用漏洞进行更进一步工作)
- 是否允许破坏数据
- 是否能够提升权限
2、信息收集
- 基础信息:IP、网段、域名、端口。
- 应用信息:各端口的应用。例如web应用、邮件应用、等等。
- 系统信息:操作系统和对应版本。
- 版本信息:所有探测到的版本,如中间件,系统等。
- 服务信息:各种服务开放情况,是否有高危服务等。
- 人员信息:域名注册人员信息,web应用用户信息,管理员信息等。
- 防护信息:防护设备,如防火墙,安全狗等
3、漏洞扫描
方法:
- 借助扫描工具对目标程序扫描,查找存在的安全漏洞如awvs、appscan、xray、goby等。
- 结合漏洞去exploit-db等位置找利用。
- 在网上寻找验证poc。
内容:
- 系统漏洞:系统有没有及时打补丁
- WebSever漏洞:WebSever配置问题
- Web应用漏洞:Web应用开发问题
- 其它端口服务漏洞:如21/8080(st2)/7001/22/3389
- 通信安全:明文传输、token在cookie中传送等。
4、漏洞验证
扫描出来的漏洞可能会有误报,测试人员需要结合实际情况,搭建模拟测试环境,对这些安全漏洞进行验证。
- 自动化验证:结合自动化扫描工具提供的结果
- 手工验证,根据公开资源进行验证
- 试验验证:自己搭建模拟环境进行验证
- 登陆猜解:有时可以尝试猜解一下登陆口的账号密码等信息
- 业务漏洞验证:如发现业务漏洞,要进行验证
公开资源的利用
- exploit-db/wooyun/
- google hacking
- 渗透代码网站
- 通用、缺省口令
- 厂商的漏洞警告等等
5、信息分析
不同的安全漏洞,攻击机制并不相同,针对不同的安全漏洞制定不同的攻击计划。计划包括:
- 精准打击:准备好上一步探测到的漏洞的exp,用来精准打击可利用的工具
- 绕过防御机制:是否有防火墙等设备,如何绕过
- 绕过检测机制:是否有检测机制,流量监控,杀毒软件,恶意代码检测等(免杀)
- 定制渗透路径:最佳工具路径,根据薄弱入口,高内网权限位置,最终目标
- 攻击代码:经过试验得来的代码,包括不限于xss代码,sql注入语句等
6、渗透攻击
发起真正的攻击:
- 获取内部信息:基础设施信息(网络架构,vpn,路由,拓扑)
- 进一步渗透:内网入侵,敏感目标
- 持续性存在:获取用户账号密码,添加管理账号,截取目标程序传输数据,控制目标主机(一般不需要)
- 删除系统日志,程序日志,擦除进入系统的痕迹
7、信息整理
渗透攻击完成后,需要整理攻击所获得的信息,为后边编写测试报告提供依据
- 渗透工具:整理渗透过程中用到的代码,poc,exp等
- 收集信息:整理渗透过程中收集到的一切信息
- 漏洞信息:整理渗透过程中遇到的各种漏洞,脆弱位置信息等
8、测试报告的编写
- 阐述安全测试目标
- 信息收集方式
- 漏洞扫描工具及漏洞情况
- 攻击计划
- 实际攻击结果
- 测试过程中遇到的问题
- 针对目标程序存在的漏洞分析
- 提供安全有效的解决办法