19 Mayıs 2009 Salı

SQL Injection, Bölüm 1

19 Mayıs 2009 tarihli

GüvenlikBu yazı SQL Injection tekniklerini öğrenip sitelere zarar vermek isteyenlerden çok, işin temelini anlayıp gerekli önlemleri almak isteyen sunucu yöneticileri, programcılar için yazılmış olup, SQL Injection Walkthrough yazısının bir çevirisi niteliğindedir. 2 bölümden oluşan yazının ilk bölümünde SQL Injection’a giriş ve temel saldırı tekniklerini inceliyoruz.
1 Giriş

Bir sunucunun yalnızca 80 numaralı portu açıksa, port tarayıcılarının bir açık yakalayamayacağını ve admin’in gerekli patch’leri yaptığını bilirsiniz. Bu durumda geriye web hacking methodları kalır. SQL injection yalnızca 80. porta ihtiyaç duyan, sunucuya veya sunucunun işletim sistemine değil de üzerinde çalışan uygulamalara (ASP, JSP, PHP, CGI gibi) saldıran bir tekniktir.
1.2 SQL Injection Nedir?

SQL Injection, web sayfalarını kullanarak SQL sorgusu ve komutu gönderme tekniğidir. Birçok site kullanıcıdan aldığı parametrelerle veritabanına sorgular göndermektedir. Örnek olarak kullanıcı girişi sayfasını düşünün, girilen ad ve şifre yardımıyla bu kişinin kayıtlı bir kullanıcı olup olmadığı veritabanına sorulur. SQL Injection ile SQL sorgusunu değiştireceğimiz ve istediğimiz bilgilere ulaşabileceğimiz sonuçlar elde edebiliriz.
1.3 Malzemeler

Sadece internet tarayıcısı.
2 Neleri Aramalısınız?

Kullanıcının bilgi gönderebileceği sayfaları bulmalısınız; mesela kullanıcı girişi, arama sayfası, yorum sayfası gibi. Genelde html sayfaları kullanıcı girdilerini gönderirken POST methodunu kullanırlar, böylece sayfanın adresinde parametreleri göremezsiniz. Bu durumda sayfanın kaynak kodunu inceleyerek hangi parametreleri gönderdiğini bulabilirsiniz. Arayacağınız html etiketi form olmalı, örnek olarak:
< method="post" action="Search/search.asp">
< type="hidden" name="A" value="C">
<>

form etiketleri arasındaki herşey potansiyel parametrelerdir.
2.1 Ya input alan bir sayfa bulamazsam?!

Sitede ASP, JSP, CGI veya PHP gibi sayfalar aramalısınız. Özellikle aşağıdaki gibi parametre alan sayfalara dikkat edin:

http://www.example.com/index.asp?id=10
3 Bu sayfa uygun mu, nasıl test ederim?

Tek tırnak hilesiyle başlayabilirsiniz. Bunun için input alanına hey' or 1=1-- girin. Örnek:

* Kullanıcı adı: hey' or 1=1--
* Şifre: hey' or 1=1--
* http://www.example.com/index.php?id=hey’ or 1=1–

Eğer bu işlemi hidden bir input alanıyla yapmanız gerekiyorsa sayfanın kaynak kodunu bilgisayarınıza kaydedip form alanını aşağıdaki şekilde düzenleyin.
< action="http://www.example.com/Search/search.asp" method="post">
< type="hidden" name="A" value="hey' or 1=1--">
< /form>

Şanslıysanız siteye kullanıcı adı ve şifre olmadan giriş yapmış olacaksınız.
3.1 Ama neden ‘ or 1=1–?

Bu hileyi siteye giriş yapmanın yanında ekstra bilgilere ulaşmak için kullanabilirsiniz. Örnek olarak aşağıdaki ASP sayfasını ele alalım:
http://www.example.com/index.asp?category=food

URL’de category değişkenin adı, ve food ise bu değişkene atanan değerdir. Food kategorisindeki bilgileri listelemek için kullanılacak kod aşağıdaki gibidir:
v_cat = request(”category”)
sqlstr = “SELECT * FROM product WHERE PCategory=’” & v_cat & “‘”
set rs = conn.execute(sqlstr)

Gördüğünüz gibi gönderdiğimiz bilgi v_cat değişkenine atandı, daha sonra bu değişkenle bir SQL sorgusu oluşturuldu.
SELECT * FROM product WHERE PCatego

« Günlüğünüzü Popülerleştirmek için 5 Yol
Ekim’de Neler Oldu? »



SQL Injection, Bölüm 1 | Yaramazadam
10 Ağustos 2008

[...] Bu yazı SQL Injection tekniklerini öğrenip sitelere zarar vermek isteyenlerden çok, işin temelini anlayıp gerekli önlemleri almak isteyen sunucu yöneticileri, programcılar için yazılmış olup, SQL Injection Walkthrough yazısının bir çevirisi niteliğindedir. 2 bölümden oluşan yazının ilk bölümünde SQL Injection’a giriş ve temel saldırı tekniklerini inceliyoruz. (more…) [...]

0 yorum:

Yorum Gönder