1433-Pentesting MSSQL-Microsoft SQL Server
Microsoft SQL Server (MSSQL) Microsoft tərəfindən hazırlanmış bir RDBMS’dir, hansı ki, məlumatları səmərəli şəkildə saxlamaq, çəkmək və idarə etmək üçün nəzərdə tutulmuşdur. MSSQL default olaraq 1433 portu üzərində çalışır.
Müəyyən IP ünvanında MSSQL Server nümunələri haqqında məlumat toplamaq, potensial zəiflikləri yoxlamaq və server konfiqurasiyası ilə bağlı məlumat əldə etmək üçün NSE(Nmap Scripting Engine) skriptləri ilə çalışan Nmap əmri:
--script’dən istifadə edərək skan zamanı icra olunacaq NSE skiptlərini qeyd edirik.
ms-sql-info : MSSQL serveri haqqında məlumat toplayır.
ms-sql-empty-password : 'sa' istifadəçisinin parol olmadan aktiv olub olmadığını yoxlayır.
ms-sql-xp-cmdshell : Serverdə XP_CMDShell funksiyasını aktivləşdirməyə çalışır.
ms-sql-config : MSSQL serverdən konfiqurasiya məlumatlarını çıxarır.
ms-sql-ntlm-info : NTLM autentifikasiyası vasitəsilə məlumatı çıxarır.
ms-sql-tables : Server databazasından cədvəllərin siyahısını çıxarır.
ms-sql-hasdbaccess : İstifadəçinin databazaya girişinin olub-olmadığını yolayır.
ms-sql-dac : Serverdə Xüsusi İdarəetmə Bağlantısının (DAC) mövcudluğunu yoxlayır.
ms-sql-dump-hashes : Serverdən parol hashlərini əldə etməyə cəhd edir.
--script-args’dən istifadə edərək bəzi skrtiplər üçün lazım olan məlumatları daxil edirik.
mssql.instance-port=1433 : MSSQL Server portunu göstərir.
mssql.username=sa : Autentifikasiya üçün username (bu nümunədə 'sa') weyd olunur.
mssql.password= : Boş parolu göstərir (faktiki parol ilə əvəz edilməlidir).
mssql.instance-name=MSSQLSERVER : MSSQL Server nümunəsinin adını qeyd edir.
Nmap MSSQL brute force:
Bu əmr, “ms-sql-brute” NSE skriptindən istifadə edərək qeyd edilən username və parol siyahıları ilə MSSQL serverinə brute force hücumu həyata keçirir.
MSSQL-dən sysusers çıxarmaq üçün Nmap skripti:
Bu Nmap əmri istifadəçi adı və paroldan istifadə edərək qeyd edilən IP ünvanında MSSQL xidmətinə qoşulmağa çalışır. Sonra o, “master” databazasındakı girişlər haqqında məlumatı əldə etmək üçün MSSQL serverinə qarşı “SELECT * FROM master..syslogins” sorğusunu icra edir.
Msfconsole ilə MSSQL enum:
“auxiliary/scanner/mssql/mssql_enum” Microsoft SQL Server’dən məlumat çıxarmaq üçün bir metasploit moduludur. Bu modul, verilənlər bazası adları, server versiyası məlumatı və digər konfiqurasiya təfərrüatları kimi məlumatlar verir.
Səlahiyyətlərin yüksəldilməsi:
Bu modullar üçün USERNAME,PASSWORD və RHOSTS təyin edilməlidir.
“admin/mssql/mssql_escalate_execute_as” : Verilənlər bazası idarəetmə sistemləri kontekstində təqlid bir istifadəçinin digər istifadəçinin şəxsiyyətini və icazələrini müvəqqəti olaraq qəbul etməsidir. Əgər istifadəçinin "IMPERSONTAION privilege" varsa, bu o deməkdir ki, o, başqa istifadəçini təqlid edə bilər.BU modulun məqsədi də həmin səlahiyyəti sui istifadə etməkdir.
“admin/mssql/mssql_escalate_dbowner” : db_owner rolu "verilənlər bazası sahibi" deməkdir. Bu rolun üzvləri xüsusi verilənlər bazası daxilində ən yüksək icazələrə malikdir. sysadmin rolu isə "sistem administratoru" deməkdir və bu rolun üzvləri server səviyyəsində ən yüksək icazələrə malikdirlər.Bu metasploit modulunun məqsədi səlahiyyətlərin db_owner’dən syadmin’ə yüksəldilməsidir.
Əmr icrası
Aşağıdakı metasploit modulu xp_cmdshell (defolt) və ya sp_oacreate proseduru vasitəsilə MSSQL/MSDE nümunəsində Windows əmri yerinə yetirir. Bu moduldan istifadə etmək üçün istifadəçi adı və parol tələb olunur. Əmr uğurla icra edildikdə çıxışı qaytarılır. xp_cmdshell uğursuz olarsa, onun əvəzinə modul, sp_oacreate texnikasından istifadəni yoxlayır.
Yuxarıda göründüyü kimi sp_oacreate texnikası seçildikdə, əmrin çıxışı qaytarılmır.
Bu nümunədə icra olunacaq əmr kimi ‘cmd.exe /c echo OWNED > C:\owned.txt’ təyin edilib, bu əmr yeni fayl (C:\owned.txt) yaradacaq və həmin fayla "OWNED" sözünü yazacaq.
Əmr icrası üçün digər bir modul:
Bu modul, hədəf sistemə daha mürəkkəb kod parçasının (payload) yüklənməsini və sonra həmin əmrin icrasını həyata keçirir.Digər modul ilə müqayisədə bu, daha mürəkkəb və potensial olaraq gizli (stealthy) yanaşmadır.
Giriş
Microsoft SQL Serverinə qoşulmaq üçün sqsh alətinən istifadə edə bilərik:
-S <target-ip>: Qoşulacaq serveri təyin edir.
-U <Username>: Qoşulacaq istifadəçini təyin edir.
-P <Password>: Göstərilən istifadəçi üçün parolu təyin edir.
-D <Database>: Qoşulmaq üçün ilkin verilənlər bazasını təyin edir.
Sqsh üçün digər bir əmr də istifadəçinin “.\\<Username>” qeyd olunduğu əmrdir. Bu format (.\\<Username>) istifadəçi hesabının hədəf maşında yerli istifadəçi(local user) olduğunu göstərir. İkiqat tərs kəsişmə(\\) tək tərs(\) kəsişməni təmsil etmək üçün qaçış ardıcıllığıdır(escape sequence).
MSSQL’ə qoşulmaq üçün digər alət “impacket”dir.
Microsoft SQL Serverinə qoşulma zamanı Windows autentifikasiyasından istifadə edilməli olduğunu qeyd etmək üçün -windows-auth:
Sqsh ilə qoşulduqdan sonra sorğunu göndərmək üçün ondan sonra GO istifadə etməliyik:
Komandalar
Windows Command Shell’in aktivləşdirilməsi
İmpacket alətindən istifadə edərək MSSQL’ə bağlandıqdan sonra Windows Shell Komandalarını "enable_xp_cmdshell" ilə icra edə bilərik.
və digər üsul:
‘xp_cmdshell’ ilə Windows Command Prompt ilə eyni əmrləri icra edə bilərik.
NTLM Hash’in əldə edilməsi
NTLM (NT LAN Manager) istifadəçilərə məxfilik, tamlıq və autentifikasiya(CIA) təmin edən Microsoft təhlükəsizlik protokolları dəstidir. NTLM hash Windows əməliyyat sistemində saxlanılan istifadəçi parollarının hash dəyərləridir. Microsoft SQL Server istifadəçilərin autentifikasiyası üçün Keberos-dan istifadə edir, beləliklə biz NTLM hash-i əldə edə bilək. Kerberos identifikasiya mexanizmi kimi biletlərdən istifadə edir. İstifadəçilər Kerberos sisteminə autentifikasiya etdikdə, müxtəlif xidmətlərə daxil olmaq üçün Key Distribuiton Center’in(KDC) təyin etdiyi biletlərdən istifadə edirlər.
1.İlk öncə SMB serverini işə salıram.SMB serveri başlatmaqda məqsədimiz qanuni (legitimate) fayl serverini təqlid etməkdir.
2.İkinci mərhələdə SMB Responderi işə salıram.Responder şəbəkə trafikini tutmaq və təhlil etmək üçün istifadə edilir.
3.Artıq uyğun metasploit modulundan istifadə edərək exploit’i həyata keçirə bilərik.SMBPROXY’nin dəyəri Responder IP təyin edilməlidir. (bu ip terminalda Responder işə salındıqda görünəcək)
İcra edildikdən sonra SMB serverinin işlədiyi terminalda NTLM hash dəyərləri görünəcək.
Last updated