欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

XXE漏洞

程序员文章站 2022-07-15 15:38:07
...

**

XXE漏洞

一、XML基础知识

  • XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

XXE漏洞

  • 内部声明DTD 根元素 [元素声明]>
    引用外部DTD 根元素 SYSTEM “文件名”>
    内部声明实体 实体名称 "实体的值”
    引用外部实体 实体名称 SYSTEM “URI”>

二、XML外部实体注入

  • 恶意引入外部实体方式1:

XXE漏洞

  • 恶意引入外部实体方式2:

    XML内容:

XXE漏洞

  • DTD文件(evil.dtd)内容:
    XXE漏洞恶意引入外部实体方式3:
    XML内容:
    XXE漏洞

DTD文件(evil.dtd)内容:

XXE漏洞

另外,不同程序支持的协议不一样,

XXE危害1:读取任意文件

XXE漏洞如果数据不回显,可以将数据发送到远程服务器。

XXE危害2:执行系统命令 XXE漏洞
XXE危害3:探测内网端口

四、防御XXE攻击

方案一、使用开发语言提供的禁用外部实体的方法

PHP:libxml_disable_entity_loader(true);

方案二、过滤用户提交的XML数据 关键词:,SYSTEM和PUBLIC。

例题:http://web.jarvisoj.com:9882/
XXE漏洞

我们先go一下看看

XXE漏洞

发现这个发送信息用的是JSON,我们将类型改为xml,并在下面输入xml代码

<?xml version="1.0"?>
<!DOCTYPE a[
        <!ENTITY b SYSTEM "file://etc/passwd"
]>
<c>&b;</c>

出了点问题复现失败