Conrado Sol
- 29 Nis 2026
- 82 Mesaj
Aktiflik
Seviye
Deneyim
Cümleten selamun aleyküm. Bugün Pickle Rick isimli CTF'in çözümünü öğreneceğiz. Rick isimli bu arkadaşımız kendisini tekrar turşuya dönüştürmüş ve işlemi tersine çeviremiyor. Biz burada Rick'in web sunucusunu exploit edip gereken üç malzemeyi bulacağız ve Rick'e tekrar insana dönüşmesinde yardım edeceğiz. Hemen işlemimize başlayalım.
Şimdi siteye bir bakalım. Tarayıcıda "http://-hedefIP-:80" adresine gittiğimizde;
Inspect Element ile kaynak koduna baktığımızda bir kullanıcı adı görüyoruz.
Sitedeki dosya ve dizinlere brute-force uygulamak:
Bir web uygulamasında dosya ve/veya dizin bulabilmek için GoBuster aracını kullanabiliriz. Nikto gibi bir araçta kullanılabilir ama bu da tüm işi halledebildiği için biz GoBuster'a odaklanacağaız,
Şimdi, terminalde şu komutu çalıştırıyoruz.
gobuster dir -u <Hedef_IP> -x php,html,css,js,txt,pdf -w <Wordlist>
Burada üç adet dosya görüyoruz: robots.txt, portal.php ve login.php. Şimdi bu dosyalara bir göz atalım ve bir şeyler bulup bulamayacağımızı görelim.
"robots.txt" dosyası genellikle web geliştiricilerin arama motorlarının bulmasını ve; mesela Google'da göstermesini istemediği dizinleri içerir. Bu dosyayı incelemek bize ilginç bilgiler verebilir:
"portal.php" sayfasına gittiğimiz zaman biri bir login formu karşılıyor. Elimizde bir kullanıcı adı var ama parola yok. Şimdi, robots.txt dosyasında bulduğumuz metni deneyelim ve bize parola hakkında herhangi bir ipucu verip vermediğini görmeye çalışalım.
Portal giriş sayfasını deneyelim. Elimizde R1ckRul3s diye bir kullanıcı adı var ve ayrıca robots.txt dosyasında Wubbalubbadubdub diye bir metin bulduk. Parola bu olabilir mi?
Kullanıcı adı: R1ckRul3s
Parola: Wubbalubbadubdub
Şimdi burada bizim için oldukça kullanışlı olacak bir şey görüyoruz: bir komut paneli. Eğer üstünde biraz test yaparsanız, bu komut panelinin temel olarak Linux komutlarını kabul ettiğini göreceksiniz, tıpkı bir web sh*ll gibi.
Bu arada, diğer sekmelere erişmeye çalışırsak, kendimizi daima şu şekilde görünen "denied.php" isimli bir sayfada bulacağız:
Şimdi komut paneline bir kaç Linux komutu yazalım ve neler yapabileceğimizi görelim:
Hmm, Sup3rPickl3Ingred.txt adında bir dosya. İncelemeye değer gibi duruyor.
nano komutunu kullanmamıza izin yok :/ Peki bu dosyanın içeriğine nasıl erişeceğiz? Bunun çeşitli yolları var. nano yerine:
*tac Sup3rS3cretPickl3Ingred.txt
*less Sup3rS3cretPickl3Ingred.txt
*strings Sup3rS3cretPickl3Ingred.txt
*grep . Sup3rS3cretPickl3Ingred.txt
*cp Sup3rS3cretPickl3Ingred.txt /dev/stdout
gibi komutlardan birini kullanabiliriz. Yani, yukarıdaki komutlardan birini kullanarak Rick'in ihtiyacı olan ilk malzemeyi bulabiliriz:
İpucu bize dosya sistemine bakmamızı söylüyor. Komut Paneline geri döndüğümüzde, onun çeşitli komutları kullanabileceğimiz Linux'taki normal bir terminal gibi davrandığını biliyoruz. Önemli dosyalar için kontrol edilmesi gereken en önemli dizinlerden biri, belirli kullanıcıları ve muhtemelen alt dizinlerindeki dosyaları ortaya çıkarmak için /home dizinidir. "ls /home" komutunu çalıştırırsak kullanıcılara ait iki dizin görürüz. "rick ve ubuntu".
"ubuntu" dizini Linux sisteminin kendisinde varsayılan bir dizin gibi duruyor, fakat "rick" dizini kesinlikle konfigüe edilmiş/yapılandırılmış bir kullanıcı. "/home/rick" dizininin içeriğini "ls /home/rick" komutu ile listelersek, bizim için ilginç bir dosya ortaya çıkarır.
İkinci malzemeyi bulduk. Dosya içeriğini okumak için "grep . /home/rick/second\ ingredients" konutunu kullanabiliriz. (ters slash işareti, dosya adındaki boşluk karakterinden dolayı gereklidir). Böylece, Rick'in ihtiyacı olan ikinci malzemeyi de bulmuş olduk.
Komut Paneline “whoami” komutunu yazarsak, şu anda “www-data” olduğumuzu ve bu kullanıcının “/root/” dizinine erişemediğini göreceğiz.
Kendimizi root yetkisine çıkarmak için, izleyebileceğimiz basit yolu anlatayım.
Komut Paneline "sudo -l" yazarsak “/etc/sudoers” dosyasından bir çıktı alacağız ve burada özellikle “www-data” kullanıcımızdan bahseden bir girdi var. Bu girdi temel olarak “www-data” kullanıcısının sistemdeki herhangi bir komutu hiçbir parola sağlamadan root kullanıcı olarak çalıştırabileceğini söylüyor.
Peki, herhangi bir komutu root parolası olmadan root olarak çalıştırabiliyorsak, neden her seferinde istediğimiz şeyi "sudo" ön ekiyle çalıştırmayalım? Biz de bunu yapacağız!
Böylece, "/root/" dizinindeki tüm içeriği "sudo" ön ekiyle listeleyerek, bir dosya listesi görebiliriz ki bunlardan birinin "3rd.txt" gibi tuhaf bir adı var.
İşte bu kadar! Bu 3. malzeme/bayrak, hadi "3rd.txt" dosyasının içinde ne yazdığını okuyalım:
Böylelikle CTFimiz tamamlandı ve Rick tekrar insan formuna geri döndü.
Görev (Turşu Rick)
Makinemizi başlattıktan sonra hedef ip adresimizi alıp ilk olarak bir nmap taraması yapıyoruz. Buna hem ana sayfa, hem de sunucu ve network de dahil.
Şimdi siteye bir bakalım. Tarayıcıda "http://-hedefIP-:80" adresine gittiğimizde;
Inspect Element ile kaynak koduna baktığımızda bir kullanıcı adı görüyoruz.
Sitedeki dosya ve dizinlere brute-force uygulamak:
Bir web uygulamasında dosya ve/veya dizin bulabilmek için GoBuster aracını kullanabiliriz. Nikto gibi bir araçta kullanılabilir ama bu da tüm işi halledebildiği için biz GoBuster'a odaklanacağaız,
Şimdi, terminalde şu komutu çalıştırıyoruz.
gobuster dir -u <Hedef_IP> -x php,html,css,js,txt,pdf -w <Wordlist>
Burada üç adet dosya görüyoruz: robots.txt, portal.php ve login.php. Şimdi bu dosyalara bir göz atalım ve bir şeyler bulup bulamayacağımızı görelim.
"robots.txt" dosyası genellikle web geliştiricilerin arama motorlarının bulmasını ve; mesela Google'da göstermesini istemediği dizinleri içerir. Bu dosyayı incelemek bize ilginç bilgiler verebilir:
"portal.php" sayfasına gittiğimiz zaman biri bir login formu karşılıyor. Elimizde bir kullanıcı adı var ama parola yok. Şimdi, robots.txt dosyasında bulduğumuz metni deneyelim ve bize parola hakkında herhangi bir ipucu verip vermediğini görmeye çalışalım.
Portal giriş sayfasını deneyelim. Elimizde R1ckRul3s diye bir kullanıcı adı var ve ayrıca robots.txt dosyasında Wubbalubbadubdub diye bir metin bulduk. Parola bu olabilir mi?
Kullanıcı adı: R1ckRul3s
Parola: Wubbalubbadubdub
Şimdi burada bizim için oldukça kullanışlı olacak bir şey görüyoruz: bir komut paneli. Eğer üstünde biraz test yaparsanız, bu komut panelinin temel olarak Linux komutlarını kabul ettiğini göreceksiniz, tıpkı bir web sh*ll gibi.
Bu arada, diğer sekmelere erişmeye çalışırsak, kendimizi daima şu şekilde görünen "denied.php" isimli bir sayfada bulacağız:
Şimdi komut paneline bir kaç Linux komutu yazalım ve neler yapabileceğimizi görelim:
İlk bayrağı/malzemeyi bulmak
İlk olarak, "ls -la" komutunu yazarak bulunduğumuz klasördeki tüm dosyaları görebiliriz.
Hmm, Sup3rPickl3Ingred.txt adında bir dosya. İncelemeye değer gibi duruyor.
nano komutunu kullanmamıza izin yok :/ Peki bu dosyanın içeriğine nasıl erişeceğiz? Bunun çeşitli yolları var. nano yerine:
*tac Sup3rS3cretPickl3Ingred.txt
*less Sup3rS3cretPickl3Ingred.txt
*strings Sup3rS3cretPickl3Ingred.txt
*grep . Sup3rS3cretPickl3Ingred.txt
*cp Sup3rS3cretPickl3Ingred.txt /dev/stdout
gibi komutlardan birini kullanabiliriz. Yani, yukarıdaki komutlardan birini kullanarak Rick'in ihtiyacı olan ilk malzemeyi bulabiliriz:
İkinci malzemeyi/bayrağı bulmak
Bulduğumuz dosyaların içinde bir de "clue.txt" adında bir dosya vardı, adından da anlaşılacağı gibi, bize diğer malzemeler hakkında ipucu verebilir. İlk malzememizi bulduğumuz gibi, bunda da aynı komutu uyguladığımızda bir ipucu elde ediyoruz.
İpucu bize dosya sistemine bakmamızı söylüyor. Komut Paneline geri döndüğümüzde, onun çeşitli komutları kullanabileceğimiz Linux'taki normal bir terminal gibi davrandığını biliyoruz. Önemli dosyalar için kontrol edilmesi gereken en önemli dizinlerden biri, belirli kullanıcıları ve muhtemelen alt dizinlerindeki dosyaları ortaya çıkarmak için /home dizinidir. "ls /home" komutunu çalıştırırsak kullanıcılara ait iki dizin görürüz. "rick ve ubuntu".
"ubuntu" dizini Linux sisteminin kendisinde varsayılan bir dizin gibi duruyor, fakat "rick" dizini kesinlikle konfigüe edilmiş/yapılandırılmış bir kullanıcı. "/home/rick" dizininin içeriğini "ls /home/rick" komutu ile listelersek, bizim için ilginç bir dosya ortaya çıkarır.
İkinci malzemeyi bulduk. Dosya içeriğini okumak için "grep . /home/rick/second\ ingredients" konutunu kullanabiliriz. (ters slash işareti, dosya adındaki boşluk karakterinden dolayı gereklidir). Böylece, Rick'in ihtiyacı olan ikinci malzemeyi de bulmuş olduk.
Üçüncü ve son malzemeyi/bayrağı bulmak
Artık bulunması gereken sadece bir malzeme kaldı, ama nerede olduğuyla alakalı hiç bir ipucu yok, bu nedenle bunun root kullanıcısı olmak için yetkilerimizi yükseltmemizi gerektirecek root flag olduğunu varsayabiliriz.Komut Paneline “whoami” komutunu yazarsak, şu anda “www-data” olduğumuzu ve bu kullanıcının “/root/” dizinine erişemediğini göreceğiz.
Kendimizi root yetkisine çıkarmak için, izleyebileceğimiz basit yolu anlatayım.
Komut Paneline "sudo -l" yazarsak “/etc/sudoers” dosyasından bir çıktı alacağız ve burada özellikle “www-data” kullanıcımızdan bahseden bir girdi var. Bu girdi temel olarak “www-data” kullanıcısının sistemdeki herhangi bir komutu hiçbir parola sağlamadan root kullanıcı olarak çalıştırabileceğini söylüyor.
Peki, herhangi bir komutu root parolası olmadan root olarak çalıştırabiliyorsak, neden her seferinde istediğimiz şeyi "sudo" ön ekiyle çalıştırmayalım? Biz de bunu yapacağız!
Böylece, "/root/" dizinindeki tüm içeriği "sudo" ön ekiyle listeleyerek, bir dosya listesi görebiliriz ki bunlardan birinin "3rd.txt" gibi tuhaf bir adı var.
İşte bu kadar! Bu 3. malzeme/bayrak, hadi "3rd.txt" dosyasının içinde ne yazdığını okuyalım:
Böylelikle CTFimiz tamamlandı ve Rick tekrar insan formuna geri döndü.
