Oracle veritabanı kurumsal bilgi işlem altyapılarında performans ve güvenilirliği nedeniyle sıklıkla tercih edilmektedir. Dolayısıyla üzerinde bulunması olası zafiyetlere karşı güvenlik testlerine tabi tutulması önerilmektedir. Bu not Oracle10g sürümü üzerinde Metasploit Framework kullanılarak adım adım temel bir sızma testinin nasıl gerçekleştirilebileceği anlatılacaktır.

1. IP/Port ve versiyon Keşfi

İlk olarak sızma testlerinin ilk adımı olan keşif adımı ile IP/Port ve uygulama sürümü belirlenir. Bunun için Nmap aracından faydalanılabilir. Nmap aşağıdaki opsiyonları ile kullanıldığında hedef sunucu üzerindeki aktif portları ve bu portları dinleyen servislerin sürümlerini belirleyebilmektedir. 

# nmap -sT -sV -n -Pn --top-ports 2000 hedef_IP



2. SID Değerinin Belirlenmesi

Oracle veritabanının bulunduğu sistem üzerindeki SID değerlerinin belirlenmesi gerçekleştirilir. Bağlantı kurabilmek için gerekli olan SID parametresi kaba kuvvet (brute force) atağı ile elde edilebilmektedir. Bunun için Metasploit içerisindeki sid_brute modülü kullanılabilir.
Öncelikle Metasploit konsolu aşağıdaki komutla açılır.

# msfconsole


Bahsedilen modülün kullanımı için aşağıdaki komut girilir.

msf>use auxiliary/scanner/oracle/sid_brute

Modülün kullanım seçeneklerini görmek ve hakkında detaylı bilgi edinmek için info komutu kullanılabilir.

Özelliklerden de görüldüğü üzere ayarlanması gereken bazı parametreler bulunmaktadır. Bunların başında hedef IP ve port bilgilerinin sırasıyla RHOSTS ve RPORT değişkenlerine atanması gerekmektedir. Varsayılan olarak görüldüğü üzere /opt/metasploit/msf3/data/wordlists/sid.txt sözlüğü kullanılmaktadır. Bunun içeriği değiştirilebileceği gibi varsa başka bir sözlük dosyası da kullanılabilir. Örnekte yapılan ayarlar şu şekildedir:
Uygun ayarlar gerçekleştirildikten sonra run komutu ile modül çalıştırılabilir. Modül çıktısı aşağıdaki gibi olmaktadır.

Burada belirlenen SID değerlerinden TSH1 sonraki adımda kullanılacaktır.
Özellikle, kurulum sırasında SID değeri varsayılan olarak bırakılmış veritabanlarında ciddi oranda başarılı olan bir keşif çalışması olan bu örnekte kullanılan sözlük ne kadar kuvvetliyse başarı oranı o derece yüksek olmaktadır. Dolayısıyla güvenlik açısından önerilen SID değerlerinin tahmini zor olacak şekilde değiştirilmesidir.

3. Varsayılan Hesapların Belirlenmesi

Bu aşamada veritabanı üzerindeki kullanıcılara yönelik kaba kuvvet saldırısı gerçekleştirilecektir. Bunun için yine Metasploit içerisinde mevcut olan modüllerden auxiliary/admin/oracle/oracle_login modülü kullanılabilir.Örnekte kullandığımız hedef sistemin IP adresi ve belirlenen SID değeri aşağıdaki şekilde girilebilir.

msf > use auxiliary/admin/oracle/oracle_login
msf  auxiliary(oracle_login) > set RHOST 192.168.1.90
msf  auxiliary(oracle_login) > set SID TSH1

Parametreler belirlendikten sonra info komutu ile modülün son durumu aşağıdaki gibi olmaktadır.
Burada kullanılan parola dosyası bağlantıdan da temin edilebilir. run komutu ile modül çalıştırıldığında çıktı aşağıdaki gibi olmaktadır.

Çıktıdan da görülebileceği üzere dbsnmp/dbsnmp ve scott/tiger kullanıcı adı&parola bilgileri ile erişim sağlanabileceği görülmektedir.
Bu saldırı özellikle kurulum esnasında varsayılan olarak gelen hesapların açık bırakıldığı veritabanlarında ciddi oranda başarılı olabilmektedir. Kullanılan sözlük ne kadar kuvvetliyse başarı oranı o derece yüksek olmaktadır. Önlem olarak bu hesaplar kilitlenmeli ya da kaldırılmalıdır.

4. Açıklıktan Faydalanılarak Hak Yükseltme

Bu maddedeki amaç erişim sağlanmış Oracle veritabanındaki açıklıklardan yararlanarak yetkisiz hak yükseltilip DBA olunabileceğini göstermektir. Bunun için Metasploit içerisindeki auxiliary/sqli/oracle/dbms_export_extension modülü kullanılabilir. Modül ve hakkındaki bilgiler aşağıdaki gibidir.

İlgili parametrelere uygun değerler girilir.

> set RHOST 192.168.1.90
> set SID TSH1
> set DBUSER SCOTT
> set DBPASS TIGER

Parametrelere girilen değerler küçük/büyük harf duyarlı olduğu için dikkat edilmesi gerekmektedir.
run komutu ile birlikte modül çalıştırılır. Çıktı aşağıdaki gibi olmaktadır.
Bu adım sonucunda ele geçirilmiş bir kullanıcı adı&parola bilgisi ile yüksek haklara sahip bir kullanıcı oluşturulabildiği görülmüştür. Mümkün olduğu kadar varsayılan olarak gelen kullanıcılar silinmeli ya da kilitlenmelidir. Kullanılanlar var ise mutlaka parolaları tahmin edilemeyecek zorlukta olacak şekilde değiştirilmelidir.

5. Doğrulama

Son olarak aşağıdaki komutlar ile  hakkı yükseltilen kullanıcının veritabanına bağlanması ve yetki seviyesinin gösterimi yapılabilir.

# sqlplus scott/tiger@192.168.1.90/TSH1
SQL>  select * from user_role_privs;

2 comments:

 
Top