SQL injection co to jest i jak się zabezpieczyć

Witam w dzisiejszym wpisie chciałbym poruszyć temat SQL injection to nic innego jak metoda ataku komputerowego wykorzystująca lukę w zabezpieczeniach aplikacji polegającą na nieodpowiednim filtrowaniu lub niedostatecznym typowaniu danych użytkownika, które to dane są później wykorzystywane przy wykonaniu zapytań do bazy danych. Przyjrzyjmy się zatem na poniższym schemacie jak to wygląda :

SQL Injection

Przeprowadzony pomyślnie atak ma dostęp do:

  • Modyfikowania , zmieniania lub usuwania danych z bazy
  • Odczytywania wrażliwych i poufnych danych z bazy danych
  • Odzyskania zawartości określonego pliku znajdującego się w systemie zarządzania bazą danych (DBMS)
  • Wymuszanie operacji administracyjnych, takich jak wyłączanie DBMS.


Bez odpowiedniej kontroli i zabezpieczeń atak SQL injection może narazić nas na ogromne ryzyko utraty danych. Może mieć wpływ również na poufność i integralność danych, jak również na uwierzytelnianie i autoryzację w odniesieniu do aplikacji. Może również umożliwić atakującemu kradzież poufnych informacji, takich jak dane uwierzytelniające użytkownika, informacje finansowe lub tajemnice handlowe, poprzez wykorzystanie luki istniejącej w aplikacji lub programie.

Oto kilka popularnych typów ataków SQL injection:

In-band SQL Injection


Jest to najczęściej spotykany typ ataku SQL injection, ze względu na łatwość dokonania ataku, w którym atakujący wykorzystuje to samo źródło do przeprowadzania ataków i zbierania wyników.cieszy się popularnością i jest często stosowany przy ataku SQL injection ze względu na swoją prostotę i skuteczność.

Rozróżniamy dwa takie ataki;

1 Error-based SQL Injection 

Czyli nic innego jak atak oparty na celowym wymuszeniu błędu systemu: Technika, w której atakujący określa podatności poprzez celowe spowodowanie, aby baza danych produkowała komunikaty o błędach.

Później te komunikaty o błędach są wykorzystywane do zwrócenia pełnych wyników zapytania i ujawnienia wszystkich poufnych informacji z bazy danych. Technika ta może być również wykorzystywana do identyfikacji luk obecnych w witrynie lub aplikacji internetowej oraz do uzyskania dodatkowych informacji w celu ponownego opracowania złośliwych zapytań.

 2 Union-based SQL Injection

 w prostym tłumaczeniu atak oparty na modyfikacji oryginalnych zapytań kierowanych do bazy danych W tej technice atakujący uzyskuje korzyść w postaci wydobycia informacji z bazy danych poprzez modyfikacje i rozszerzanie wyników, które są zwracane przez oryginalne zapytanie.

Inferential (Blind) SQL Injection


Ślepe infekcje SQL opierają się głównie na obserwacji zachowaniu serwera i zapytań, które są odbierane i wysyłane na serwer, gdzie atakujący uważnie obserwuje pośrednie wskazówki. W celu obserwacji, atakujący wysyła do serwera ładunki danych. Tego typu technika nazywana jest Blind SQL injection, ponieważ atakujący nie pobiera danych z bazy danych witryny, co uniemożliwia dostrzeżenie informacji o ataku in-band. Blind SQL injection dzieli się na dwie metody:

1. Boolean:

W tym przypadku atakujący wysyła zapytanie SQL do bazy danych, które nakazuje aplikacji zwrócić wynik. Jednak w zależności od zapytania, true lub false, wynik się zmienia, a na jego podstawie modyfikuje się lub pozostaje bez zmian informacja, która znajduje się w odpowiedzi nagłówków HTTP. Za jej pomocą atakujący dowiaduje się, czy wynik jest prawdziwy czy fałszywy w otrzymanym komunikacie.

2. Time-based 

Czyli inaczej atak oparty na odpytywaniu bazy danych. Kiedy zapytanie SQL jest wysyłane do bazy danych przez atakującego, baza danych czeka przez kilka sekund na odpowiedź. Obserwując czas odpowiedzi bazy danych, atakujący analizuje, czy zapytanie jest prawdziwe czy fałszywe. Na podstawie tego wyniku, odpowiedź nagłówków HTTP jest generowana natychmiast lub po pewnym czasie oczekiwania. W ten sposób, nie opierając się na danych z bazy danych, atakujący może określić, czy użyta wiadomość zwróciła wartość true czy false.

Out-of-band SQL Injection


Najczęściej spotykana metoda ataku na serwer SQL. Technika ta opiera się na specyficznych cechach bazy danych obsługującej SQL. Polega ona na przesłaniu do serwera SQL zapytania DNS lub przez nagłówek HTTP zawierający instrukcję SQL. W przypadku powodzenia, atak Out-of-band może przekazać zawartość bazy danych, zwiększyć uprawnienia użytkownika i wykonać te same czynności, które są wykonywane przez inne typy ataków SQL injection.

Jak zapobiegać atakom SQL Injection?


Aby zabezpieczyć siebie, swoją aplikacje, program etc. i wyeliminować liczbę ataków SQL Injection, programiści, administratorzy systemów, baz danych powinni stosować się do poniższych zaleceń:

  • Upewnij się, że wszystkie komponenty oprogramowania aplikacji internetowych są na bieżąco aktualizowane najnowszymi łatami bezpieczeństwa i nie pozostawiają miejsca na luki.Unikaj używania wspólnych kont baz danych pomiędzy różnymi aplikacjami lub stronami internetowymi.
  • Regularnie monitoruj zapytania SQL z aplikacji połączonych z bazą danych.
  • Zmniejsz ryzyko ataku poprzez optymalizacje funkcji wysyłających zapytania do bazy danych i odpowiednie ich zabezpieczenie.
  • Komunikaty o błędach są dla atakujących kluczem do poznania architektury bazy danych, więc upewnij się, że wyświetlają tylko minimalną ilość informacji.
  • Zawsze przechowuj dane logowania do bazy danych zaszyfrowane i przechowywane w bezpieczny sposób.
  • Dobrą praktyką jest przeprowadzanie co jakiś czas testów penetracyjnych, aby zniwelować możliwości wystąpienia podatności.

Poniżej zamieszczam link , do ciekawego narzędzia wbudowanego w Kali linux, które pozwoli nam wyeliminować takie ataki:

Dodaj komentarz