
이 스크립트는 OpenSSH 7.7(및 이전 버전)의 사용자 이름 열거 취약점(CVE-2018-15473)을 확인합니다. 잘못된 형식의 인증 패킷을 전송하고 SSH 서버의 응답을 해석하여 유효한 사용자 이름을 식별합니다.
이 스크립트는 OpenSSH 7.7(및 이전 버전) 사용자 이름 열거 취약점(CVE-2018-15473)을 확인합니다. 잘못된 형식의 인증 패킷을 보내고 SSH 서버의 응답을 해석하여 유효한 사용자 이름을 식별합니다.
https://www.exploit-db.com/download/45233
Python 호환성
모든 print 문을 Python 3 구문 (print("..."))으로 변환했습니다.
명확성과 호환성을 위해 map(str.strip, f.readlines())를 리스트 컴프리헨션으로 대체했습니다.
Paramiko 3.x+ 호환성 다음을 대체했습니다:
paramiko.auth_handler.AuthHandler._handler_table[...]
다음으로:
from paramiko.auth_handler import AuthHandler
client_table = AuthHandler._client_handler_table.fget(AuthHandler)
이렇게 하면 TypeError: 'property' object is not subscriptable 오류를 피할 수 있습니다.
직접 패칭을 대체했습니다:
handler_table[MSG_SERVICE_ACCEPT] = malform_packet
다음으로:
client_table[paramiko.common.MSG_SERVICE_ACCEPT] = malform_packet
RSA 키 생성 최적화 1024비트 RSA 키의 반복 생성(느리고 안전하지 않음)을 피했습니다. 테스트를 위해 캐시된 2048비트 RSAKey를 도입했습니다.
로깅 및 출력 수정 args.outputFile이 필수라는 점을 제거했습니다. --outputFile이 제공되지 않으면 sys.stdout으로 대체하도록 했습니다.
기타 수정 Paramiko의 시끄러운 내부 로깅을 비활성화했습니다. 더 이상 사용되지 않거나 중복된 예외 처리 패턴을 대체했습니다. 일관된 간격/들여쓰기를 적용했습니다(모든 탭을 공백 4칸으로 변환).
의존성 설치:
pip3 install -r requirements.txt
python3 open-ssh-ue.py <hostname> --userList wordlist.txt
python3 open-ssh-ue.py hostname \
--userList wordlist.txt \
--threads 10 \
--outputFile results.json \
--outputFormat json
hostname: 대상 SSH 서버 IP 또는 도메인.--port: SSH 포트(기본값은 22)--threads: 동시 스레드 수(기본값은 5)--userList: 사용자 이름 목록 파일 경로(줄당 하나의 사용자 이름)--username: 단일 사용자 이름 테스트--outputFile: 결과를 저장할 경로(선택 사항, 생략하면 터미널에 출력)--outputFormat: 출력 형식: list, json, 또는 csv(기본값: list)list: 사용자 이름별 일반 텍스트 결과json: 유효/무효 사용자 이름의 구조화된 목록csv: 쉼표로 구분된 값이 도구는 소유하거나 명시적 테스트 권한이 있는 시스템에서만 사용하십시오. 무단 사용은 불법이며 비윤리적입니다.