白帽故事 · 2023年12月13日 0

利用关键 0day XXE 漏洞实现 SSRF 攻击

背景介绍

在安全研究中,发现并利用漏洞往往是一个具有挑战性的过程,需要耐心、毅力和创新思维。在本文中,骨哥将分享安全人员如何在不到 6 小时发现并利用一个关键的 XXE 漏洞,进而实现对第三方软件的全面 SSRF 攻击。

实现步骤

安全人员受到委托帮忙测试一款第三方软件,其后端为 Java + IIS,并暴露了一些 JSP 文件,为了尽快找到漏洞,安全人员首先进行了环境侦察,了解软件的整体架构和功能。

环境侦察

在传统的网络搜索中,并未找到该软件的样本,但在一个中文论坛,安全人员发现了一些 .iso 链接,在解压缩了一个.cab文件中的一些安装程序后,成功获取了所有面向公众的文件。

深入挖掘

经过几个小时对JSP文件的大量搜索后,依然毫无进展,于是安全人员决定从Java导入META-INF目录,其中包含所有.classes,以便使用Jadx-UI进行反编译,在这里发现了大量包含 "@WebServlet" 注释的条目,从而为扩展攻击面提供了有力支撑。

AI辅助

由于需要针对众多 Servlet 生成 HTTP 请求,安全人员借助 ChatGPT 自动化了该过程,从而节省了大量时间与精力。

突破口出现

在分析众多 Servlet 时,安全人员发现了一个疑似 SSRF 的盲注漏洞,但随后注意到同一个 Servlet 中存在对 XML 内容类型的检查。

file

file

XXE 漏洞验证

利用 Burp Scanner 进行 XXE 模糊测试,漏洞随即触发。

file

由于 Java 1.8 禁用了 file:// 或 netdoc,导致无法直接读取 web.config 文件获取密钥,但仍可通过 SSRF 盲注泄露 AWS 元数据。

漏洞披露与修复

通过 Shodan.io 发现大约 500-1000 家公司受到该漏洞影响,安全人员负责任地披露了相关漏洞,目前厂商已着手进行修复。

经验总结

在本次攻击中,可以学习到以下几点经验:

1、坚持不懈和资源利用

成功发现漏洞往往需要耐心和取巧方法,在本案例中,安全人员通过多种途径获取软件样本,最终取得突破。

2、技术创新和自动化

巧妙利用工具和自动化技术,例如反编译 Java 类、借助 ChatGPT 生成请求,可以大幅提升效率和探索更多攻击面。

3、洞察细节和灵活转换

看似不起眼的细节,如 XML 内容类型检查,可能隐藏着关键的漏洞信息,在本案例中,正是通过对细节的洞察,让安全人员最终发现了漏洞的突破口。

你学废了么?