← Back to list

VulnHub : ICA: 1 CTF Çözümü

Bu yazımda sizlerle VulnHub üzerinde bulunan Empire Breakout makinesini çözeceğim.

Azat Dicle · 2026-01-12 16:34 · 1 claps · 4.1 min read
#ica #ctf-writeup #vulnhub #vulnhub-walkthrough #ctf-walkthrough
Open on Medium ↗
Wiki topics: HIS · History

VulnHub : ICA: 1 CTF Çözümü

Bu yazımda sizlerle VulnHub üzerinde bulunan Empire Breakout makinesini çözeceğim.

Makineye başlamadan önce bir not veriliyor. Bu not şu şekildedir:

“İstihbarat ağımızdan alınan bilgiye göre ICA gizli bir proje üzerinde çalışıyor. Projenin ne olduğunu bulmamız gerekiyor. Erişim bilgilerini aldıktan sonra bunları bize gönderin. Daha sonra sisteme erişim için bir arka kapı yerleştireceğiz. Siz sadece projenin ne olduğuna odaklanın. Muhtemelen birkaç güvenlik katmanından geçmeniz gerekecektir. Teşkilatın bu görevi başarıyla tamamlayacağınıza güveni tam. İyi şanslar Ajan!”

Notumuzu aldıktan sonra makineye başlıyoruz. Makineyi başlattığımızda bazı ipuçları elde ediyoruz.

Makinenin Debian 11 olduğunu, üzerinde çalışan firewall’ın adını ve sürümünü, son olarak da makinenin IP adresini öğreniyoruz. Makinenin IP adresini öğrendikten sonra Nmap taraması yapıyorum.

nmap -p- -sC -sV -oN Ica 192.168.1.111

Port taraması sonucu 22, 80, 3306 ve 33060 portlarının açık olduğunu görüyoruz. İlk olarak 80 numaralı porta gidiyorum.

**http://192.168.1.111:80**

80 numaralı portta qdPM çalışıyor. qdPM, PHP ve MySQL tabanlı açık kaynaklı bir proje yönetim sistemidir. En altta 9.2 sürümünde çalıştığını görüyorum ve SearchSploit ile bir zafiyet olup olmadığına bakıyorum.

searchsploit qdPM 9.2

İki adet bilgi buluyorum. Bunlardan biri XSS, şimdilik işime yaramıyor. İkincisi ise şifreyi açığa çıkarmaya yönelik ve bize lazım olan zafiyet bu. Password Exposure dosyasını klasörüme atıyorum.

searchsploit -m php/webapps/50176.txt

TXT dosyası içerisinde veritabanı parolasının bir YML dosyasında saklandığı belirtiliyor. YML dosyasına erişmek için http://<ip-adresi>/core/config/databases.yml adresine giderek dosyayı indirebiliyoruz.

Zafiyeti kullanmak için web sitesine gidip core/config/databases.yml yoluna erişiyoruz.

**http://192.168.1.111/core/config/databases.yml**

database.yml dosyası içerisinden MySQL kullanıcı adı ve şifresini alıyoruz. Bu bilgilerle uzak makineye MySQL üzerinden giriş yapıyoruz.

mysql -h 192.168.1.111 -u qdpmadmin -p — skip-ssl

MySQL içerisinde veritabanlarını listelediğimizde iki adet veritabanı dikkatimi çekiyor: biri qdpm, diğeri ise staff (personel).

show databases;

Burada personel olan veritabanını USE komutu ile seçip içeriğine bakıyorum.

İçerisinde department, login ve user olmak üzere üç adet tablo bulunuyor. Bunların hepsini inceliyorum.

Buradaki kullanıcılardan biri SSH ile giriş yapmamıza yardımcı olabilir. Öncelikle password kısmındaki Base64 verilerini çözüp password.txt olarak kaydediyorum. Daha sonra kullanıcı adlarını da user.txt olarak kaydediyorum.

Kullanıcı adlarımız ve şifrelerimiz hazır. Geriye kalan tek şey, bu bilgileri Hydra ile deneyerek geçerli bir kullanıcı adı–şifre kombinasyonu bulmak.

hydra -L user.txt -P password.txt ssh://192.168.1.111

Travis ve Dexter kullanıcılarının giriş şifrelerini buluyoruz. Önce travis kullanıcısı ile giriş yapıyorum ve user.txt bayrağını alarak ilk flag’i elde ediyorum.

ssh travis@192.168.1.111

Travis kullanıcısı içerisinde pek bir şey bulamıyorum, bu yüzden dexter kullanıcısı ile giriş yapıyorum.

ssh dexter@192.168.1.111

Dexter kullanıcısı içerisinde bir not bulunuyor. Bu notta, sistemde bir açık olduğu ve bildiğim kadarıyla çalıştırılabilir dosyaların içeriğinin kısmen görüntülenebildiği belirtiliyor. Başta brifingde bahsedilen backdoor olayı da bu oluyor.

Yetki yükseltmek için find komutu ile hangi dosyaların SUID yetkisine sahip olduğunu kontrol ediyorum.

find / -perm -u=s -type f 2>/dev/null

Burada ilgimi çeken dosya /opt/get_access oluyor. Öncelikle bu dosyanın ne olduğunu inceliyorum.

file /opt/get_access

Bu dosyanın bir ELF dosyası olduğunu görüyorum. ELF dosyaları Linux’ta kullanılır. Ardından ELF dosyasını çalıştırıyorum.

/opt/get_access

Bu, Linux açılışındaki banner çıktısıdır. Daha fazla bilgi edinmek için strings komutu ile içeriğine göz atıyorum.

strings /opt/get_access

Burada ilgi çekici bir nokta bulunuyor. Sistem, cat komutu ile /root/system.info dosyasını okumaya çalışıyor ancak cat binary’sinin yolu belirtilmemiş. Buradaki açık PATH enjeksiyonu oluyor.

Root olmak için /tmp dizinine giriyorum. echo ile bir bash oluşturuyorum, chmod ile çalıştırma yetkisi veriyorum ve son olarak PATH değişkenine ekliyorum.

cd /tmp

echo -e ‘#!/bin/bash\n/bin/bash -p’ > cat

chmod +x cat

export PATH=/tmp:$PATH

Son olarak /opt/get_access dosyasını çalıştırarak root yetkisi elde ediyorum.

Artık root yetkisine sahibiz. Son root bayrağını da alarak makineyi tamamlıyoruz.

Root bayrağını elde ettik ve makineyi tamamladık. Makine kolaydı; umarım bu yazı sizlere yardımcı olmuştur. Ben çözerken oldukça eğlendim.


메타데이터
post_id
2ddd8616f73b
slug
vulnhub-ica-1-ctf-çözümü-2ddd8616f73b
url
https://medium.com/@azatdicle/vulnhub-ica-1-ctf-%C3%A7%C3%B6z%C3%BCm%C3%BC-2ddd8616f73b
canonical_url
https://medium.com/@azatdicle/vulnhub-ica-1-ctf-%C3%A7%C3%B6z%C3%BCm%C3%BC-2ddd8616f73b
author_url
https://medium.com/@azatdicle
status
ok
fetched_at
2026-06-12 22:02:08