SQL Injection – jak działa, jak się przed nim chronić, i jak wygląda atak
Cyberbezpieczeństwo Hacking

SQL Injection – jak działa, jak się przed nim chronić, i jak wygląda atak

🧨 SQL Injection – jak działa, jak się przed nim chronić, i jak wygląda atak

SQL Injection (wstrzykiwanie kodu SQL) to technika ataku na aplikacje internetowe, która pozwala napastnikowi manipulować zapytaniami do bazy danych. Źle zabezpieczone formularze, pola wyszukiwania czy adresy URL mogą dać dostęp do całych baz danych – bez potrzeby uwierzytelniania.

🔍 Na czym polega SQL Injection?

SQL Injection występuje, gdy dane wprowadzone przez użytkownika są bezpośrednio „wstrzykiwane” do zapytania SQL bez odpowiedniego oczyszczenia lub przygotowania. Jeśli aplikacja nie filtruje poprawnie danych wejściowych, atakujący może dodać własne instrukcje SQL.


🧪 Przykład klasycznego ataku

Przykład kodu PHP:

$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";

Dane wpisane przez atakującego:

Username: ' OR '1'='1
Password: ' OR '1'='1

Efektywne zapytanie SQL:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '' OR '1'='1'

Efekt? Logowanie bez hasła.

 

SQL Injection – jak działa, jak się przed nim chronić, i jak wygląda atak
SQL Injection – jak działa, jak się przed nim chronić, i jak wygląda atak

🧠 Rodzaje SQL Injection

Typ Opis
Classic (In-Band) Wyniki zapytania są zwracane bezpośrednio do przeglądarki (np. wyświetlenie tabeli z danymi).
Blind (Ślepe) Aplikacja nie wyświetla błędów ani danych, ale zachowanie aplikacji się zmienia (np. opóźnienia, inne odpowiedzi HTTP).
Out-of-Band Dane są przesyłane do atakującego innym kanałem (np. żądaniem HTTP, DNS).
Second-Order Kod SQL nie jest wykonywany natychmiast – złośliwe dane są zapisywane i wykorzystane później, np. przez inny moduł.
Czytaj  Follina (CVE-2022-30190): Wciąż groźna w Windows 11? Nowe warianty ataków

🎯 Co może osiągnąć atakujący?

  • 🔓 Pobranie danych użytkowników (w tym haseł)
  • ✏️ Modyfikacja, usunięcie lub dodanie rekordów
  • 🛠️ Przejęcie kontroli nad bazą danych
  • 🔥 Eskalacja do systemu operacyjnego (np. za pomocą xp_cmdshell w MSSQL)
  • 🎣 Zbieranie danych osobowych – zgodnie z RODO może grozić firmie grzywną

🛡️ Jak się chronić przed SQL Injection?

🔒 Zabezpieczenia dla programistów:

  • ✅ Używaj prepared statements (przygotowanych zapytań)
    • W PHP: PDO lub mysqli z bind_param()
    • W Pythonie: sqlite3, psycopg2 z placeholderami
  • Waliduj i filtruj dane wejściowe
  • ✅ Stosuj ORM-y (np. SQLAlchemy, Hibernate) – utrudniają bezpośrednie manipulacje SQL-em
  • ✅ Ogranicz uprawnienia kont bazy danych – nie dawaj aplikacji dostępu ROOT/DBA
  • ✅ Rejestruj nieudane próby i analizuj logi
  • ✅ Maskuj szczegóły błędów SQL w środowisku produkcyjnym

🔍 Zabezpieczenia na poziomie infrastruktury:

  • 🔐 Firewall aplikacji webowej (WAF) – np. ModSecurity, Cloudflare
  • 🕵️‍♂️ Monitorowanie zapytań do bazy i wykrywanie anomalii
  • 🔒 Segmentacja sieci – baza danych w oddzielnej podsieci
  • 📉 Ograniczenia liczby zapytań (rate limiting)

🔧 Narzędzia do testów i ataków (pentesting)

  • sqlmap – automatyczne narzędzie do wykrywania i eksploatacji SQLi
  • Havij – GUI do SQL Injection (często wykorzystywany przez początkujących)
  • Burp Suite – przechwytywanie żądań i testowanie podatności
  • Nmap + NSE – skanowanie i testowanie serwerów SQL

💡 Przykład SQL Injection typu Blind

Jeśli aplikacja nie pokazuje błędów SQL, można użyć techniki warunkowej:

SELECT * FROM users WHERE id = 1 AND SUBSTRING((SELECT password FROM users LIMIT 1),1,1) = 'a'

Jeśli aplikacja zachowa się inaczej (np. wyświetli dane lub nie), można iteracyjnie odczytać hasło znak po znaku.


🏁 Podsumowanie

SQL Injection pozostaje jednym z największych zagrożeń dla aplikacji webowych, mimo że jego podstawowe mechanizmy są znane od lat. Dlaczego? Bo błędy wynikają z niedbalstwa i niewystarczającej edukacji. Każdy zespół tworzący oprogramowanie powinien traktować bezpieczeństwo danych jako priorytet.

Czytaj  Systemy Wykrywania i Zapobiegania Włamaniom (IDS/IPS): Jak Działają i Jak Je Konfigurować

 

Polecane wpisy
Luki w protokołach sieciowych (SSH, Samba, NFS): Czy Twoje połączenia są naprawdę bezpieczne?
Luki w protokołach sieciowych (SSH, Samba, NFS): Czy Twoje połączenia są naprawdę bezpieczne?

Luki w protokołach sieciowych (SSH, Samba, NFS): Czy Twoje połączenia są naprawdę bezpieczne? 🌐 Wstęp: Rola protokołów sieciowych w bezpieczeństwie Czytaj dalej

BGP Flowspec: Wykorzystanie protokołu BGP do szybkiego reagowania na ataki DDoS w sieciach dostawców
BGP Flowspec: Wykorzystanie protokołu BGP do szybkiego reagowania na ataki DDoS w sieciach dostawców

🌐 BGP Flowspec: Wykorzystanie protokołu BGP do szybkiego reagowania na ataki DDoS w sieciach dostawców 📌 Wprowadzenie Współczesne sieci są Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.