Blog

Nmap ile Oracle Veri Tabanı Güvenlik Testleri

Değerli Dostlar,

Bildiğiniz üzere veri günümüzde yaşayan şirketler için en önemli varlıklardan bir tanesidir. Kurum yada yada kuruluşunuzda yaptığınız tüm satışlar, alımlar kestiğiniz faturalar yada müşteri bilgileriniz her gün veri tabanınızda işlenir ve istediğinizde sizlere sunulur. Verinin bu kadar önemli olduğu bu dönemde özellikle kanunlar ile birlikte korunması mevcut durumun hassasiyetini gözler önüne sermektedir. Bugün sizlere Oracle Veri tabanında bir senaryo oluşturarak en çok kullanılan penetrasyon aracı olan nmap ile kolayca yapabileceğiniz testleri kısaca anlatmaya çalışacağız.

Nmap yukarıda da bahsettiğimiz gibi belkide adını sıkça duyduğunuz ve kullanmadığınız penetrasyon aracı. Bu araç ile mevcut ağ yapınızdaki bilgisayarları tarayabilir, işletim sistemi sürümlerini aynı zamanda açık portlarını öğrenebilirsiniz. Unutmayalım ki, bizler bu avantajı kötü niyetli olarak değil, güvenlik mekanizmamızı daha da geliştirmek için kullanacağız.

Nmap yüklemek için https://nmap.org/download.html

Konu başlığımıza ufak ufak dönecek olursak öncelikle bir Oracle veri tabanına bağlanmamız için gerekli olacak unsurları sırası ile bilmemiz gerekir.

  • Veri tabanının çalıştığı sunucunun ip adresi
  • Listener portu
  • SID adı yada listener üzerinde hizmet veren servisin adı ( SERVICE_NAME )
  • Son olarak kullanıcı adı ve şifre

Bizim burada sorumuz şu olacak. Ya bu bilgileri bilmiyorsak ?

Senaryo varsayımımız ise şu şekilde. Kurum yada kuruluşumuzun standart bir network yapısına sahip olduğunu düşünelim ve bilinmeyen bir kullanıcının rahatça bu network’e dahil olarak içeride ip ve port taraması yapabildiğini ya da bir şekilde sunucu bloğuna gelebildiğini varsayalım ve başlayalım. ( IP bloğumuz 192.168.0.0/24 )

Bizim en başta öğrenmemiz gereken şey standart olarak Listener portu ve bağlanmak için bir ip adresi. Bunu öğrenmek için iki farklı yöntem mevcut.

Bu komut ile sadece 1521 portu açık olan adresler taranır.
nmap –p1521 192.168.0.0/24

Bu komut ile 1500 – 1600 arasında portu açık olan adresler taranır.
nmap –p1500-1600 192.168.0.0/24

Görüldüğü üzere VMWARE üzerinde kurulu bir Oracle database ip adresi yakaladık. – 192.168.0.10

1521/tcp open oracle bize veri tabanı olduğunu söylüyor.

Şimdi bu ip adresinden TNS sürümüne ve oradan da veri tabanı versiyonuna bakalım. Belki işletim sistemi de çıkar.

İlgili komut : nmap -sV -O -p1521 192.168.0.10

Oracle veri tabanı sürümü 10.2.0.5 ve Linux üzerinde çalışıyor

Buraya kadar her şey güzel. Oracle veri tabanının kurulduğu sunucunun işletim sistemi, ip adresi ve sürümünü öğrendik. Sıra geldi SID adını bulmaya.

Nmap üzerinde oracle-sid-brute adında bir eklenti bulunur ve mevcut ip adresine 1521 portu üzerinden atak gerçekleştirerek doğru bilgiyi almaya çalışır. Bu liste nmap kurulu olduğu /usr/share/nmap/nselib/data/oracle-sids dosyası içerisinde yer alır. Eğer bu komut ile kendi SID isminizi bulamazsanız nano gibi bir editör ile ismi ekleyerek öğrenmeye devam edebilirsiniz. ( şahsen ben öyle yaptım )

İlgili komut : nmap –script=oracle-sid-brute -p 1521 192.168.0.10

ORACLE SID = COZUMPARK

En başa dönersek belirtiğimiz üzere bir veri tabanına bağlanmak için IP , Listener Port ve SID adı şuan elimizde. Son olarak bir kullanıcı ve şifreye ihtiyacımız olacak. Nmap bu konuda tekrar bizim yardımımıza koşuyor. Yine servis olarak oracle-brute adında bir hizmet barındırıyor ve kendi listesindeki kullanıcı ve şifreleri belirtilen yöntemi deniyor. Bu sayede sisteminizdeki zayıf şifreleri kolaylıkla öğreniyorsunuz. Listeler /usr/share/nmap/nselib/data/oracle-default-accounts.lst adresinde tutulmaktadır.

Nmap scan report for 192.168.0.10
Host is up (0.00s latency).
PORT     STATE SERVICE
1521/tcp open  oracle
| oracle-brute: 
|   Accounts
|     system:system - Valid credentials
|   Statistics
|_    Performed 15 guesses in 1 seconds, average tps: 15

Görüldüğü gibi COZUMPARK SID uzerinde ” system ” kullanıcısı standart olarak gelen bir kullanıcı ve şifresi yine ” system “. Zayıf bir parola olduğu için brute force tekniği ile kolayca ele geçirildi. Bu şifreyi kompleks bir şekilde değiştirmemiz gerekiyor demek.

Eğer değiştirmek isterseniz komut : alter user system identified by yeni_sifre;

Her zaman belirttiğimiz gibi, sistemin en güçlü halkası en zayıf olduğumuz noktadadır. Makale boyunca bir veri tabanına basit bir şifre verildiğinde ne kadar kolay ulaşılabileceğini aynı zamanda suistimale açık olduğunu gördük.

Görüşmek dileğiyle,

Buğra PARLAYAN

Çok sevdiği mesleği Oracle Veritabanı Yöneticiliğinde bulunmayan Türkçe kaynakları yazan hayırsever genco

İlgili Makaleler

4 Yorum

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu