XXE漏洞
程序员文章站
2022-07-15 15:38:07
...
**
XXE漏洞
一、XML基础知识
- XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
- 内部声明DTD 根元素 [元素声明]>
引用外部DTD 根元素 SYSTEM “文件名”>
内部声明实体 实体名称 "实体的值”
引用外部实体 实体名称 SYSTEM “URI”>
二、XML外部实体注入
- 恶意引入外部实体方式1:
-
恶意引入外部实体方式2:
XML内容:
- DTD文件(evil.dtd)内容:
恶意引入外部实体方式3:
XML内容:
DTD文件(evil.dtd)内容:
另外,不同程序支持的协议不一样,
XXE危害1:读取任意文件
如果数据不回显,可以将数据发送到远程服务器。
XXE危害2:执行系统命令
XXE危害3:探测内网端口
四、防御XXE攻击
方案一、使用开发语言提供的禁用外部实体的方法
PHP:libxml_disable_entity_loader(true);
方案二、过滤用户提交的XML数据 关键词:,SYSTEM和PUBLIC。
例题:http://web.jarvisoj.com:9882/
我们先go一下看看
发现这个发送信息用的是JSON,我们将类型改为xml,并在下面输入xml代码
<?xml version="1.0"?>
<!DOCTYPE a[
<!ENTITY b SYSTEM "file://etc/passwd"
]>
<c>&b;</c>
出了点问题复现失败
上一篇: C语言内存篇 | 14-栈溢出攻击的原理
下一篇: jarvisoj pwn level系列