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.