Hackthebox Nibbles Writeup
- Songül ÖZÜGÜRLER
- 9 Eki
- 3 dakikada okunur

Herkese merhaba! Bugün Hack The Box’taki Nibbles makinesini çözeceğiz. Bu makine, web tarama ve yetki yükseltme için harika bir pratik sunuyor. Kolay görünse de login blacklist ve NOPASSWD sudo ile ufak sürprizler var. Adım adım nasıl çözdüğümü anlatıyorum, hadi başlayalım!
1 Nibbles üzerinde kaç tane TCP portu açık ?
Öncelikle rustscan taraması yaptım
rustscan -a nibbles.htb (Burada normalde IP adresi yazmam gerekirdi ama ben /etc/hosts dosyasına nibbles.htb olarak ismini tanımladığım için direkt bu şekilde kullanabiliyorum. Bu hem işimi kolaylaştırıyor hem de daha okunaklı oluyor.)

2 açık port bulduk nmaple versiyon taraması yaptım
cevap :2

2. Webserver üzerindeki blogun relative path’i (göreli yolu) nedir?
web sunucusunu açıyorum sadece boş bir hello world yazılı sayfa ile karşılaşıyorum
sayfanın kaynak kodlarına baktığımda ise bir not var

<! — /nibbleblog/ dizini. Burada pek ilginç bir şey yok! → yazan küçük bir not var

yönlendirdiği sayfaya gidiyorum

blog sayfasıyla karşılaştım yani
cevap /nibbleblog
3. Blogda hangi içerik yönetim sistemi (CMS) kullanılıyor?

Atom · Top · Powered by Nibbleblog (Yani: Atom · En Üst · Nibbleblog tarafından destekleniyor)
Bu genellikle sitenin alt kısmında bulunur ve sitenin Nibbleblog CMS ile yapıldığını gösterir.
cevap:Nibbleblog
4. Admin kullanıcı adını içeren XML dosyasının göreli yolu (relative path) nedir?
İpucu kısmında feroxbuster adında bir brute force aracı kullanmam öneriliyordu. Daha önce denemediğim için küçük bir Google araştırması yaptım ve nasıl kullanacağımı öğrendim. Şimdi onunla dizin taraması yapacağım.

tarama sonucunda http://nibbles.htb/nibbleblog/content/private/users.xml adlı sayfaya ulaştım içeriğinde kullanıcı adı admin olduğunu söylüyordu

cevap: /nibbleblog/content/private/users.xml
5. Bloga giriş yapmak için admin kullanıcısının parolası nedir?
İpucu kısmında makine adını şifre olarak kullanmamız gerektiğini söylüyor
cevap : nibbles
6. Hedef makinede çalışan nibble blog’un versiyonu nedir? “v” harfini dahil etme.
Forexbuster ile dizin taraması yaptığımda kullanıcı girişi olduğunu farkettim

verilen user ve passwordu kullandığımda giriş yapabildim

versiyon bilgisi admin paneli içerisindeki "Settings" (Ayarlar) kısmında net şekilde yazıyordu:
Nibbleblog 4.0.3 “Coffee” — Developed by Diego Najar
Yani burada cevabımız sadece sayı kısmı: 4.0.3 Çünkü soru bize özellikle "v harfini dahil etme" diyordu. Versiyonun başında v olsa bile, bunu yazmadan giriyoruz.
cevap:4.0.3
7. Bu NibbleBlog sürümünde, dosya yükleme yoluyla kimliği doğrulanmış code execution (kod çalıştırma) açığına ait 2015 tarihli CVE ID’si nedir?
nibbleblog cve 4.0.3 ü google araması yaptığımda

cve bilgisini buldum
cevap:CVE-2015–6967
8. Hedef makinadaki Nibbleblog instance’ı hangi user (kullanıcı) üzerinde çalışıyor?
Nibbleblog’un versiyonu 4.0.3 idi. Bu sürümde CVE-2015-6967 numaralı, kimliği doğrulanmış kullanıcı üzerinden dosya yükleyerek uzaktan komut çalıştırmaya (RCE) izin veren bir zafiyet mevcut. GitHub'da bulduğum bir Python exploit dosyasını kullanarak bu açığı test ettim.

-t: hedef URL
-u & -p: admin kullanıcı adı ve şifresi (önceden brute force veya gözlemle elde edilmişti)
-rce: çalıştırmak istediğimiz komut (whoami)
Görüldüğü üzere exploit başarılı şekilde çalıştı, zararlı PHP dosyamı yükledi ve whoami komutunun çıktısı olarak sistemde çalışan kullanıcıyı verdi: nibbler.
cevap:nibbler
9. Nibbler kullanıcısının home dizininde bulunan flag’i gönder.
exploit scripitini kullanarak shell aldım ve kendi makineme yönlendirdim


Exploit’i çalıştırdıktan sonra payload yüklendi ve bana geri bağlantı geldi. Artık hedef makinada interaktif shell’im vardı. Öncelikle dizinler arasında gezindim home dizini altında nibbles klasörü içinde user.txt yi buldum ve ilk flağımızı aldım

10.Nibbles makinesinde nibbler kullanıcısının root olarak çalıştırabileceği scriptin adı nedir?
Yetki yükseltme aşamasında ilk işim, sistemde setuid (suid) bit’i set edilmiş dosyaları bulmak oldu. Setuid, dosyanın çalıştırıldığı kullanıcıya, dosya sahibinin (genellikle root) yetkilerini geçici olarak verir. Böyle dosyalar, yetki yükseltme için potansiyel fırsatlar sunar.
Bunun için terminalde şu komutu kullandım:
sudo -l
Yani nibbler kullanıcısı, şifre sormadan root olarak /home/nibbler/personal/stuff/monitor.sh scriptini çalıştırabiliyor. Bu çok güzel çünkü bu scripti kullanarak root yetkisi kazanabilirim.

cevap monitor.sh
11 monitor.sh dosyasına verilen izinleri girin. Linux dosya izinleri formatını kullanın, örneğin: -rw-rw-r —

dosyayı zip dosyasından çıkarıp monitor.sh dosyasını buldum ls -l komutu ile izinlerini ortaya çıkardım
cevap:-rwxrwxrwx
12.Root kullanıcısının ana dizininde bulunan flag’i gönder.
Yetki yükseltme için monitor.sh dosyasını kendim oluşturdum. İçine basit bir bash shell komutu yazdım ki root yetkisiyle shell açabileyim. Komutum şu şekildeydi:
echo -e ‘#!/bin/bash\n/bin/bash’ > /home/nibbler/personal/stuff/monitor.sh
echo komutu, terminalde yazdığım metni çıktı olarak veriyor.
-e parametresi ise echo’nun içinde yazdığım özel karakterleri, mesela \n yeni satır karakterini, gerçek anlamda satır atlama olarak algılamasını sağlıyor.
‘#!/bin/bash\n/bin/bash’
kısmı yazdırmak istediğim metin. Burada ilk satır #!/bin/bash scriptin bash scripti olduğunu belirtmek için kullanılıyor, buna shebang diyoruz. Sonraki \n yeni satır anlamına geliyor, yani alt satıra geçiyor. İkinci satırda ise /bin/bash var, bu da script çalıştığında yeni bir bash shell açması için yazıldı.
Son olarak > /home/nibbler/personal/stuff/monitor.sh diyerek, bu yazdıklarımı monitor.sh dosyasına yönlendirdim. Eğer dosya yoksa oluşturuyor, varsa önce içini siliyor, sonra yeni metni yazıyor.
Böylece kendi basit ama etkili shell açan scriptimi oluşturmuş oldum.
Sonra bu dosyayı sudo ile çalıştırdım:
sudo /home/nibbler/personal/stuff/monitor.sh
Ve gerçekten root olarak shell açıldığını gördüm. whoami komutunu çalıştırdığımda çıktı root oldu.
Artık root klasörüne girip root.txt dosyasını okuyabildim:

Nibbles, “Easy” kategorisinde olsa da içinde gizli cevherler barındıran bir makineydi. Özellikle sudo -l ile nibbler kullanıcısının hangi scriptleri şifresiz root olarak çalıştırabileceğini görmek ve oradan root shell almak çok keyifliydi.
Eğer sen de bu yazıyı okuyorsan ve benzer makineleri çözmek istiyorsan, sakın pes etme! Denemeye devam et, çünkü her deneme seni daha da geliştirir.
CTF dünyasında her çözüm bir şey öğretir. Bir sonraki yazıda görüşmek üzere!



