目录
一.准备
攻击机:kali-2021.2
XXE靶机
链接:https://download.vulnhub.com/xxe/XXE.zip
安装好XXE靶机后注意将网段设置成与攻击机一样的网段。(例:本次渗透使用的是192.168.200.0/24网段)
二.收集信息
1.XXE靶机打开界面如下,并不会直接告诉你账号和密码,需要我们自己去找
2. 我们可以用nmap -sS 192.168.200.1/24来扫描本网段中存活的靶机,发现192.168.200.131正是我们所要找的XXE的靶机。
用网页打开如下图所示,这便是我们所要获取靶机的flag的所在之处!
3. 接下来使用nmap -sC -sV 192.168.200.131 来查找出robots.txt文件下所存在的文件。拿到一个网站,先看robots.txt。
关于robots.txt,此文章有详细解释:robots.txt 文件详解_passport_daizi的博客-CSDN博客。可以看到有/xxe 和/admin.php 两个文件
用网页查看显示如下图所示,这便是我们接下来要获取的目标
三.获取flag
1.首先我们打开192.168.200.131/xxe ,看到的是一个登录界面
2. 打开burp suite,抓取登录页面的数据包,可以看到XML的格式,这里就可以看出我们所要攻击的XXE漏洞了。
3.发送到repeater,我们可以使用以下payload,读取出admin.php的数据
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY admin SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>
<root><name>&admin;</name><password>admin</password></root>
以下方法可以不用补全目录,直接找到想要的文件
php://filter/read=convert.base64-encode/resource=admin.php
将读取到的数据发送到Decoder下,使用base64解密,可以得到账号和密码,密码用md5解密可以得到。
账号:administhebest
密码:admin@123
4.从抓取中的数据包可以看出admin.php是在xxe的目录下面,所以我们打开192.168.200.131/xxe/admin.php页面,将刚刚获取到的账号密码输入。
登入后可点击图中的flag
5.发现有flagmeout.php文件但是看不到,这样我们可以再次使用burp读取其中的文件,注意在此文件在根目录下面,所以读取时使用./flagmeout.php
再次将获取到数据放入Decoder解密,可以看到有一串由base32解密的数据
在线找一个base32解密的网站,解密后可得出一串由base64加密的数据
再次通过base64解密后,可以看到最终我们要找的flag的文件所在地
6.条件反射的读取此文件的数据,再再再再次进行base64解密
解密后得到一串看不懂的代码,搜索一下发现代码为php文件格式
找一个在线php运行的网站,可以得到我们所要的flag啦!
(在线php的网站各有差异,我刚开始找的都没有显示出来,还以为是我的数据弄错了,后面试了很多个才找到可以运行出的)