XXE漏洞

**

XXE漏洞

一、XML基础知识

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

XXE漏洞_第1张图片

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

二、XML外部实体注入

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

XXE漏洞_第2张图片

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

    XML内容:

XXE漏洞_第3张图片

  • DTD文件(evil.dtd)内容:
    在这里插入图片描述恶意引入外部实体方式3:
    XML内容:
    在这里插入图片描述

DTD文件(evil.dtd)内容:

在这里插入图片描述

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

XXE危害1:读取任意文件

XXE漏洞_第4张图片如果数据不回显,可以将数据发送到远程服务器。

XXE危害2:执行系统命令 XXE漏洞_第5张图片
XXE危害3:探测内网端口

四、防御XXE攻击

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

PHP:libxml_disable_entity_loader(true);

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

例题:http://web.jarvisoj.com:9882/
XXE漏洞_第6张图片

我们先go一下看看

XXE漏洞_第7张图片

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



<c>&b;c>

出了点问题复现失败

你可能感兴趣的:(渗透测试,xml,安全漏洞)