白帽子漏洞挖掘实战经验分享
一、资产收集
作为网站的安全测试,资产收集是第一步。主要目标是收集主域名的二级、三级子域名,以及相关的 C 段 IP 和开放端口。
1. 子域名扫描
使用 Layer 等工具进行子域名爆破。填入目标域名(去掉 www),选择线程数。DNS 解析通常默认即可,若在内网环境需配置内网 DNS。枚举接口时保持默认勾选,端口探测可针对常见 WEB 端口(80, 443, 8080 等)。
2. 端口探测
扫出子域名后,使用 Nmap 或脚本过滤生成 C 段并进行端口探测。Nmap 常用参数包括 -T4 -A -v,若遇到防火墙限制可添加 -Pn。Zenmap 图形化工具便于保存常用配置。
3. URL 采集
利用搜索引擎(如 Bing、百度)的特定语法采集 URL。注意区分国内版与国际版引擎的配置差异,以提高收录率。
防御建议:
- 定期清理未使用的子域名。
- 配置 WAF 拦截异常扫描请求。
- 限制 API 接口的访问频率。
二、漏洞挖掘
1. 弱口令漏洞
登录口是弱口令的高发区。常见用户名如 admin、test,密码尝试 top500 字典。若前端进行了 MD5 加密,需在发包前对 payload 进行加密处理。
验证码绕过: 部分验证码形同虚设,可直接爆破;若为有效验证,可使用自动化工具测试其逻辑漏洞。
防御建议:
- 实施强密码策略,禁止常见弱口令。
- 增加登录失败次数限制及验证码机制。
- 对用户名存在性提示进行模糊化处理。
2. Struts 命令执行与 Java 反序列化
Struts 框架常存在命令执行漏洞,特别是文件名为 .action 或 .do 的系统。Java 反序列化漏洞则多见于 JBoss、Weblogic 等容器。
代码示例:
public class CodeBlock01 {
public static void main(String[] args) {
int x = 3;
System.out.println("普通代码块内的变量 x=" + x);
int x = 1;
System.out.println("主方法内的变量 x=" + x);
}
}
JSP 站点通常存在上传漏洞或命令执行风险。
防御建议:
- 及时更新 Struts 及相关框架至安全版本。
- 避免反序列化不可信数据。
- 最小化 Web 容器的权限。


