XXE漏洞学习

news/2024/7/23 9:00:56 标签: php, javascript, json

 

0X00:前言

介绍:

XXE漏洞全称XML External Entity Injection 即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件和代码,造成任意文件读取命令执行内网端口扫描攻击内网网站发起Dos攻击等危害。

XML外部实体注入(XML External Entity)简称XXE

 XXE漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。

php函数simplexml_load_string()读取XML

解析xml在php库libxml,libxml>=2.9.0的版本中没有XXE漏洞

(1)什么是XML???

XML用于标记电子文件使其具有结构性的标记语句,可以用来标记数据,定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,XML文档结构包括XML声明,DTD文档类型定义(可选),文档元素

百度百科:

可扩展 标记语言, 标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的 标记语言。
在电子计算机中,标记指 计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合 万维网传输,提供统一的方法来 描述和交换独立于 应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输

 

(2)XML文档格式

<!--第一部分:XML声明-->

<!--第二部分:文档类型定义DTD-->

<!--第三部分:文档元素-->

 

 

0X01:漏洞

测试环境pikachu

 

后端代码

php">$html='';
//考虑到目前很多版本里面libxml的版本都>=2.9.0了,所以这里添加了LIBXML_NOENT参数开启了外部实体解析
if(isset($_POST['submit']) and $_POST['xml'] != null){


    $xml =$_POST['xml'];
//    $xml = $test;
    $data = @simplexml_load_string($xml,'SimpleXMLElement',LIBXML_NOENT);
    if($data){
        $html.="<pre>{$data}</pre>";
    }else{
        $html.="<p>XML声明、DTD文档类型定义、文档元素这些都搞懂了吗?</p>";
    }
}

?>

 

这是正常的XML

<?xml version = "1.0"?>
<!DOCTYPE note [
<!ENTITY hacker "ESHLkangi">
]>
<name>&hacker;</name>

测试结果:

 

这是恶意的XML   payload ,引入了外部的SYSTEM

<?xml version = "1.0"?>
<!DOCTYPE ANY [
<!ENTITY f SYSTEM "file:///etc/passwd">
]>
<x>&f;</x>

 

但是这里我没成功,可能是因为/etc/passwd是liunx的固定配置文件,我是windows

看被人的提交之后 就可以查看/etc/passwd的文件内容

 

0X02:一题关于XXE注入的CTF

Blind association

题目地址:https://bnv.web.ctfcompetition.com/

题目描述:这是一个没有啥好看的 enterprise-ready Web应用程序。 

根据别人步骤做的 

 

 

 

中间说:请使用下面的搜索引擎找到离你最近的关联组织

有三个地名,提交了三次后发现没什么反应,只会出来貌似没用的文字

抓包发现!!!

每次提交,在POST一条message,如图

 

 试验过了,三个数是不变的,F12看一下javascript

 

 

 

 

 也不知道 为啥想到要看这个???

数一数 blindvalues 数组,刚好 26 个,猜想是不是字母一一对应捏,打开 Console 验证一下:

 

跟 message 一模一样!

下一步,先想一想是什么攻击方式。如果该题是 SQL 注入的话,那这题只能使用纯字,并且忽略大小写,这个有点难整啊…… 使用特殊标点符号 Fuzz 脚本怼一下,好的,一点用都没有。

 

思来想去,搜到了一个奇妙的渗透手法:基于 Json 的 web 服务也有可能存在着 XXE 注入!试一试提交 XML:

      改为:

 

 

 返回结果和之前不一样了!!!

 

 

 

整了好久,在 Burp 官网上看到了一个比较新颖的使用本地 DTD 读取文件的方法 Exploiting XXE to retrieve data by repurposing a local DTD[2]

这个 payload 主要是利用错误信息来打印目标文件的内容,重新定义了 docbookx.dtd (一般有 Gnome 就有它)里面的 ISOamso。我们提交了这个 payload 之后,当导入本地的 DTD 文件时,会优先执行我们定义的 ISOamso,因此可以达成任意文件读取。

使用该 payload 成功读取:

php"><!DOCTYPE message [
    <!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd">
    <!ENTITY % ISOamso '
        <!ENTITY % file SYSTEM "file:///etc/passwd">
        <!ENTITY % eval "<!ENTITY % error SYSTEM 'file:///nonexistent/%file;'>">
        %eval;
        %error;
    '>
    %local_dtd;
]>

  




猜一下常见的路径 /flag,对啦✔

 

 

 

 

 参考地址:https://mp.weixin.qq.com/s/6gDMvATp9y7HSD4bFqUXEg

0Xff:总结

 其实有很多地方都不知道为什么要那么做,或许这就是经验的原因,或许是我有知识不知道,但是通过这次了解了XXE是什么,运用流程和姿势。还会回来改改的

 

转载于:https://www.cnblogs.com/liqik/p/11167019.html


http://www.niftyadmin.cn/n/1359027.html

相关文章

20190710-汉诺塔算法

汉诺塔&#xff1a;汉诺塔&#xff08;又称河内塔&#xff09;问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱…

英文题面翻译01

英文题面&#xff1a;来源地址&#xff1a;A Simple Math Problem | JXNUOJ A Simple Math Problem 1000ms 131072K 描述&#xff1a; Huanhuan challenges you to a simple math problem. Define F(x) as the sum of the decimal digits of x. For example: F(123)1236,…

英文题面翻译02

英文原题&#xff1a;题目来源&#xff1a;Apple | JXNUOJ Apple 1000ms 262144K 描述&#xff1a; There are a box of apples,which contains N apples. Youre going to give them to M person. It is required that everyone must be given a positive integer apple, a…

echo 与 od -x 与 %!xxd 命令

echo 与 od -x 与 %&#xff01;xxd 命令 echo 命令 -n 选项 可以使其不带换行符od -x 命令可以查看文件的16进制表示%&#xff01;xxd 可以在vim编辑器中dump成16进制表示转载于:https://www.cnblogs.com/jeanschen/p/3183799.html

英文题面翻译03

英文原题&#xff1a;题目来源&#xff1a;Charging | JXNUOJ Charging 1000ms131072K 描述&#xff1a; Xxy is the king of the universe. In order to resist the invasion, he ordered the construction of many space warships.Now,he wants to charge his space ship…

在PC上使用苹果蓝牙无线键盘

Thinkpad X230是最近用的比较频繁的电脑&#xff0c;自带蓝牙&#xff1b;平日一直挂在底座上&#xff0c;拖着显示器、鼠标、键盘工作。苹果蓝牙无线键盘&#xff08;Apple Wireless Keyboard&#xff09;买了有好几年了&#xff0c;最近一直闲放着。闲来无事&#xff0c;试试…

英文题面翻译04

英文原题&#xff1a;题目来源&#xff1a;Chinese Valentines Day | JXNUOJ Chinese Valentines Day 1000ms 262144K 描述&#xff1a; Recently, Gao Liu has been so absorbed in the Pac-Man game that he has even neglected his young fans.So before Chinese valent…