Merhabalar

Bu ilk walkthrough yazımda oldukça eski olan fakat benim daha geçenlerde keşfettiğim hackthis.co.uk sitesindeki bazi soruları inceleyecegiz. Soru zorluklarının kademeli olarak arttığı bu site yeni başlayanlar, bir temel oluşturmak ve pratik yapmak isteyenler için gayet ideal.

Main level soruları genel olarak sitelerin kaynak kodlarından doğabilecek zaafiyetleri ve sitede saklanmış bazi gizli dizinler üzerindeki zaafiyetleri kavratmayı amaçlamış.

Ilk soruyla başlayalım

Main level 1

Amacımız buraya giriş yapmak. Ilk cümlelerinde belirttiğim gibi yeterince güvenlik önlemi alınmamış ve/veya bazı ufak ayrıntıların gözden kaçırıldığı web sitelerinin kaynak kodlarında çok kritik bilgiler bulunabiliyor. O yüzden ctrl + u kombinasyonu ile kaynak koda bir göz atalım;

-(Kaynak kod = Herhangi bir yazılımın işlenip makina diline çevrilmeden önce insanların okuyup üzerinde çalışabildiği programlama diliyle yazılmış hali.Websiteleri icin , php,html,javascript ...)

Ctrl + F kombinasyonu ile çok temel bir şekilde password keywordunu arattım ve karşımıza çıkan ilk şey bir kullanıcı ismi ve parola bilgisi oldu username = in , password=out. Tabiki bu şuan gözünüze çok basit gelmiş olabilir ama gerçek hayatta da böyle durumlarla karışılaşılabiliyor. Source kodunun önemini bir nebze daha anladığımıza göre çözümlere devam edelim.

Main level 2

Artık source kodun önemini biraz daha kavradığımıza göre , bu bölüm içinde source kodumuza bir göz gezdirelim.

Ilk bolumden farkli olarak bu sefer password ve username bilgisini gözden kaçırma ihtimaliniz biraz daha yüksek. Hem sayfanın en altlarında bulunuyor hem de yanında yazını tipini rengini belirleyen bir kaç kod ile iç içe verilmiş. Burdaki resu ve ssap kelimelerini dikkatli bakmazsanız gözden kaçırabilirsiniz. Tabiki her zaman bu durum böyle olmayacak fakat bunlar temel durumlar ve dikkat edilmeli.

Main level 3

Bu sorumuzda , önceki ilk iki sorudan farklı olarak bir JavaScript zaafiyeti var. JavaScript komutları düzgün kullanılmaz ve gizlenilmez ise tıpkı source kodda olduğu gibi oldukça kritik bilgileri ifşa edebilir. Burdaki javascript kodunu incelemek için source koda bakmak yerine , username boşluğuna gelip sağ tıklayarak inspect element(öğeyi incele) özelliğini kullanıyorum. Bu bir nebze olsun daha pratik.

-Inspect Element : "ctrl + u" kombinasyonuna ek olarak , websitesinin source kodunu görebileceğiniz ve değişiklikler yapabileceğiniz bir tool.

Ve javascript kodunu incelediğimizde bir if else statement ti karşımıza çıkıyor.Bu statementı anlamak için herhangi bir programlama bilgisine gerek bile yok.

-Eğer if statement’inin sonucu “1(true)” ise altında belirtilen işlemi yap, eğer “0(false)” ise “else” kısmının altında belirtilen işlemini yap.

Burdaki statement’a göre eğer username == Heaven ve password == Hell koşulu sağlanırsa giriş kabul edilir.

Main level 4

Artık biraz pratik yaptığımıza ve dikkatimizi topladığımıza göre, hadi direk source koddan bir bilgi elde edebiliyor muyuz bu soru için inceleyelim.

)

Source kodda levelimizin olduğu bölmeye indiğimiz zaman ilk başta herhangi bir password yada username bilgisi görünmüyor. Eğer dikkatli bakarsak ../../extras/ssap.xml detayındaki anormalliği görebiliyoruz. Bu soru sitedeki kritik bilgi içeren gizli dizinlerle ilgili. Direkt olarak uzantıyı kopyalayıp linke yapıştırdığımızda bizim için gerekli olan username ve password bilgisini ele geçirmiş oluyoruz.

Main level 5

Soruya girer girmez bizi bir prompt pop-up karşılıyor. Prompt javascript ile yazılmış kullanıcıdan bilgi alan bir pop’up. Yine bizden bir password bilgisi bekleniyor önceki sorulardan da geliştirdiğimiz bilgi birikimiyle hadi source koda bir göz atalım ;

Ve işte prompt komutu ve birde if statementi.

Önceki sorudada bahsettiğimiz gibi burdada passwordun 9286jas ya eşit olması durumunda bizim bölümü tamamlamamızı sağlıyor.

Main level 6

Bu soruda bizden siteye Ronald olarak giriş yapmamızı istiyor ama seçeneklerde Ronald yok. Şimdi bizim yapmamız gereken tek şey eğer source kodda gizlenmediyse bu isimlerden birini Ronald ile değiştirmek ve/veya aynı kodu Ronald içinde eklemek. Böyle değiştirme işlemleri için ctrl+u yapıp source koda bakmak yerine inspect element(öğeyi incele) özelliğini kullanıyoruz.

User seçimiyle ilgili kod açık şekilde görülüyor. Şimdi tek yapmamız gereken şey userlardan birini değiştirmek;

Değiştirmek için koda tıklıyorum ve ardından herhangi bir userin üzerine gelip F2 tuşuna basarak ismi tekrar düzenliyorum.

Ve artık Ronald diye bir user var . inspect element(öğeyi incele) özelliği client side çalıştığı için sayfayı yenilediğinizde yaptığınız değişiklikler silinecek ve dolayısıyla Ronald seçeneğide kaybolucak.

-Client Side : Web tarayıcıları üzerinde çalışan istemci taraflı programlamalar.

Main level 7

Bu bölüm diğerlerine nazaran biraz daha deneyim isteyen bir bölüm ve beni en çok uğraştıran bölüm. Source kodunda herhangi bir bilgi bulamadım , hatta dirbuster(directory fuzzing) programi ile gizli dizin bile aradım ama yine sonuç alamadım (aslında sonuç alamama sebebim dizini yanlış uzantıya göre aratmamdı. “/level/mains/7” yerine direk olarak hackthis.co.uk/ olarak aratsam bulurdum.)

-( “Directory Fuzzing = Bir web sitesindeki gizli dizinleri elle ve/veya bir wordlist ve script ile deneme yanılma (brute force) yöntemiyle bulmak ve gizli dizinleri ortaya çıkarmak icin kullanılan bir yöntem. Örnek olarak = Dirbuster.” )

Ve bir kaç saat sonra boş boş film izlerken kafama bir dosya dank etti Robots.txt !

-“Robots.txt” arama motoru tarayıcılarının web sitelerinin erişilmesi istenmeyen yerlerini gösteren ve sitenin “kök dizininde” bulunan bir dosyadır. Normal şartlarda bu dosyaya dışardan erişim engellidir ama çoğu durumda burdan kritik bilgiler elde edebilirsiniz.

Gördüğünüz üzere bu dosya sadece 7.soruyla alakali değil farkli bilgiler de barındırıyor. Benim gözüme çarpan ilk şey /levels/extras/userpass.txt oldu ve o dizine gittim. Ve gerekli username ve password burdan geldi.

Main level 8

Bu sorumuzda hintten yola çıkara yine ilk olarak bi source koda göz atıyoruz;

Ve yine açıkta kalmış bir gizli dizin gözümüze çarpıyor. Dizine gittiğimizde bizi encrypt edilmiş 2 satır bilgi karşılıyor;

Bunu uzun uzadıya aramak istemediğim için hint kısmına baktım ve hintte base16 da okumak daha basit gibi bir ifade vardı . Google’a binary to hexadecimal(base16) converter yazarak ilk siteye girdim;

Ilk satırı çevirdiğimde B00B ve ikinci satırı çevirdiğimde ise FEED değerleri geldi.Böylece sitedeki dizinlerin önemini bir kez daha görmüş olduk.

Main level 9

Bu soruda developerin kendine password erişimi için yazdığı kodu exploit edip passwordu almamız isteniyor;

Request details’e tıkadıkdan sonra gelen email gönderme formuna sağ tıklayıp inspect element(öğeyi incele) dediğimde developerin eklediği kodu açıkca görebiliyoruz.

Eğer valuedeki email adresini kendi emailimiz yaparsak şifre bize gelmiş olucak.

F2 ye basarak düzenleme bölmünü açıyorum ve emaili kendiminkiyle değiştiriyorum. Ve emailimi yazip submit diyorum;

Bu levelimizde burda bitmiş oluyor.

Main level 10

Ve main seviyesinin son bölmüne geldik.

Edindiğimiz bilgi birikimlerinden yola çıkarak yine önce sayfanın kaynak kodunu inceleyerek başlıyoruz. Fakat bu sefer ctrl + u yapmak yerine direkt olarak sağ tıklayıp öğeyi incele diyorum (tamamen şahsi isteğime bağli).

Ve yine bir gizli dizin ile karşılaşıyorum level10pass.txt. Dizine gittiğimide karşımıza 2 adet hash cıkıyor .

-Basit olarak Hash'i encrypt edilmiş bilgi olarak tanımlayabiliriz.

Google’a hash cracker yazarak çıkan ilk siteye giriyorum ve hash’lerı kırmaya çalışıyorum;

Tabiki hash kırma işlemini offline olarak yapan araçlarda mevcut ama ben bulabileceğinden emin olduğumdan dolayi online bakmayı tercih ettim ve göründüğü gibi bu sorumuzu da burda bitirmiş oluyoruz.Bunları yapmak oldukça eğlenceliydi umarım sizde okurken güzel vakit geçirmişsinizdir.


Engin Demirbilek