24 Ocak 2016

MSSQL Server Nasıl Hacklenir

MSSQL Server Nasıl Hacklenir makalemiz ile veritabanı hackleme serimizin ilk makalesine başlıyoruz.

Bir client MSSQL Server ile bağlantısını TCP 1433 portu üzerinden gerçekleştirmektedir. Port tarama aşamasında bu portun açık olduğu görüldüğünde saldırı aşamalarına versiyon bilgisi çekmeye çalışarak başlanabilir.


Versiyon ve diğer detayları öğrenmek için Nmap scriptleri kullanılabileceği gibi Metasploit mssql_ping aracıda etkili olmaktadır.


Öntanımlı Erişim Bilgileri

İlk kurulum esnasında parolalar boş bırakılmamalı, yeni eklenen kullanıcılar içinde basit veya boş parola kullanılmamalıdır. Default olarak gelen kullanıcı adı ve parolalar değiştirilmeli, test amaçlı default olarak var olan veya sonradan oluşturulan veritabanları ve kullanıcılar silinmeli ayrıca erişime kapatılmalıdır. Default bilgilerin değiştirilip değiştirilmediği saldırgan tarafından bakılacak ilk ve en kolay yöntemdir. Örneğin boş şifre olup olmadığı nmap empty-password scripti kullanılarak test edilebilir.


Parola Kırma Saldırıları

Default şifreler değiştirmiş ise mevcut şifreyi bulmak için brute force saldırısı yapılarak şifre veya hash öğrenilmeye çalışılabilir. Brute force saldırısı için medusa, hydra gibi araçlar kullanılabileceği gibi metasploit içerisindeki mssql_login yardımcı aracı kullanılabilir. Örnek saldırıda kullanıcı adı ve parolaya ulaşılmıştır;


Trustworthy Databases ile Yetki Yükseltme

SQL Server database'lerin trustworthy olarak işaretlenmesi olanağını sunmaktadır. Böylece trusted database'ler network kaynakları, email fonksiyonları, diğer database'lerdeki objeler gibi bazı dış kaynaklara erişebilir hale gelmektedir. Bu özelllik bazı ihtiyaç durumlarında kolaylık sağlasada sonradan tekrar kaldırılmaması sebebiyle güvenlik riski oluşturmaktadır. Saldırganlar tarafından bu özellikten faydalanılarak yetki yükseltmesi yapılabilmektedir.Örnek saldırıda database üzerinde başlangıçta yapılan konfigurasyonlar ile MyAppDb için trustworthy seçeneği aktif edilecek ve normal user yetkileri yazılan prosedür ile yükseltilmiştir :



Normal kullanıcının yetkileri sysadmin yetkilerine yükseltilmiştir. Bu süreci otomatize etmek için yazılmış scriptler mevcuttur. Ayrıca metasploit üzerinde mssql_escalate_dbowner aracı kullanılabilir. Yeni oluşturulmus kullanıcı -> [ myuser:admin ] ayrıca [ MyApp ] database'i oluşturulmuş ve trustworthy olarak işaretlenmiştir.


Bilinen Versiyon Açıkları

Hedef sistem üzerinde SQL server çalıştığı tespit edildikten sonra versiyon bilgisi öğrenebilmek önemlidir. Mssql versiyonu öğrenildiğinde o versiyon için bilinen mevcut açıklıklar araştırılır ve hedef sistem üzerinde mevcut olanlardan faylanılarak sisteme sızmaya çalışılır.


SQL Injection Saldırıları

Kullanıcı tarafından girilen verilerin yetersiz kontor edilmesi saldırgan için veritabanı üzerinde sorgu çalıştırabilme, veri okuyup yazabilme ve daha ileri düzey ataklar için imkan doğurur. SQL Injection saldırıları ile de veritabanı üzerinde kod çalıştırma imkanı yakalanmış olur.

İşletim Sistemi Kontrolü

Sysadmin yetkilerine sahip olduktan sonra bir sonraki amaç işletim sistemini ele geçirebilmektir. Bunun için sql server üzerinde xp_cmdshell isimli extended stored procedure kullanılabilir. Bu prosedür default olarak kapalı gelmektedir, kullanabilmek için sql server'a erişim sağladıktan sonra aktif edilmelidir. Kullanılabilecek diğer faydalı prosedürler;
  • xp_regread: Kayıt defterinden okuma yapmayı sağlar.
  • xp_regwrite: Aktif etme işlemi için aşağıdaki komutlar çalıştırılmalıdır.
  • xp_sendmail : SQL Mail kullanılarak mail göndermeyi sağlar.


Artık işletim sistemi üzerinde istenilen komut çalıştırılabilir.


İşletim sistemine erişim için metasploit exploitleride kullanılabilir. Mssql_payload exploiti kullanılarak karşı taraf üzerinde shell açılabilir.



Diğer Kullanıcıların Bilgilerine Ulaşılması

Yine Metasploit yardımcı modüllerinden olan mysql_enum_sql_logins aracı kullanılabilir ;


Bu makale İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü öğrencisi stajyerimiz Cemal Türkoğlu tarafından geliştirilmiştir.