None

Bugün sizlerle çözmüş olduğum keyifli bir CTF makinesinin adımlarını paylaşacağım. Bu makinede temel bilgi toplama süreçlerinden başlayarak, zayıf yapılandırılmış bir WebDAV dizini üzerinden sisteme sızmayı ve ardından basit bir sudo yetki aşımı ile root ayrıcalıklarına ulaşmayı adım adım inceleyeceğiz.

Hazırsanız, bilgi toplama aşamasıyla başlayalım!

1. Bilgi Toplama ve Keşif (Reconnaissance)

Her zaman olduğu gibi makineyi anlamak ve dışarıya açık kapıları bulmak için standart nmap taramamızı başlatıyoruz.

nmap -sC -sV -p- <HEDEF_IP>
None

Tarama sonucunda makinede yalnızca 80 (HTTP) portunun açık olduğunu ve üzerinde bir Apache sunucusunun çalıştığını görüyoruz. Web sayfasına tarayıcıdan gittiğimizde dikkat çekici bir şey bulamayınca, arka planda gizli kalmış dizinleri keşfetmek için ffuf aracına başvuruyoruz.

ffuf -w /usr/share/wordlists/dirb/common.txt -u http://<HEDEF_IP>/FUZZ
None

Dizin taramamız sonucunda /webdav adında bir dizin tespit ettik!

2. WebDAV'a Sızma (Exploitation)

Tarayıcı üzerinden http://<HEDEF_IP>/webdav/ adresine gittiğimizde bizi bir HTTP Basic Authentication (Giriş Paneli) karşıladı. Brute-force (kaba kuvvet) saldırısına geçmeden önce, en çok bilinen varsayılan (default) kimlik bilgilerini denemek her zaman vakit kazandırır.

None
None

Giriş yaptıktan sonra bu dizine dışarıdan dosya yükleyip yükleyemeyeceğimizi ve sunucunun hangi uzantıları çalıştırdığını test etmek için davtest aracını kullandım.

davtest -url http://<HEDEF_IP>/webdav/ -auth wampp:xampp
None

Davtest sonuçları bize .php dosyalarını yükleyip çalıştırabileceğimizi gösterdi. Bu da demek oluyor ki, bir PHP Reverse Shell ile sistemde komut çalıştırma yetkisi elde edebiliriz.

3. Reverse Shell Alma ve İlk Bayrak

Kali Linux'ta varsayılan olarak bulunan meşhur PHP reverse shell dosyamızı kullanmak üzere bulunduğum dizine kopyaladım ve içeriğini düzenledim.

cp /usr/share/webshells/php/php-reverse-shell.php ./shell.php
nano shell.php
None

Hazırladığım bu zararlı dosyayı hedefe yüklemek için, terminal üzerinden harika bir WebDAV istemcisi olan Cadaver aracını kullandım. cadaver, tıpkı klasik bir FTP istemcisi gibi çalışarak WebDAV dizinleriyle terminal üzerinden kolayca komut satırı etkileşimi kurmamızı sağlar.

Bağlantıyı başlatmak için terminale şu komutu girdim:

cadaver http://<HEDEF_IP>/webdav/

Bağlantı isteğini gönderdiğimizde sunucu bizden kimlik doğrulaması isteyecek. Az önce tespit ettiğimiz wampp ve xampp bilgilerini girerek oturum açıyoruz.

İçeri girdikten sonra put komutu ile shell dosyamızı hedef sunucuya yüklüyoruz:

dav:/webdav/> put shell.php

Dosyayı WebDAV dizinine başarıyla yükledikten sonra, kendi terminalimde netcat ile dinlemeye geçtim:

nc -lvnp 4444
None

Sisteme girdikten sonra ev dizinine (/home/merlin) giderek ilk bayrağımızı başarıyla okuduk.

None

4. Yetki Yükseltme

Sistemde kısıtlı bir kullanıcıyız ama hedefimiz elbette Root olmak. Yetki yükseltme adımlarında her zaman ilk kontrol ettiğim yerlerden biri, mevcut kullanıcının şifresiz çalıştırabildiği sudo komutlarıdır.

sudo -l
None

Çıktıyı incelediğimde, kullanıcımızın root yetkisiyle ve şifreye ihtiyaç duymadan /bin/cat komutunu çalıştırabildiğini gördüm. Bu inanılmaz bir güvenlik zafiyeti! /bin/cat komutu, dosya okumaya yarar. Eğer bu komutu root yetkisiyle kullanabiliyorsak, sistemdeki en gizli dosyaları bile (örneğin /etc/shadow veya root bayrağını) okuyabiliriz

Hiç vakit kaybetmeden doğrudan root bayrağını okumak için şu komutu çalıştırdım:

sudo /bin/cat /root/root.txt
None

Ve root bayrağı karşımızda! Makineyi başarıyla tamamladık.

Okuduğunuz için teşekkürler, bir sonraki çözümde görüşmek üzere!