# 23 - Pentesting Telnet {{#include ../banners/hacktricks-training.md}} ## **基本信息** Telnet 是一种网络协议,允许用户以不安全的方式通过网络访问计算机。 **默认端口:** 23 ``` 23/tcp open telnet ``` ## **枚举** ### **横幅抓取** ```bash nc -vn 23 ``` 所有有趣的枚举都可以通过 **nmap** 执行: ```bash nmap -n -sV -Pn --script "*telnet* and safe" -p 23 ``` 脚本 `telnet-ntlm-info.nse` 将获取 NTLM 信息(Windows 版本)。 来自 [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854):在 TELNET 协议中有各种 "**options**",可以使用 "**DO, DON'T, WILL, WON'T**" 结构进行授权,以便用户和服务器同意使用更复杂(或可能只是不同)的约定集进行 TELNET 连接。这些选项可能包括更改字符集、回显模式等。 **我知道可以枚举这些选项,但我不知道怎么做,所以如果你知道怎么做,请告诉我。** ### [暴力破解](../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 端口上发送构造的命令以 root 身份进行未经身份验证的远程 RCE。已在固件 ≥ 1.04B05 中修复。 * **CVE-2023-40478 – NETGEAR RAX30**: Telnet CLI `passwd` 命令中的基于栈的缓冲区溢出使得相邻攻击者能够绕过身份验证并以 root 身份执行任意代码。 * **CVE-2022-39028 – GNU inetutils telnetd**: 一个两字节序列 (`0xff 0xf7` / `0xff 0xf8`) 触发 NULL 指针解引用,可能导致 `telnetd` 崩溃,经过几次崩溃后导致持久的 DoS。 在漏洞分类时请记住这些 CVE——如果目标运行的是未修补的固件或遗留的 inetutils Telnet 守护进程,您可能会有直接的代码执行或破坏性 DoS 的路径。 ### 捕获凭据与中间人攻击 Telnet 以 **明文** 传输所有内容,包括凭据。捕获它们的两种快速方法: ```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:// # Ncrack (drop to interactive session on success) ncrack -p 23 --user admin -P common-pass.txt --connection-limit 4 # Medusa (parallel hosts) medusa -M telnet -h targets.txt -U users.txt -P passwords.txt -t 6 -f ``` 大多数物联网僵尸网络(Mirai 变种)仍然使用小的默认凭证字典扫描 23 端口——镜像该逻辑可以快速识别弱设备。 ### 利用与后利用 Metasploit 有几个有用的模块: * `auxiliary/scanner/telnet/telnet_version` – 横幅和选项枚举。 * `auxiliary/scanner/telnet/brute_telnet` – 多线程暴力破解。 * `auxiliary/scanner/telnet/telnet_encrypt_overflow` – 针对易受攻击的 Solaris 9/10 Telnet(选项 ENCRYPT 处理)的 RCE。 * `exploit/linux/mips/netgear_telnetenable` – 在许多 NETGEAR 路由器上通过构造的数据包启用 telnet 服务。 获得 shell 后,请记住 **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. 用 `ssl-telnet` 或 `telnetd-ssl` 替换遗留的 `telnetd` 实现,以添加传输加密,但 **这仅保护数据在传输中——密码猜测仍然很简单**。 4. 监控到 23 端口的出站流量;妥协通常会通过 Telnet 生成反向 shell,以绕过严格的 HTTP 出口过滤器。 ## 参考 * D-Link 通告 – CVE-2024-45698 关键 Telnet RCE。 * NVD – CVE-2022-39028 inetutils `telnetd` DoS。 {{#include ../banners/hacktricks-training.md}}