Basic Jenkins Information

AWS hacklemeyi sıfırdan kahraman olmak için htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

Erişim

Kullanıcı Adı + Şifre

Jenkins'e giriş yapmanın en yaygın yolu kullanıcı adı veya şifre ile yapmaktır.

Çerez

Bir yetkilendirilmiş çerez çalınırsa, kullanıcının oturumuna erişmek için kullanılabilir. Çerez genellikle JSESSIONID.* şeklinde adlandırılır. (Bir kullanıcı tüm oturumlarını sonlandırabilir, ancak önce bir çerezin çalındığını bulması gerekir).

SSO/Eklentiler

Jenkins, üçüncü taraf SSO üzerinden erişilebilmesi için eklentiler kullanılarak yapılandırılabilir.

Jetonlar

Kullanıcılar, CLI veya REST API aracılığıyla kendilerini taklit etmek için uygulamalara erişim sağlamak için jetonlar oluşturabilir.

SSH Anahtarları

Bu bileşen, Jenkins için yerleşik bir SSH sunucusu sağlar. Bu, Jenkins CLI için alternatif bir arayüzdür ve komutlar herhangi bir SSH istemcisi kullanılarak bu şekilde çağrılabilir. (Dökümantasyondan alıntıdır (https://plugins.jenkins.io/sshd/))

Yetkilendirme

/configureSecurity içinde Jenkins'in yetkilendirme yöntemi yapılandırılabilir. Birkaç seçenek bulunmaktadır:

  • Herkes her şeyi yapabilir: Anonim erişim bile sunucuyu yönetebilir.

  • Eski mod: Jenkins <1.164 ile aynıdır. "admin" rolüne sahipseniz, sistemin üzerinde tam kontrol sahibi olursunuz ve aksi takdirde (anonim kullanıcılar dahil) sadece okuma erişiminiz olur.

  • Giriş yapmış kullanıcılar her şeyi yapabilir: Bu modda, her giriş yapmış kullanıcı Jenkins'in tam kontrolüne sahip olur. Yalnızca anonim kullanıcı, sadece okuma erişimi alır.

  • Matrix tabanlı güvenlik: Bir tabloda kimin ne yapabileceği yapılandırılabilir. Her sütun, bir izin temsil eder. Her satır, bir kullanıcı veya grup/rolü temsil eder. Bu, 'anonim' adlı özel bir kullanıcıyı içerir, bu kullanıcı kimliği doğrulanmamış kullanıcıları temsil eder ve 'kimliği doğrulanmış' tüm kimliği doğrulanmış kullanıcıları temsil eder.

  • Proje Tabanlı Matrix Yetkilendirme Stratejisi: Bu mod, her proje için ayrı bir ACL matrisinin **"Matrix tabanlı güvenlik"**e eklenmesini sağlar.

  • Rol Tabanlı Strateji: Bir rol tabanlı strateji kullanarak yetkilendirmeleri tanımlamayı sağlar. Rollerin yönetildiği yer /role-strategy'dir.

Güvenlik Alanı

/configureSecurity içinde güvenlik alanı yapılandırılabilir. Jenkins'in varsayılan olarak birkaç farklı Güvenlik Alanı desteği vardır:

  • Servlet konteynerine devret: Jenkins denetleyicisi olarak çalışan bir servlet konteynerine kimlik doğrulamayı devretmek için kullanılır, örneğin Jetty.

  • Jenkins'in kendi kullanıcı veritabanı: Harici bir sisteme kimlik doğrulamayı devretmek yerine, kimlik doğrulama için Jenkins'in kendi yerleşik kullanıcı veritabanını kullanır. Bu varsayılan olarak etkindir.

  • LDAP: Kullanıcıları ve grupları içeren yapılandırılmış bir LDAP sunucusuna tüm kimlik doğrulamayı devreder.

  • Unix kullanıcı/grup veritabanı: Jenkins denetleyicisindeki temel Unix işletim sistemi düzeyindeki kullanıcı veritabanına kimlik doğrulamayı devreder. Bu mod, yetkilendirme için Unix gruplarının yeniden kullanılmasına da izin verir.

Eklentiler, Jenkins'i mevcut kimlik sistemlerine dahil etmek için kullanışlı olabilecek ek güvenlik alanları sağlayabilir, örneğin:

Jenkins Düğümleri, Ajanlar ve Yürütücüler

Tanımlar dökümantasyondan:

Düğümler, yapılandırılmış eşik değerinin dışına çıkan herhangi bir değer olduğunda Jenkins tarafından çevrimdışı alınır. Düğümler, yapılandırılmış eşik değerlerine göre disk alanı, boş geçici alan, boş takas, saat zamanı/senkronizasyonu ve yanıt süresi açısından izlenir.

Ajanlar, Jenkins denetleyicisi adına görev yürütmesini yönetir ve bunu yürütücüler kullanarak yapar. Bir ajan, Java'yı destekleyen herhangi bir işletim sistemini kullanabilir. Derleme ve testler için gereken araçlar, ajanın çalıştığı düğümde yüklenir; bunlar doğrudan veya bir konteynerda (Docker veya Kubernetes) yüklenebilir. Her bir ajan, ana makinedeki kendi PID'si olan bir işlem olarak etkili bir şekilde çalışır.

Bir yürütücü, görevlerin yürütülmesi için bir yuva; etkili olarak, bir ajan içindeki bir iş parçacığıdır. Bir düğümdeki yürütücülerin sayısı, aynı anda o düğümde yürütülebilecek eşzamanlı görevlerin sayısını belirler. Başka bir deyişle, bu, aynı anda o düğümde yürütülebilecek eşzamanlı Pipeline stages sayısını belirler.

Jenkins Sırları

Sırların ve Kimlik Bilgilerinin Şifrelenmesi

Tanım dökümantasyondan: Jenkins, sırları, kimlik bilgilerini ve ilgili şifreleme anahtarlarını şifrelemek ve korumak için AES kullanır. Bu şifreleme anahtarları, ilgili şifreleme anahtarlarını korumak için kullanılan anahtar şifreleme anahtarıyla birlikte $JENKINS_HOME/secrets/ dizininde depolanır. Bu dizin, yalnızca Jenkins denetleyicisinin çalıştığı işletim sistemi kullanıcısının bu

Kimlik Bilgilerine Erişim

Kimlik bilgileri, herhangi bir yapılandırılmış projeden erişilebilen genel sağlayıcılara (/credentials/) veya belirli projelere (/job/<proje-adı>/configure) kapsamlı olacak şekilde kapsamlandırılabilir ve bu nedenle yalnızca belirli projeden erişilebilir.

Belgelere göre: Kapsamda olan kimlik bilgileri, sınırlama olmaksızın boru hattına kullanılabilir hale getirilir. Kimlik bilgilerinin yanlışlıkla yapılandırma günlüğünde ortaya çıkmasını önlemek için, kimlik bilgileri düzenli çıktıdan maskeleme yapılarak gizlenir. Bu nedenle, env (Linux) veya set (Windows) çağrısı veya ortamını veya parametrelerini yazdıran programlar, kimlik bilgilerine erişimi olmayan kullanıcılara yapılandırma günlüğünde kimlik bilgilerini ortaya çıkarmaz.

Bu nedenle, bir saldırganın kimlik bilgilerini ele geçirmek için, örneğin, base64 ile kodlamaları gerekmektedir.

Referanslar

AWS hackleme konusunda sıfırdan kahramana dönüşmek için htARTE (HackTricks AWS Red Team Expert)'ı öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated