ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

XXE学习

2021-03-31 14:01:59  阅读:228  来源: 互联网

标签:xml 外部 实体 DTD 学习 文档 XXE 声明


XML简介

  • xml是可扩展的标记语言,设计用来进行数据的传输和存储。
//xml文档声明
<?xml version"1.0" encoding="UTF-8" ?>
//DTD文档类型声明定义
<!DOCTYPE message [//文档类型
<!ELEMENT message(receiver,sender,header,msg)>//元素定义
<!ELEMENT receiver (#PCDATA)>
...

//PCDATA 是被解析的字符数据,这些文本将被解析器检查实体以及标记,文本的标签会被当作标签来进行处理,而实体将会展开;但是解析的字符不应当包含&、< 、> 字符,需要使用&amp;&lt;&gt来进行替换
//CDATA:字符数据,不会被解析,标签不会当作标记来对待,其中的实体不会展开。
]>

//文档元素
<message>
<to>lalala</to>
...
<message>

  • xml介绍

1、可扩展标记语言
2、传输数据,而非显示数据
3、标签需要自行定义
4、具有自我描述性
5、w3c的推荐标准
6、不作为
7、纯文本
8、对http的补充

  • 文档定义:

内部声明:< !DOCTYPE 根元素 [元素声明]>
外部引用:< !DOCTYPE 根元素 SYSTEM ”文件名" >
内外部DTD文档结合:< !DOCTYPE 根元素 SYSTEM “DTD文件路径" [定义内容] >
关键字:
DOCTYPE :DTD声明
ENTITY:实体的声明
SYSTEM/PUBLIC:外部资源申请

  • 语法规则

所有的xml元素必须有一个关闭标签
xml标签对大小敏感
xml必须正确嵌套
xml属性必须加引号
实体引用
xml中,空格会被保留
xml必须有一个根元素

  • 实体

对数据的引用,根据实体的不同,xml解析器将会对实体的替代文本或外部文档的内容来替代实体引用,主要分为四类:
1、内置实体
2、字符实体
3、通用实体
4、参数实体
参数实体用% 实体名 申明 ,引用用%实体名
其余的直接用实体名声明,引用时加&引用
参数实体只能在DTD中声明,DTD中使用

//实体声明:
<!DOCTYPE foo [
<!ELEMENT foo ANY>
<!ELEMENT xxe "thinking">
]>
<foo>&xxe;</foo>

//外部实体
<!DOCTYPE foo [
<!ELEMENT foo ANY>
<!ELEMENT xxe SYSTEM "URL/URI">
]>
<foo>&xxe;</foo>




在这里插入图片描述
在这里插入图片描述

  • xxe也叫xml外部实体注入,xxe漏洞发生在应用程序解析xml输入时,没有禁止外部实体的加载,导致加载恶意外部文件,造成文件读取。命令执行。内网端口扫描、攻击内网网站、发起dos攻击等危害:

注入:数据恶意修改,导致服务器最终执行了恶意代码
外部实体:通过调用外部实体声明部分对xml数据进行修改。插入恶意代码;XXE漏洞触发点时可以上传xml文件的位置,没有对恶意的xml文件进行过滤,导致恶意xml文件上传,因此xxe指的是xml数据在传输过程中利用外部实体部分的SYSTEM关键字导致xml解析器可以从本地文件或远程的url中读取受保护的数据;

  • 挖掘方式

1、判断数据类型
2、判断xml是否进行了解析
3、判断是否支持外部实体。尽量使用自己的VPS判断,避免不会显
4、提交post请求xml文件,请求头加cotent-type:application/xml,同时添加:

<?xml version="1.0" encoding="utf=8"?>

< test >cat< /test >
5、漏洞利用
读取敏感信息/文件
内网探测

标签:xml,外部,实体,DTD,学习,文档,XXE,声明
来源: https://blog.csdn.net/ppbgi/article/details/115250275

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有