XXE 攻击是最重要的 Web 应用程序攻击类型之一。这是X MLË X ternal é ntity注入攻击。这种类型的漏洞允许攻击者干扰应用程序对 XML 数据的处理。许多应用程序使用 XML 格式在浏览器和服务器之间传输数据。当 Web 应用程序使用 XML 引用外部实体中的数据来传输数据时,就会发生攻击。
这种攻击允许攻击者访问或查看后端服务器文件系统上的文件或应用程序可以访问的其他数据。
XML 代表可扩展标记语言。XML 是一种用于描述结构化文档格式的标记语言。XML 与 HTML 有许多相似之处,但它的定义更为严格,以简化其解析器并增强安全性。XML 被设计为人类和机器可读,主要用于在应用程序之间传输数据。
让我们看看如何利用 XXE 攻击来泄露服务器上的机密数据。
第一步是在一个 VM 中启动 Kali,在另一个 VM 中启动 OWASP-BWA。
现在在 Kali 中打开浏览器并导航到 OWASP-BWA 的 IP 地址,然后单击 OWASP Mutillidae II Web 应用程序。
转到左侧的其他选项卡,然后转到XML 外部实体注入和XML 验证器,如下所示。
这将像这样打开 XML 验证器。
XML 验证器旨在检查您的 XML 的格式是否正确。如果是,验证器将在下面显示 XML 的内容。您可以将任何内容放入 XML 窗口,然后单击其下方的“验证 XML”按钮以确定您的 XML 格式是否正确。
在这里,我们将输入一些带有消息的简单 XML,如果格式正确,消息将显示在 XML 下方。如果没有,XML 验证器将显示错误消息
让我们看看我们是否可以操纵这个功能来注入一些恶意的 XML 来检索 Web 服务器上的资源。
接下来,让我们打开 BurpSuite 并在我们的浏览器中设置代理。
现在,输入我们正确格式的 XML 并在代理中拦截请求,如下所示。
我们可以看到 XML 解析器将 XML 转换为 URL 的位置。
如果我们可以在服务器上发送恶意 XML 请求文件或其他资源怎么办?我们可以通过使用 XML 请求来检索敏感文件吗?我们试试吧。
让我们创建一些从 Web 服务器请求 /etc/passwd 文件的 XML,例如;
<?xml version="1.0" "?>
<!DOCTYPE change log [
<!ENTITY systemEntity SYSTEM "../../../../etc/passwd" >]>
<change log><text>&systemEntity;
</text></change-log>
现在打开 BurpSuite 中的解码器选项卡并输入这个 XML,如下所示。接下来,单击“编码为...”按钮,将出现一个下拉菜单。
由于我们想把这个 XML 放到一个 URL 中,所以选择URL encoding
这会将我们的 XML 编码(翻译)为我们可以在请求资源的 URL 中使用的形式。
现在,返回 BurpSuite 代理并将编码的 XML 复制并粘贴到来自浏览器的 GET 请求的 URL 中。确保将其准确放置在原始 XML 所在的位置,如下所示。
现在,将数据包转发到 Mutilldae II 应用程序。
您应该在应用程序中看到以下内容。首先是提交的XML,然后是Web服务器的/etc/passwd文件的内容!
XML 请求了 /etc/passwd 文件,解析器授予我们访问权限。当然,这可能是 Web 服务器上的任何资源。
许多 Web 应用程序使用 XML 从浏览器和服务器传输数据。如果攻击者能够创建格式良好的 XML 并将其注入到请求中,则它可能能够访问 Web 服务器或其他资源上的外部数据。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。