CTF Çözümü 09 Ekim 2025

TryHackMe Basic Pentesting CTF Çözümü

Yazar
Sadıkcan TULUK Teknoloji Uzmanı
TryHackMe Basic Pentesting CTF Çözümü

Hacking pratiği yapmak ve siber güvenlik becerilerini geliştirmek için harika bir platform olan TryHackMe, popüler bir öğrenme platformudur. TryHackMe’de, farklı zorluk seviyelerinde sanal makineler (CTF’ler) ve öğrenme yolları bulunur. Bunlara erişmek için kendi makinenizi platforma VPN aracılığıyla bağlamanız gerekir.

Bu bağlantıyı kurmak için aşağıdaki adımları izleyebilirsiniz.

TryHackMe VPN Bağlantısı Nasıl Yapılır?

VPN bağlantısı kurmak, TryHackMe’deki sanal makinelere erişmek için atılması gereken ilk adımdır. Bu, sizin makinenizle TryHackMe’nin ağını birleştirir ve CTF’leri çözmenize olanak tanır.

1. Erişim Dosyasını İndirin

İlk olarak TryHackMe hesabınıza giriş yapın. Sağ üst köşede bulunan profil simgenize tıklayın ve açılan menüden Access seçeneğini seçin. Bu sayfa, size VPN bağlantısı için gereken OpenVPN ayarlarını sunacaktır.

Sayfada, bir dizi VPN sunucusu seçeneği göreceksiniz. Hız ve gecikme süresi açısından en iyi performansı almak için bulunduğunuz konuma en yakın sunucuyu seçmeniz önerilir. Sunucuyu seçtikten sonra, Download configuration file (Yapılandırma dosyasını indir) düğmesine tıklayın. Bu işlem, .ovpn uzantılı bir dosya indirecektir. Bu dosya, VPN bağlantısını kurmak için gereken tüm bilgileri içerir.

Press enter or click to view image in full size

2. OpenVPN ile Bağlantıyı Kurun

İndirdiğiniz .ovpn dosyasını kullanarak VPN bağlantısını kurmak için terminali kullanacağız. Dosyayı indirdiğiniz konuma (genellikle ~/Downloads dizini) gidin ve aşağıdaki komutu çalıştırın:

  • sudo: Bu komutu yönetici haklarıyla çalıştırmanızı sağlar.
  • openvpn: OpenVPN programını başlatır.
  • DOSYA_ADI.ovpn: İndirdiğiniz .ovpn dosyasının adını buraya yazmalısınız.

Bağlantı başarılı olursa, terminalde birçok log kaydı göreceksiniz. Bu loglar arasında, bağlantının başarıyla kurulduğunu ve bir tünel (tun0) arayüzü oluşturulduğunu belirten satırları arayabilirsiniz.

Press enter or click to view image in full size

Şimdi yeni bir terminal açıp ifconfig komutla yeni bir IP adresi atanıp atanmadığını kontrol edebilirsiniz:

Press enter or click to view image in full size

Bu komutun çıktısında, tun0 adında yeni bir ağ arayüzü görmeniz gerekir. Bu arayüze atanan IP adresi, artık TryHackMe ağına bağlı olduğunuzu gösterir.

Artık TryHackMe ağına başarıyla bağlandınız. Bir sonraki bölümde, Basic Pentesting CTF çözümüne geçiş yapabiliriz.

Not: Ekran görüntüsündeki loglarda da görebileceğiniz gibi, bağlantı başarıyla kurulduktan sonra tun0 adında bir tünel oluşturulmuş ve 10.9.1.115 gibi bir IP adresi atanmıştır. Bu, VPN bağlantınızın sorunsuz bir şekilde çalıştığı anlamına gelir.

Basic Pentesting CTF Çözümü

Press enter or click to view image in full size

Bu bölümde, hedef makineyi aktif hale getirecek ve üzerinde çalışan servisleri keşfedeceğiz. Bu, bir pentest sürecinin en temel ve en önemli adımlarından biridir.

NOT : Yukarda anlattığımız gibi önce VPN bağlantısını yapmayı unutmayın.

Press enter or click to view image in full size

Hedef Makineyi Başlatın

Öncelikle, Basic Pentesting odasına gidin ve “Start Machine” düğmesine tıklayın. Bu, TryHackMe’nin sizin için özel bir sanal makineyi başlatmasını sağlar. Makine başlatıldığında, size bu makinenin IP adresi verilecektir. Bu adresi bir yere not alın, çünkü tüm işlemlerimizi bu IP adresi üzerinden yapacağız.

Press enter or click to view image in full size
Press enter or click to view image in full size

Servis Keşfi (Nmap Taraması)

Hedef makine ile bağlantımız olduğuna göre, şimdi hangi servislerin çalıştığını öğrenmeliyiz. Bunun için Nmap (Network Mapper) aracını kullanacağız. Nmap, bir ağ üzerindeki ana bilgisayarları ve bu ana bilgisayarlar üzerinde çalışan servisleri keşfetmek için kullanılan güçlü bir araçtır.

Terminalde aşağıdaki komutu çalıştırarak kapsamlı bir tarama yapın:

sudo nmap -sV -sC -oN -Pn <HEDEF_IP_ADRESİ>

Press enter or click to view image in full size
  • sudo: Komutu yönetici haklarıyla çalıştırmak için kullanılır.
  • nmap: Nmap aracını çağırır.
  • -sV: Servis versiyonlarını tespit etmek için kullanılır.
  • -sC: Varsayılan Nmap betiklerini (scripts) çalıştırır. Bu betikler, açık portlar üzerinde zafiyetleri ve ek bilgileri bulmak için kullanışlıdır.
  • -oN: Tarama sonuçlarını bir dosyaya kaydeder.
  • -Pn: Hedefe ping atlamasını devre dışı bırakır ve host’u çevrimdışı görünse bile port taramasını doğrudan başlatır.

Taramadan sonra, Nmap çıktısında aşağıdaki açık portları ve servisleri göreceksiniz:

  • Port 22: SSH (OpenSSH 8.2p1 Ubuntu)
  • Port 80: HTTP (Apache httpd 2.4.41 Ubuntu)
  • Port 139/445: SMB (Samba smbd 4.x)
  • Port 8009: AJP13 (Apache Jserv Protocol)
  • Port 8080: HTTP (Apache Tomcat)

Bu sonuçlar, makineye sızmak için potansiyel yollar sunar.

Web Servislerinin İncelenmesi

Nmap taramasında, 80 ve 8080 portlarında iki farklı web sunucusunun çalıştığını gördük.

Port 80: Tarayıcınızla hedef IP adresine giderek (örn.10.10.84.234/), "Undergoing maintenance" (Bakımda) mesajını göreceksiniz. Sayfanın kaynak kodunu (view-source) incelediğinizde, bir geliştirici notu olduğunu fark edeceksiniz:

`Check our dev note section if you need to know what to work on.`

Bu not, /dev veya `/development` gibi bir dizin arayışına işaret ediyor.

Press enter or click to view image in full size
Press enter or click to view image in full size

Klasör Keşfi (Dirb): Bu notu takiben, gizli dizinleri bulmak için Dirb aracını kullanmalıyız. Bu araç, yaygın kullanılan kelime listelerini kullanarak web sunucusundaki gizli dizinleri tarar. Terminalde aşağıdaki komutu çalıştırın:

dirb http://10.10.84.234 /usr/share/dirb/wordlists/common.txt

Press enter or click to view image in full size
  • dirb: Dirb aracını çağırır.
  • http://10.10.84.234: Hedef URL.
  • /usr/share/dirb/wordlists/common.txt: Dirb’ün yaygın kelime listelerinden biridir.

Tarama sonuçlarında, /development adlı bir dizinin bulunduğunu göreceksiniz. Tarayıcınızdan bu adrese gittiğinizde (örn. http://10.10.84.234/development/), dev.txt ve j.txt adında iki dosya olduğunu göreceksiniz. Bu dosyaları incelemek, bir sonraki adımlarımız için önemli bilgiler sağlayacaktır.

dev.txt dosyası, K harfiyle imzalanmış bir not içeriyor. Bu not, sunucunun SMB (Samba) servisinin yapılandırıldığından bahsediyor. Bu, potansiyel bir saldırı vektörü olabilir. Notta ayrıca "struts" ve "Apache Tomcat" gibi terimler de geçiyor. Bu, makine üzerindeki port 8080'de çalışan Apache Tomcat'in bir zafiyeti olabileceğine işaret ediyor.

Press enter or click to view image in full size

j.txt dosyası ise K'den J'ye yazılmış bir not gibi görünüyor. Notta, K'nin /etc/shadow dosyasını denetlediği ve bir kullanıcının parolasının kolayca kırılabildiği belirtiliyor. Bu, zayıf parola kullanan bir kullanıcının olduğunu ve bu kullanıcının parolasını kırmak için deneme yapmamız gerektiğini gösteriyor.

Press enter or click to view image in full size

Kullanıcı Adlarını Bulma

Bu notlar ışığında, hedef makinedeki kullanıcı adlarını bulmak için bir SMB zafiyet arama aracı olan enum4linux’u kullanabiliriz. Bu araç, Samba servisindeki kullanıcıları, grupları ve paylaşım klasörlerini listelemek için tasarlanmıştır.

Terminalde aşağıdaki komutu çalıştırın:

enum4linux -a <HEDEF_IP_ADRESİ>

Press enter or click to view image in full size
  • enum4linux: Aracı başlatır.
  • -a: Tüm olası listeleme adımlarını (kullanıcı, grup, paylaşımlar vb.) otomatik olarak gerçekleştirir.

Tarama sonucunda, hedef makinede bulunan yerel kullanıcıların listesi karşınıza çıkacaktır:

  • kay
  • jan
  • ubuntu

Bu üç kullanıcı adını bir yere not alın. j.txt dosyasındaki notu hatırlayınca, jan kullanıcısının parolasının kolay kırılabileceği varsayımını yapabiliriz.

Zayıf Parolayı Kırma (Hydra ile Brute-Force)

Artık bir kullanıcı adımız (jan) ve bir de zayıf parola ipucumuz var. Parolayı kırmak için Hydra gibi bir kaba kuvvet (brute-force) aracı kullanabiliriz. Hydra, farklı protokoller (SSH, FTP, HTTP gibi) için parola denemeleri yapmakta oldukça etkilidir. SSH servisi açık olduğundan, SSH üzerinden deneme yapacağız.

Yaygın olarak kullanılan parolaların bulunduğu bir kelime listesi olan rockyou.txt dosyasını kullanacağız. Terminalde aşağıdaki komutu çalıştırın:

hydra -l jan -P /usr/share/wordlists/rockyou.txt ssh://<HEDEF_IP> -VV

Press enter or click to view image in full size
  • hydra: Hydra aracını başlatır.
  • -l jan: Parola denemesi yapılacak kullanıcı adını (jan) belirtir.
  • -p /usr/share/wordlists/rockyou.txt: Kullanılacak parola listesinin yolunu belirtir.
  • ssh://<HEDEF_IP_ADRESİ>: Kaba kuvvet saldırısının yapılacağı servisi (SSH) ve hedef adresi belirtir.
  • -VV: Ayrıntılı çıktılarla denenen her kullanıcı adı/parola kombinasyonunu gösterir.

Hydra bir süre çalıştıktan sonra, jan kullanıcısının parolasını bulacaktır. Çıktıda armando parolasının doğru olduğu gösteriliyor.

Press enter or click to view image in full size

Artık kullanıcı adımız (jan) ve şifremiz (armando) olduğuna göre, bir sonraki aşama olan sisteme giriş yapma ve yetki yükseltme işlemlerine geçebiliriz.

Sisteme SSH ile Bağlanma

Hydra ile bulduğumuz jan kullanıcısı ve armando parolası ile hedef sisteme SSH üzerinden bağlanabiliriz. Terminalde aşağıdaki komutu girin:

ssh jan@<HEDEF_IP_ADRESİ>

Parola istendiğinde, bulduğunuz armando şifresini girin. Doğru parolayı girdiğinizde, jan kullanıcısı olarak sisteme giriş yapmış olacaksınız.

Dosya Sistemi Keşfi

Artık jan kullanıcısı olarak sistemdesiniz. İlk olarak, yetki yükseltmek için ipuçları aramak üzere dosya sistemini keşfetmeye başlayalım. ls ve ls -la komutlarını kullanarak mevcut dizin ve dosyaları kontrol edin.

  • cd .. komutuyla bir üst dizine (root dizinine) gidin.
  • ls komutuyla /home dizininin içeriğini listeleyin. Gördüğünüz gibi, sistemde jankay ve ubuntu adında kullanıcı dizinleri bulunuyor.
  • cd kay komutuyla kay kullanıcısının dizinine geçmeye çalışın. Ancak Permission denied (İzin reddedildi) hatası alacaksınız. Bu durum normaldir, çünkü başka bir kullanıcının dizinine doğrudan erişim izniniz yoktur.

Fakat SSH bağlantınız devam ettiği için jan kullanıcısı olarak kendi dizininizde ls -la komutunu kullandığınızda .ssh adında gizli bir dizin olduğunu göreceksiniz. Bu dizin genellikle SSH anahtarlarını barındırır ve yetki yükseltme için bir yol sağlayabilir.

SSH Özel Anahtarı Bulma

jan dizinindeki .ssh klasörüne girin ve ls -la komutuyla içeriğini kontrol edin. Burada id_rsa ve authorized_keys adında dosyalar olduğunu göreceksiniz. id_rsa, SSH özel anahtarıdır ve genellikle parolayla korunur. Bu anahtar, başka bir kullanıcıya veya sisteme parola girmeden bağlanmak için kullanılabilir.

  • cat id_rsa komutuyla id_rsa dosyasının içeriğini görüntüleyin. Dosya -----BEGIN RSA PRIVATE KEY----- ile başlayıp -----END RSA PRIVATE KEY----- ile bitiyorsa, bu bir özel anahtardır.
  • ENCRYPTED kelimesini görüyorsanız, bu anahtarın bir parola (passphrase) ile korunduğu anlamına gelir.

Bu anahtarı kendi makinemize kopyalamalı ve parolasını kırmalıyız. nano veya vim gibi bir metin düzenleyici kullanarak dosyanın tüm içeriğini kopyalayın ve kendi Kali makinenizde id_rsa adıyla bir dosyaya yapıştırın.

Press enter or click to view image in full size

SSH Özel Anahtar Parolasını Kırma

Anahtarın parolasını kırmak için ssh2john ve john araçlarını kullanacağız.

  • İlk olarak, SSH anahtarını john aracının anlayacağı bir formata dönüştürmek için ssh2john aracını kullanın:

ssh2john id_rsa > john.txt

  • Bu komut, id_rsa dosyasındaki şifreli anahtarı alıp john.txt dosyasına John the Ripper'ın okuyabileceği bir formatta yazar.
  • Şimdi john aracını kullanarak parolayı kırmaya çalışın. Yine rockyou.txt kelime listesini kullanacağız:

john --wordlist=/usr/share/wordlists/rockyou.txt john.txt

Press enter or click to view image in full size
  • john bir süre çalıştıktan sonra, id_rsa anahtarının parolasını bulacaktır. Ekran görüntüsünde parolanın "beeswax" olduğu görülüyor.

kay Kullanıcısına Erişme

Artık kay kullanıcısının SSH özel anahtarının parolasını bildiğimize göre, bu anahtarı kullanarak kay hesabına SSH ile bağlanabiliriz.

ssh -i id_rsa kay@<HEDEF_IP_ADRESİ>

  • -i: Kullanılacak özel anahtar dosyasını belirtir (id_rsa).

Sistem sizden anahtarın parolasını (passphrase) isteyecektir. Bulduğunuz “beeswax” parolasını girin. Giriş başarılı olduğunda, jan yerine kay kullanıcısı olarak sisteme giriş yapmış olacaksınız.

Press enter or click to view image in full size

kay kullanıcısının dizininde pass.bak adında bir dosya olduğunu göreceksiniz. Bu dosyayı cat komutuyla okuyabilirsiniz. Dosyanın içinde "heresareallystrongpasswordthatfollowsthepasswordpolicy$$" yazan bir string bulunur. Bu, makinedeki ilk bayrağın cevabı olabilir.

Yetki Yükseltme ve Son Bayrak

Press enter or click to view image in full size
Press enter or click to view image in full size

kay kullanıcısı olarak sisteme giriş yaptığınızda, dizininde pass.bak adında bir dosya buldunuz ve içeriğini okudunuz. Dosyanın içindeki string olan heresareallystrongpasswordthatfollowsthepasswordpolicy$$ aslında makinenin son bayrağıdır. Bu string'i TryHackMe'deki ilgili soru kutucuğuna yapıştırdığınızda cevabınızın doğru olduğunu göreceksiniz.

Bu string, hem yetki yükseltme için kullanılabilecek bir parola hem de doğrudan cevabın kendisi olabilir. Bu senaryoda yetki yükseltme, genellikle sudo veya SUID binary'leri gibi yöntemlerle gerçekleştirilir. Ancak bu CTF'in amacına ulaşmak için bulduğunuz string yeterli.

Başarılı Tamamlanma

Press enter or click to view image in full size

Soruyu doğru cevapladığınızda, TryHackMe size bu CTF’i başarıyla tamamladığınızı bildirecektir. Bu, temel seviyede bir sızma testi (pentest) sürecinin tüm adımlarını başarıyla uyguladığınız anlamına gelir:

  • Keşif (Reconnaissance): Nmap ve Dirb araçlarını kullanarak hedef makine hakkındaki bilgileri topladınız.
  • Yetki Kazanma (Gaining Access): SMB servisindeki kullanıcıları ve web sitesindeki geliştirici notlarını kullanarak bir kullanıcı adı (jan) buldunuz ve Hydra ile zayıf parolasını (armando) kırdınız.
  • Yetki Yükseltme (Privilege Escalation): jan kullanıcısı olarak sisteme girdiniz, gizli bir SSH özel anahtarı buldunuz, bu anahtarın parolasını (beeswax) kırdınız ve bu sayede kay kullanıcısına erişim sağladınız.
  • Bayrak Bulma (Flag Capturing): kay kullanıcısının dizinindeki bir dosyada son bayrağı buldunuz ve CTF'i tamamladınız.

Bu adımlar, gerçek dünyadaki sızma testi çalışmalarının temel mantığını yansıtır. Her adım, bir sonraki adımı mümkün kılan kritik bilgileri ortaya çıkarmıştır.