Typhoon Walkthrough

Arif ARI
8 min readDec 2, 2021

--

Typhoon, PRISMA CSI ekibi tarafından oluşturulmuş birçok zafiyet barındıran zafiyetli bir makinedir. Kurulumu yapıldıktan sonra sistem üzerinde nmap ile bir ağ taraması yapıp aktif cihazlardan typhoon makinesinin ip adresini öğrenebiliriz.

Tarayıcıdan belirtilen adrese gidildiğinde ip adresimizi öğrenmiş oluruz.

Ardından klasik bir nmap tamasıyla açık portların tespitini yapalım.

FTP
Birçok portun açık olduğu bu sistemde ilk olarak FTP portunu detaylı taratalım.

Anonymous ile FTP girişine izin verildiğine dair bir bilgi var. Anoymous kullanıcısı ile bir FTP ile bağlantısı kurmaya çalışıldığında başarılı olabiliyoruz. Fakat yinede bir brute force yapmakta fayda var.

Burada anoymous kullanıcı adlarıyla verilen her türlü password eşleşmiş durumda. Yani anonymous kullanıcısıyla örneğin ‘ali’ adında bir şifre girildiğinde dahi bağlantı sağlanmaktadır. Böyle büyük bir zafiyetten bahsettikten sonra ftp de neler mevcut bakalım.

Bağlantı sonrası ftp de işimize yarayacak bir şeyin olmadığı farkedilecektir.

SSH
Az önce ftp için denediğimiz brute force’u SSH bağlantısı kurmak için deneyelim. Atak gerçekleştirirken güçlü bir wordlist kullanmakta fayda var.

typhoon adlı bir kullanıcı ile buna ait 789456123 şifresini elde ettik. Hemen SSH bağlantısı kuralım.

Bağlantı sonrası typhoon dizininde bir dosyanın mevcut olduğunu görüyoruz.

Bu dosyayı görüntülediğimizde ilk flag’i elde etmiş olacağız.

Sistemde hangi dosyalar mevcut bunları kurcalamakta fayda vardır. Tab dizini altında ki çalıştırılabilir dosyayı more komutuyla çalıştırdığımızda ikinci flag’i elde etmiş olacağız.

Sistemde root olabilmek için işletim sistemi, sürüm bilgisini elde edip bu yönde bir zafiyet arayalım.

Exploit database sayfasında root olabilmemizi sağlayacak 37292 adlı bir c uzantılı dosya mevcut ve bunu indiryoruz.

Root yetkisine sahip olmadığımız için kendi bilgisayarımızdan bunu hedef sisteme indirebiliriz. Bunun için kendi terminalimizde php -S 192.168.216.133:7000 diyerek bir sunucu oluşturalım.

Sunucu üzerinden dosyayı indirebileceğimizin kontrolünü yapalım.

Şimdi hedef sistemin terminal ekranını açıyoruz ve geçici dosyaları/dizinleri barındıran tmp dizinine geçiş yapıyoruz. Kendi sistemimizdeki mevcut dosyayı tmp dizinine çekeceğiz. wget aracıyla sunucumuzu ve dosyanın barındığı dizini belirten url’yi belirterek dosyayı çekiyoruz.

Ardından bu dosyayı derliyoruz ve dosyanın derlenmiş hali a.out dosyasıyla karşımıza çıkıyor. Bu dosyayı çalıştırdığımızda root oluyoruz.

Root dizini altında dosyaları listelediğimizde root-flag dosyasının mevcut olduğunu farkettikten sonra görüntüleyip 3.flag’i de elde ediyoruz.
Sistemi biraz kurcalarsak eğer /home/admin dizini altındaki .ssh klasöründe mevcut olan flagi görüntüleyebiliriz.

4.flag !

TOMCAT
Tomcat ekranında yönetici web uygulamasına erişim sağlayabileceğimiz bir yazı mevcut. ‘manager’ dediğimizde karşımıza giriş için kullanıcı adı ve parola isteyen bir ekran gelmektedir. Birkaç deneme sonucu giriş yapabilmek pek de mümkün olmayacaktır.

Şifreyi bir brute force attack gerçekleştirerek kırmak akla ilk gelen yöntem elbette. Vakit kaybetmeden msfconsole geçiş yapalım.

Shell almak için bağlantı kurmamız gerekmektedir. RHOSTS değerine hedef ip adresimizi, RPORT değerine ise sunucuya bağlanacağımız port değerini giriyoruz. VERBOSE değerini ise false girerek Brute Force işlemi gerçekleşirken direkt olarak doğru eşleşmeyi döndürmesini istiyoruz.
Sonuç başarılı böylelikle kullanıcı adı ve parolanın tomcat olduğunu tespit etmiş olduk.

Oturum açtıktan sonra sayfa üzerinde deploy(dağıtmak) edebileceğimiz bir bölüm var. Bir reverse shell alabiliriz mesela. Yani hedef sisteme bir dosya gönderip sistemde çalıştırdıktan sonra kendi sistemimizde bir shell bağlantısı oluşturabiliriz. Şimdi war uzantılı bir payload dosyası oluşturarak browse edeceğiz.
Shell alma işlemi gerçekleştireceğimiz için ve tomcat java tabanlı bir sunucu olduğu için seçeceğimiz payload java/jsp_shell_reverse_tcp olacaktır.

Payload dosyasını kaydediyoruz. Örneğin payload.war olarak masaüstüne kaydedilebilir.
payload.war dosyasını yükleyerek deploy ediyoruz.

Karşımıza gelen ekranda dosyamızın yüklendiğini görmekteyiz.

Bu dosyaya tıklanıldığında boş bir ekran açılacaktır ve bağlantı kurulacaktır fakat bağlantı kurmak için gerekli ayarlamaları henüz yapmadık. Msfconsole geçiş yaparak gerekli ayarlarlamaları yapalım.
Bağlantı yapmak için kullanacağımız modülü seçip ardından payloadımızı giriyoruz. Kendi ip adresimizi de verdikten sonra run ya da exploit ediyoruz.

Hedefin payload dosyasına tıklaması durumunda bağlantı kurulacaktır. Dosyaya tıklayıp bağlantıyı kurmuş olalım.

Bağlantıyı kurduk hedef üzerinde işlemler gerçekleştirebiliriz. Hemen bir shell alalım.

Bundan sonrası için ssh portunda bahsedildiği gibi sunucu üzerinden c dosyasını /tmp dizini altına çekip dosyayı çalıştırmak olacaktır.

HTTP
Web portu üzerinden iki önemli araç ile hedef sistemin zafiyetlerini tarayacaz. Önce nikto aracıyla tarama işlemini başlatalım.

Tarama sonucu göze, /mongoadmin/, robots.txt, shelshock (CVE-2014–6278), /cms/, /phpmyadmin/ gibi dosya, dizin ve zafiyetler çarpmaktadır. Bir de dirb aracıyla tarama gerçekleştirelim.

Burada ise FARKLI OLARAK /calendar/ ve /drupal/ ile ilişkili url’ler göze çarpmaktadır. Tarama sonucu oldukça detaylı fakat çoğunun işe yarar şeyler olmadığını göreceksiniz.
Şimdi bu zafiyetlere göz atalım.
robots.txt sayfasına uğradığımızda mongoadmin diye bir dizin mevcut. Zaten elde ettiğimiz bir bilgiydi.

Sayfa üzerindeki mongoadmin’i ziyaret ettiğimizde aşağıdaki ekranla karşılaşıyor olacağız.

Change database > credits tıklanıldığında aşağıdaki gibi bir kullanıcı adı ve parola bilgisini edinmiş olacağız.

Bu bilgileri brute force ile tespit etmiştik. Eğer brute force yapmamış olsaydık bu bilgileri elde ettikten sonra SSH bağlantısı yapardık.

SHELSHOCK
Keşfedilen shelshock zafiyetininin CVE-2014–6278 olarak izlendiğini tespit etmiştik. Msfconsole a geçiş yapıp ilgili zafiyeti aratalım.

Amacımız meterpreter ile oturum açmak, bağlantı kurmaktır. 1 numaralı modülü kullanmak uygun olacaktır.

Bizden istenen bilgileri girerek oturum açabiliriz. TARGETURI kısmına hedef olarak, daha önce yaptığımız nikto taraması sonucundaki shelshock zafiyetinin bulunduğu satırda bulunan /cgi-bin/test.sh alanını girerek run ediyoruz.

Bağlantıyı kurduğumuz gibi bir shell alıp /tmp dizinine geçiş yaptık. Ardından yetki yükseltmek için tekrardan c kodunu derleyip çalıştıracağız. Daha önce /tmp dizini altına dosyayı çekmiştik. Çalıştırıp root oluyoruz.

CMS
Tarayıcıdan cms ilişkin adrese gittiğimizde karşımıza gelen bu LotusCMS başlıklı login panelinde sayfanın php uzantılı olduğunu farkediyoruz.

Msfconsole geçiş yaparak bu yönde bir bağlantı modülü var mı ‘cms php’ diyerek aratıyoruz.

Birkaç modül mevcut. Modüller arasından 9. modülü kullanacağız.

Modülü belirttikten sonra kendi adresimizi, hedef adresi, bağlanılacak portu ve sayfayı belirttikten sonra run ediyoruz ve oturum açıyoruz.

Bağlantı sonrası shell alıp c uzantılı kodu çalıştırarak yetki yükseltebiliriz.

PHPMYADMIN
Mevcut phpmyadmin paneline gidip göz atmak istediğimizde giriş için root ve toor bilgileriyle login yapabilmekteyiz.

Giriş sonrası data klasörüne bir göz atıyoruz ve altında 4.flag’i elde ediyoruz.

Phpmyadmin panelinde biraz sistemi kurcalamakla başka bilgiler elde edilebilir.

CALENDAR
Mevcut zafiyetlerden birisi de calendar ilişkili zafiyet. Takvim anlamına gelen bu web platformlu zafiyeti metasploit aracında search webcalendar olarak arattığımızda bağlantı kurabileceğimiz bir modül ekrana gelmekte ve bu modülü kullanacağız.

Kullanılan modül belirtilip gerekli ayarlamalar yapıldığında bağlantı kurulmuş olacaktır.

Ardından sistemdeki mevcut dosyaların bilgisini elde edebiliriz. Gerisi zaten yetki yükseltme aşaması ve daha önce yapılan işlemler tekrar uygulanarak root olunabilir.

DRUPAL
Dirb tarama sonucunda elde edilen drupal ilişkili msfconsole üzerinde sarch drupal komutuyla birkaç bağlantı modülünün mevcut olduğunu göreceğiz. Unix tabanlı bu web platformu için kullanacağımız modül unix/webapp/drupal_drupalgeddon2 olacaktır.

Modülü belirledikten sonrası yine bir oturum açma ve sistem üzerinde diğer zafiyetlerde bahsedildiği gibi yetki yükseltme olacaktır.

c uzantılı kodun çalıştırılmasıyla böylelikle bu zafiyet üzerinden de hedef sistem üzerinde yetki yükseltmiş olduk.

DNS
Sistemde ki bir diğer açık 53 numaralı porttan kaynaklı. Burada zone transferlerine izin verilip verilmediğine göz atalım. Bir telnet bağlantısı sonrası typhoon.local hizmetinin verildiğini göreceğiz.

dig axfr @192.168.216.138 typhoon.local komut satırıyla bölge aktarımını gerçekleştirmek istediğimizde altıncı flagi elde etmiş olacağız.

NFS
Nmap çıktısında açık olduğu görülen NFS portuna yönelik metasploitte search nfs diyerek aratalım. Karşımıza çıkan modüllerden 1 numaralı modül bağlantı kurmamızı ve sistemdeki bir dosya-dizin mevcut ise bunu mount etmemizi sağlayacaktır.

Modülümüzü seçtikten sonra gerekli parametre değerlerini girip run ediyoruz. Karşımızı bir /typhoon klasörü çıktı.

Tmp dizini altında /typhoon adlı bir klasör oluşturup hedef sistemdeki typhoon klasörünü ekranda belirtilen komut satırıyla buraya taşıyoruz.

Dizin altındaki dosyaları listeleyip karşımıza çıkan secret dosyasını görüntülediğimizde 7. flagimize ulaşmış olacağız.

--

--

Arif ARI
Arif ARI

No responses yet