XXE原理、产生、检测、危害
XXE原理、产生、检测、危害
(日月同辉,黑暗中寻找光明)
零、推荐:
一、简介:
XXE(XML External Entity),顾名思义,XML传输数据时,利用构造包含恶意语句的外部实体,通过XML解析去执行恶意代码
二、原理:
XML数据在传输过程中,攻击者强制XML解析器去访问攻击者指定的资源内容(本地/远程),外部实体声明关键字'SYSTEM'会令XML解析器读取数据,并允许它在XML文档中被替换,构造恶意的值,去执行
XML解析方式:DOM,SAX,JDOM,DOM4J,StAX……都可能会出现外部实体注入漏洞
三、产生的原因:
低版本php
libxml<2.9.1
设置了libxml_disable_entity_loader为FALSE
四、漏洞检测:
4.1、白盒:
4.1.1、函数/可控变量的查找
eg:
分析XML解析器设置,DOM,JDOM,DOM4J,SAX等方式对XML的解析设置
如果默认禁止使用外部实体,基本上xxe就没了
4.1.2、传输/存储数据格式类型
eg:
<user>xxx</user>
<password>xxxx</password>
4.2、黑盒:
4.2.1、数据格式类型判断
页面存在xml调用(一般会加密)
带参数的地方,分析accept头部有没有xml格式的提交数据(eg:application/xhtml+xml)
支持xml,再测参数(类似SQL注入),POST提交代码
修改传输数据类型,寻找加密的js函数,把json改成xml,再添加xml数据
尝试,试json会不会造成xxe
4.2.2、content-type值判断
抓取数据包,看accept头是否接受xml,content-type的值是不是 text/xml 或者 application/xml,
盲猜,更改content-type值application/xml分析返回
五、危害:
攻击者会将payload注入XML文件中,一旦文件被执行,将从本地完成到各种服务的执行,也就是说,如果存在XXE漏洞,那么就能够一定程度上绕过防火墙和过滤。
— — — — — —
任意文件读取
系统命令执行
执行远程代码
拒绝服务攻击
内网端口探测
攻击内网网站
钓鱼
六、xxe绕过
相似协议替换
实体编码绕过
……
- 点赞
- 收藏
- 关注作者
评论(0)