| | #1 |
| 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
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
<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) | |
| |