29 Ağustos 2016 Pazartesi

BasitBlog Güvenlik Testi

08:29 Posted by Unknown



Selamlar,

Burayı üzün süre önce unutmuştum amma ve lakin LYK2016'da Ömer in 'bro senin blog neydi' demesiyle irkildim. Çünkü blogum yoktu! Bende burayı hatırlayıp verdim hızlıca. Bugün de domaini alıp blogu artık .com vs tarzı bir şeye mi dönüştürsem dedim. Domaini vs sonraya bırakıp blog scriptlerine bakmaya başladım. Wordpress, Blogger artık elinizi sallasanız denk geldiğiniz scriptler olduğundan Github gibi yerlerde aradım 1-2 şey ve bir Türk arkadaşın yazdığı scripte denk geldim. Scripti 'basitblog' olarak isimlendirmiş. Bakmak isteyenler aha da buraya tıklayarak bakabilirler nasıl bir şey olduğuna.

Bende locale alıp biraz üzerinde alıştırma yapmak istedim. Kaynak kod incelemesi vs değil bu ancak zafiyetlerin kaynaklandığı kod parçalarını da koyacağım yazıya.

Öncelikle kurulum kısmına Github wikisinden ulaşabilirsiniz. Biz direkt kurup çalıştırdığımızı varsayalım. Karşımıza aşağıdaki gibi bir ekran çıkıyor:

Yönetim Anasayfası

Şimdi burada ilk Türk hackerlarının en sevdiği kısım olan arama kısmını kurcalamaya başladım tabiki. Herhangi bir arama yaptığımızda yazdığımız arama kelimesi 'hizliara' değişkeni ile bize yansıtılıyor. Burada yaptığım ilk şey XSS denemek oldu. İlk aradığım şey 'murat' kelimesiydi ve test amaçlı idi ardından 'murat'"><svg/onload=prompt(1)>' olarak aradım ve işte alert karşımdaydı!

XSS Alert

 Zafiyete neden olan kod parçacığı da şu şekilde:

GET değişkeninde filtreleme yok



 Gördüğümüz gibi bir basit bir Reflected XSS zafiyeti burada bulunmakta ancak authenticated olduğu için tehlike arz etmekte.

Şimdi bir diğer XSS açığımıza geçelim.

Diğer XSS açığımız yönetim panelinin giriş kısmında. Burada ilk önce kaynak kodu gösterelim.

Aşağıda görebileceğiniz gibi 'eposta' değişkeninde herhangi bir filtreleme yok. Burada giriş sayfasında eposta değişkeni kısmına yazacağımız herhangi bir xss payloadı xss alerti almamız için yeterlidir.

Korunmasız 'eposta' değişkeni


 Şimdi yukarıda kullandığımız payloadı kullanarak alert almaya çalışalım.

Giriş kısmında aldığımız XSS alert

 Ayrıca bu kod parçacığında dikkat çeken bir diğer kısım SQL sorgusu. POST edilen 'eposta' değişkeni yine korunmasız ve burada Blind SQLi açığı mevcut.

Blind SQLi olan kısım


 Burada bir eposta değişkenine polyglot olarak tabir edilen SQL Injectionu tespit etmek için kullanılan payloadı burada deneyeceğiz.

Payloadımız:

if(now()=sysdate(),sleep(6),0)/*'XOR(if(now()=sysdate(),sleep(6),0))OR'"XOR(if(now()=sysdate(),sleep(6),0))OR"*/

 Bu payloadı kullandığımızda sayfa 6 saniye geç yüklenecek ve biz burada SQLi bugu olduğunu anlayacağız.

Bu incelememiz bu kadar.

Feedbackleri yorumları bekliyorum.

Kolay gelsin!