5 Şubat 2021 Cuma

WFUZZ İLE Fuzzing işlemi





Fuzzing

 

Fuzzing, temel olarak otomatik bir şekilde hatalı bir şekilde biçimlendirilmiş veri enjeksiyonu kullanarak uygulama hatalarını bulmayı içeren bir Black Box test tekniğidir. Fuzzing, test yapılan uygulamanın arka planında ki algoritma yapısını bilmediğinden dolayı gönderilen verilen uygulamada oluşturduğu etki ve sonuçları analizine dayandığından, uygulama test tekniklerinden black-box kategorisine girmektedir. Fuzzing’e  bazen Fuzz Test te denilmektedir. Biri sistemde beklenmedik bir değer girildiğinde sistem çökebilir veya klasik güvenlik sorunlarına yol açabilir (buffer overflows, DoS, XSS … ).
Fuzzing sistemde beklenmedik, yarı geçerli, sıralı verilerin gönderimi gibi yöntemlerle sistemin iç yapısındaki hataları bulmayı hedefleyen bir test etme yöntemidir. Fuzzing çalışma yöntemi sistemin beklediği geçerli bir cevabın bütünlüğü bozmadan beklenmedik veriler ile değiştirilmesi sonucu sistemin çökmesini sağlamaktır. Fuzz testi bir programın genel, güvenliği, kalitesi hakkında tam bir bilgi sağlayamaz. 

Fuzzing testi web uygulamaların zafiyet tespitinde, yazılım geliştirme ve test süreçlerinde, tersine mühendislik işlemlerinde kullanılmaktadır.

Bu yazımızda web uygulamaları ile ilgili değineceğiz. Web uygulamasının zafiyetlerini tespit etmek için fuzzer araçları 2 farklı yöntem kullanmaktadır;

Recurisice Fuzzing (Özyinelemeli): Bu teknik ile ayarlanmış alfabenin tüm olası kombinasyonlarını yineleyerek bir isteğin bir bölümünü belirleme işlemi olarak tanımlanabilir.  Yenilenerek gönderilen her verinin dönen sonucu incelenir.

Replacive Fuzzing (Değiştirmek):  Bu teknikte ise ayarlanan değer değiştirilerek gönderilmesi ile zafiyet tespit edebilme işlemi olarak tanımlanabilir. Parametreye verilen değerler sürekli olarak değiştirilerek dönen sonuçlar incelenir.

 

 

Web Fuzzer Araçları

Fuzzing sağlayan programlara fuzzer denilmektedir. Fuzzer programları rastgele verileri otomatik bir şekilde enjekte eden ve hataları tespit eden bir programdır.

Örnek Fuzzer programları;

·        WebSlayer

·        Wfuzz

·        FM-FSF

·        WebScrab

·        Spike Proxy

·        Codemonicon Defensics

·        Burp Suite

·        AppScan

·        Wapiti

·        ASP Auditor

 

Fuzzing Avantajları

·        Fuzz testi, yazılım güvenlik testini iyileştirir.

·        Fuzz testinde tespit edilene hatlar ciddi zararlar verebilir bu test esnasında bu zafiyetler tespit edilebilir.

 

Fuzzingin Eksik Kaldığı Durumlar

·        Tek başına genel bir güvenlik zafiyet haritasını çıkaramaz.

·        Etkili performans gösterebilmesi için zaman gerekmektedir.

 

 

 

WFUZZ

 

WFUZZ, hedef web uygulamasında zafiyet, dizin taramaya yardımcı olan bir araçtır. WFUZZ, web uygulaması güvenlik açıklarını bularak ve istismar ederek web uygulamalarını güvence altına almamıza yardımcı olur.  Kali Linux işletim sisteminde otomatik gelmektedir.

 

WFUZZ özellikleri;

·        HTML çıktısı almayı sağlar

·        Renkli çıktı almayı sağlar.

·        Proxy desteği sağlar.

·        SOCK desteği sağlar.

 

 

Kullanımı

 

wfuzz --h

parametresi ile wfuzz hakkında bilgi ve kullanılan parametreleri görüyoruz.

 

 

 

 


sudo wfuzz -c -z file,/usr/share/wordlists/dirb/big.txt --hw 57 --hc 404  http://10.10.171.205/FUZZ

 

Komutuna bakacak olursak;

-w parameteresi ile wordlistimizi gösterdik, -c parametresi ile renkli bir çıktı vermesini istedik, --hc 404 ile 404 kodların gösterilmesinin engellemesini istedik, --hl 57 uzunluğunu belirledik.

 

 

 

 

En çok kullanılan parametreleri; 

-c

çıktıyı renklendirir.

-z

Wordlist dosya konumu belirtmemizi sağlar

--hc

gizlenecek statü kodunu belirler

 

--hw

Gizlenecek olan content-length’i belirtiriz.

--hh

Belirli sayıda karakter göstermemizi sağlar.

--hl

 

Gizlenecek olan satır sayısını belirtmemizi sağlar.

 

 

 

 

 

 

 


 

 

Kaynaklar:

 

 

https://owasp.org/www-community/Fuzzing

https://www.360logica.com/blog/some-fuzzing-tools-for-web-application-projects/

https://medium.com/swlh/fuzzing-web-applications-e786ca4c4bb6

https://github.com/xmendez/wfuzz

https://wfuzz.readthedocs.io/en/latest/ 











29 Ocak 2021 Cuma

Try Hack Me Overpass Çözümü


 


Try Hack Me ‘de bulunan Overpass odasının çözümünü anlatacağım.                     

 


(Bir grup Bilgisayar Bilimleri öğrencisi parola yöneticisi yapmaya çalıştığında ne olur?

Açıkçası mükemmel bir ticari başarı!

Bu kutuda gizli bir TryHackMe abonelik kodu var. Onu bulup etkinleştiren ilk kişi bir aylık ücretsiz abonelik kazanacak! Zaten abonesiyseniz, kodu neden bir arkadaşınıza vermiyorsunuz?

GÜNCELLEME: Kod artık talep edildi.

Makine 2020/09/25 tarihinde biraz değiştirildi. Bu yalnızca makinenin performansını artırmak içindi. Süreci etkilemez.)

 

Burada bize odanın hikayesinde bahsetmiş daha sonra root.txt ve user.txt flag değerlerini bizden istemektedir. Hedef makineyi deploy edip başlıyoruz.

İlk olarak hedef makineyi tanımak için nmap taramasını gerçekleştirdim.

sudo nmap -A 10.10.188.59

ssh ve http portunun açık olduğunu öğrendim. Hemen internet tarayıcımdan hedef ip adresine giriş gerçekleştirdim ve karşıma;


Burada overpass uygulaması hakkında bilgi veriyor.

web sitesini incelemeden önce gobuster taramasını da gerçekleştiriyorum.

gizli dizinleri keşif ettik.

Web sitesi üzerinde araştırma yapıyorum ilk olarak sayfa kaynağına bakarak elde edebileceğim ipuçlarına bakıyorum.


Evet doğru, sadece Romalılar kullandığı için askeri sınıf yapmaz, bunu değiştir? böyle bir ipucu ile karşılaşıyoruz pek bir şey çıkarımda bulunmazsam da yanıma not alıp devam ediyorum :)

/main.css kaynak kodlarını inceledik işimize yarayacak pek bir şey bulamadık. 

/aboutus dizinine baktık bu arada inceleme yaptık pek bir şey elde edemedik. 

/admin dizinine baktım admin giriş paneline benziyordu sqli zafiyeti denedim en çok kullanılan admin- admin, admin- password denemelerim boşa çıkt :)

 




sayfanın kaynak koduna baktım.








farklı javascritplere ulaştım

main.js inceleyince;



login.js;



Burada owasp top 10 da bulunan Broken Authentication zafiyetini görüyorum. Broken Authentication zafiyeti kimlik doğrulamasında fonksiyonların yanlış uygulaması spunucunda ortaya çıkar burada session token girdiğimiz anda bizi içeri almasını için ayarlanmış cookie editör eklentisi ile cookie değeri girmeye çalışacağım (cookie editör firefox, chrome gibi tarayıcışarda cookie eklememiz değiştirmemize yardımcı olan bir eklentidir.)



kayıt edip sayfayı yeniliyorum.



(Overpass Yöneticisi alanına hoş geldiniz

Windows, Linux, MacOS ve daha fazlasını destekleyen güvenli bir şifre yöneticisi

Sürekli şifreni unuttuğuna göre James, senin için SSH anahtarları ayarladım.

 

Bunun şifresini unutursanız, kendiniz kırın. Senin için bir şeyler tamir etmekten bıktım.

Ayrıca, bu "Askeri Sınıf" şifreleme hakkında gerçekten konuşmamız gerekiyor. - Paradoks)

görüldüğü gibi  bize James kullanıcısı adına bir RSA keyi vermektedir bunu kullanrak ssh bağlantısını sağlayabiliriz.

elde ettiğimiz key değerini nano editörü sayesinde içerisinde kaydediyoruz.




ssh bağlantısını gerçekleştiriyoruz.


başarılı bağlantı gerçekleştiremedik rsa_id parolasını istiyor ve bunun hakkında bir bilgimiz yok john yardımıyla bulmaya çalışacağız.

ssh2john yarıdımyla jhın aracının ssh keyini bulabilmesi için uygun dosyaya dönüştürüyoruz.


 

daha sonra john yardımıyla bulmaya çalışıyoruz.



james13 olarak parolayı bulduk hemen ssh bağlantımızı gerçekleştiriyoruz.




başarılı bir şekilde bağlantımızı gerçekleştirdik.

burada dizinlere gezinip user.txt okuyabiliriz.

user.txt flag değerimizi girdik.

biraz dizinlerde gezinmeye çalışıyoruz vermiş olduğu ipucuları bulmaya çalışıyoruz.



görüldüğü gibi kullanıcı kısıtlı haklara sahip. Şimdi root yetkisine yükselip root dizinine erişip root.txt dosyasını okumalıyız.

burada bize sudo parolasını sormaktadır maalesef yine bilmiyoruz :)

cat /etc/crontab

komutunu çalıştırarak Curl, root tarafından kullanıldığından, bir şekilde onu kullanırsak, root erişimini elde edebiliriz. curl tarafından bağlantıyı sağlayabilmek için /etc/hosts altında kendi makinemizin ip adresini yazmalıyız.

 




host dosyanı ayarladıktan sonra kali makinemde bağlantıyı sağlayabilmek için /downloads/src/buildscript.sh altına reverse Shell oluşturuyorum.




yazmış olduğumuz revers Shell çalıştırma yetkisini veriyoruz.

Ardından http sunucumuzu 80 numaralı bağlantı noktasından başlatır ve bir bağlantının olmasını bekliyoruz



şimdi erişimi elde ettiğim makineye gelip yazmış olduğum bash scriotine bağlantı gerçekleştiriyorum.



bash üzerinde komut çalıştırabiliyorum whoami komutuyla root olduğumu görebiliyorum. root dizinine erişip root.txt okuyabiliyoruz.