mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
127 lines
6.1 KiB
Markdown
127 lines
6.1 KiB
Markdown
# 23 - Pentesting Telnet
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
|
||
## **Podstawowe informacje**
|
||
|
||
Telnet to protokół sieciowy, który daje użytkownikom nieszyfrowany sposób dostępu do komputera przez sieć.
|
||
|
||
**Domyślny port:** 23
|
||
```
|
||
23/tcp open telnet
|
||
```
|
||
## **Enumeracja**
|
||
|
||
### **Zbieranie banerów**
|
||
```bash
|
||
nc -vn <IP> 23
|
||
```
|
||
Wszystkie interesujące enumeracje można wykonać za pomocą **nmap**:
|
||
```bash
|
||
nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
|
||
```
|
||
Skrypt `telnet-ntlm-info.nse` uzyska informacje NTLM (wersje Windows).
|
||
|
||
Z [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): W protokole TELNET znajdują się różne "**opcje**", które będą zatwierdzone i mogą być używane w strukturze "**DO, DON'T, WILL, WON'T**", aby umożliwić użytkownikowi i serwerowi zgodzenie się na użycie bardziej złożonego (lub może po prostu innego) zestawu konwencji dla ich połączenia TELNET. Takie opcje mogą obejmować zmianę zestawu znaków, tryb echa itp.
|
||
|
||
**Wiem, że możliwe jest enumerowanie tych opcji, ale nie wiem jak, więc daj mi znać, jeśli wiesz jak.**
|
||
|
||
### [Brute force](../generic-hacking/brute-force.md#telnet)
|
||
|
||
## Plik konfiguracyjny
|
||
```bash
|
||
/etc/inetd.conf
|
||
/etc/xinetd.d/telnet
|
||
/etc/xinetd.d/stelnet
|
||
```
|
||
## Automatyczne polecenia 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'
|
||
|
||
```
|
||
### Recent Vulnerabilities (2022-2025)
|
||
|
||
* **CVE-2024-45698 – D-Link Wi-Fi 6 routers (DIR-X4860)**: Wbudowana usługa Telnet akceptowała twardo zakodowane dane uwierzytelniające i nie sanitizowała wejścia, co pozwalało na nieautoryzowane zdalne RCE jako root za pomocą stworzonych poleceń na porcie 23. Naprawiono w oprogramowaniu układowym ≥ 1.04B05.
|
||
* **CVE-2023-40478 – NETGEAR RAX30**: Przepełnienie bufora oparte na stosie w poleceniu Telnet CLI `passwd` pozwala sąsiedniemu atakującemu na ominięcie uwierzytelnienia i wykonanie dowolnego kodu jako root.
|
||
* **CVE-2022-39028 – GNU inetutils telnetd**: Sekwencja dwóch bajtów (`0xff 0xf7` / `0xff 0xf8`) wywołuje dereferencję wskaźnika NULL, co może spowodować awarię `telnetd`, prowadząc do trwałego DoS po kilku awariach.
|
||
|
||
Pamiętaj o tych CVE podczas triage podatności — jeśli cel działa na niepoprawionym oprogramowaniu układowym lub przestarzałym demonie Telnet inetutils, możesz mieć prostą drogę do wykonania kodu lub zakłócającego DoS.
|
||
|
||
### Sniffing Credentials & Man-in-the-Middle
|
||
|
||
Telnet przesyła wszystko, w tym dane uwierzytelniające, w **czystym tekście**. Dwa szybkie sposoby na ich przechwycenie:
|
||
```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)
|
||
```
|
||
Dla aktywnego MITM, połącz spoofing ARP (np. `arpspoof`/`ettercap`) z tymi samymi filtrami sniffingowymi, aby zbierać hasła w sieciach przełączanych.
|
||
|
||
### Zautomatyzowane ataki brute-force / Password Spraying
|
||
```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
|
||
```
|
||
Większość botnetów IoT (warianty Mirai) nadal skanuje port 23 z małymi słownikami domyślnych poświadczeń—odzwierciedlenie tej logiki może szybko zidentyfikować słabe urządzenia.
|
||
|
||
### Eksploatacja i post-eksploatacja
|
||
|
||
Metasploit ma kilka przydatnych modułów:
|
||
|
||
* `auxiliary/scanner/telnet/telnet_version` – enumeracja banerów i opcji.
|
||
* `auxiliary/scanner/telnet/brute_telnet` – wielowątkowe łamanie haseł.
|
||
* `auxiliary/scanner/telnet/telnet_encrypt_overflow` – RCE przeciwko podatnemu Telnetowi Solaris 9/10 (obsługa opcji ENCRYPT).
|
||
* `exploit/linux/mips/netgear_telnetenable` – włącza usługę telnet za pomocą spreparowanego pakietu na wielu routerach NETGEAR.
|
||
|
||
Po uzyskaniu powłoki pamiętaj, że **TTY są zazwyczaj głupie**; zaktualizuj za pomocą `python -c 'import pty;pty.spawn("/bin/bash")'` lub użyj [HackTricks TTY tricks](/generic-hacking/reverse-shells/full-ttys.md).
|
||
|
||
### Wzmocnienie i wykrywanie (kącik niebieskiego zespołu)
|
||
|
||
1. Preferuj SSH i całkowicie wyłącz usługę Telnet.
|
||
2. Jeśli Telnet jest wymagany, przypisz go tylko do VLAN-ów zarządzających, egzekwuj ACL i owiń demon w TCP wrappers (`/etc/hosts.allow`).
|
||
3. Zastąp przestarzałe implementacje `telnetd` `ssl-telnet` lub `telnetd-ssl`, aby dodać szyfrowanie transportowe, ale **to tylko chroni dane w tranzycie—zgadywanie haseł pozostaje trywialne**.
|
||
4. Monitoruj ruch wychodzący do portu 23; kompromitacje często generują odwrotne powłoki przez Telnet, aby obejść surowe filtry egress HTTP.
|
||
|
||
## Odniesienia
|
||
|
||
* D-Link Advisory – CVE-2024-45698 Krytyczne Telnet RCE.
|
||
* NVD – CVE-2022-39028 inetutils `telnetd` DoS.
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|