
このスクリプトは、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: ユーザー名リストファイルへのパス(1行に1ユーザー名)--username: 単一のユーザー名をテスト--outputFile: 結果を保存するパス(オプション。省略した場合はターミナルに出力)--outputFormat: 出力形式: list、json、またはcsv(デフォルト: list)list: ユーザー名ごとのプレーンテキスト結果json: 有効/無効なユーザー名の構造化リストcsv: カンマ区切りの値このツールは、自分が所有しているシステム、またはテストする明示的な許可を得ているシステムでのみ使用してください。 無許可での使用は違法であり、非倫理的です。