IRCRehberi.Net- Türkiyenin En iyi IRC ve Genel Forum Sitesi  
 sohbet
Sohbet chat


💬 Bu Alana Reklam Ver ! 🎉 Hemen Katıl!
 
 
Seçenekler Stil
Alt 15 Mayıs 2022, 23:59   #1
Yönetim Bilişim Sistemleri Uzmanı
Koray - ait Kullanıcı Resmi (Avatar)

Exclamation SQL Injection Nedir ? Nasıl Yapılır?

SQL Injection Nedir ?

SQL Injection, veri odaklı uygulamalarda tabanda çalışan SQL dili özelliklerinden faydalanılarak standart uygulama ekranındaki ilgili alana ek SQL ifadelerini ekleyerek yapılan bir tür atak tekniğidir. SQL Injection, uygulama yazılımları içindeki güvenlik açığından faydalanır.

Aslında olay cok basit, web uygulaması yaparken bir cok işlemiçin kullanıcıdan alınan veri ile dinamik bir sql cümlesi oluşturulur. Örneğin: “SELECT * FROM TBL_PRODUCTS“; İşte bu şekilde sql cümlecikleri oluşturulurken araya sıkıştırılan herhangi bir meta karakter Sql Injection’a neden olabilir.


[Üye Olmadan Linkleri Göremezsiniz. Lütfen Üye Olmak için TIKLAYIN...]

Sql Injection Saldırı Örnekleri

Web sitelerin Login girişlerini veya url adreslerinde ki query gönderimlerini yazacağımız meta karakterler ile database hataya zorlıcaz. Bunun içinde veri olarak aşağıda verdiğim meta karakterler basic düzeyde bir site için yeterli olacaktır. Ama, meta karakterler geçmeden önce query mantığını sizi anlatmak isterim. Örnekte ki gibi “[Üye Olmadan Linkleri Göremezsiniz. Lütfen Üye Olmak için TIKLAYIN...] bir web sitenin adresi satırında “konu=1150″ adlı queryin yaptığı görev arka tarafta database sorgusunda şu şekildedir. “SELECT * FROM TBL_PRODUCTS WHERE PRODUCT_ID=1150″ işte bizim tek yapmamız gereken bu sql query bizim çıkarlarımız doğrultusunda kullanmak Örneğin: “[Üye Olmadan Linkleri Göremezsiniz. Lütfen Üye Olmak için TIKLAYIN...] or 1=1–“ gibi bir linki elle yazarak enterladığımız zaman arka planda SQL Query bu hali alıcaktır. “SELECT * FROM TBL_PRODUCTS WHERE PRODUCT_ID=1530’ or 1=1–” bu şekilde database hataya zorlanarak sistemin çalışmamasını hatta istediğimiz verilerin sistemden çalınması sağlanabilir.

’ or 1=1–

” or 1=1–

’ or ’a’=’a

or 1=1–

’) or (’a’=’a

” or “a”=”a
  • Yukarıda verilen örnekler database yapısına göre çeşitlendirilebilir bu örnekler basic bir web sitesini hataya zorlamak için yeterldir.

Bu şekilde sistemi hataya zorladık mı sistemde acıksa bundan sonrası zaten çok basit klasik SQL cümleleriniz ile saldırıları gerçekleştiriyorsunuz işlem bu kadar basit.

[Üye Olmadan Linkleri Göremezsiniz. Lütfen Üye Olmak için TIKLAYIN...]

SQL Injection Saldırılarına Çözümler
  1. Öncellikle sistemiz hata verse bile kodlarımız hiçbir şekilde kullanıcıya göstermemiz lazım bunun için sistemimizi oluşturuyorken bir adet ERROR-404 sayfası oluşturup. Asp.net ile yazılmış bir site için webconfig’de tanımlamak yeterli olacaktır.
<system.web>
<customErrors mode=“On“>
<error statusCode=“400“ redirect=“BadRequest.aspx“/>
<error statusCode=“403“ redirect=“Yasak.aspx“/>
<error statusCode=“404“ redirect=“SayfaBulunamadi.aspx“/>
<error statusCode=“500“ redirect=“ServerError.aspx“/>
</customErrors>
</system.web>

[*] SQL Query’leri yazarken kesinlikle tembellik yapmıcaz. Basit SQL sorguları oluşturmıcaz ve kesinlik benim önerim Store Procedure ve Parametreler kullanmaktır.
[*]Üçüncü olarak ise login girişlerinde textboxlarımızda gönderdiğimiz Queryleri kontrol altına almalısınız. Bunu için zararlı cümlecikler girilebileceğini düşünerek kesinlikle Validation kullanarak kontrol altına alıcaz.
[*]C# ile querylerden coockielerden formlardan gelen potonsiyel saldırıları kod yazarak engelleyebiliriz. Dediğim gibi verilerde biz ne kullanıcığımızı biliyorsak geriye kalan metaları engellicez.[/LIST]
public static string[]blackList = {“–“,”;–“,”;”,”/*”,”*/”,”@@”,”@”,

“char”,”nchar”,”varchar”,”nvarchar”,

“alter”,”begin”,”cast”,”create”,”cursor”,

“declare”,”delete”,”drop”,”end”,”exec”,”execute”,

“select”, “sys”,”sysobjects”,”syscolumns”,

“fetch”,”insert”,”kill”,”open”,

“table”,”update”,”’or 1=1– “,”or1=1– “,”’ or ’a’=’a”,”or 1=1–“,”’)or (’a’=’a”,”‘ or ‘a’=’a'”,”having 1=1″};

public static String _injectionkontrol = “”;

public static void InjectionKontrolEt()

{

for (int i = 0; i< blackList.Length; i++)

{

int sonuc = _injectionkontrol.IndexOf(blackList[i],0);

if (sonuc != -1)

{

string ZiyaretciIPsi = “”;

if (HttpContext.Current.Request.ServerVariables[“HTTP_X_FORWARDED_FOR”] != null)

{

ZiyaretciIPsi=HttpContext.Current.Request.ServerVa riables[“HTTP_X_FORWARDED_FOR”].ToString();

}

else

if (HttpContext.Current.Request.UserHostAddress.Lengt h!= 0)

{

ZiyaretciIPsi = HttpContext.Current.Request.UserHostAddress;

}

String Tarih = DateTime.Now.ToLongDateString();

string msgbody = “Saldırı Injection saldırıs… Saldırgan IP Adresi: “+ ZiyaretciIPsi + ” Saldırı Tarihi: “+ Tarih + ” Saldırı Kodu: “ +_injectionkontrol;

SmtpClient client = new SmtpClient();

client.Credentials = new System.Net.NetworkCredential(“ircrehberi@****.net” ,”*********”); //Gonderimi Yapacak Email AD Sifre

client.Host = “mail.*****.com”;// SMTP sunucu olarak )

client.EnableSsl = false;

MailAddress from = new MailAddress(“*****@*******.net”); // kimden…

MailAddress to = new MailAddress(“ircrehberi@******.net”, “Fatih Alkan”); //Kime..

MailMessage message = new MailMessage(from,to);

message.Subject = “HACK”;

message.IsBodyHtml = true;

message.Body = msgbody;

client.Send(message);

HttpContext.Current.Response.Redirect(“~/Default.aspx”);

//bye byeee

}

}

[Üye Olmadan Linkleri Göremezsiniz. Lütfen Üye Olmak için TIKLAYIN...]

GÖRSEL İÇERİKLER ALINTIDIR...





________________

"Sözünü tartmadan söyleyen, aldığı cevaptan incinmesin."
Hz.Mevlana
 


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı





Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 15:58.