渗透测试是为了证明网络防御按照预期计划正常运行而提供的一种机制,由专业人士独立检查网络策略,寻找网络系统安全漏洞。渗透测试流程主要包括以下步骤:
明确目标:
- 确定范围:规划测试目标的范围,避免越界。
- 确定规则:明确渗透测试的程度、时间等。
- 确定需求:确定渗透测试的方向,如web应用漏洞、业务逻辑漏洞等。
信息收集:
- 基础信息:收集IP、网段、域名、端口等基础信息。
- 系统信息:确定操作系统版本。
- 应用信息:了解各端口的应用,如web应用、邮件应用等。
- 版本信息:获取所有探测到的组件的版本信息。
- 人员信息:获取域名注册人员信息,web应用中网站发帖人的id、管理员姓名等。
- 防护信息:探测防护设备,如CDN、WAF等。
漏洞探索:
- 使用漏洞扫描工具进行系统、应用的漏洞探测。
- 结合漏洞去exploitdb等位置找利用方法。
- 在网上寻找验证poc。
漏洞验证:
- 自动化验证:结合自动化扫描工具提供的结果进行验证。
- 手工验证:根据公开的资源进行手工验证。
- 试验验证:自己搭建模拟环境进行验证。
- 登录猜解和业务逻辑漏洞验证。
信息分析:
- 准备好上一步探测到的漏洞的exp,用来精准打击。
- 分析如何绕过防火墙等防御机制。
- 定制攻击路径,选择最佳工具路径。
- 分析是否有检测机制,如流量监控、杀毒软件等,并准备绕过方法。
- 准备攻击代码,包括不限于XSS代码、SQL注入语句等。
获取所需:
- 实施攻击,根据前几步的结果进行攻击。
- 获取内部信息,如基础设施、网络连接、路由等。
- 进一步渗透,如内网入侵、敏感目标获取。
- 持续性存在,如添加管理账号、驻扎手法。
- 清理痕迹,如清理访问日志、操作日志、上传文件等。
信息整理:
- 整理渗透过程中用到的代码、poc、exp等。
- 整理渗透过程中收集到的一切信息。
- 整理渗透过程中遇到的各种漏洞和脆弱位置信息。
形成报告:
- 按照之前与客户确定好的范围和需求整理资料,并将资料形成报告。
- 对漏洞成因、验证过程和带来的危害进行分析。
- 对所有产生的问题提出合理高效安全的解决办法。