Merhaba ben Crackmeci, bu konumda sizlere tryhackme'de bulunan bir ctf olan Gallery'nin çözümünü anlatacağım
Makine Zorluk Seviyesi : Kolay
Makine Bağlantısı: TryHackMe | Gallery
Çözeceğimiz makine bu ancak öncelikle odaya katılmak gerekiyor odaya katıldıktan sonra "Start Machine" diyerek makineyi başlatabilirsiniz ayrıca kendi bilgisayarınızdan makinenin ip adresi üzerinde işlem yapabilmeniz için aynı ağda bulunmanız gerekiyor bu sebeple de tryhackme hesabınıza özel olarak üretilen openvpn dosyasıyla o ağa bağlantı sağlayabilirsiniz.
TryHackMe | Cyber Security Training bu sayfaya girdikten sonra karşınıza böyle bir sayfa çıkacaktır oradan "Download My Configuration File" düğmesini kullanarak .ovpn ile biten dosyanızı edinebilirsiniz.
Burada benim tryhackme kullanıcı adım crackmeci olduğu için bağlantı dosyam crackmeci.ovpn olarak indi sizde farklı olacaktır.
Bağlantı başarılı olduysa "Initialization Sequence Completed" çıktısı ekrana gelecektir. Artık bağlantıyı kurduğumuza göre makinenin çözümüne geçebiliriz.
"Start Machine" dedikten sonra 1 dakikalık geri sayımdan sonra size bir ip adresi verecektir bu ip adresi çözeceğiniz makinenin ip adresidir makineyi her çalıştırdığınızda bu değişir.
Bazen makine açılsa da çalışmıyor herhangi bir sıkıntı olup olmadığını "ping makineIp" şeklinde kontrol edebilirsiniz.
Makine hangi servislerin hangi sürümlerini çalıştırıyor öğrenmek için nmap aracıyla temel bir port taraması başlattım.
Parametrelerin Anlamları:
Makine Zorluk Seviyesi : Kolay
Makine Bağlantısı: TryHackMe | Gallery
Çözeceğimiz makine bu ancak öncelikle odaya katılmak gerekiyor odaya katıldıktan sonra "Start Machine" diyerek makineyi başlatabilirsiniz ayrıca kendi bilgisayarınızdan makinenin ip adresi üzerinde işlem yapabilmeniz için aynı ağda bulunmanız gerekiyor bu sebeple de tryhackme hesabınıza özel olarak üretilen openvpn dosyasıyla o ağa bağlantı sağlayabilirsiniz.
TryHackMe | Cyber Security Training bu sayfaya girdikten sonra karşınıza böyle bir sayfa çıkacaktır oradan "Download My Configuration File" düğmesini kullanarak .ovpn ile biten dosyanızı edinebilirsiniz.
Burada benim tryhackme kullanıcı adım crackmeci olduğu için bağlantı dosyam crackmeci.ovpn olarak indi sizde farklı olacaktır.
Kod:
sudo openvpn kullaniciAdi.ovpn
Bağlantı başarılı olduysa "Initialization Sequence Completed" çıktısı ekrana gelecektir. Artık bağlantıyı kurduğumuza göre makinenin çözümüne geçebiliriz.
"Start Machine" dedikten sonra 1 dakikalık geri sayımdan sonra size bir ip adresi verecektir bu ip adresi çözeceğiniz makinenin ip adresidir makineyi her çalıştırdığınızda bu değişir.
Bazen makine açılsa da çalışmıyor herhangi bir sıkıntı olup olmadığını "ping makineIp" şeklinde kontrol edebilirsiniz.
Makine hangi servislerin hangi sürümlerini çalıştırıyor öğrenmek için nmap aracıyla temel bir port taraması başlattım.
Parametrelerin Anlamları:
Kod:
-sS : SYN Taraması yapılmasını sağlar ve adrese bir SYN paketi gönderir hedef eğer SYN-ACK türünde cevap döndürürse portun açık olduğunu; eğer RST cevabını alırsa kapalı olduğunu anlar.
-sC: Script taramasını yapılmasını sağlar bazı temel bazı betikleri çalıştırarak sistemdeki bazı özellikleri veya güvenlik açıklarını bulmayı hedefler.
-sV: Çalışan servislerin isimlerinin , sürümlerini , v.b. özelliklerini bulmaya yarar buradan çıkan sonuçlara göre exploitdb üzerinde arama yapabilirsiniz.
Tarama sonuçları geldi temel bir tarama olduğu için büyük ihtimal sistemde çalışan tüm servisleri getirmedi ancak dahasına gerek yok bunlardan bir şey çıkmadı. Ancak tryhackme'de sorulan ilk sorunun cevabını bulduk.
2 port açıktır.
O zaman şimdi bir klasör taraması yapalım bunun için "dirb,dirbuster,gobuster" gibi araçlar olsa da ben bu konuda dirsearch kullanacağım. Dirsearch normalde Kali Lİnux veya Parrot Os gibi sistemlerde yüklü olarak gelmiyor bu sebeple aşağıdaki kod ile kurmanız gerekiyor.
Kod:
sudo apt-get update
sudo apt-get install dirsearch
Artık aracı kullanabiliriz.
Aracı kullanmak için sadece -u parametresi ile url adresi belirtiyoruz kendi wordlisti ile tarama yapıyor.
Kod:
dirsearch -u http://ip-adresi
Tarama sonuçları geldi /gallery adında bir klasör varmış artık tarayıcımız üzerinde açarak klasörde ne olduğunu incelemeye başlayabiliriz.
Adrese girdiğimizde bizi böyle bir sayfa karşılayacak bu sayfada direkt olarak ikinci sorumuzun cevabı yazıyor.
Simple Image Gallery
Şimdi elimizde sadece bir giriş yapma yeri var ve başka hiçbir şey yok ancak makinemizin türüyle ilgili "sqli" yazıyor yani sql injection v.b. bir açık kullanmamız gerekebilir bu yüzden hemen admin login bypass yapmayı denemeye karar veriyorum.
Ve bu şekilde giriş yapmayı deniyorum
Kod:
Kullanıcı Adı:'=' 'or'
Şifre:'=' 'or'
Ve başarılı olduk. "Bunun sebebi ne?" diye soracak olursanız veritabanı sorgularında yapılan yanlışlıklardan ötürü oluşan bir çeşit sql injection açığı bu eğer daha detaylı incelemek isterseniz şu konuma bir göz gezdirebilirsiniz.
Admin Panel Bypass
Kurcalarken "Albums" diye bir yer fark ettim ve incelemek için girdim burada galeri sistemindeki resimler ve bağlı oldukları albümler var belki biz de şuan bu albümlerden birine resim ayağına shell veya başka bir php dosyası yüklemeyi deneyebiliriz.
Rastgele bir albüme tıkladım ve beni attığı sayfada "Upload" düğmesine bastım şimdi buraya test amaçlı bir php dosyası yüklemeyi deneyeceğim eğer başarılı olursa ardından shell yüklemeyi deneyip sisteme erişmiş olacağız.
Test etmek için bir php dosyası yüklemeyi denedim ve başarılı oldum en azından burp suite ile uğraşmaya gerek kalmadı. Şimdi reverse shell alalım. Bunun için githubda en çok kullanılan php reverse shell olan pentestmonkey'in shellini kullanacağım.
php-reverse-shell/php-reverse-shell.php at master · pentestmonkey/php-reverse-shell
Reverse shell dönüş yapacağı bir ip adresine ihtiyaç duyar bu sebeple ip adresimi öğrenmek için ifconfig yazdım ve şimdi buradan 10.xxx ile başlayan openvpn ağında bana atanan ip adresini öğreneceğim.
Kod:
ifconfig
İp adresimin 10.8.229.46 olduğunu öğrendim şimdi shellin bana dönüş yapacağı portu dinlemeye alacağım bu portu ben 4444 olarak seçtim ve bunun için de netcat(nc) adlı aracı kullanacağım.
Şuan 10.8.229.46:4444 adresini dinlemeye almış oldum yani kendi ip adresim: dinlediğim port buraya herhangi bir istek geldiğinde onu yakalamış olacağım.
Kod:
nc -lnvp 4444
Shelli de bu şekilde düzenledim artık upload edebilirim.
Shelli yükleyip orada üzerine tıkladım ve bağlantı düştü hatta bir komut çalıştırdım.
Ama şimdi bash shelle geçmemiz lazım bu sebeple şu kodu çalıştırdım.
Kod:
python3 -c 'import pty; pty.spawn("/bin/bash")'
Şimdi tryhackme'deki soruyu cevaplandırmamız gerekiyor bu yüzden mysql'e bağlanmalıyız eğer veritabanına kayıt varsa bir veritabanı konfigürasyon dosyası vardır diye düşünüp websitenin bulunduğu dizini incelemeye başlıyorum.
Kod:
cd /var/www/html/gallery
Pek haksız da sayılmazmışım çünkü bu dosyada veritabanı bağlantısını kurarak kullanıcı şifresini bulmamıza yarayacak her şey bulunuyor.
Ufak bir hatadan sonra artık mysql komutlarını çalıştırabilirim.
Makefile:
mysql -u gallery_user -p
Enter password: passw0rd321
Burada ilk komut ile kullanıcının erişiminin olduğu veritabanlarını listelettikten sonra ikinci komut ile bu veritabanlarından birini seçtik ve artık çalıştırdığımız komutlar onu etkileyecek.
Kod:
show databases;
use gallery_db;
İlk komut ile seçtiğimiz veritabanında bulunan tabloları ekrana bastırdıktan sonra ikinci komut ile users tablosundan tüm kolonları çektik.
Kod:
show tables;
SELECT * FROM users;
Artık sorumuzun cevabına ulaştık.
a228b12a08b6527e7978cbe5d914531c
Sistemde kısa bir gezintiden sonra /var/backups klasörünün altında "mike_home_backup" isminde garip bir klasör fark ediyorum ve içine girip ne var ne yok diye bakıyorum.
Documents ve images klasörlerini inceledikten sonra onlarda işimize yarayacak pek bir şey olmadığını fark ediyorum ve belki terminal geçmişi yardımcı olur diye cat .bash_history diyerek terminal geçmişini ekrana bastırıyorum.
Ve artık mike'ın şifresi elimizde çünkü kendi terminalinizde de denerseniz sudo -l yazınca sizden kullanıcının şifresini isteyecektir ve boşluk v.b. bir şey olmadan siz parolayı girince kullanıcınızın yetkilerinizi görebileceksiniz. Yani mike'ın şifresi "b3stpassw0rdbr0xx" mış.
Evet bu şekilde mike kullanıcısına geçip user flagi aldık şimdi yetki yükseltme işlemini gerçekleştirip root flagi arayalım.
Kod:
su mike: Bu komut ile terminalde aktif olan kullanıcıyı mike ile değiştirir ve eğer değiştirilecek kullanıcının şifresi varsa şifre sorar.
THM{af05cd30bfed67849befd546ef}
Root flaga ulaşmak için mike kullanıcısının yetkileri yetersiz geldiği için root dizine mike ile giremedik ama bence hala mike işimize yarayabilir...
sudo -l komutu ile mike kullanıcısının yetkilerini kontrol ettiğimizde mike kullanıcısının /opt dizininde bulunan rootkit.sh isimli bir dosyayı yönetici olarak çalıştırabildiğini görüyoruz şimdi gidip dosyanın içeriğini inceleyelim.
Dosyayı incelediğimizde dosyayı yönetici olarak çalıştırırsak çalıştırdığı nano ve rkhunter'ın da yönetici olarak çalışacağını görüyoruz şimdi gidip nano veya rkhunter ile yetki yükseltme olup olmadığını kontrol etmek için gtfobins adlı siteye bakacağız bu site yetki yükseltme ile ilgili komutların paylaşıldığı bir site içerisinde bir sürü programla ilgili yetki yükseltmeye yarayan kodlar bulabilirsiniz.
Gtfobins'e girdiğimde rkhunter ile ilgili bir şey bulamadım ancak nano ile ilgili bu vardı. Ctrl + R ve Ctrl +X ile komut çalıştırma yerine girildiğinde reset; sh > 1&0 2>&0 yazıldığında yetkimizin root olacağını söylemiş.
Gtfobins: GTFOBins
Bu şekilde gönderirsek nano aracı açılacaktır.
Ancak bu hatayı aldık bunun sebebi netcat shellinin stabilitesi ile alakalı bu sebeple aşağıdaki kodu çalıştırmamız gerekiyor.
Kod:
export TERM=xterm
CTRL+Z ile durdurun
stty raw -echo;fg
Burada da iki kere enter tuşuna basın
Bu kod terminalin ortam değişkenini xterm olarak ayarlar.
Yaptığımız değişiklikten sonra tekrar denediğimizde gördüğünüz gibi nano açıldı.
Komutu çalıştırdım artık root olmuş olduk.
Yaptığımız değişiklikten sonra tekrar denediğimizde gördüğünüz gibi nano açıldı.
Komutu çalıştırdım artık root olmuş olduk.
Kod:
cd /root
cat root.txt
THM{ba87e0dfe5903adfa6b8b450ad7567bafde87}
Konumu okuduğunuz için teşekkür ederim ilk defa ctf çözümüyle ilgili konu yazıyorum o yüzden bazı yerleri gereksiz olarak uzatmış olabilirim kusura bakmayın.
Son düzenleme: