
A Rust honeypot that simulates a vulnerable cPanel/WHM instance for CVE-2026-41940

CVE-2026-41940(cPanel2Shell 인증 우회)에 취약한 cPanel/WHM 인스턴스를 시뮬레이션하는 Rust 기반 허니팟입니다.
이 허니팟은 cPanel2Shell 취약점 스캐너가 사용하는 응답 시퀀스를 에뮬레이션합니다:
msg_code:[expired_session] 마커를 제공합니다초기 프로브를 통과한 공격자는 인메모리 가상 파일시스템으로 지원되는 가짜 bash 셸로 유도됩니다.
cargo build --release
# 기본값: 자동 생성 TLS와 함께 포트 2087, 2083 사용
./target/release/cpanel2shell-honeypot
# 사용자 지정 포트
./target/release/cpanel2shell-honeypot -p 2083,2087
# TLS 비활성화
./target/release/cpanel2shell-honeypot --no-tls
# 호스트명별 TLS 및 핫 리로드
./target/release/cpanel2shell-honeypot --certs-config data/certs.toml
# 모든 옵션
./target/release/cpanel2shell-honeypot --help
data/certs.toml 생성(data/certs.example.toml 참조):
default = "auto"
[auto]
cache_dir = "./captures/certs"
key_type = "ecdsa-p256"
validity_days = 365
issuer_cn = "Let's Encrypt Authority X3"
[[host]]
sni = "cpanel.example.com"
cert = "/etc/honeypot/certs/cpanel.pem"
key = "/etc/honeypot/certs/cpanel.key"
src/
├── main.rs # 진입점, 런타임 설정
├── cli.rs # 명령줄 인수
├── config.rs # 애플리케이션 구성
├── router.rs # HTTP 라우트 정의
├── capture.rs # 요청 로깅 및 페이로드 저장
├── sessions/ # 세션 지속성
├── handlers/ # HTTP 요청 핸들러
├── shell/ # Bash 인터프리터 및 VFS
│ ├── lexer.rs # 토크나이저
│ ├── parser.rs # 재귀 하강 파서
│ ├── exec.rs # AST 실행기
│ ├── expand.rs # 변수 확장
│ ├── builtins.rs # 셸 내장 명령
│ ├── commands.rs # 외부 명령 스텁
│ ├── vfs.rs # 가상 파일시스템
│ └── init.rs # 파일시스템 시드 데이터
└── tls/ # TLS 인증서 관리
├── config.rs # 인증서 구성
├── generator.rs # 인증서 생성
├── resolver.rs # SNI 인증서 해석
└── watcher.rs # 구성 파일 핫 리로드
가짜 셸은 bash의 하위 집합을 구현합니다:
$VAR, ${VAR:-default})$(cmd), `cmd`)세션 상태(cwd, env, VFS 쓰기, 히스토리)는 JSON 스냅샷을 통해 재시작 후에도 유지됩니다.
모든 공격자 활동은 ./captures/에 기록됩니다:
| 파일 패턴 | 설명 |
|---|---|
upload_*.bin | 업로드된 파일 |
upload_meta_*.txt | 업로드 메타데이터 |
post_*.txt | POST 요청 본문 |
cmd_*.txt | 터미널 명령 |
sessions/*.json | 세션 스냅샷 |
certs/ | 캐시된 TLS 인증서 |
until/case 키워드를 위한 향상된 셸 파서MIT