- 15 Ocak 2019
- 287
- 1
- 59
Selam, ben Grey Hat klübünden LyxG, bugün sizlerle beraber tryhackme'nin NerdHerd adındaki ctf'ini çözeceğiz. Öncelikle gerekli bağlantılarını yaptıktan sonra aldığım ip adresinin aktif servislerini öğrenmek için nmap aracı ile taramaya başlıyorum.
Toplamda 3 adet servisin varlığını öğrenebiliyorum, bunları denemek ve ayrıca version & anonim login & vulnerable olup olmadığını test etmek için nmap gibi toolardan yardım alacağım. Öncelikle ftp protokolü hakkında neler elde edebileceğimize dair ufak bir .nse scriptine göz atalım. Bu script o portta herhangibir anonymous login varmı diye kontrol ediyor.
Gördüğünüz gibi anonim olarak kısıtlı yetkide olsam bile porta girişim oluyor. Bunun için "ftp" "sftp" "tftp" gibi araçları kullanabilirsiniz. İçeriye girdikten sonra ise sistemdeki dosyaları kendi makinenize çekmek iççin (tekli) get dosyaadi.. && (çoklu) mget * komutlarını verebilirsiniz. Daha fazla öğrenmek istiyorsanız list komutu ile neler yapabileceğinize bakın.
Yukarıda gördüğünüz üzere sistemdeki aktif olan portun versionunu öğrenmek için -sV (service version) -p ile aktif olan port numarasını verdim. Şimdi ise "vsftp 3.0.3" servisinin çeşitli exploitlere maaruz kaldığını görüyorum. Şimdi ise smb portlarımızı araştırmaya başlayabiliriz.
Smb adlı servisimizi smbap ile tarattığımda temel seviye bilgiler çıkıyor. Bunun yerine "enum4linux" adlı toolu kullanacağım ki içeride user varsa veya anonymous login varsa bize detaylı şekilde gösterebilsin.
Tool yardımı ile user bilgisini ortaya çıkardık. Peki bununla neler yapılabilir ? ssh için brute force işleminde sadece password bulmamıza gerek kalabilecek ve privil. esc. için yardımımıza koşabilecek bir bilgi olduğunu görebiliyoruz.
"
S-1-22-1-1000 Unix User\chuck (Local User)
S-1-22-1-1002 Unix User\ftpuser (Local User)
"
Şimdi ise bir web servisimiz var ve bilgi toplamak için öncelikle sistemde olan dizinleri okumamız gerek bunun için "dirb" & "gobuster" & "ffuf" gibi tooları kullanabiliriz. Daha fazla bilgi almak için wordlistinizin daha büyük olmasına dikkat edebilirsiniz.
/admin/ adında bir path görüyorum, içeriye girdiğimde sadece login kısmı vardı. Herhangi bir üye oluşturucu alan veya input verebileceğim yer yoktu. Login tarafından xss ve sql denesemde sonuç vermedi. Bende kaynak kodunu incelemeye karar vermiştim.
Gördüğünüz kriptolu veride ilk kısım base64 ile şifrelenmiş ki hashi kırdıktan sonra username bilgim olan "cibartowski" yi elde ediyorum. Lakin diğer şifre hakkında birşey bulamadığım için smb ye geri dönüp brute force yaptım ve daha önce bulduğumuz "chuk" adlı userimizin şifresini aldım.
Bu işlemden sonra hemen ls -lah komutu verdim belki olurda .bash_history yi filan okuruz umuduyla. Lakin sadece 1 adet .txt dosyası vardı ve bana websitesindeki bir path'e gitmemi işaret ediyordu; "/this1sn0tadirect0ry"
Lakin en başında yapmam gereken şeyi hatırlıyor ve giden zamanıma ahıt yakıyorum. User bilgisini aldıktan sonra wordliste spray atarak bulabileceğim şeyi en sonunda bu tarz yönlendirmeler ile buluyoruz puzzle tarzı olan ctf'leri hiç bir zaman sevmedim
SSH oturumuna girdikten sonra kernel hakkında bilgi aldım, harici olarak crontablere baktıktan sonra /home dizini altında ssh oturumu açtığımız kullanıcıya girdim, bunun ardından ilk user flag'i aldık...
Şimdi ise /root klasörü altında bulunan flag'i almak için server'i rootlamam gerekiyor. Terminalde lsb_release çıktısına ve kernel sürümüne bakarak lokal bir exploit denemesi yapmak istiyorum. Bunun için derleme ortamına izin veren path'e yani /tmp klasöründe kendi lokalimden çektiğim exploiti atıp derleyip çalıştıralım.
Ubuntu 16.04 | kernel 4.x PoC : exploits/cve-2017-16995/cve-2017-16995.c at master · rlarabee/exploits
Ve onca denemenin ardından root olabildik, beni dinlediğin için teşekkür ederim. Eksiklerim ve hatalarım varsa lütfen yazmaya çekinme ) selametle..
Son düzenleme: