Basit SQL Injection Denemeleri

Rıdvankaya

Uzman Üye
Katılım
21 Eyl 2023
Mesajlar
95
Tepkime puanı
42
Puanları
18
Yaş
31
Konum
Midyat/Mardin
Web sitesi
github.com
Basit SQL Injection Denemeleri
Hedef web uygulamasında input alan bölümlere manuel olarak farklı karakterler(metadata) girerek SQL sorgularında manipülasyonlar oluşturarak veritabanın bunlara karşı cevaplarını görmek ve sql injection açıklığı tespit etme.
SQL injection, bir web uygulamasının veritabanına gönderilen SQL sorgularını kötüye kullanarak yetkisiz veri erişimi veya değişikliği sağlayan bir saldırı türüdür. SQL injection açıklığı bulunan bir web uygulaması, HTTP yanıtlarında ilgili SQL sorgusunun sonuçlarını veya veritabanı hatalarının ayrıntılarını içermeyebilir. Bu durumda, kör SQL injection denilen bir saldırı türü kullanılabilir.
Kör SQL injection, veritabanına doğru veya yanlış sorular sorarak ve uygulamanın yanıtına göre cevabı belirleyerek çalışır. Bu saldırı, web uygulamasının genel hata mesajları gösterdiği, ancak SQL injection'a karşı savunmasız olan kodu gidermediği durumlarda kullanılır.
Kör SQL injection saldırısı yapmak için, aşağıdaki adımları izleyebilirsiniz:
1. Adım: Saldırıya açık bir parametre bulun. Bu, web uygulamasının URL'sinde, HTTP istek gövdesinde veya HTTP çerezlerinde olabilir. Örneğin, [4](http://testphp.vulnweb.com/listproducts.php?cat=) URL'sinde cat parametresi SQL injection'a açık olabilir. Bu parametrenin değerini değiştirerek, web uygulamasının farklı şekilde davranıp davranmadığını kontrol edin. Örneğin, cat parametresine 1 yerine 1' veya 1=1 gibi bir değer verin. Eğer web uygulaması hata mesajı döndürürse, bu parametre SQL injection'a açıktır.
2. Adım: Veritabanı türünü belirleyin. Farklı veritabanları farklı SQL sözdizimleri ve fonksiyonları kullanır. Bu nedenle, saldırıyı gerçekleştirmek için veritabanı türünü bilmek önemlidir. Veritabanı türünü belirlemek için, parametreye farklı veritabanı fonksiyonları ekleyerek, web uygulamasının yanıtını gözlemleyin. Örneğin, MySQL veritabanı için VERSION() fonksiyonu, Microsoft SQL Server veritabanı için @@VERSION fonksiyonu kullanılabilir. Eğer web uygulaması hata mesajı döndürürse, bu fonksiyon veritabanı tarafından desteklenmiyordur. Eğer web uygulaması normal bir yanıt döndürürse, bu fonksiyon veritabanı tarafından destekleniyordur. Bu şekilde, veritabanı türünü tahmin etmeye çalışın.
3. Adım: Veritabanından veri çekin. Veritabanı türünü belirledikten sonra, veritabanından istediğiniz veriyi çekmek için uygun SQL sorguları oluşturun. Bunun için, web uygulamasının yanıtına göre doğru veya yanlış olduğunu anlayabileceğiniz koşullar kullanın. Örneğin, veritabanındaki Users tablosundan, Username sütununun ilk karakterinin A olduğunu test etmek için, cat parametresine 1' AND SUBSTRING ( (SELECT Username FROM Users LIMIT 1), 1, 1) = 'A gibi bir değer verin. Eğer web uygulaması normal bir yanıt döndürürse, bu koşul doğrudur. Eğer web uygulaması hata mesajı döndürürse, bu koşul yanlıştır. Bu şekilde, veritabanındaki verileri tek tek tahmin etmeye çalışın.
Bu adımları takip ederek, kör SQL injection saldırısı yapabilirsiniz. Ancak, bu saldırı çok zaman alıcı ve zahmetli olabilir. Bu nedenle, bu saldırıyı otomatikleştiren araçlar kullanmak daha etkili olabilir. Örneğin, sqlmap gibi bir araç, veritabanı türünü, tablo ve sütun isimlerini, veri değerlerini ve daha fazlasını otomatik olarak tespit edebilir.
SQL injection saldırılarından korunmak için, web uygulamasının kodunu güvenli bir şekilde yazmak ve test etmek gerekir. Özellikle, SQL sorgularını oluştururken, kullanıcı girdilerini doğrudan birleştirmek yerine, parametreli sorgular veya hazır ifadeler kullanmak önemlidir. Ayrıca, web uygulamasının veritabanına erişimi için en az ayrıcalığa sahip bir kullanıcı hesabı oluşturmak ve veritabanı hatalarının ayrıntılarını kullanıcıya göstermemek de iyi uygulamalardır.
 
Üst