XXE漏洞(Pikachu)

原理

要补好多知识~

img

XXE漏洞全称XML External Entity Injection 即XML外部实体注入。
XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件和代码,造成任意文件读取、命令执行、内网端口扫描、攻击内网网站、发起Dos攻击等危害。
XXE漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。

解析xml在php库libxml,libxml>=2.9.0的版本中默认是禁止解析xml外部实体内容的,没有XXE漏洞。

从XML相关一步一步到XXE漏洞 - 先知社区 (aliyun.com)

XML外部实体注入(XXE)的原理和应用_xml注入原理-CSDN博客

XXE(XML外部实体注入)漏洞分析——pikachu靶场复现_pikachu xxe-CSDN博客

XXE危害

读取任意文件

PHP中可以通过FILE协议、HTTP协议和FTP协议读取文件,还可利用PHP伪协议。
XML在各语言下支持的协议有:

在这里插入图片描述

pikachu

pikachu XXE (XML外部实体注入)(皮卡丘漏洞平台通关系列)-CSDN博客

在实施攻击之前可以简单判断一下是否存在回显数据

随便输入个包含命名实体(内部实体)的xml数据(以下代码中xxe是命名实体的实体名称):

<?xml version="1.0"?>  
<!DOCTYPE ANY [     
<!ENTITY xxe "茶茶" > ]>  
<a>&xxe;</a>

image-20240509232033175

看到回显了”茶茶“,说明存在回显。(注意:只能判断是否存在回显,不能判断是否支持外部实体)

已经判断了输入内部实体是有回显的,那接下来可以用带内外部实体注入的方法,来确定是否支持外部实体,以及实施攻击。

c:/windows/win.ini是每个windows系统都有的文件,如果确定服务器是windows系统,就可以用该文件来确定是否有xxe漏洞,当然想要读取其他文件目录,只需更改绝对路径即可

输入payload(以下代码中xxe是外部实体的实体名称):

<?xml version="1.0"?> 
<!DOCTYPE foo [    
<!ENTITY xxe SYSTEM "file:///c:/windows/win.ini" > ]> 
<foo>&xxe;</foo>

image-20240509232520349

东西有点多,后续还会继续学习

posted @ 2024-05-12 14:19  machacha  阅读(34)  评论(0编辑  收藏  举报