XXE漏洞

简介



XXE (XML External Entity Injection) 漏洞发生在应用程序解析 XML 输入时,没有禁止外部实体的加载。

简单的理解,一个实体就是一个变量,可以在文档中的其他位置引用该变量。

实体主要分为四种:

  • 内置实体 (Built-in entities)
  • 字符实体 (Character entities)
  • 通用实体 (General entities)
  • 参数实体 (Parameter entities)

完整的介绍可以参考:   DTD - Entities

到此网站学习一下:  http://www.w3school.com.cn/dtd/

               http://www.w3school.com.cn/xml

             http://www.w3school.com.cn/xml

             http://hublog.hubmed.org/archives/001854.html

             https://www.tutorialspoint.com/dtd/dtd_entities.htm

            http://blog.leanote.com/post/xuxi/XXE%E6%80%BB%E7%BB%93  //XXE总结

             https://security.tencent.com/index.php/blog/msg/69

            http://www.freebuf.com/articles/web/97833.html

危害:

对于 XXE 的危害,主要有:

  • 窃取敏感数据 (extracting sensitive data).
  • 远程代码执行 (remote code execution).
  • 攻击者可以实现任意文件读取,DOS拒绝服务攻击以及代理扫描内网等.

举例:

  • 服务器上面有一个xxeInject.php存在一个注入的文件,正常访问。

  • 文件内容:
<?php
#关闭Warning
error_reporting(E_ALL^E_NOTICE^E_WARNING);

#加载xml文件,不懂php://input 参考下面链接
#http://taoshi.blog.51cto.com/1724747/1165499
$xmlfile = file_get_contents(‘php://input‘);
$dom = new DOMDocument();

# LIBXML_NOENT: 将 XML 中的实体引用 替换 成对应的值
# LIBXML_DTDLOAD: 加载 DOCTYPE 中的 DTD 文件
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);

$creds = simplexml_import_dom($dom);
$user = $creds->user;
$pass = $creds->pass;

echo "Hello DaLao:" . "<br>" . "$user";
?>
  • 存在一个POST,XXE注入,所以我们构造代码,进行注入,因为是测试,我新建了一个文件如:C://pass.txt,内容:ONDragon‘Password,我们就利用这个漏洞进行此文件的读取。
  • 构造代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ONDragon [
<!ELEMENT ONDragon ANY >
<!ENTITY xxe SYSTEM "file:///C://pass.txt" >]>
<creds>
    <user>&xxe;</user>
    <pass>ONDragon</pass>
</creds>
  • 我们打开火狐的Live Http这个小插件进行POST数据注入。

  • 把我们的POST数据包复制上去,然后Replay,就可以获取C://pass.txt,内容:ONDragon‘Password啦。

  • 可以看到利用它,可以查看服务器上的文件。
  • 命令执行得需要服务器有一个expect扩展插件,如果按照此插件,就可以进行远程命令执行。
  • 此外还可以进行类似SSRF的攻击,内网信息收集,端口扫描等等。
时间: 2024-10-07 20:40:57

XXE漏洞的相关文章

XXE漏洞攻防

一.XML基础知识 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括XML声明.DTD文档类型定义(可选).文档元素. DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块.DTD 可以在 XML 文档内声明,也可以外部引用. 内部声明DTD <!DOCTYPE 根元素 [元素声明]> 引用外部DTD <!DOCTYPE 根元素 SYSTEM "文件名">

SpringMVC中的XXE漏洞测试

SpringMVC框架支持XML到Object的映射,内部是使用两个全局接口Marshaller和Unmarshaller,一种实现是使用Jaxb2Marshaller类进行实现,该类自然实现了两个全局接口,用来对XML和Object进行双向解析.并且XML文件可以是DOM文档.输入输出流或者SAX handler. SpringMVC流行使用注解来快速开发,其中JAXB注解可以对JavaBean中需要与XML进行转化的地方进行标注.比如,实现XML文件到User对象的映射,User对象中使用J

XXE漏洞以及Blind XXE总结

 转载请注明出处:http://blog.csdn.net/u011721501 0.前言 XXE漏洞是针对使用XML交互的Web应用程序的攻击方法,在XEE漏洞的基础上,发展出了Blind XXE漏洞.目前来看,XML文件作为配置文件(Spring.Struts2等).文档结构说明文件(PDF.RSS等).图片格式文件(SVG header)应用比较广泛,此外,网上有一些在线XML格式化工具也存在过问题,如开源中国的在线XML格式化工具XXE漏洞: http://www.wooyun.or

听补天漏洞审核专家实战讲解XXE漏洞

对于将"挖洞"作为施展自身才干.展现自身价值方式的白 帽 子来说,听漏洞审核专家讲如何挖掘并验证漏洞,绝对不失为一种快速的成长方式! XXE Injection(XML External Entity Injection),是一种容易被忽视,但危害巨大的漏洞.它是一种隐蔽并且经常被忽视的漏洞,可以利用XML外部实体加载注入,执行不可预控的代码. 据补天数据统计,每100个漏洞里,有0.5个是XXE.XXE漏洞虽然数量不多,却每个都是一种漏洞的经典案例!<文末有彩蛋> 1.X

XXE漏洞攻击与防御

转自https://www.jianshu.com/p/7325b2ef8fc9 0x01 XML基础 在聊XXE之前,先说说相关的XML知识吧. 定义 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括XML声明.DTD文档类型定义(可选).文档元素. 文档结构 XML文档结构包括XML声明.DTD文档类型定义(可选).文档元素. <!--XML声明--> <?xml version=&qu

实战讲解XXE漏洞的利用与防御策略

现在许多不同的客户端技术都可以使用XMl向业务应用程序发送消息,为了使应用程序使用自定义的XML消息,应用程序必须先去解析XML文档,并且检查XML格式是否正确.当解析器允许XML外部实体解析时,就会造成XXE漏洞,导致服务器被攻击.本期"安仔课堂",ISEC实验室的李老师为我们详细解析XXE漏洞的利用和防御.   一.XML基础知识  XML是用于标记电子文件并使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括

xxe漏洞呀

xxe漏洞就是能直接在请求里可以引用一个实体,然后造成读文件,只需要懂这个基本攻击原理就行 先了解什么是xxe xml外部实体注入简称xxe,注入的什么呢  一段xml代码 就是一个请求里 可以携带一个xml引用,然后可以读文件 https://security.tencent.com/index.php/blog/msg/69 腾讯也有一篇关于xxe的讲义 来操作一哈 打开burpsuite设置监听,浏览器也设置代理,端口8080 打开http://testhtml5.vulnweb.com/

[Web安全] XXE漏洞攻防学习(上)

0x00.XXE漏洞 XXE漏洞全称XML External Entity Injection 即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件和代码,造成任意文件读取.命令执行.内网端口扫描.攻击内网网站.发起Dos攻击等危害. XXE漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件. 0x01.XML基础知识 要了xxe漏洞,那么一定得先弄明白基础知识,了解xml文档的基础组

[Web安全] XXE漏洞攻防学习(中)

0x00.XXE漏洞攻击实例 攻击思路: 1. 引用外部实体远程文件读取 2. Blind XXE 3. Dos 0x01.外部实体引用,有回显 实验操作平台:bWAPP平台上的XXE题目 题目: 进行抓包,点击Any bugs?按钮,抓包如下: 可以看到xxe-1.php页面以POST方式向xxe-2.php页面传输了XML数据. 既然是XML数据,我们就可以自己增加一个恶意外部实体,然后在原本的XML数据中进行实体调用,来进行xxe攻击 获取系统密码文件 payload: <?xml ver

微信支付SDK存在XXE漏洞

微信支付SDK存在XXE漏洞 漏洞信息来源:http://seclists.org/fulldisclosure/2018/Jul/3https://xz.aliyun.com/t/2426 0x00受影响版本: JAVA SDK,WxPayAPI_JAVA_v3,建议使用了该版本的公司进行异常支付排查.微信在JAVA版本的SDK中提供callback回调功能,用来帮助商家接收异步付款结果,该接口接受XML格式的数据,×××者可以构造恶意的回调数据(XML格式)来窃取商家服务器上的任何信息.一旦