Bu yazımda HackTheBox platformunda bulunan CodePartTwo makinesinin çözümünü anlatacağım.User ve root flag’e ulaşmam gerekiyor.
İlk önce bana verilen IP adresine nmap taraması yapıyorum.

22 ve 8000 portlarının açık olduğunu görüyorum.Çalışan web sitesini 8000 portu üzerinden ziyaret ediyorum.

Login,register ve download app butonları gördüm.Download app butonuna tıkladım.

Makineme bu dosyaları indirdi.requirements.txt dosyasını açtım.

js2py Python içinde JavaScript kodu çalıştırmaya yarayan bir kütüphanedir.0.74 sürümünü kullandığını görüyorum ve bunun ile ilgili araştırma yapıyorum.

Ve bir güvenlik açığı içerdiği bilgisine ulaşıyorum.CVE-2024-28397 js2py kütüphanesinin sürüm 0.74 ve altı için JavaScript ortamında Python nesnelerine erişim zaafiyeti içeriyor.Bu açığı nasıl exploit edebileceğimi araştırıyorum.

GitHub’da bir python dosyası buluyorum ve kendi makineme indiriyorum.

GitHub’da açıklama yerinde yazan yönergelere göre exploiti çalıştırıyorum.

Ve netcat ile dinlediğim terminalden reverse shell aldığımı görüyorum.

Mevcut shell’i TTY destekli, interactive bir shell’e çeviriyorum.

Sistemde gezinirken users.db dikkatimi çekti ve sqlite ile bu dosyayı açtım.

Mevcut tabloları listeledim.User tablosu olduğunu gördüm ve bu dosyanın içinde şu anki bulunduğum kullanıcı dışında başka bir kullanıcının hash’li şifresini buldum.

Crackstation ile bu hash’i kırdım ve ssh üzerinden bu bilgileri kullanarak shell almayı denedim.

Başarılı bir şekilde shell alıyorum.

Bulunduğum dizindeki dosyaları listeliyorum ve user.txt dosyasını görüyorum.Bu dosyayı okuyarak user flag’i alıyorum.

sudo -l çıktısında marco kullanıcısının /usr/local/bin/npbackup-cli dosyasını root yetkisiyle ve şifre girmeden çalıştırabildiğini görüyorum.

Orijinal npbacup.conf dosyası kullanıcı tarafından düzenlenemediği için, dosyanın bir kopyasını aldım.Bu sayede backup aracı root olarak çalıştırılırken, kullanıcı tarafından kontrol edilen bir config dosyası kullanabildim.

Yapılandırma dosyası olan test.conf içerisinde backup alınacak kaynak dizini /home/app/app olarak tanımlanmış. Bu değeri değiştirerek kaynak dizin /root olarak ayarladım. Böylece backup aracına, yedekleme işlemini uygulama dizini yerine /root dizini üzerinde gerçekleştirmesi gerektiğini belirttim. Normal şartlarda marco kullanıcısının /root dizinine erişim yetkisi bulunmamaktadır.Ancak npbackup-cli aracı sudo üzerinden root yetkisiyle çalıştırıldığı için bu dizin altındaki dosyaları okuyabilmekte ve yedekleme veya dump işlemlerini gerçekleştirebilecektir.

Backup aracını root yetkisiyle ve kullanıcı tarafından düzenlenen config dosyası ile çalıştırmam gerekiyor.Böylece root’a ait dizinler backup sürecine dahil etmiş oldum.

Backup aracı root yetkisiyle çalıştığı için, normalde erişilemeyen root dizinindeki dosyaları okuyabiliyorum ve root flag’e erişiyorum.













