Tryhackme | Bite Me CTF WriteUp by w1sd0m
BITE ME
Selam dostlar, bu gün sizlere Tryhackme'de yer alan "Bite Me" adlı CTF'in çözümünü anlatacağım.
Makine genel hatlarıyla güzel ve can sıkmıyor.
Çözümü biraz uzun gelebilir.
Şimdiden teşekkür ederim.
Platform: Tryhackme.com
Title: biteme
Difficulty: Medium
Created by: fire015
Total point: 60
Öncelikle bir port taraması yapalım bakalım yolumuz ne olacak.
22 ve 80 portları açık görünüyor. Demek ki web serverinden bir kullanıcı adı bulup onunla ssh servisine bağlanacağız.
Gidelim bakalım web sitesine.
Bizi default bir apache sayfası karşıladı.
Sayfanın kaynak kodlarında herhangi bir ipucu yok.
O zaman standart işlem olan dizin taramamızı yapalım bakalım neler çıkacak.
"/console" adında bir dizin bulduk. Kontrol edelim.
Burada bir giriş-kontrol sayfası var. Bizim bir kullanıcı adı ve parolası bulmamız gerek.
Dolaşmaya ve kurcalamaya devam ediyorum.
Sayfanın kaynak kodlarına baktım ve ilgimi çeken bir durum gördüm.
Buraya bir fonksiyon bırakılmış ancak biraz karmaşık.
BITE ME
Selam dostlar, bu gün sizlere Tryhackme'de yer alan "Bite Me" adlı CTF'in çözümünü anlatacağım.
Makine genel hatlarıyla güzel ve can sıkmıyor.
Çözümü biraz uzun gelebilir.
Şimdiden teşekkür ederim.
Platform: Tryhackme.com
Title: biteme
Difficulty: Medium
Created by: fire015
Total point: 60
Öncelikle bir port taraması yapalım bakalım yolumuz ne olacak.
22 ve 80 portları açık görünüyor. Demek ki web serverinden bir kullanıcı adı bulup onunla ssh servisine bağlanacağız.
Gidelim bakalım web sitesine.
Bizi default bir apache sayfası karşıladı.
Sayfanın kaynak kodlarında herhangi bir ipucu yok.
O zaman standart işlem olan dizin taramamızı yapalım bakalım neler çıkacak.
"/console" adında bir dizin bulduk. Kontrol edelim.
Burada bir giriş-kontrol sayfası var. Bizim bir kullanıcı adı ve parolası bulmamız gerek.
Dolaşmaya ve kurcalamaya devam ediyorum.
Sayfanın kaynak kodlarına baktım ve ilgimi çeken bir durum gördüm.
Buraya bir fonksiyon bırakılmış ancak biraz karmaşık.
Kod:
function handleSubmit() {
eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0.1(\'2\').3=\'4\';5.6(\'@7 8 9 a b c d e f g h i... j\');',20,20,'document|getElementById|clicked|value|yes|console|log|fred|I|turned|on|php|file|syntax|highlighting|for|you|to|review|jason'.split('|'),0,{}))
return true;
}
Bizim bu karmaşayı çözmemiz gerek.
Biraz araştırma yaptım ve "PHP syntax highlighting" makalesine denk geldim.
JS fonksiyonunun içerisine yukarıda gördüğünüz notu eklemiş eleman.
Bir "fred" bir de "jason" isminde arkadaşımız var.
Tekrar "/console" sayfasına gidiyorum ve bu sefer burası için bir dizin taraması yapmak istiyorum.
Burada artık birşeyler bulabileceğim yeni dizinler görüyorum.
Hızlıca bunlara göz gezdirdim ve aradığımı buldum.
"/console/config.phps" sayfasında bize bir adet şifrelenmiş kullanıcı adı verilmiş,
"/console/functions.phps" sayfasında ise bunun fonksiyonu bırakılmış.
Peki öyleyse bizde işlemi tersine çeviririz.
Biraz araştırma yaptım ve "PHP syntax highlighting" makalesine denk geldim.
JS fonksiyonunun içerisine yukarıda gördüğünüz notu eklemiş eleman.
Bir "fred" bir de "jason" isminde arkadaşımız var.
Tekrar "/console" sayfasına gidiyorum ve bu sefer burası için bir dizin taraması yapmak istiyorum.
Burada artık birşeyler bulabileceğim yeni dizinler görüyorum.
Hızlıca bunlara göz gezdirdim ve aradığımı buldum.
"/console/config.phps" sayfasında bize bir adet şifrelenmiş kullanıcı adı verilmiş,
"/console/functions.phps" sayfasında ise bunun fonksiyonu bırakılmış.
Peki öyleyse bizde işlemi tersine çeviririz.
Kod:
$ echo "6a61736f6e5f746573745f6163636f756e74" | xxd -r -p
jason_test_account
"jason_test_account" , aradığımız kullanıcı adıymış.
Peki şimdi bu hesabın parolasını kıralım.
Şifreyi kırması saniyeler aldığı için resim yüklemedim.
Parola "violet"
Hemen "/console" sayfasına giderek giriş işlemi yaptım.
Ancak bu sefer de karşıma doğrulama ekranı geldi.
Benden 4 haneli bir sayı istiyor. Buraya da kaba-kuvvet uygulayacağım o halde.
"F12" ye basarak bu sayfada, cookie bilgimi kopyaladıktan sonra saldırıyı gerçekleştirmek üzere terminale dönüyorum.
Hemen 4 haneli sayıları bir dosyaya yazdırarak wordlist oluşturuyorum ve saldırıya başlıyorum.
Yaklaşık 1 dakika sonra ihtiyacım olan sayıyı bana verdi, "1799"
(Yalnız bu sayı kişiye göre değişebilir haberiniz olsun)
Şimdi doğrulama ekranını da geçerek girişi tamamlıyorum ve karşıma böyle bir sayfa geliyor.
Bu kutucuklar ile biraz oynayalım ve istediğimiz dosyayı bize gösterebiliyor mu bi bakalım.
Burada daha önce gördüğüm "jason" ve "fred" ikilisinden birinin ssh-key'ini görebiliyor muyum diye baktım ve istediğime ulaştım.
Şimdi bunu kaydedip "jason" dostumuzun parolasını kırmaya çalışalım.
Opss!
İçerdeyiz...
Hemen ilk flagı koyayım şuraya ve devam edeyim;
Şimdi asıl meseleye geldik; yetki yükseltme.
Burada biraz araştırma yapmak gerekiyor. "fail2ban" nedir, nasıl exploit edilir gibi aramalar yapmalıyız.
Google'da biraz gezindikten sonra işe yarar birşeyler gördüm.
Aslında olay "/etc/fail2ban/action.d/iptables-multiport.conf" dosyası üzerinde değişiklik yapmakmış.
Bu düzenleme bize "root" kapısını açacak diye ümit ediyorum.
fred@biteme:~$ nano /etc/fail2ban/action.d/iptables-multiport.conf
dedik ve dosyada gösterdiğim yere bi "reverse shell" yazdık.
Peki şimdi bu hesabın parolasını kıralım.
php -S 127.0.0.1:80
[/CENTER]
hydra -l jason_test_account -P /usr/share/wordlists/rockyou.txt 127.0.0.1 http-post-form “/index.php:user=^USER^&pwd=^PASS^:F=Incorrect details”
[CENTER]
Şifreyi kırması saniyeler aldığı için resim yüklemedim.
Parola "violet"
Hemen "/console" sayfasına giderek giriş işlemi yaptım.
Ancak bu sefer de karşıma doğrulama ekranı geldi.
Benden 4 haneli bir sayı istiyor. Buraya da kaba-kuvvet uygulayacağım o halde.
"F12" ye basarak bu sayfada, cookie bilgimi kopyaladıktan sonra saldırıyı gerçekleştirmek üzere terminale dönüyorum.
Hemen 4 haneli sayıları bir dosyaya yazdırarak wordlist oluşturuyorum ve saldırıya başlıyorum.
Yaklaşık 1 dakika sonra ihtiyacım olan sayıyı bana verdi, "1799"
(Yalnız bu sayı kişiye göre değişebilir haberiniz olsun)
Şimdi doğrulama ekranını da geçerek girişi tamamlıyorum ve karşıma böyle bir sayfa geliyor.
Bu kutucuklar ile biraz oynayalım ve istediğimiz dosyayı bize gösterebiliyor mu bi bakalım.
Burada daha önce gördüğüm "jason" ve "fred" ikilisinden birinin ssh-key'ini görebiliyor muyum diye baktım ve istediğime ulaştım.
Şimdi bunu kaydedip "jason" dostumuzun parolasını kırmaya çalışalım.
Opss!
İçerdeyiz...
Hemen ilk flagı koyayım şuraya ve devam edeyim;
Şimdi asıl meseleye geldik; yetki yükseltme.
Burada biraz araştırma yapmak gerekiyor. "fail2ban" nedir, nasıl exploit edilir gibi aramalar yapmalıyız.
Google'da biraz gezindikten sonra işe yarar birşeyler gördüm.
Aslında olay "/etc/fail2ban/action.d/iptables-multiport.conf" dosyası üzerinde değişiklik yapmakmış.
Bu düzenleme bize "root" kapısını açacak diye ümit ediyorum.
fred@biteme:~$ nano /etc/fail2ban/action.d/iptables-multiport.conf
dedik ve dosyada gösterdiğim yere bi "reverse shell" yazdık.
Dosyamızı resim2'deki gibi ayarladıktan sonra kaydedip çıkalım.
Daha sonra "Netcat" ile bir dinleme başlatalım.
Ancak burası biraz karışık. Nedeni ise; dinlemeyi başlatacağız, servise rest atacağız, ssh ile başarısız bağlantı istekleri yollayacağız ve sonunda içeri "root" olarak gireceğiz.
Nasıl mı?
Daha sonra "Netcat" ile bir dinleme başlatalım.
Ancak burası biraz karışık. Nedeni ise; dinlemeyi başlatacağız, servise rest atacağız, ssh ile başarısız bağlantı istekleri yollayacağız ve sonunda içeri "root" olarak gireceğiz.
Nasıl mı?
Soldan sağa doğru işlemleri gerçekleştirmemiz gerekiyor.
Bağlantıyı alana kadar ssh ile bağlantı isteği yollamaya devam edin.
2.kez redden sonra bağlantıyı aldık...
Ve işte son flag'de karşımızda....
Biraz sancılı bir süreç olabilir okuması, kusuruma bakmayın
^
|
|
Evet dostlarım, ailemizin CTF'cilerinden biri olarak bir makalenin daha sonuna geldik.Bağlantıyı alana kadar ssh ile bağlantı isteği yollamaya devam edin.
2.kez redden sonra bağlantıyı aldık...
Ve işte son flag'de karşımızda....
Biraz sancılı bir süreç olabilir okuması, kusuruma bakmayın
^
|
|
Okuduğunuz için teşekkür ederim.
Umarım birkaç tüyo,bilgi,taktik vb. gösterebilmişizdir.
EyvAllah...
|
|
v
|
v