
CVE-2018-15473에 대한 원격 OpenSSH 사용자 이름 열거 익스플로잇, 멀티스레드 스캐닝을 포함한 변조된 패킷 및 타이밍 공격 스크립트를 특징으로 합니다.
OpenSSH 7.7까지는 원격 공격자가 잘못된 인증 요청을 보내고 서버 응답의 차이를 관찰하여 유효한 사용자 이름을 열거할 수 있습니다.
| 필드 | 값 |
|---|---|
| 영향받는 소프트웨어 | OpenSSH 2.3 ~ 7.7 |
| CVSS v3.1 | 5.3 (중간) |
| 공격 벡터 | 네트워크 (원격, 인증 불필요) |
| 근본 원인 | 서버가 잘못된 사용자에 대한 조기 종료를 전체 패킷이 파싱될 때까지 지연시키지 않습니다 (auth2-gss.c, auth2-hostbased.c, auth2-pubkey.c) |
| 영향 | 정보 노출 — 유효한 사용자 이름 열거 |
exploit.py — 잘못된 패킷 (빠름, 멀티스레드)잘린 SSH_MSG_USERAUTH_REQUEST (부울 필드 제거됨)를 전송합니다. 유효하지 않은 사용자는 조기 종료(USERAUTH_FAILURE)를 트리거하고, 유효한 사용자는 서버 연결을 끊습니다.
exploit_timing.py — 타이밍 공격 (느림, 패치된 서버에서 작동)암호 인증을 통해 매우 긴 암호(~100KB)를 전송합니다. 유효한 사용자는 서버가 암호를 해싱한 후 거부하기 때문에 시간이 더 오래 걸리며, 유효하지 않은 사용자는 즉시 거부됩니다. 순차적으로 실행되며 임계값을 자동으로 보정합니다.
exploit.py가 오탐(false positive)을 반환할 때(패치된 서버) 사용하세요.
git clone <this-repo-url>
cd cve-2018-15473
pip install -r requirements.txt
# Malformed packet (try this first)
python3 exploit.py <target_ip> 22 <lhost> <lport> -u root
python3 exploit.py <target_ip> 22 <lhost> <lport> -w usernames.txt -t 8
# Timing attack (fallback for patched servers)
python3 exploit_timing.py <target_ip> 22 <lhost> <lport> -u root
python3 exploit_timing.py <target_ip> 22 <lhost> <lport> -w usernames.txt
| 인수 | 설명 |
|---|
target_ip | 대상 SSH 서버 IP |
target_port | 대상 SSH 포트 (보통 22) |
lhost | 공격자 IP (사용되지 않음, 템플릿 일관성을 위해 유지) |
lport | 공격자 포트 (사용되지 않음, 템플릿 일관성을 위해 유지) |
-u, --username | 테스트할 단일 사용자 이름 |
-w, --wordlist | 워드리스트 파일 경로 (한 줄에 하나의 사용자 이름) |
-t, --threads | 스레드 수 (기본값: 4, exploit.py만 해당) |