XXE的基础介绍
XXE漏洞名XML Enternal Entity Injection(下面XXE漏洞简称XXE)
XXE的产生时由于服务器传输XML数据类型时,我们修改数据结构从而导入的XML外部实体对服务器造成影响。
XML 的介绍
xml是于html类似的可扩展标记语言,它与html最大的不同是它的标签是自定义的,而html的标签大多数是已经设定好的;
XML的结构可分为三部分;
第一部分:<?xml version="1.0" encoding="UTF-8"?> 声明部分
第二部分:<!DOCTYPE ANY[<!ENTITY f STSTEM "file:///c:/windows/win.ini" >]>
设定f的定义为file:///c:/windows/windwos.ini;
第三部分:&f; 调用外部实体;
举个例子:
请求包的实体内容是xml数据类型的,再看相应包的返回内容,可以看出<username>标签有回显
所以引入外部实体;
注入点:
能够传XML类型的api(包中contene-type:text/xml或application/xml 或请求内容为xml类型),或者源码中有simplexml_load_string()的地方;
php>=2.9版本默认不开启引用外部实体;
作用
1.读取文件;解释如上面例子(靶机来自BUUCTF)
2.DOS攻击
3.配合RCE
4.内网探测
XXE漏洞很难遇到,就算遇到了大部分也是用来读取文件;
修复:
1.关闭引用外部实体
2.输入过滤
3.waf