渗透测试全流程解析与常见 Web 漏洞防护
前言
渗透测试(Penetration Testing)是通过模拟黑客攻击的方式,对目标系统进行安全评估的过程。其目的是发现系统中的安全漏洞,并提供修复建议。请注意:所有测试必须在获得明确书面授权的前提下进行,未经授权的攻击属于违法行为。
一、信息收集
信息收集是渗透测试的基础,旨在了解目标系统的架构、技术栈及潜在入口。
1. 域名与 IP 查询
- 域名信息查询:使用
whois命令或在线工具查询域名注册信息、DNS 记录等,有助于确定目标归属和关联资产。 - IP 信息查询:确认域名对应的真实 IP 地址,验证通信是否正常,排查是否存在 CDN 隐藏的真实源站。
- 端口信息查询:使用 Nmap 等工具扫描开放端口。
示例发现:开放 80 (Web) 和 3389 (Windows RDP) 端口。需警惕远程登录服务暴露风险。nmap -sV -p- <target_ip>
2. 指纹识别
通过分析网站返回的 HTTP 头、页面源码、资源路径等特征,识别使用的 CMS、框架、服务器类型及版本。
- 目录遍历检测:检查是否存在文件遍历漏洞(如
/../),尝试访问敏感文件。 - 框架识别:查看是否存在已知漏洞的框架版本(如 Struts2, Log4j 等)。
二、漏洞扫描
利用自动化工具辅助发现常见漏洞,但需注意误报和漏报。
1. 主机扫描
- Nessus:经典的主机漏洞扫描器,可检测 CVE 漏洞、配置错误等。
注意:扫描前需确认业务允许范围,避免造成服务中断。
2. Web 扫描
- AWVS (Acunetix):专业的 Web 应用安全扫描器,能自动化检测 SQL 注入、XSS 等漏洞。
警告:扫描器可能对网站构成伤害,生产环境慎用。
三、手动渗透测试
自动化工具无法覆盖所有场景,手动测试是发现逻辑漏洞的关键。
1. 弱口令漏洞
- 描述:管理后台或数据库使用了简单密码或默认账号。
- 测试方法:若无验证码,可使用 Burp Suite 配合字典进行爆破;若有验证码,尝试识别绕过。
- 修复建议:强制密码复杂度(大小写 + 数字 + 特殊字符,长度>8),定期更换,开启多因素认证。
2. 文件下载与目录浏览
- 描述:未限制用户访问任意文件或开启目录列表功能。
- 测试方法:构造
../../etc/passwd路径探测;检查 JS/CSS 路径是否泄露源码。 - 修复建议:白名单限制可访问目录,过滤
../等特殊字符,使用文件流而非物理路径返回文件。<!-- Tomcat 配置示例 --> <param-name>listings</param-name> false


