From 066be427010a2962c743684c8b02fff366bdcd68 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 29 Sep 2025 22:48:29 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/aws-security/aws-privilege-escalat --- .../aws-sts-post-exploitation.md | 32 ++++++---- .../aws-sts-privesc.md | 61 ++++++++----------- 2 files changed, 45 insertions(+), 48 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md index 1463d66b0..89bc770f6 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md @@ -10,14 +10,14 @@ Vir meer inligting: ../aws-services/aws-iam-enum.md {{#endref}} -### Van IAM Krediete na Konsol +### From IAM Creds to Console -As jy daarin geslaag het om 'n paar IAM krediete te verkry, mag jy belangstel om **die webkonsol te benader** met behulp van die volgende gereedskap.\ -Let daarop dat die gebruiker/rol die toestemming **`sts:GetFederationToken`** moet hê. +Indien jy daarin geslaag het om IAM credentials te bekom, mag jy belangstel om **toegang tot die web console** te kry met die volgende tools.\ +Let wel dat die user/role die permission **`sts:GetFederationToken`** moet hê. -#### Pasgemaakte skrif +#### Aangepaste skrip -Die volgende skrif sal die standaardprofiel en 'n standaard AWS-ligging (nie gov en nie cn) gebruik om vir jou 'n geskrewe URL te gee wat jy kan gebruik om in die webkonsol aan te meld: +Die volgende skrip sal die default profile en 'n default AWS location (not gov and not cn) gebruik om vir jou 'n signed URL te gee wat jy kan gebruik om by die web console te login: ```bash # Get federated creds (you must indicate a policy or they won't have any perms) ## Even if you don't have Admin access you can indicate that policy to make sure you get all your privileges @@ -55,7 +55,7 @@ echo -n "https://signin.aws.amazon.com/federation?Action=login&Issuer=example.co ``` #### aws_consoler -Jy kan **'n web konsole skakel genereer** met [https://github.com/NetSPI/aws_consoler](https://github.com/NetSPI/aws_consoler). +Jy kan **'n skakel na die webkonsole genereer** met [https://github.com/NetSPI/aws_consoler](https://github.com/NetSPI/aws_consoler). ```bash cd /tmp python3 -m venv env @@ -64,22 +64,22 @@ pip install aws-consoler aws_consoler [params...] #This will generate a link to login into the console ``` > [!WARNING] -> Verseker dat die IAM-gebruiker `sts:GetFederationToken` toestemming het, of verskaf 'n rol om aan te neem. +> Maak seker dat die IAM-gebruiker die `sts:GetFederationToken` toestemming het, of voorsien 'n rol om aan te neem. #### aws-vault -[**aws-vault**](https://github.com/99designs/aws-vault) is 'n hulpmiddel om AWS-akkrediteerings veilig te stoor en toegang te verkry in 'n ontwikkelingsomgewing. +[**aws-vault**](https://github.com/99designs/aws-vault) is 'n hulpmiddel om AWS-credentials veilig te stoor en toegang daartoe te verkry in 'n ontwikkelingsomgewing. ```bash aws-vault list aws-vault exec jonsmith -- aws s3 ls # Execute aws cli with jonsmith creds aws-vault login jonsmith # Open a browser logged as jonsmith ``` > [!NOTE] -> Jy kan ook **aws-vault** gebruik om 'n **blaaier-konsolesessie** te verkry. +> Jy kan ook **aws-vault** gebruik om 'n **blaaier-konsolesessie** te verkry -### **Omgewing van User-Agent beperkings vanaf Python** +### **Oorskry User-Agent-beperkings vanaf Python** -As daar 'n **beperking is om sekere aksies uit te voer gebaseer op die user agent** wat gebruik word (soos om die gebruik van die python boto3 biblioteek te beperk gebaseer op die user agent), is dit moontlik om die vorige tegniek te gebruik om **verbinding te maak met die webkonsol deur 'n blaaier**, of jy kan direk die **boto3 user-agent** wysig deur: +As daar 'n **beperking om sekere aksies uit te voer op grond van die user agent** wat gebruik word (soos die beperking van die gebruik van die python boto3 library gebaseer op die user agent), is dit moontlik om die vorige tegniek te gebruik om verbinding te maak met die **web console via 'n blaaier**, of jy kan direk die **boto3 user-agent wysig** deur die volgende te doen: ```bash # Shared by ex16x41 # Create a client @@ -92,4 +92,14 @@ client.meta.events.register( 'before-call.secretsmanager.GetSecretValue', lambda # Perform the action response = client.get_secret_value(SecretId="flag_secret") print(response['SecretString']) ``` +### **`sts:GetFederationToken`** + +Met hierdie toestemming is dit moontlik om 'n gefedereerde identiteit te skep vir die gebruiker wat dit uitvoer, beperk tot die toestemmings wat hierdie gebruiker het. +```bash +aws sts get-federation-token --name +``` +Die token wat deur sts:GetFederationToken teruggegee word, behoort aan die gefedereerde identiteit van die oproepende gebruiker, maar met beperkte toestemmings. Selfs al het die gebruiker administrateurregte, kan sekere aksies, soos om IAM users op te som of om policies aan teheg, nie via die gefedereerde token uitgevoer word nie. + +Boonop is hierdie metode ietwat meer onopvallend, aangesien die gefedereerde gebruiker nie in die AWS Portal verskyn nie; dit kan slegs deur CloudTrail logs of moniteringstoerusting waargeneem word. + {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md index c8d1ffbb4..63f730ee5 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md @@ -6,9 +6,9 @@ ### `sts:AssumeRole` -Elke rol word geskep met 'n **rol vertrouensbeleid**, hierdie beleid dui aan **wie die geskepte rol kan aanvaar**. As 'n rol van die **dieselfde rekening** sê dat 'n rekening dit kan aanvaar, beteken dit dat die rekening toegang tot die rol sal hê (en moontlik **privesc**). +Elke role word geskep met 'n **role trust policy**, hierdie policy dui aan **wie die geskepte role kan assume**. As 'n role van die **same account** sê dat 'n account dit kan assume, beteken dit dat daardie account toegang tot die role sal hê (en moontlik **privesc**). -Byvoorbeeld, die volgende rol vertrouensbeleid dui aan dat enigiemand dit kan aanvaar, daarom **sal enige gebruiker in staat wees om privesc** te kry tot die toestemmings wat met daardie rol geassosieer is. +Byvoorbeeld dui die volgende **role trust policy** aan dat enigiemand dit kan assume, daarom sal **any user** in staat wees om te **privesc** na die permissions geassosieer met daardie role. ```json { "Version": "2012-10-17", @@ -23,41 +23,22 @@ Byvoorbeeld, die volgende rol vertrouensbeleid dui aan dat enigiemand dit kan aa ] } ``` -Jy kan 'n rol naboots wat loop: +Jy kan 'n rol naboots deur die volgende uit te voer: ```bash aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname ``` -**Potensiële Impak:** Privesc na die rol. +**Potensiële impak:** Privesc na die rol. > [!CAUTION] -> Let daarop dat in hierdie geval die toestemming `sts:AssumeRole` **aangedui moet word in die rol om te misbruik** en nie in 'n beleid wat aan die aanvaller behoort nie.\ -> Met een uitsondering, om 'n **rol van 'n ander rekening aan te neem** moet die aanvaller rekening **ook** die **`sts:AssumeRole`** oor die rol hê. +> Neem kennis dat in hierdie geval die toestemming `sts:AssumeRole` **in die rol wat misbruik word aangedui moet wees** en nie in 'n beleid wat aan die aanvaller behoort nie.\ +> Met een uitsondering, om **'n rol van 'n ander rekening aan te neem** moet die aanvallerrekening **ook** die **`sts:AssumeRole`** oor die rol hê. -### **`sts:GetFederationToken`** -Met hierdie toestemming is dit moontlik om akrediteer te genereer om enige gebruiker na te boots: -```bash -aws sts get-federation-token --name -``` -Dit is hoe hierdie toestemming veilig gegee kan word sonder om toegang te gee om ander gebruikers na te volg: -```json -{ -"Version": "2012-10-17", -"Statement": [ -{ -"Sid": "VisualEditor0", -"Effect": "Allow", -"Action": "sts:GetFederationToken", -"Resource": "arn:aws:sts::947247140022:federated-user/${aws:username}" -} -] -} -``` ### `sts:AssumeRoleWithSAML` -'n Vertrouensbeleid met hierdie rol verleen **gebruikers wat via SAML geverifieer is toegang om die rol na te volg.** +'n trust policy met hierdie rol verleen **gebruikers wat via SAML geverifieer is toegang om die rol te verpersoonlik.** -'n Voorbeeld van 'n vertrouensbeleid met hierdie toestemming is: +'n Voorbeeld van 'n trust policy met hierdie toestemming is: ```json { "Version": "2012-10-17", @@ -78,7 +59,7 @@ Dit is hoe hierdie toestemming veilig gegee kan word sonder om toegang te gee om ] } ``` -Om akrediteerings te genereer om die rol te verteenwoordig, kan jy iets soos gebruik: +Om credentials te genereer om die rol te impersonate, kan jy gewoonlik iets soos die volgende gebruik: ```bash aws sts assume-role-with-saml --role-arn --principal-arn ``` @@ -86,28 +67,28 @@ Maar **verskaffers** mag hul **eie gereedskap** hê om dit makliker te maak, soo ```bash onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 --aws-region eu-west-1 -z 3600 ``` -**Potensiële Impak:** Privesc na die rol. +**Potensiële impak:** Privesc to the role. ### `sts:AssumeRoleWithWebIdentity` -Hierdie toestemming gee toestemming om 'n stel tydelike sekuriteitsbewyse te verkry vir **gebruikers wat in 'n mobiele, webtoepassing, EKS...** geverifieer is met 'n webidentiteitsverskaffer. [Leer meer hier.](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) +Hierdie toestemming maak dit moontlik om 'n stel tydelike sekuriteitsgeloofsbriewe te bekom vir **gebruikers who have been authenticated in a mobile, web application, EKS...** met 'n web identity provider. [Lees meer hier.](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) -Byvoorbeeld, as 'n **EKS-diensrekening** in staat moet wees om **'n IAM-rol na te volg**, sal dit 'n token in **`/var/run/secrets/eks.amazonaws.com/serviceaccount/token`** hê en kan dit **die rol aanvaar en bewese verkry** deur iets soos: +Byvoorbeeld, as 'n **EKS service account** in staat moet wees om **impersonate an IAM role**, sal dit 'n token in **`/var/run/secrets/eks.amazonaws.com/serviceaccount/token`** hê en kan dit **assume the role and get credentials** deur iets soos: ```bash aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789098:role/ --role-session-name something --web-identity-token file:///var/run/secrets/eks.amazonaws.com/serviceaccount/token # The role name can be found in the metadata of the configuration of the pod ``` -### Federasie Misbruik +### Federation Abuse {{#ref}} ../aws-basic-information/aws-federation-abuse.md {{#endref}} -### IAM Rolle Enigiemand Privesc +### IAM Roles Anywhere Privesc -AWS IAM RolesAnywhere laat werklas buite AWS toe om IAM rolle aan te neem met behulp van X.509 sertifikate. Maar wanneer vertrouensbeleide nie behoorlik afgebaken is nie, kan dit misbruik word vir privilige-eskalasie. +AWS IAM RolesAnywhere laat workloads buite AWS toe om IAM roles aan te neem met X.509 certificates. Maar wanneer trust policies nie behoorlik afgebaken is nie, kan dit misbruik word vir privilege escalation. -Hierdie beleid ontbreek beperkings op watter vertrouensanker of sertifikaatattribuut toegelaat word. As gevolg hiervan kan enige sertifikaat wat aan enige vertrouensanker in die rekening gekoppel is, gebruik word om hierdie rol aan te neem. +Hierdie policy het geen beperkings op watter trust anchor of certificate attributes toegelaat word nie. As gevolg hiervan kan enige certificate wat aan enige trust anchor in die account gekoppel is, gebruik word om hierdie rol te assume. ```json { "Version": "2012-10-17", @@ -127,9 +108,9 @@ Hierdie beleid ontbreek beperkings op watter vertrouensanker of sertifikaatattri } ``` -Om privesc te verkry, is die `aws_signing_helper` benodig van https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html +Om privesc te bereik, is die `aws_signing_helper` benodig vanaf https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html -Dan kan die aanvaller, met 'n geldige sertifikaat, in die hoër bevoegdheid rol beweeg. +Dan, deur 'n geldige sertifikaat te gebruik, kan die attacker pivot in die rol met hoër voorregte ```bash aws_signing_helper credential-process \ --certificate readonly.pem \ @@ -138,6 +119,12 @@ aws_signing_helper credential-process \ --profile-arn arn:aws:rolesanywhere:us-east-1:123456789012:profile/default \ --role-arn arn:aws:iam::123456789012:role/Admin ``` +Die vertrouensanker valideer dat die kliëntsertifikaat `readonly.pem` van sy gemagtigde CA kom. Toe die vertrouensanker geskep is, is die CA se publieke sertifikaat ingesluit (en word nou gebruik om `readonly.pem` te valideer). Binne-in `readonly.pem` is die publieke sleutel, wat AWS gebruik om te verifieer dat die handtekening met die ooreenstemmende private sleutel `readonly.key` gemaak is. + +Die sertifikaat bewys ook identiteit en verskaf attribuutte (soos CN of OU) wat die `default` profiel omskakel in etikette (tags), wat die rol se vertrouensbeleid kan gebruik om te besluit of toegang gemagtig moet word. As daar geen voorwaardes in die vertrouensbeleid is nie, word daardie etikette geïgnoreer en word enigiemand met 'n geldige sertifikaat toegelaat. + +Vir hierdie aanval om moontlik te wees, moet beide die vertrouensanker en die `default` profiel aktief wees. + ### Verwysings - [https://www.ruse.tech/blogs/aws-roles-anywhere-privilege-escalation](https://www.ruse.tech/blogs/aws-roles-anywhere-privilege-escalation)