SQLMap, açık kaynak kodlu bir araçtır. Bu araç, web uygulamalarında SQL injection saldırılarını otomatik olarak gerçekleştirmek için kullanılır. Bu araç, veritabanı yöneticileri, güvenlik araştırmacıları ve diğer ilgili kişiler tarafından kullanılabilir.
SQLMap ile, kullanıcılar veritabanı yönetim sistemi (DBMS) türünü, kullanıcı adını, şifreyi ve diğer gerekli bilgileri girerek hedef sisteme saldırabilir. Bu araç, veritabanı içindeki verileri çeşitli şekillerde çekmek, yazmak veya silmek için kullanılabilir. Ayrıca, SQLMap araçları arasında güvenlik açıklarını keşfetmek veya veritabanı yönetim sisteminin konfigürasyonunu değiştirmek için kullanılabilir. Ancak, SQLMap sadece yetkili kullanıcılar tarafından kullanılması önerilir, çünkü yanlış kullanıldığında ciddi güvenlik sorunlarına neden olabilir.
SQLMap, birçok parametre ve seçenek sunar, bu parametreler arasında en yaygın kullanılanlar şunlardır:
— url : Hedef sistemin URL’sini belirtir.
— data : Hedef sistemde kullanılan kullanıcı adı ve şifreyi belirtir.
— dbms : Hedef sistemde kullanılan veritabanı yönetim sistemi (DBMS) türünü belirtir.
— dump : Veritabanı içindeki verileri çekmek için kullanılır.
— sql-query : Veritabanı içindeki verileri yazmak veya silmek için kullanılır.
— proxy : Proxy kullanarak hedef sisteme erişmek için kullanılır.
— tamper : Tamamlayıcı kullanarak hedef sistemi bypass etmek için kullanılır.
— time-sec: Time-based injection tekniği kullanarak hedef sistemi bypass etmek için kullanılır.
— headers : Hedef sisteme erişmek için kullanılacak HTTP başlıklarını belirtmek için kullanılır.
— method : GET veya POST metodlarını belirtmek için kullanılır.
— threads : Saldırıda kullanılacak iş parçacıklarını belirtmek için kullanılır.
— level: Saldırının zorluk derecesini belirtmek için kullanılır.
— risk : Saldırının risk seviyesini belirtmek için kullanılır.
— help : SQLMap ile kullanabileceğiniz diğer parametreleri ve seçenekleri göstermek için kullanılır.
SQLMap kullanarak bir web uygulamasına SQL injection saldırısı gerçekleştirmek için aşağıdaki adımlar takip edilmelidir:
SQLMap’i başlatmak için komut satırına “sqlmap” yazın ve enter tuşuna basın.
Hedef URL’yi belirlemek için “ — url” parametresini kullanın.
Örnek:
sqlmap --url http://example.com/page.php?id=1
Hedef sistemde kullanılan veritabanı yönetim sistemi (DBMS) türünü belirlemek için “ — dbms” parametresini kullanın. Örnek:
sqlmap --dbms=mysql
Hedef sistemde kullanılan kullanıcı adı ve şifreyi belirlemek için “ — data” parametresini kullanın. Örnek:
sqlmap --data="username=admin&password=password
Veritabanı içindeki verileri çekmek için “ — dump” parametresini kullanın. Örnek:
sqlmap --dump --tables
sqlmap --dump -T users
Veritabanı içindeki verileri yazmak için” — sql-query” parametresini kullanın. Örnek:
sqlmap --sql-query="INSERT INTO users (username, password) VALUES ('newuser', 'newpassword')
Veritabanı içindeki verileri silmek için “ — sql-query” parametresini kullanın. Örnek:
sqlmap --sql-query="DELETE FROM users WHERE username='newuser
SQLMap komutlarını kullanırken “ — help” parametresini kullanarak kullanabileceğiniz diğer parametreleri ve seçenekleri görebilirsiniz.
Web Application Firewall (WAF) bir web uygulamasının güvenliğini arttırmak için kullanılan bir araçtır. Ancak, WAF’lar SQL injection saldırılarına karşı koruma sağlamadıkları için SQLMap ile WAF’ları bypass etmek mümkündür.
SQLMap ile WAF’ları bypass etmek için aşağıdaki yöntemler kullanılabilir:
Tamamlayıcı kullanarak: SQLMap ile bazı tamamlayıcılar kullanarak WAF’ları bypass etmek mümkündür.
Örnek:
sqlmap --tamper=space2comment
HTTP başlıklarını değiştirerek: SQLMap ile HTTP başlıklarını değiştirerek WAF’ları bypass etmek mümkündür.
Örnek:
sqlmap --header="User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36
Metodları değiştirerek: SQLMap ile GET ve POST metodlarını değiştirerek WAF’ları bypass etmek mümkündür.
Örnek:
sqlmap --method=GET
Proxy kullanarak: SQLMap ile proxy kullanarak WAF’ları bypass etmek mümkündür.
Örnek:
sqlmap --proxy=http://proxy.example.com:8080
Time-based injection: SQLMap ile zaman tabanlı enjeksiyon tekniği kullanarak WAF’ları bypass etmek mümkündür.
Örnek:
sqlmap --time-sec=10
Bu yöntemler sadece genel bir yol gösterisi, WAF’ların çalışma şekline ve yapılandırmasına göre WAF’ları bypass etmek için farklı yöntemler de kullanılabilir. Ayrıca, WAF’ların güncellemelerini yaptıklarından dolayı yöntemlerin çalışma şekli de değişebilir.
Github SQLMAP bypass WAF için URL:
https://github.com/svolkanbilgic/Bypass-WAF-SQLMAP
Örnek Kullanım;