Etyczne hakowanie - wstrzyknięcie kodu SQL
Wstrzyknięcie SQL to zestaw poleceń SQL, które są umieszczane w ciągu URL lub w strukturach danych w celu pobrania żądanej odpowiedzi z baz danych połączonych z aplikacjami internetowymi. Ten typ ataków ma zwykle miejsce na stronach internetowych stworzonych przy użyciu PHP lub ASP.NET.
Atak z iniekcją SQL można przeprowadzić z następującymi intencjami -
Aby zrzucić całą bazę danych systemu,
Aby zmodyfikować zawartość baz danych lub
Wykonywanie różnych zapytań, które nie są dozwolone przez aplikację.
Ten typ ataku działa, gdy aplikacje nie sprawdzają poprawnie danych wejściowych przed przekazaniem ich do instrukcji SQL. Iniekcje są zwykle umieszczane w paskach adresu, polach wyszukiwania lub polach danych.
Najłatwiejszym sposobem wykrycia, czy aplikacja internetowa jest podatna na atak polegający na wstrzyknięciu kodu SQL, jest użycie znaku „” ”w ciągu i sprawdzenie, czy wystąpił jakiś błąd.
Przykład 1
Spróbujmy zrozumieć tę koncepcję na kilku przykładach. Jak pokazano na poniższym zrzucie ekranu, użyliśmy znaku „” ”w polu Nazwa.
Teraz kliknij Loginprzycisk. Powinien dać następującą odpowiedź -
Oznacza to, że pole „Nazwa” jest podatne na wstrzyknięcie SQL.
Przykład 2
Mamy ten adres URL - http://10.10.10.101/mutillidae/index.php?page=site-footer-xssdiscussion.php
Chcemy przetestować zmienną „page”, ale obserwujemy, jak wstawiliśmy znak „” ”w adresie URL ciągu.
Kiedy naciśniemy Enter, da to następujący wynik z błędami.
SQLMAP
SQLMAP to jedno z najlepszych dostępnych narzędzi do wykrywania iniekcji SQL. Można go pobrać zhttp://sqlmap.org/
Jest wstępnie skompilowany w dystrybucji Kali. Możesz go zlokalizować w - Aplikacje → Ocena bazy danych → Sqlmap.
Po otwarciu SQLMAP przechodzimy do strony, na której mamy iniekcję SQL, a następnie pobieramy żądanie nagłówka. Z nagłówka uruchamiamy następujące polecenie w SQL -
./sqlmap.py --headers="User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:25.0)
Gecko/20100101 Firefox/25.0" --cookie="security=low;
PHPSESSID=oikbs8qcic2omf5gnd09kihsm7" -u '
http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#' -
level=5 risk=3 -p id --suffix="-BR" -v3
SQLMAP przetestuje wszystkie zmienne, a wynik pokaże, że parametr „id” jest podatny na ataki, jak pokazano na poniższym zrzucie ekranu.
SQLNinja
SQLNinja to kolejne narzędzie do wstrzykiwania SQL, które jest dostępne w dystrybucji Kali.
Wstrzyknięcie JSQL
JSQL Injection jest w Javie i wykonuje zautomatyzowane iniekcje SQL.
Szybkie porady
Aby uchronić aplikację internetową przed atakami polegającymi na iniekcji SQL, należy pamiętać o następujących kwestiach:
Niezaznaczone dane wejściowe użytkownika do bazy danych nie powinny mieć możliwości przejścia przez interfejs GUI aplikacji.
Każda zmienna, która trafia do aplikacji, powinna zostać oczyszczona i zweryfikowana.
Należy zacytować dane wejściowe użytkownika, które są przekazywane do bazy danych.