CVE-2025-60500 — 안전하지 않은 파일 업로드 / QDocs Smart School의 로직 결함 (Smart School 7.1)
공개일: 2025-10-17
작성자 / 발견자: Lebas Vivien
상태: 예약됨
CVE: CVE-2025-60500 (예약됨)
요약
QDocs Smart School — School Management System 7.1의 안전하지 않은 파일 업로드 / 로직 결함으로 인해 회계(accountant), 관리자(admin), 또는 최고 관리자(superadmin) 와 같은 역할을 가진 인증된 사용자가 미디어 업로드 기능에서 대체 YouTube URL 옵션을 악용하여 파일 유형 제한을 우회할 수 있습니다. 이 결함으로 인해 공격자는 임의의 PHP 파일을 웹에서 접근 가능한 디렉터리에 저장할 수 있으며, 업로드된 파일에 접근할 때 원격 코드 실행이 가능해집니다.
영향받는 제품: Smart School : School Management System 7.1 (QDocs)
공급업체 확인: 예
영향
- 웹에서 접근 가능한 디렉터리에 배치된 업로드된 PHP 파일을 통한 원격 코드 실행(RCE).
- 지정된 역할을 가진 인증된 사용자는 예측 가능한 웹 접근 경로에 저장되는 임의의 PHP 파일을 업로드할 수 있습니다.
- 공격자는 업로드된 파일을 호출하여 시스템 명령을 실행하거나 환경 내부로 더 깊이 침투할 수 있습니다.
영향받는 구성 요소
- 파일 업로드 기능 — Download Center > Upload Share Content (미디어 업로드 / 콘텐츠 공유 흐름)
공격 유형 / 벡터
- 공격 유형: 원격 (역할: accountant/admin/superadmin을 가진 인증된 계정 필요)
- 공격 벡터: 업로드 흐름과 대체 YouTube URL 옵션을 결합; 업로드된 파일과 YouTube 링크 필드를 모두 제출하면 서버는 업로드된 파일을
.php 확장자로 웹에서 접근 가능한 디렉터리에 저장합니다.
재현 (개념적 PoC — 실행 가능한 페이로드 미포함)
accountant, admin 또는 superadmin 역할의 사용자로 Smart School에 로그인합니다.
- Download Center → Upload Share Content로 이동합니다.
- 업로드/공유 워크플로 중에 HTTP 요청을 가로챕니다 (예: Burp와 같은 프록시 사용).
- 파일 이름이
.php로 끝나는 파일을 업로드합니다 (서버 측 검사/필터는 일반 파일 유형 검증을 통해 PHP 업로드를 차단하려고 시도합니다).
- 동일한 업로드/제출 요청에서 대체 YouTube URL 필드도 채웁니다 (YouTube 옵션을 처리하는 로직 경로가 업로드된 파일을 잘못 허용하고 저장합니다).
- 공유/업로드 흐름을 완료합니다; 서버 응답을 확인하거나 반환된 저장 파일 경로를 관찰합니다 (애플리케이션이 저장 경로를 노출합니다). 관찰된 저장 경로 패턴 예시: /uploads/school_content/material/media/!file.php
- 반환된 URL을 통해 저장된
.php 파일에 접근하여 코드 실행을 트리거합니다 (파일에 실행 가능한 PHP 코드가 포함된 경우).
개념 증명 (개괄)
- 취약한 흐름을 통해 업로드된 PHP 파일은 웹에서 접근 가능한 디렉터리에 기록되며 HTTP로 직접 호출할 수 있습니다.
- 이 취약점은 로직/검증 우회입니다 (대체 YouTube URL 코드 경로가 일반 업로드 흐름과 동일한 엄격한 파일 유형 제한을 적용하지 못합니다).
완화 / 권장 수정 사항
공급업체 측 수정 (권장):
- 로직 결함 수정 — 대체 YouTube URL 경로 및 기타 특수 사례 업로드 경로가 일반 업로드 흐름과 동일한 파일 유형 검증 및 필터링을 적용하도록 합니다. 또한 YouTube URL이 유효한지/존재하는지 확인합니다.
- 업로드된 파일의 실행 차단 — 업로드된 콘텐츠를 웹 루트 외부에 저장하거나 업로드가 서버 측 코드를 절대 실행하지 않는 안전한 핸들러를 통해 제공되도록 합니다.
- 서버 측 MIME 유형 및 확장자 검사 적용 — 블랙리스트가 아닌 허용된 파일 유형의 화이트리스트에 대해 검증합니다.
- 저장된 파일 이름 변경 — 원래 확장자를 유지하지 않고 안전한 확장자로 변경하거나 이름을 무작위화합니다.
- 올바른 서버 권한 설정 — 업로드된 파일이 실행 가능하지 않도록 합니다 (예:
chmod로 실행 권한 제거; 웹 서버가 업로드 디렉터리에서 PHP를 실행하지 않도록 구성).
- 로깅 및 모니터링 추가 — 의심스러운 업로드 및 업로드된 파일에 대한 접근 시도를 기록하고 모니터링합니다.
- 역할 기반 제한 적용 — 콘텐츠 업로드가 허용되는 역할을 강화하고 권한 있는 역할에 대해 추가 검증을 요구합니다.
관리자를 위한 임시 해결책:
- 가능한 경우 문제가 있는 업로드/공유 기능을 일시적으로 비활성화합니다.
- 업로드 접근을 더 적은 신뢰할 수 있는 계정으로 제한합니다.
- 웹 서버가
/uploads/... 디렉터리에서 .php 실행을 허용하지 않도록 구성합니다.
참고 자료
- 보고된 데모 인스턴스:
https://smart-school.in/demo
- MITRE CVE ID 예약됨: CVE-2025-60500