Oracle EBS 中的未认证盲 SSRF
发布: (2026年1月11日 GMT+8 03:20)
3 分钟阅读
原文: Dev.to
Source: Dev.to

在测试第三方现成应用时,目标通常是向客户保证供应商已经进行过严格的测试,部署中不存在明显的问题。
在对 Oracle 的现成软件进行测试时,发现了一个低风险的 SSRF。它允许枚举内部和外部主机的端口,这可能对一些研究人员有兴趣。
利用方式
在对之前曾涉及 XXE 利用的端点进行模糊测试时发现了此问题。发送了一个基本的 DOCTYPE 声明,并使用了一个实用的 collaborator负载,结果显示服务器尝试解析提供的 URL。
请求(已去除冗余的头部/参数并对目标细节进行脱敏)如下所示:
POST /OA_HTML/lcmServiceController.jsp HTTP/1.1
Host: victim.com
Content-Length: 56
请求超时,但在 Burp 的问题日志中出现了 DNS 命中,表明有防火墙在干扰。使用 TCP/443(HTTPS)进行测试并得到相同结果后,同事在外部 IP 的大量端口上监听请求,从而枚举出端口号(例如上面请求中的 “80”)。
观察到三种类型的响应:
- 超时 – 防火墙丢弃了请求。
- HTTP 200 且返回 “A remote host refused an attempted connect operation.” – 主机/端口可达,但未打开。
- HTTP 200 且返回 “Unexpected text in DTD.” – 主机/端口可达且已打开。

利用这些信息,可以通过监控返回的响应类型来枚举内部和外部的主机及端口。此外,还可以使用 file:// 协议检查文件是否存在。曾尝试使用其他协议获取哈希,但在此实例中未能实现。
披露时间线
- 2018 年 4 月: 发现问题并向 Oracle 报告。
- 2018 年 8 月: Oracle 确认问题并修复了主要代码行。
- 2018 年 10 月: Oracle 发布了 Critical Patch Update,其中包含该修复——参见 Oracle CPU 2018 年 10 月 advisory。
- 2018 年 2 月: 发布了详细说明该漏洞的博客文章。