漏洞挖掘 | 通过错误日志实现XXE外带

admin 2024年10月8日15:15:55评论14 views字数 1644阅读5分28秒阅读模式

扫码领资料

获网安教程

漏洞挖掘 | 通过错误日志实现XXE外带

漏洞挖掘 | 通过错误日志实现XXE外带

Track安全社区投稿~  

千元稿费!还有保底奖励~(https://bbs.zkaq.cn)

介绍

在最近的一个项目中,我发现了一个与 XML 外部实体(XXE)攻击相关的重大安全问题。

本文讲述了我在项目中发现并利用 XXE 漏洞的过程,特别是通过一种非传统的方式——利用 Java 异常在日志文件中输出攻击结果。

什么是XXE?

XML 外部实体(XXE)是一种安全漏洞,通常出现在处理 XML 输入的应用程序中。在 XXE 攻击中,攻击者可以利用应用程序的 XML 解析器来引入外部实体,从而实现多种恶意行为,如读取本地文件、发起服务器请求,甚至在服务器上执行任意代码。如果不加以处理,这类漏洞可能导致严重后果,因此在网络安全领域中是一个至关重要的问题。

漏洞挖掘 | 通过错误日志实现XXE外带

问题:初步突破

在对我的最新项目进行全面测试时,我发现了一个令人担忧的功能。项目的解决方案允许上传包含 XML 标记的 schema 文件,这就为 XXE 漏洞打开了大门。

对此产生了兴趣后,我决定深入研究这一潜在威胁。我的第一次突破发生在发现了一个允许服务器端请求伪造(SSRF)漏洞的 XXE 漏洞。SSRF 是一种安全漏洞,攻击者可以利用它诱使服务器向内部网络中的其他资源或外部网站发起非预期的请求。

我通过在 schema 文件中注入以下 XXE 负载成功实现了这一漏洞:

漏洞挖掘 | 通过错误日志实现XXE外带

有了这个 payload 后,我简单地从模板创建了一个 schema 文件,并将 payload 添加到其中。

在创建完 schema 文件后,我继续将其上传到系统中:

漏洞挖掘 | 通过错误日志实现XXE外带

该应用程序在默认情况下会在上传后自动处理 schema 文件。在加载过程中,由于注入导致 schema 文件无效,会触发错误:

漏洞挖掘 | 通过错误日志实现XXE外带

尽管发生了错误,但注入的 XML 实体仍被处理,导致服务器后端执行了一次 HTTP 请求。这是此次发现的关键时刻,因为我成功实现了 SSRF(服务器端请求伪造)。

漏洞挖掘 | 通过错误日志实现XXE外带

很快我意识到,读取文件并不可行,因为没有直接的输出。我们得到的只是一个通用的错误信息。schema 文件需要遵循特定的模板,这使得使用包含多条指令的 DTD 技术变得不现实,因为在第一条指令之后就会引发 XML 解析错误。

利用服务器日志

但我并未气馁,决心找到一种方法来在目标机器上披露文件。在持续的探索中,我发现了一个解决方案:应用程序具有日志记录功能,并且可以显示日志。这一发现为我打开了新的路径。

我开始着手从已处理的注入 XML 实体中提取有价值的信息。

于是,我创建了一个包含声明实体的模板 schema 文件,加载了一个外部 XML DTD。

外部 DTD 允许应用程序引用一个独立文件来定义 XML 结构,从而为潜在的漏洞利用提供了可能性:

漏洞挖掘 | 通过错误日志实现XXE外带

接着,我在远程主机上准备了恶意的 evil.dtd 文件:

漏洞挖掘 | 通过错误日志实现XXE外带

与之前一样,我从模板创建了一个 schema 文件,并在其后附加了我的 payload:

漏洞挖掘 | 通过错误日志实现XXE外带

schema 文件上传成功,但加载过程由于错误而失败,情况如下:

漏洞挖掘 | 通过错误日志实现XXE外带

然而,这种方式仍会加载外部 DTD(evil.dtd)并处理它:

漏洞挖掘 | 通过错误日志实现XXE外带

DTD 文件中的 payload 通过引用一个不存在的文件触发了服务器异常。这个文件名是通过将 'nonexistent/' 路径与一个表示 C:/ 盘列表的字符串组合而成的。

基本上,未处理的异常文本将类似于:

Error, non-existing file at: file:///nonexistent/(C:/)LISTING.

这些文本将会出现在错误日志中:

漏洞挖掘 | 通过错误日志实现XXE外带

除了目录列表,这种技术还可以用来读取文件。通过操控 DTD 文件的内容,攻击者可以针对系统中的特定文件:

漏洞挖掘 | 通过错误日志实现XXE外带
漏洞挖掘 | 通过错误日志实现XXE外带

以上内容由白帽子左一翻译并整理。原文:https://infosecwriteups.com/xml-external-entity-injection-with-error-based-data-exfiltration-985b063ec820

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。

原文始发于微信公众号(白帽子左一):漏洞挖掘 | 通过错误日志实现XXE外带

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月8日15:15:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漏洞挖掘 | 通过错误日志实现XXE外带https://cn-sec.com/archives/3240897.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息