127 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 23 - Pentesting Telnet
{{#include ../banners/hacktricks-training.md}}
## **基本情報**
Telnetは、ユーザーがネットワークを介してコンピュータにアクセスするための安全でない方法を提供するネットワークプロトコルです。
**デフォルトポート:** 23
```
23/tcp open telnet
```
## **列挙**
### **バナーグラブ**
```bash
nc -vn <IP> 23
```
すべての興味深い列挙は**nmap**によって実行できます:
```bash
nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
```
スクリプト `telnet-ntlm-info.nse` は NTLM 情報 (Windows バージョン) を取得します。
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854) より: TELNET プロトコルには、ユーザーとサーバーが TELNET 接続のためにより複雑な(または単に異なる)一連の規約を使用することに合意できるようにするために、"**DO, DON'T, WILL, WON'T**" 構造で使用されるさまざまな "**options**" が含まれています。これらのオプションには、文字セットの変更、エコーモードの変更などが含まれる可能性があります。
**このオプションを列挙することが可能であることは知っていますが、方法がわからないので、知っている場合は教えてください。**
### [ブルートフォース](../generic-hacking/brute-force.md#telnet)
## 設定ファイル
```bash
/etc/inetd.conf
/etc/xinetd.d/telnet
/etc/xinetd.d/stelnet
```
## HackTricks 自動コマンド
```
Protocol_Name: Telnet #Protocol Abbreviation if there is one.
Port_Number: 23 #Comma separated if there is more than one.
Protocol_Description: Telnet #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for t=Telnet
Note: |
wireshark to hear creds being passed
tcp.port == 23 and ip.addr != myip
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-telnet.html
Entry_2:
Name: Banner Grab
Description: Grab Telnet Banner
Command: nc -vn {IP} 23
Entry_3:
Name: Nmap with scripts
Description: Run nmap scripts for telnet
Command: nmap -n -sV -Pn --script "*telnet*" -p 23 {IP}
Entry_4:
Name: consoleless mfs enumeration
Description: Telnet enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/brocade_enable_login; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_encrypt_overflow; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_ruggedcom; set RHOSTS {IP}; set RPORT 23; run; exit'
```
### 最近の脆弱性 (2022-2025)
* **CVE-2024-45698 D-Link Wi-Fi 6 ルーター (DIR-X4860)**: 内蔵の Telnet サービスはハードコーディングされた認証情報を受け入れ、入力のサニタイズに失敗し、ポート 23 で作成されたコマンドを介してルートとして認証されていないリモート RCE を可能にしました。ファームウェア ≥ 1.04B05 で修正済み。
* **CVE-2023-40478 NETGEAR RAX30**: Telnet CLI の `passwd` コマンドにおけるスタックベースのバッファオーバーフローにより、隣接する攻撃者が認証をバイパスし、ルートとして任意のコードを実行できるようになります。
* **CVE-2022-39028 GNU inetutils telnetd**: 2 バイトのシーケンス (`0xff 0xf7` / `0xff 0xf8`) が NULL ポインタのデリファレンスを引き起こし、`telnetd` をクラッシュさせ、いくつかのクラッシュの後に持続的な DoS を引き起こします。
脆弱性のトリアージ中にこれらの CVE を念頭に置いてください。ターゲットがパッチ未適用のファームウェアまたはレガシー inetutils Telnet デーモンを実行している場合、コード実行や破壊的な DoS への直接的な道があるかもしれません。
### 認証情報のスニッフィングと中間者攻撃
Telnet はすべての情報、認証情報を含む、を **平文** で送信します。これをキャプチャするための2つの迅速な方法:
```bash
# Live capture with tcpdump (print ASCII)
sudo tcpdump -i eth0 -A 'tcp port 23 and not src host $(hostname -I | cut -d" " -f1)'
# Wireshark display filter
tcp.port == 23 && (telnet.data || telnet.option)
```
アクティブMITMの場合、ARPスプーフィング`arpspoof`/`ettercap`)を同じスニッフィングフィルターと組み合わせて、スイッチネットワーク上でパスワードを収集します。
### 自動ブルートフォース / パスワードスプレー
```bash
# Hydra (stop at first valid login)
hydra -L users.txt -P rockyou.txt -t 4 -f telnet://<IP>
# Ncrack (drop to interactive session on success)
ncrack -p 23 --user admin -P common-pass.txt --connection-limit 4 <IP>
# Medusa (parallel hosts)
medusa -M telnet -h targets.txt -U users.txt -P passwords.txt -t 6 -f
```
ほとんどのIoTボットネットMiraiバリアントは、デフォルトの資格情報辞書を使用してポート23をスキャンします。このロジックを反映させることで、脆弱なデバイスを迅速に特定できます。
### 攻撃とポストエクスプロイト
Metasploitにはいくつかの便利なモジュールがあります
* `auxiliary/scanner/telnet/telnet_version` バナーとオプションの列挙。
* `auxiliary/scanner/telnet/brute_telnet` マルチスレッドブルートフォース。
* `auxiliary/scanner/telnet/telnet_encrypt_overflow` 脆弱なSolaris 9/10 Telnetに対するRCEオプションENCRYPTの処理
* `exploit/linux/mips/netgear_telnetenable` 多くのNETGEARルーターで作成したパケットを使用してTelnetサービスを有効にします。
シェルを取得した後は、**TTYは通常ダムであることを忘れないでください**`python -c 'import pty;pty.spawn("/bin/bash")'`でアップグレードするか、[HackTricks TTY tricks](/generic-hacking/reverse-shells/full-ttys.md)を使用してください。
### ハードニングと検出(ブルーチームコーナー)
1. SSHを優先し、Telnetサービスを完全に無効にします。
2. Telnetが必要な場合は、管理VLANにのみバインドし、ACLを強制し、デーモンをTCPラッパーでラップします`/etc/hosts.allow`)。
3. レガシー`telnetd`の実装を`ssl-telnet`または`telnetd-ssl`に置き換えてトランスポート暗号化を追加しますが、**これはデータの移動中のみを保護します—パスワード推測は依然として簡単です**。
4. ポート23へのアウトバウンドトラフィックを監視します侵害はしばしばTelnetを介してリバースシェルを生成し、厳格なHTTP出口フィルターを回避します。
## 参考文献
* D-Link Advisory CVE-2024-45698 クリティカルTelnet RCE。
* NVD CVE-2022-39028 inetutils `telnetd` DoS。
{{#include ../banners/hacktricks-training.md}}