xxe漏洞学习
#前言:
今天学习了 xee漏洞的简单利用。为此记录一下。
xml
在学习xee漏洞开始前,要先了解xml文档的语法。
什么是xml?
可延伸标记式语言(英语:E x tensible M arkup L anguage,简称:XML)是一种[标记式语言XML是从标准通用标记式语言(SGML)中简化修改出来的。它主要用到的有可延伸标记式语言、可延伸样式语言(XSL)、XBRL和XPath等。
xml
是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,非常适合Web传输,而且xml有助于在服务器之间穿梭结构化数据,方便开发人员控制数据的存储和传输。
xml 语法
1.XML元素都必须有关闭标签。 |
xee漏洞
从所周知大部分漏洞基本都是通过用户可控参数进行传参,xee漏洞也是如此。
xxe的漏洞所在位置在DTD部分 ,而DTD相当于根,这个又分为 内部DTD文档 外部DTD文档 内外部DTD文档。
内部DTD文档
<!DOCTYPE 根元素[定义内容]> |
外部DTD文档
<!DOCTYPE 根元素 SYSTEM "DTD文件路径"> |
内外部DTD文档结合
<!DOCTYPE 根元素 SYSTEM "DTD文件路径" [定义内容]> |
DTD文档里又包含了 实体部分。也分为 内部实体 和外部实体,参数实体。
XML
中对数据的引用称为实体,实体中有一类叫外部实体,用来引入外部资源,有SYSTEM
和PUBLIC
两个关键字,表示实体来自本地计算机还是公共计算机,外部实体的引用可以利用如下协议
file:///path/to/file.ext |
内部实体
<!ENTITY 实体名称 "实体的值"> |
一个实体由三部分构成: &
符号, 一个实体名称, 以及一个分号 (;)
外部实体
<!ENTITY 实体名称 SYSTEM "URL"> |
参数实体
<!ENTITY %实体名称 "值"> |
例如,一个内部DTD文档和内部实体的例子
<!DOCTYPE xee [<!ENTITY xss "ofccie">]> //这个根元素可以自定义,【】是实体内容 |
用靶场能更直观的展示。
最底下部分就是xml 文档结构 。
这是个用户名重置的链接使用的xml 而bee这个是我们可以控制的。当我们点击发送响应回来的是。bee’s ….
当我们把它改为xxx.
试着去写一个DTD 文档 (如上举例)
当我们试着去写一个外部实体引用去读取本地文件。(由于靶场并不是安装在机器上,无法演示)
<!DOCTYPE xee [<!ENTITY xss SYSTEM "file:///etc//passwd">]> |
上面是有回显,还存在无回显的情况。以及dos 攻击 内网探测。(后面在学😃,记笔记吧)