- 18 Eyl 2021
- 7
- 10
- 27
JIGSAW
Level : Hard to Insane
Hedef makinenin IP adresini netdiscover aracıyla bulalım.Makinenin hint kısmında arp paketlerini kontrol etmemiz gerektiğini söylenmiş.Tcpdumpla bu paketleri kontrol edelim.
arp paketlerini yakalamayı denediğimde paket yakalayamadı arp olmayan paket trafiğini yakaladığımda UDP paketi yakaladı.
Leetspeak ile yazılmış j19s4w kelimesini girdiğimizde bize base64 ile encode edilmiş bir değer verdi.Bunu decode edelim ve içeriğini görelim.
İlk flagı bulduk 1.testi geçtiğimiz söyledi ve 5500 6600 7700 değerlerine port knocking işlemi yapmamızı istiyor.Bu değerlere knock işlemi yapalım ve bunun sonucundan port açılacakmı diye kontrol edelim.
Port knocking işlemi sonrasında 80 portu açılmış oldu.Browserda bu porta gittiğimizde jigsaw gifi bizi karşıladı.Bu gifi indirip içerisine data saklanmış mı diye kontrol edelim.curl ile sayfanın kaynak kodlarını çektiğimde yine bir mesaj vardı.
wget komutuyla gifi indirip steghide aracıyla içerisindeki datayı çıkarmaya çalıştım ama bir şey çıkmadı.
strings komutuyla gifin içerisindeki string ifadeleri bulmayı deneyelim.
Leetspeak tekniğiyle yazılmış wannaplaygame stringini bulduk.Bunun bir dizin olabileceğinden şüphelenmiş bu dizine gitmeyi deneyelim.
Dizine gittiğimizde bir login ekranı karşımıza geldi.Sqlmap ile sqlinjection denedim ama sqlinjection zafiyeti sayfada yok.Curl ile sayfanın kaynak kodunu çekelim.
Kaynak kodda login form işlemi için kullanılan XMLFunction bulunmaktadır.İsteği Burp ile yakalayıp XXE zafiyeti varmı diye kontrol edelim.
Yazdığımız her parametre için girdiğimiz parametreyi yazdırıp doesn’t exit mesajı dönüyor.XXE zafiyeti XML verilerinin parse edilmesi aşamasında meydana gelir /etc/passwd gibi hassas dosyaların okunmasına olanak vermektedir.
XXE login atak için payloadımızı gönderdiğimiz zaman /etc/passwd dosyasını çektik.
Sistemde port knocking işleminin yapıldığını biliyoruz.knockd.conf dosyasını da okuyabiliriz.
HTTP için port knock işlemi yapmıştık.SSH için knock değerlerini burda görebiliriz.Bu değerler için port knocking yaparak ssh portunu açmayı deneyelim.
Tekrar bir nmap taraması yaptığımızda 22 ssh portunun açıldığını görüyoruz.ssh bağlantısı yapmayı deneyelim./etc/passwd dosyasını çekmiştik jigsaw kullanıcısı olduğunu biliyoruz.Password için dictionary attack yapılabilir ama ilk başta tcpdump paket yakalama sonucunda passwordle ilgili bize bir ipucu vermişti.Password olarak j19s4w deneyelim.
SSH bağlantısı sonucunda 2.flag değerimizde bulduk.
Dosyaya string ifadeler gönderip Buffer Overflow zafiyeti olup olmadığını test edelim.
Programımızda denemek için 200 karakter içeren bir pattern oluşturduk.
0x41344141 buffer size a karşılık gelen adrestir.EIP değerine baktığımız zaman bu adrese karşılık gelen ve bir sonraki çalışacak olan komutu (AA4A) görebiliriz.
Offset değeri 76 olarak bulundu.
Payloadını yazıp gdb ile çalıştırdığımızda EIP değerini manipule edebildiğimizi görürüz.Şimdi EIP değerinin üstüne yazabilmek ve shell yükleyebilmek için 3 adrese daha ihtiyacımız var.System adress,exit adress ve /bin/sh adress.
Programda ALSA aktif olduğundan base alınan adres sürekli değişmektedir.While loop kullanıp brute force yaparak her değer denendiğinde bu ALSA değerini bypass etmiş olduk.Exploitimizi çalıştırdığımızda root olup 3.flag değerinide okuduk.
İитιкαм ιуι вιя şєу ∂єğιℓ мαтнιℓ∂α.İиαи,υиυтмαк ∂αнα ιуι
Level : Hard to Insane
Hedef makinenin IP adresini netdiscover aracıyla bulalım.Makinenin hint kısmında arp paketlerini kontrol etmemiz gerektiğini söylenmiş.Tcpdumpla bu paketleri kontrol edelim.
tcpdump -i eth0 -A -n 192.168.0.29 and not arp
arp paketlerini yakalamayı denediğimde paket yakalayamadı arp olmayan paket trafiğini yakaladığımda UDP paketi yakaladı.
Paket içeriğinde passwordlerde leetspeak kullanılması ipucu olarak verilmiş.leet kelimesinide bu yöntemle yazmış.leetspeak tekniği passwordteki kelimelerin bazı karakterleri değiştirilerek daha güvenli yapılmaya çalışılmasıdır.netcat aracını kullanarak 666 portunda socket açalım.j19s4w was always fascinated with l33t speak,in fact he uses it for a lot if his passwords.
Leetspeak ile yazılmış j19s4w kelimesini girdiğimizde bize base64 ile encode edilmiş bir değer verdi.Bunu decode edelim ve içeriğini görelim.
echo “base64 değeri” | base64 -d
İlk flagı bulduk 1.testi geçtiğimiz söyledi ve 5500 6600 7700 değerlerine port knocking işlemi yapmamızı istiyor.Bu değerlere knock işlemi yapalım ve bunun sonucundan port açılacakmı diye kontrol edelim.
nmap -A -T4 -n 192.168.0.29
Port knocking işlemi sonrasında 80 portu açılmış oldu.Browserda bu porta gittiğimizde jigsaw gifi bizi karşıladı.Bu gifi indirip içerisine data saklanmış mı diye kontrol edelim.curl ile sayfanın kaynak kodlarını çektiğimde yine bir mesaj vardı.
wget komutuyla gifi indirip steghide aracıyla içerisindeki datayı çıkarmaya çalıştım ama bir şey çıkmadı.
strings komutuyla gifin içerisindeki string ifadeleri bulmayı deneyelim.
strings jigsaw.py
Leetspeak tekniğiyle yazılmış wannaplaygame stringini bulduk.Bunun bir dizin olabileceğinden şüphelenmiş bu dizine gitmeyi deneyelim.
Dizine gittiğimizde bir login ekranı karşımıza geldi.Sqlmap ile sqlinjection denedim ama sqlinjection zafiyeti sayfada yok.Curl ile sayfanın kaynak kodunu çekelim.
Kaynak kodda login form işlemi için kullanılan XMLFunction bulunmaktadır.İsteği Burp ile yakalayıp XXE zafiyeti varmı diye kontrol edelim.
Yazdığımız her parametre için girdiğimiz parametreyi yazdırıp doesn’t exit mesajı dönüyor.XXE zafiyeti XML verilerinin parse edilmesi aşamasında meydana gelir /etc/passwd gibi hassas dosyaların okunmasına olanak vermektedir.
XXE login atak için payloadımızı gönderdiğimiz zaman /etc/passwd dosyasını çektik.
Sistemde port knocking işleminin yapıldığını biliyoruz.knockd.conf dosyasını da okuyabiliriz.
HTTP için port knock işlemi yapmıştık.SSH için knock değerlerini burda görebiliriz.Bu değerler için port knocking yaparak ssh portunu açmayı deneyelim.
./knock 192.168.0.29 7011 8011 9011
Tekrar bir nmap taraması yaptığımızda 22 ssh portunun açıldığını görüyoruz.ssh bağlantısı yapmayı deneyelim./etc/passwd dosyasını çekmiştik jigsaw kullanıcısı olduğunu biliyoruz.Password için dictionary attack yapılabilir ama ilk başta tcpdump paket yakalama sonucunda passwordle ilgili bize bir ipucu vermişti.Password olarak j19s4w deneyelim.
SSH bağlantısı sonucunda 2.flag değerimizde bulduk.
komutuyla sistemde SUID biti ile çalışan programları listeleyelim.find / -perm -u=s -type f 2>/dev/null
komutuyla dosyanın türünü ve çalıştırılabilir bir dosya olduğunu öğreniyoruz.file /bin/game3
Dosyaya string ifadeler gönderip Buffer Overflow zafiyeti olup olmadığını test edelim.
python da -c parametresini kullandığımızda kodları doğrudan shellden çalıştırmamızı sağlar.Yukardaki kod ile programa ilk olarak 200 tane A karakteri gönderdiğimizde segmentation fault verdi.Yani programda buffer overflow zafiyeti bulunmakta.Offset değerini bulmak için manuel olarak karakter sayısını değiştirerek bulabiliriz ya da gdb ile pattern oluşturup offset değeri bulunabilir manuel olarak denediğimde offset değerini 76 olarak buldum.Birde gdb ile bulalım.Sistemde gdp olmadığı için local makinemize game3 dosyasını scp ile çekip gdb yi çalıştıralım./bin/game3 $(python -c ‘print “A”*200’)
scp [email protected]:/bin/game3 /root/Desktop
Programımızda denemek için 200 karakter içeren bir pattern oluşturduk.
run +pattern
0x41344141 buffer size a karşılık gelen adrestir.EIP değerine baktığımız zaman bu adrese karşılık gelen ve bir sonraki çalışacak olan komutu (AA4A) görebiliriz.
offset değerimizi bulalım.pattern_offset AA4A
Offset değeri 76 olarak bulundu.
Payloadını yazıp gdb ile çalıştırdığımızda EIP değerini manipule edebildiğimizi görürüz.Şimdi EIP değerinin üstüne yazabilmek ve shell yükleyebilmek için 3 adrese daha ihtiyacımız var.System adress,exit adress ve /bin/sh adress.
Programda ALSA aktif olduğundan base alınan adres sürekli değişmektedir.While loop kullanıp brute force yaparak her değer denendiğinde bu ALSA değerini bypass etmiş olduk.Exploitimizi çalıştırdığımızda root olup 3.flag değerinide okuduk.
İитιкαм ιуι вιя şєу ∂єğιℓ мαтнιℓ∂α.İиαи,υиυтмαк ∂αнα ιуι