渗透测试是通过模拟攻击行为发现系统漏洞的安全评估过程,旨在帮助管理员识别风险并修复漏洞,从而防止黑客入侵。渗透测试主要分为白盒测试和黑盒测试两种模式。
白盒测试是在已知目标网站源码及其他信息的情况下进行渗透,类似于代码审计;黑盒测试则仅知晓目标 URL,模拟真实黑客视角进行探测。本文将以黑盒测试为例,详细介绍渗透测试的标准流程与核心思路。
一、确定目标
明确渗透测试的目标范围是第一步。需确认授权范围、目标资产(如域名、IP、APP)以及测试的时间窗口,确保所有操作在合法合规的授权范围内进行。
二、信息收集
信息收集是整个渗透测试中最关键的一步。收集的情报越丰富,后续攻击或验证的成功率越高。主要收集内容包括:
- 主机扫描 对目标主机进行全面扫描,不仅限于网站端口。使用工具如 Nessus 扫描开放端口、运行服务及已知漏洞。
- 端口扫描 识别服务器开放的端口及服务版本。常见高危端口包括:
- 22 (SSH):可能存在弱口令
- 873 (Rsync):未授权访问风险
- 3306 (MySQL):数据库弱口令
- 6379 (Redis):未授权访问 常用工具为 Nmap(准确度高)和 Masscan(速度快)。
- 敏感目录与文件探测 扫描网站目录结构,查找后台入口、备份文件、配置文件等。常见风险点包括:
- 后台目录:弱口令、万能密码
- 安装包:可能泄露数据库信息或源码
- 上传目录:存在文件上传漏洞
- phpinfo:暴露配置信息
- robots.txt:虽用于屏蔽爬虫,但可反向推导敏感路径
- 旁站与 C 段扫描 检查同一服务器上的其他网站(旁站),若主站难以突破,可尝试从关联站点入手。C 段扫描主要用于内网环境,探测同网段下的其他服务器。
- 网站指纹识别 识别 Web 容器、CMS 类型(如 WordPress, DedeCMS 等),以便查找特定漏洞。常用工具包括 WhatWeb。
- 域名信息收集 查询域名对应的 IP(注意 CDN 情况)、Whois 注册信息、子域名等。CDN 会导致 IP 不唯一,需通过多节点 Ping 判断。
三、漏洞探测
基于收集的信息,对目标进行漏洞探测。常见 Web 漏洞类型包括:
- SQL 注入
- XSS 跨站脚本
- CSRF 跨站请求伪造
- XXE 外部实体注入
- SSRF 服务端请求伪造
- 文件包含/上传/解析漏洞
- 远程代码执行 (RCE)
- CORS 跨域资源共享配置错误
- 越权访问
- 目录浏览
- Struts2 / Java 反序列化漏洞
常用扫描工具包括 AWVS、AppScan、OWASP-ZAP、Nessus 等。需注意控制扫描频率,避免造成目标服务崩溃,且必须获得授权。
四、漏洞利用与验证
探测到漏洞后,需在授权范围内进行验证。不同漏洞对应不同的验证工具与方法:
- SQL 注入:可使用 Sqlmap 辅助验证,但需谨慎操作。
- XSS:使用 Burp Suite 抓包修改 Payload 进行测试。
- 文件上传:尝试上传测试文件验证过滤机制。
- 提权:获取 Shell 后权限通常较低,需结合系统特性进行提权。Windows 下可检查用户权限、计划任务;Linux 下可检查 SUID 文件、内核漏洞。
注意:此阶段仅限于验证漏洞存在性,严禁破坏数据或植入恶意程序。
五、内网渗透与横向移动
若外网服务器被攻破,可进一步探测内网环境。由于内网隔离,需通过代理转发流量。内网资产发现需考虑多个网段(如 10.x, 172.16.x, 192.168.x)。
在内网中,重点查找敏感信息,如数据库连接文件、本地账号密码、浏览器保存凭证等。利用获取的凭证对内网其他机器进行爆破或登录。对于 Windows 主机,可通过 RDP 查看桌面文件,但需注意日志记录;对于 Linux 主机,可检查开放端口和服务。


