Sızma Testlerinde ve Denetimlerde En Çok Karşılaşılan Servisleri Değerlendirme: NFS ve REDIS

0
344
views
Sızma testleri ve denetimler sırasında çeşitli servisler ile karşılaşılır. Bu servislerin keşfi, incelenmesi, güvenlik denetimlerinin gerçekleştirilmesi, istismarı, yapılandırma dosyalarının incelenmesi gibi bir çok adım bulunmaktadır. Bu yazıda NFS ve REDIS adlı servisler için temel bilgiler verildikten sonra, sızma testleri ve denetimlerde işletilebilecek adımlar incelenecektir.

İncelenecek olan servislerde hedeflenen amaca ulaşmak için Nmap *.nse betikleri, Metasploit modülleri, Exploit-DB & SearchSploit kodları ve çeşitli araçlar kullanılabilir.

Not: Nmap betikleri kullanılırken sürüm bilgisinin (“-sV“) kontrolü de tavsiye edilmektedir.

 

NFS: Network File System [TCP\2049, UDP\2049, TCP\111, UDP\111]

NFS (Network File System) ağdaki bilgisayarların (özellikle UNIX/Linux işletim sistemlerinin) ortak bir dosya sistemine, yerel diskleri kadar kolay ulaşmasını sağlayan, ilk olarak 1984 yılında Sun Microsystems tarafından geliştirilmiş RPC temelli dağıtık dosya sistemi yapısıdır. Böylece bir ağ üzerindeki birden fazla bilgisayarda bulunan dosyaların, tek bir sabit diskte yer alıyormuşçasına yönetilmelerini sağlar. RPC tabanlı servislerden olan NFS servisi ile iletişim kurabilmek için TCP ve UDP 2049 portunun yanında TCP ve UDP 111, 1039, 1047, 1048, 35166 gibi portlara da erişim gerekebilir.

Not: NFS’in eski sürümlerinin güvensiz olmasının yanında yeni sürümlerinde kerberos ile kimlik doğrulama dahil bir çok güvenlik katmanı eklenmiştir.

 

NFS hizmetine bağlanabilmek (client / istemci) için gerekli paketlerin kurulması gereklidir. Bu paketler temel olarak aşağıdaki gibidir.

  • nfs-common
  • nfs-utils
  • nfs-utils-lib
  • rpcbind

Not: NFS ile ilgili detaylı bilgi için kaynaklardaki LinuxFocus yazısı incelenebilir.

 

NFS hizmeti verecek sunucuda yapılandırma dosyaları bulunmaktadır. Bu dosyalar temel olarak aşağıdaki gibidir.

  • /etc/hosts: Servise erişime izin verilen veya engellenen istemciler belirtilebilir.
  • /etc/exports: NFS için asıl yapılandırma dosyasıdır.

 

/etc/exports” dosyasında verilebilecek en önemli NFS parametleri aşağıdaki gibi sıralanabilir.

  • Senkronizasyon parametreleri:
    • sync“: Senkron dosya paylaşımı gerçekleştirileceğini belirtir. Senkron kullanımında istemcinin yazma işleminin bitmesi beklendikten sonra veriler sunucunun diskine yazılır (işlenir). Bu sebeple kontrollü ve yavaş olmasına rağmen daha güvenilir ve veri kaybını azaltıcı bir seçenektir. Varsayılan senkronizasyon seçeneğidir.
    • async“: Asenkron dosya paylaşımı gerçekleştirileceğini belirtir.
  • Yetkilendirme parametreleri:
    • rw“: Yazma işlemi gerçekleştirilebilir.
    • ro“: Sadece okuma işlemi gerçekleştirilebilir. Varsayılan yetkilendirme seçeneğidir.
  • Erişim ezme parametreleri:
    • root_squash“: Bağlantı kuracak istemci üzerinden, paylaşılan dizinlerde (“rw” yetkisi etkinleştirilmişse) “root” izni ile dosya oluşturulamaması/erişilememesi sağlanır. Bu parametrenin etkinleştirilmesi sayesinde, istemci tarafında paylaşıma “root” yetkisi ile bağlanıldığında, NFS kurulu sunucuda bu kullanıcı “nobody” adlı kullanıcıya çevrir yani istemcinin “root” kullanıcısının yetkisini ezerek, hedef NFS paylaşımına en az yetkili kullanıcı ile bağlanılmasını sağlar. Varsayılan istemci kullanıcı yetkisini ezme seçeneğidir.
    • no_root_squash“: Bağlantı kuracak istemci üzerinden paylaşılan dizinlerde (“rw” yetkisi etkinleştirilmişse) “root” kullanıcısının (ID:0) izni ile dosya oluşturulabilmesine/erişilebilmesine sebep olur. Güvenilir olmayan bir seçenektir.
    • all_squash“: Bağlantı kuracak istemci üzerinden, paylaşılan dizinlerde (“rw” yetkisi etkinleştirilmişse) hangi kullanıcı ile bağlanılırsa bağlanılsın, ilgili kullanıcının (“root” dahil) izni ile dosya oluşturulamaması/erişilememesi sağlanır. Yani, istemciden bağlanan tüm kullanıcılar sunucu tarafında anonim kullanıcı olarak değerlendirilir.
    • squash_uids 0,10-30,1000-2000“, “squash_gids 0,50,200-220“: Bağlantı kuracak istemci üzerinden, paylaşılan dizinlerde (“rw” yetkisi etkinleştirilmişse) belirtilen kullanıcıların kendi izinleri ile dosya oluşturulamaması/erişilememesi sağlanır. Yani, istemciden bağlanan belirli kullanıcı veya grup ID’leri/ID aralıkları sunucu tarafında anonim kullanıcı olarak değerlendirilir.

 

Servise ait banner okunabilir.

  • telnet HedefIP HedefPort
  • nc -nv HedefIP HedefPort
  • rpcinfo -s HedefIP | grep nmap
  • rpcinfo -p HedefIP | grep nmap
  • Nmap: banner

 

Kali üzerinde kurulu olmayan araçların ve paketlerin listesi aşağıdaki gibi listelenebilir.

  • nfs-common

 

Mount edilen paylaşımlar incelenebilir.

  • Nmap: nfs-ls
  • MSF: auxiliary/scanner/nfs/nfsmount
  • showmount -e HedefIP

Not: Bu bilgi hedef sunucunun /etc/exports dosyasında kayıtlıdır.

 

Paylaşılan dizinler listelenebilir.

  • Nmap: nfs-showmount
  • Nmap: nfs-statfs

 

Paylaşılan dizin mount edilebilir.

  • mount -t nfs HedefIP:PaylasimDizini /tmp/Kali_BaglantiDizini/ -o nolock,proto=tcp,port=2049
  • mount -t nfs -o vers=3 HedefIP:PaylasimDizini /tmp/Kali_BaglantiDizini2/

 

Paylaşılan dizine erişebilecek kullanıcı ID bilgisi öğrenilerek mount edilebilir.

  • nfspy -o rw,server=HedefIP:PaylasimDizini /tmp/Kali_BaglantiDizini3

 

Mount edilmemiş paylaşım için erişebilecek kullanıcı ID bilgisi elde edilebilir.

  • Betik: https://www.it-connect.fr/wp-content-itc/uploads/2013/12/VULNIX18.png

 

Mount edilen paylaşım için erişim yetkilendirmesi ve erişebilecek kullanıcı ID bilgisi elde edilebilir.

  • stat /tmp/Kali_BaglantiDizini

 

Mount edilen paylaşıma erişim sağlanayabilecek ID değerine sahip kullanıcı oluşturulabilir.

  • useradd Kali_YeniKullaniciAdi -u NFS_KullaniciID -m -s /bin/bash

 

Disk sistemine erişim sağlandıktan sonra komut satırına erişim için çeşitli teknikler kullanılabilir. Bu teknikler kaynaklardaki Siberportal (Linux Sızma Testlerinde Hak Yükseltme Yöntemleri) yazısının 4. başlığında incelenmiştir.

Disk sistemine erişim sağlandıktan sonra komut satırına erişim sağlanan kullanıcının yetkisi yükseltilebilir.

Mount edilen dizin no_root_squash olarak ayarlandıktan sonra SUID biti etkin hak yükseltme uygulaması hedef diske atılabilir.

 

Bu servisi kullanan çeşitli zafiyetli sistemler istismar edilebilir.

  • Xlink Omni-NFS Server 5.2 Server Buffer Overflow [CVE-2006-5780]
    • MSF: exploit/windows/nfs/xlink_nfsd

 

 

REDİS: Remote Dictionary Service [TCP: 6379]

Salvatore Sanfilippo tarafından açık kaynak olarak geliştirilmiş olan Redis (Remote Dictionary Service), key-value şeklinde tasarlanmış bir NoSQL veritabanıdır.

 

Redis’in temel avantajları aşağıdaki gibi listelenebilir.

  • Tüm operasyonları bellekte çalıştırarak bellekteki veriyi dönmesi ve sekron çalışması sebebi ile oldukça hızlıdır.
  • Yapılan ayara göre diske yazma imkanı da sunmaktadır. Disk üzerine yazması ve NoSql mantığı ile çalışması sebebiyle sunucu kapansa dahi veriler kaybolmaz.

Redis’in temel dezavantajları aşağıdaki gibi listelenebilir.

  • Veriler şifrelenerek saklanmamaktadır.
  • Asenkson çalışmaması sebebi ile tek instance üzerinde asenkron alternatiflerin eriştiği performansa ulaşılamayabilir.
  • İlişkisel veritabanlarındaki gibi karmaşık soruları yapmak istenirse, kurgulamaya önem verilmesi gerekir.

 

Kali üzerinde kurulu olmayan araçların ve paketlerin listesi aşağıdaki gibi listelenebilir.

  • redis-tools

 

Servise ait banner okunabilir.

  • telnet HedefIP HedefPort
  • nc -nv HedefIP HedefPort
  • Nmap: banner

 

Redis servisi üzerinden sunucu bilgileri elde edilebilir.

  • Nmap: redis-info
  • MSF: auxiliary/scanner/redis/redis_server
  • redis-cli -h HedefIP -p HedefPort -a ParolaDegeri INFO
  • redis-cli -h HedefIP -p HedefPort -a ParolaDegeri CONFIG GET *

 

Bu bilgiler Redis yapılandırma dosyasında bulunmaktadır.

  • /etc/redis/redis.conf

 

Redis komut satırında çalıştırılabilecek komutlardan bazıları aşağıdaki gibidir.

  • CLIENT LIST –> Bağlı kullanıcılar listelenir
  • CLIENT GETNAME –> Kayıtlı istemci adı getirilir.
  • DBSIZE –> Kayıtlı anahtarlar listelenir.
  • INFO –> Sunucu hakkında bilgi edinilir.
  • LASTSAVE –> En son kayıt zamanını gösterir.
  • TIME –> Sunucu saatini gösterir
  • AUTH ParolaDegeri –> Parola koruması varsa, kimlik doğrulaması gerçekleştirilir.

 

Geçerli parolalar tespit edilebilir.

  • Nmap: redis-brute
  • MSF: auxiliary/scanner/redis/redis_login

 

Mevcut parola sıfırlanabilir.

  • redis-cli -h HedefIP -p HedefPort -a ParolaDegeri CONFIG SET requirepass “”

 

Hedef disk üzerine dosya indirilebilir.

  • redis-cli -h HedefIP -p HedefPort -a ParolaDegeri CONFIG SET dir HedefDizin
  • CONFIG SET dbfilename HedefDosya FLUSHALL –> cat AktarilacakDosya | redis-cli -h HedefIP -p HedefPort -a ParolaDegeri -x set AnahtarYukle –> redis-cli -h HedefIP -p HedefPort -a ParolaDegeri SAVE
  • MSF: auxiliary/scanner/redis/file_upload –> set LocalFile AktarilacakDosya –> set RemoteFile HedefDosya

 

Disk sistemine erişim sağlandıktan sonra komut satırına erişim için çeşitli teknikler kullanılabilir. Bu teknikler kaynaklardaki Siberportal (Linux Sızma Testlerinde Hak Yükseltme Yöntemleri) yazısının 4. başlığında incelenmiştir.

 

Bu servisi kullanan çeşitli zafiyetli sistemler istismar edilebilir.

  • Redis-cli < 5.0 – Buffer Overflow [CVE-2018-12326]
    • Exploit-DB: 44904.py

 

Kaynaklar:

http://www.siberportal.org/red-team/linux-penetration-tests/linux-sizma-testlerinde-hak-yukseltme-yontemleri/
http://www.linuxfocus.org/Turkce/November2000/article164.shtml

Güvenilir Olarak Yapılandırılmamış NFS Servisinin İstismarı

NMAP Betikleri, Showmount Komutu ve MSF nfsmount Auxiliary Modülü ile NFS Paylaşımlarına Erişimin Sağlanması


https://www.siberportal.org/red-team/linux-penetration-tests/guvenilir-olarak-yapilandirilmamis-redis-uzerinden-komut-satiri-erisiminin-elde-edilmesi/

 

 

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz