Jenkins Penetrasyon Testi
- Laboratuvar Kurulumu
- Kurulum
- Yapılandırma
- Sayım
- Metasploit Çerçevesi kullanılarak yapılan sömürü
- Manuel Olarak Sömürme (Ters Kabuk)
- Kabuk Komutlarını Doğrudan Çalıştırma
- Çözüm
Laboratuvar Kurulumu
Bu makalede, Ubuntu makinesinde Jenkins sunucusunu kurup uzaktan kod çalıştırmayı sağlayacağız. Makineler şunlardır:
Hedef Makine: Ubuntu (192.168.1.4)
Saldırgan Makinesi: Kali Linux (192.168.1.7)
Kurulum
Jenkins’in çalışabilmesi için Java Çalışma Zamanı Ortamı’na (JRE) ihtiyaç vardır. Bu kılavuzda, Java ortamını kurmak için OpenJDK’yı kullanacağız. OpenJDK’nın geliştirme kiti, JRE’yi kendi çatısı altında barındırır.

Bazen varsayılan Ubuntu deposunda en son Jenkins sürümü bulunmayabilir. Bu nedenle, en yeni özelliklere ve yamalara erişmek için proje tarafından yönetilen depoları tercih etmenizi öneririz.
Jenkins deposunu Ubuntu sistemine entegre etmek için aşağıdakilere uyun:
Paket bütünlüğünü sağlamak için öncelikle GPG anahtarını içe aktarın.

Ardından Jenkins deposunu dahil edin ve aşağıda verilen komutu kullanarak kimlik doğrulama anahtarını kaynak listesine ekleyin:

Artık Ubuntu makinemizde Jenkins kurulumuna geçebiliriz.

Kurulum tamamlandıktan sonra Jenkins aşağıdaki komut kullanılarak başlatılabilir:
Durum aşağıdaki komut kullanılarak kontrol edilebilir:

Yapılandırma
Kurulumdan sonra Jenkins sorunsuz çalışacak şekilde yapılandırılabilir. 8080 portunda çalışan servis kontrol edilerek Jenkins sunucusunun bir Yönetici parolası gerektirmesi sağlanabilir .

Şifre, initialAdminPassword dosyasının içeriği okunarak elde edilebilir .

Jenkins’i Özelleştirmek için Önerilen Eklentileri Yükle’yi seçin ve kuruluma devam edin.

Son adım , First Admin User kullanıcı adı ve şifresinin oluşturulmasını gerektirir . Burada kullanıcı adını raj , şifreyi ise 123 olarak kullanıyoruz .

Son olarak, Jenkins Sunucusuna erişmek için URL’yi giriyoruz. Sunucuyu Ubuntu makinesine kurmak istediğimiz için URL’yi http://127.0.0.1:8080/ olarak girebiliriz .

Sayım
Jenkins sunucusunu başarıyla kurup yapılandırdıktan sonra, Kali makinesini kullanarak sömürüye başlayabiliriz. Numaralandırmayla başlayalım, çünkü Jenkins Sunucusu 8080 numaralı portta Ubuntu makinesinde çalışıyor ve bu nedenle 8080 numaralı portu kontrol ediyoruz. 8080 numaralı portta kimlik bilgileri gerektiren bir Jenkins oturum açma sayfası bulunmaktadır.

Metasploit Framework kullanılarak yapılan sömürü:
Giriş sayfası kimlik bilgileri gerektirdiğinden, geçerli kullanıcı adı ve parolayı kontrol etmek için Metasploit çerçevesinde bulunan yardımcı programı kullanabiliriz. Kullanacağımız yardımcı program bir kullanıcı adı dosyası ve bir parola dosyası gerektirecektir.
Öncelikle , CTF senaryolarında kullanıcı adı dosyasını ortak kullanıcı adları listesi ( SecLists – Names ) olarak ve parola dosyasını rockyou.txt olarak kullanabilirsiniz . Ancak , tarama işlemini kolaylaştırmak için burada özel bir sözlük kullanıyoruz . Metasploit Framework içinde aşağıdaki komutları çalıştırabilirsiniz :

Ardından , kullanıcı adı ve parolanın başarıyla numaralandırıldığını gözlemleyin . Daha sonra , bu kimlik bilgilerini kullanarak hedefi istismar edin . adresinde bulunan istismarı kullanabilirsiniz . İstismarı çalıştırmak için exploit/multi/http/jenkins_script_consoleaşağıdaki Metasploit komutlarını kullanın :

Exploit başarıyla yürütüldükten sonra ters kabuğun elde edildiğine dikkat edin.
Manuel Olarak Sömürme (Ters Kabuk)
Manuel sömürüye devam etmek için Jenkins Konsolu’nun kullanıcı adı ve şifresine ihtiyacınız var . Saldırganın kaba kuvvet veya başka bir yöntemle kimlik bilgilerini zaten keşfettiğini varsayarsak , konsola başarıyla giriş yapabilirler .
Yardımcı modülden daha önce keşfedilen kimlik bilgilerini ( raj:123 ) kullanarak oturum açtıktan sonra , Komut Dosyası Konsolunu içeren Jenkins’i Yönet işlevine erişebilirsiniz .

Jenkins Penetrasyon Testinde , Groovy işleri ve işlem hatlarını tanımlamak için ana betik dili olarak kullanılır. Dinamik olan ve Java Sanal Makinesi (JVM) üzerinde çalışan Groovy, ağırlıklı olarak Java tabanlı olan Jenkins ile sorunsuz bir şekilde entegre olur. Bu nedenle, ters kabuğu elde etmek için Groovy ters kabuk betiğini kullanacağız. Groovy ters kabuğu komutu, https://www.revshells.com adresinden Groovy betik yükünü seçerek elde edilebilir.

Şimdi, Jenkins betik konsolunda yukarıdaki Groovy ters kabuk betiğini kullanalım. Betiği çalıştırmadan önce, Kali makinesinde 443 numaralı portta bulunan Netcat dinleyicisini aşağıdaki komutu kullanarak başlattığınızdan emin olun:

Son olarak yukarıdaki groovy betiği çalıştırıldıktan sonra 443 numaralı portta ters kabuk elde edilir.

Ters kabuğu elde etmenin alternatif bir yolu, komut konsolunda aşağıdaki komut dosyasını çalıştırmak olabilir:
Betiği çalıştırmadan önce dinleyiciyi 443 numaralı porttan başlattığınızdan emin olun.

Betiğin çalıştırılmasının ardından ters kabuğun 443 numaralı portta elde edildiğine dikkat edin.

Kabuk Komutlarını Doğrudan Çalıştırma
Ters kabuğu alacak bir dinleyicimizin olmadığı durumlar vardır. Bu durumlarda, betiği doğrudan çalıştırabilir ve Sonuç penceresinde kodun çıktısını alabiliriz.
Sistem komutlarının çıktısını almak için aşağıdaki kod kullanılır:
Betiği çalıştırdıktan sonra çıktıyı doğrudan Sonuç penceresinde görebileceğinizi unutmayın.

Sonuç penceresinde komut çıktısını almak için benzer bir kod kullanabilirsiniz:
Betiği çalıştırdıktan sonra çıktıyı doğrudan Sonuç penceresinde görebileceğinizi unutmayın.

Özetle, Jenkins Penetrasyon Testi, Jenkins sunucularının ters kabuk elde etmek için kullanılabileceğini ortaya koyarak güçlü güvenlik uygulamalarına duyulan hayati ihtiyacı vurgular. İster ele geçirilmiş oturum açma bilgileri ister hiç kimlik doğrulaması olmaması nedeniyle olsun, Jenkins sunucularının güvenlik açığı, güvenliği neden ciddiye almamız gerektiğini gösterir. Yetkisiz erişim ve kötüye kullanım olasılığını azaltmak için kuruluşların sıkı erişim kuralları uygulaması, düzenli güvenlik kontrolleri gerçekleştirmesi ve sistemleri derhal güncellemesi hayati önem taşır.

YORUMLAR