SQL enjeksiyonu derinlemesine
Farklı dillerde ve ORM’lerde güvensiz sorgu kalıplarını bulur, kör ve ikinci derece enjeksiyonu kendi uygulamanda doğrular, kalıcı düzeltmeyi kod standardı, veritabanı ayarları ve CI kurallarıyla sağlarsın.
Seviye 301 · 18 ders · 16 pratik lab
Dersler
Kodda SQL enjeksiyonu
- Dize birleştirme her dilde: PHP, Python, Java ve Node
- ORM’de güvensiz kalıplar: ham sorgu ve dinamik sıralama
- Parametrelenemeyen yerler: tablo, sütun ve sıralama adları
- İkinci derece enjeksiyon: saklanan girdinin sonradan çalışması
- Kısa görev: kod tabanında dört güvensiz sorgu bul
Tanımak ve doğrulamak
- Doğru-yanlış kör enjeksiyonu tanımak
- Zaman tabanlı kör enjeksiyon
- Veritabanı farkları: MySQL, PostgreSQL, MSSQL ve SQLite
- Bant dışı enjeksiyon kavramı ve dışa giden trafiği kısıtlamak
- sqlmap’i kendi uygulamanda sınırlı ve güvenli kullanmak
- Kısa görev: kör enjeksiyonu Burp ile doğrula ve etkisini ölç
Kalıcı düzeltme
- Hazır ifadeleri her katmana yaymak ve kod standardı
- Dinamik sıralama ve süzme için izin listeleri
- Veritabanı tarafı: en az yetki, saklı yordamlar ve hata gizleme
- Kısa görev: bulduğun dört sorguyu düzelt ve testlerini yaz
Tespit
- Web ve veritabanı günlüklerinde enjeksiyon desenleri
- Semgrep kuralıyla güvensiz sorguyu CI’da yakalamak
- Bitirme görevi: bir uygulamadaki tüm SQL enjeksiyonlarını bul, kapat ve yeniden test et
Pratik lablar
- Dört dilde dize birleştirme: PHP, Python, Java ve Node örneklerinde güvensiz sorguları bul ve her birini o dilin hazır ifadesiyle düzelt.
- ORM'de ham sorgu tuzağı: ORM kullanan bir projede ham sorgu ile kurulan rapor filtresindeki enjeksiyonu bul ve ORM'nin parametreli yoluna taşı.
- İkinci derece enjeksiyon: kayıtlı kullanıcı adı: Kayıt sırasında güvenle saklanan ama sonra bir yönetim raporunda sorguya karışan kullanıcı adını bul ve rapor sorgusunu düzelt.
- Dinamik tablo adı ve sıralama: Kullanıcı seçimine göre tablo ve sütun adı kuran bir dışa aktarma özelliğini izin listesi ve eşleme tablosuyla güvenli hâle getir.
- Doğru-yanlış yanıt farkını ölç: Stok kontrol uç noktasında koşula göre değişen yanıtı Burp ile doğrula ve etkilenen sorguyu kodda göster.
- Zaman tabanlı kör enjeksiyon: Hiçbir fark göstermeyen bir izleme uç noktasında zaman gecikmesiyle enjeksiyonu doğrula ve düzeltmeden sonra gecikmenin kaybolduğunu göster.
- Veritabanı farkı: aynı açık, üç arka uç: Aynı açığı MySQL, PostgreSQL ve SQLite arka uçlarında tanı ve hangi sözdizimi farklarının sonucu değiştirdiğini not et.
- Bant dışı istek ve çıkış kısıtı: Veritabanı sunucusunun dışarıya DNS isteği yapabildiğini lab'da göster ve veritabanı ağ kesiminin çıkışını kapat.
- sqlmap'i sınırlı ve güvenli çalıştır: Kendi lab uygulamanda sqlmap'i düşük risk, tek parametre ve hız sınırıyla çalıştır ve etkisini veritabanı günlüğüyle ölç.
- Saklı yordamda dinamik SQL: Parametre alan ama içinde dinamik SQL kuran bir saklı yordamdaki açığı bul ve parametreli çalıştırmayla düzelt.
- Arama filtresi için izin listesi: Çok alanlı bir arama filtresini izin listesiyle yeniden yaz ve kötü girdileri deneyen testlerini ekle.
- Veritabanı hata mesajlarını gizle: Uygulama genelinde veritabanı hatalarının kullanıcıya sızdığı yerleri bul ve merkezi hata işleyiciyle kapat.
- Dört sorguyu düzelt, testleriyle teslim et: Kurgusal Zelvio İK uygulamasındaki dört güvensiz sorguyu düzelt, her biri için regresyon testi yaz ve yeniden test et.
- Veritabanı günlüğünde enjeksiyon deseni: Veritabanı sorgu günlüğünde uygulamanın normalde üretmediği sorgu biçimlerini bul ve kaynağı olan web isteğiyle eşleştir.
- Semgrep kuralıyla güvensiz sorguyu CI'da yakala: Kod tabanındaki dize birleştirmeli sorguları yakalayan bir Semgrep kuralı yaz, CI'a ekle ve yanlış pozitifleri ayıkla.
- Enjeksiyon için uçtan uca tespit: Web, uygulama ve veritabanı günlüklerini birleştiren bir enjeksiyon uyarısı kur ve tekrar oynatılan saldırıyla tetiklendiğini göster.
Kurs hakkında
Farklı dillerde ve ORM’lerde güvensiz sorgu kalıplarını bulur, kör ve ikinci derece enjeksiyonu kendi uygulamanda doğrular, kalıcı düzeltmeyi kod standardı, veritabanı ayarları ve CI kurallarıyla sağlarsın.
Ne öğreneceksin
- Kodda SQL enjeksiyonu
- Tanımak ve doğrulamak
- Kalıcı düzeltme
- Tespit
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux masaüstünde geçer; araçlar pencereli arayüzleriyle hazırdır. Kurulum gerekmez, bilgisayar ekranı önerilir.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.