TryHackMe UltraTech CTF WriteUp Rehberi
📌 Merhaba Siber Güvenlik Meraklıları
TryHackMe UltraTech CTF WriteUp Rehberi
📌 Merhaba Siber Güvenlik Meraklıları
TryHackMe WriteUp’larına devam ediyorum. Bu writeUp’lar, sadece bir çözüm paylaşımı değil, aynı zamanda siber güvenlik yolculuğunun başlangıcında olanlar için bir cesaret kaynağıdır. Ve her adım, bilginin sonsuz yolculuğunda bir mihenk taşıdır.
• 🗂️ Oda Adı: UltraTech (CTF)
• 📜 Tanım: The basics of Penetration Testing, Enumeration, Privilege Escalation and WebApp testing.
• 🔗 Oda URL: https://tryhackme.com/room/ultratech1
• ⚡ Zorluk Seviyesi: Orta
• 🏹 Hangi Path’lere Dahil: -
• 🔍 Odada Spesifik Olarak Değinilen Toollar: -
• 🔍 🛠️ Kullanılan Tool’ların Türleri: Network Scanning Tools, Web Scanning Tools, Password Cracking Tools
• 🛠️ Kullanılan Toollar: nmap, ffuf, dirb, crackstation.net
• 🎯 Hedef Sistem: Linux, Web
• 🏳️ İlgili Takım: 🔴 Kırmızı

Task 1 — Deploy the machine
1.1 Deploy the machine
Answer: No answer needed
Task 2— It’s enumeration time!
Enumeration ile başlayalım. Nmap taraması ile ne var ne yok görelim:
nmap -sV -sC -p- 10.10.51.138

Nmap çıktısını inceleyerek soruları cevaplıyoruz.
2.1 Which software is using the port 8081?
8081 numaralı portu “Node.js” frameworkünün kullandığını görüyoruz.
Answer: Node.js
2.2 Which other non-standard port is used?
Normalin dışında kullanılan port ile ilk 1024 common ports dışında kullanılan port soruluyor. Bu port da 31331'dir.
Answer: 31331
2.3 Which software using this port??
31331 portunu kullanan yazılımın Apache olduğunu görüyoruz.
Answer: Apache
2.4 Which GNU/Linux distribution seems to be used?
Hangi GNU/Linux dağıtımının kullanıldığı soruluyor. 31331 portun detay bilgilerinde http-server-header değerinin Ubuntu ile ilişkili olduğunu görüyoruz.
Answer: Ubuntu
2.5 The software using the port 8081 is a REST api, how many of its routes are used by the web application?
Soruda, 8081 portunda çalışan REST API’nin web uygulaması tarafından kullanılan kaç endpoint’i (route) olduğu soruluyor. O zaman ffuf ile fuzzing yapalım ve “http://10.10.51.138:8081/” adresinden sonra hangi endpointlere (dizinlere) gidebildiğimizi görelim:
ffuf -u http://10.10.51.138:8081/FUZZ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -mc 200

Komutumuzun çıktısında görüldüğü üzere “auth” ve “Auth” olmak üzere 2 endpoint olduğunu söyleyebiliriz.
Not: Genellikle Windows web sunucuları büyük-küçük harf duyarlılığına sahip değilken, şu anki hedefimizde olduğunu gibi Ubuntu veya Unix/Linux web sunucularında ise büyüküçük harf duyarlılığı vardır ve “Auth” ve “auth” iki farklı dizine gider.
Answer: 2
Task 3— Let the fun begin
3.1 There is a database lying around, what is its filename?
8081 portunda çalışan REST API servisine karşılık bir de web servisi olması lazım. Bu da kuvvetle muhtemel nmap taramasında karşımıza çıkan 31331 numaralı porttaki servis. Şimdi tarayıcıda gidip görelim:

Karşımıza finans piyasalarına yönelik bir web sitesi çıkıyor. Soruda ise bize bir veritabanından bahsediyor. Web sitesindeki butonlardan pek bir bilgi elde edemediğimiz için hemen bir dizin taraması başlatalım:
dirb http://10.10.51.138:31331 -w /usr/share/wordlists/dirb/common.txt

Çıktı der ki; css, images, javascript ve js dizinlerini bulduk, ayrıca server-status ve robots.txt dosyaları var.
Dizinleri listeleyelim ve robots.txt dosyasının içeriğine bakacağız. robots.txt ile başlayalım:

robots.txt’de yer alan /utech_sitemap.txt dosyasını da okuyalım:

Matruşka gibi. Sitemapte de başka dosyalar bulduk. Onları da inceleyelim:

partners.html dosyasında gizli bir login sayfası bulduk.
Test verileriyle login olmayı deniyor ve tarayıcının Inspect özelliği ile Network sekmesinde neler olup bittiğine bakıyoruz:

Çıkarımlarımız:
- Login denendiğinde, http://10.10.51.138:8081/auth?login=USERNAME&password=PASSWORD endpointine yönlendiriliyoruz. Aynen tahmin ettiğimiz gibi 31331 portundaki web servisi 8081 portundaki APIyi kullanıyor.
- Yanlış credentials girildiğinde sadece Invalid credentials ynaıtı döndürüyor.
Bu bilgiler yetersiz kaldığı için sayfanın kodunu inceliyor, ancak burada da birşey bulamıyoruz.
Şu an çözmeye çalıştığımız soru, hatırlarsanız, bize bir veri tabanı soruyor. Bu durumda dizin taramasında bulduğumuz dosyaları inceleyerek bir ipucu bulabilir miyiz diye bakıyoruz.
Ve /js/api.js dosyasını incelerken önemli bir veri buluyoruz.

Farklı bir endpoint daha!
checkAPIStatus() fonksiyonu, API’nin çalışıp çalışmadığını anlamak için bir HTTP GET isteği gönderiyor ve url değişkeni şu şekilde bir istek oluşturuyor:
http://10.10.51.138:8081/ping?ip=10.10.51.138
Şimdi bunu elle girerek çalıştırmayı deneyelim:

Tanıdık geldi mi?
Evet, tarayıcıda açılan sayfa bize bu linkin sistem üzerinde ping 10.10.51.138 komutunu çalıştırdığını gösteriyor.
Bu tür bir API endpoint’i güvenlik açısından potansiyel olarak istismar edilebilir, çünkü parametre olarak ip değerini doğrudan alıp işliyor. Böyle bir endpoint için farklı saldırı teknikleri deneyebiliriz.
http://10.10.51.138:8081/ping?ip=127.0.0.1 `id`

Demek ki hedefte istediğimiz kodları çalıştırabiliyoruz. Eğer sürekli alacağımız “Temporary failute in name resolution” hatası olmasaydı, reverse shell de alabilirdik. Dolayısıyla komutları burada çalıştıracağız. O yüzden bu şekilde devam edelim ve aldığımız çıktılarla bir sonuca ilerleyelim:
http://10.10.51.138:8081/ping?ip=127.0.0.1%20`pwd` -->(pwd) --> /home/www/api
http://10.10.51.138:8081/ping?ip=127.0.0.1%20`ls` -->(ls) --> utech.db.sqlite
Bulunduğumuz dizinde neler var diye gezinirken soruda bize sorulan veritabanını bulduk: utech.db.sqlite

Answer: utech.db.sqlite
3.2 What is the first user’s password hash?
Command Injection ile devam ederek dosyanın içeriğini okuyalım:
http://10.10.51.138:8081/ping?ip=127.0.0.1%20`cat utech.db.sqlite`

Buna göre iki kullanıcı bulunuyor:
- r00t (hash değeri: f357a0c52799563c7c7b76c1e7543a32)
- admin (hash değeri: 0d0ea5111e3c1def594c1684e3b9be84)
Answer: f357a0c52799563c7c7b76c1e7543a32
3.3 What is the password associated with this hash?
Şimdi de “f357a0c52799563c7c7b76c1e7543a32” hash değerinin hangi parolayı temsil ettiğini bulmamız gerekiyor. Karmaşık işlemlerle uğraşmadan önce Crack Station sitesinde kolayca sonuca ulaşabiliyor muyuz, deneyelim:

Answer: n100906
Task 4 — The root of all evil
4.1 What are the first 9 characters of the root user’s private SSH key?
“r00t” kullanıcısının parolasının “n100906” olduğunu bulduk. Ama ne parolası, bunu bilmiyoruz.
Nmap taramasından hatırlayabileceğimiz kadarıyla elimizde Web, SSH ve FTP servisleri var. Webde denememizi yapınca olumlu sonuç alammıyoruz:

SSH deneyelim:
ssh r00t@10.10.51.138
Şifremizi de “n100906” olarak giriyoruz:

Güzel!
Direkt sorunun cevabına ilerleyelim. Bunun için /root/.ssh/id_rsa dosyasını bulmamız gerekiyor, ancak root olmadığımız “r00t” olduğumuz için yetkimiz yok. Dolayısıyla da privilege escalation yapmamız gerekecek.
Sıradan seçeneklerimizi deneyelim:
Sudo yetkili olduğumuz komutları bulmak için denediğimiz “sudo -l” işe yaramadı:

SUID bitlerini bulmak için komutumuzu giriyor ancak ondan da sonuç alamıyoruz.
Sonrasında başka bir deneme için hazırlanırken ilginç bir şeyle karşılaşıyoruz:

Bu oldukça alışılmışın dışında. İnternette kısaca bir araştırma sonucunda görüyoruz ki Docker içinden bir shell çıkartmamız mümkün. Hemen exploit için gerekli komutu giriyoruz:
docker run -v /:/mnt --rm -it bash chroot /mnt sh

Süper!
Geriye sadece aradığımız dosyayı okumak kalıyor:

İlk 9 karakteri cevap olarak girerek bu CTFi de başarıyla tamamlayacağız!
Answer: MIIEogIBA
Sevgilerle!
Eğer bu makaleyi beğendiyseniz ve buna benzer içerikler görmek istiyorsanız, lütfen:
• 👏 Desteğinizi göstermek için alkışlayabilir,
• 📰 AI güvenliği ve etik hackerlık konularında gelecek makaleler için beni takip edebilir ve
• 💬 Düşüncelerinizi paylaşın veya sorun yaşadığınız noktaları yorumlarda sorabilirsiniz — fikirlerinizi duymaktan memnuniyet duyarım!
Bu yolculuğun bir parçası olduğunuz için teşekkür ederim. Bir sonraki macerada görüşmek üzere! 🌟
메타데이터
- post_id
- fc01c9726525
- slug
- tryhackme-ultratech-ctf-writeup-rehberi-fc01c9726525
- url
- https://medium.com/t%C3%BCrk%C3%A7e-i%CC%87%C3%A7erikler/tryhackme-ultratech-ctf-writeup-rehberi-fc01c9726525
- canonical_url
- https://medium.com/t%C3%BCrk%C3%A7e-i%CC%87%C3%A7erikler/tryhackme-ultratech-ctf-writeup-rehberi-fc01c9726525
- author_url
- https://medium.com/@akyuksel
- status
- ok
- fetched_at
- 2026-06-20 20:29:01