Ataki SQL Injection

Autor: Arkadiusz Tobiasz 31 grudnia 2008

hakin9_1_2009_pl-kopiaSQL Injection to technika ataku sieciowego, której poświeciony jest artykuł w najnowszym, styczniowym numerze pisma Hakin9. W tym artykule możecie poznać techniki takiego ataku, ale także dowiemy się jak się przed takimi atakami bronić. Najbardziej znanym przykładem podatności na tego typu ataki jest błędna walidacja danych wprowadzanych podczas logowania. Atakujący chce się dostać do części dla zalogowanych użytkowników na stronie napisanej w technologi ASP połączonej z serwerem baz danych SQL Server. Zapytanie wykonywane po wysłaniu formularza z danymi do logowania wygląda następująco:

1
2
3
4
strUsername = request.form("username");
strPassword = request.form("password");

"SELECT userID FROM useres WHERE username = ''' & strUsernam & ''' AND password = ''' & strPassword & '''


Przypuśćmy, że użytkownik wprowadził następujące dane do logowania admin i hasło: admin1234. Wówczas powyższe zapytanie będzie wyglądać następująco:

1
SELECT userID FROM users WHERE username = 'admin' AND password = 'admin1234'

Oczywiście to nie jest atak typu SQL Injection :) Atak byłby wówczas, gdybyśmy do loginu dodali apostrof zamykający oraz dodali kolejne polecenia SQL, które przy braku odpowiedniej walidacji zostaną przesłane do bazy danych. Jakby to wyglądało? Atakujący może jako login podać admin’;– oraz dowolne hasło, np. admin. Zapytanie do bazy danych będzie wyglądać następująco:

1
SELECT userID FROM users WHERE username = 'admin';-- AND password = 'admin'

Baza danych wykona wówczas tylko następujące zapytanie:

1
SELECT userID FROM users WHERE username = 'admin'

W związku z tym atakujący dostał się do strefy dostępnej dla zalogowanych użytkowników bez potrzeby znajomości hasła, bowiem dalsza część zapytania zostanie zignorowana (nie wierzysz, to sprawdź):

1
--' AND password = 'admin'

Przedstawiony powyżej przykład znajduje się także w artykule pisma hakin9. Jeśli zainteresowała Cię ta tematyka, to odsyłam do artykułu, w którym jest więcej przykładów ataków SQL Injection, ale również są opisane sposoby walki z nimi.

Popularity: 13%

Jeden komentarz

  1. [...] za sobą podatność na ataki SQL Injection. Co nieco o tego typie ataków możesz przeczytać tutaj. Raport X-Force 2008 Trend Statistics, który przygotował IBM Internet Security Systems wskazuje, [...]

Odpowiedz

 
Arkadiusz Tobiasz student Akademii Ekonomicznej im. Karola Adamieckiego w Katowicach na specjalnościach informatyka ekonomiczna oraz rachunkowość. Więcej...





Zend Framework: gwiazdka przy wymaganych polach

W przypadku wymaganych pól w formularzach najczęściej oznacza się je poprzez dodanie gwiazdki. W tym wpisie chciałbym pokazać w jaki [...]

MySQL: GROUP_CONCAT

Ostatnio zostałem poproszony, aby na liście zamówień w sklepie PrestaShop wyświetlić listę produktów, które zostały sprzedane. Oczywiście można by było [...]

Zend Framework: jak zwiększyć wartość o 1 w bazie danych?

Ostatnio wykonując projekt w Zend Framework musiałem zwiększyć wartość kolumny pewnego rekordu o jeden. Oczywiście można by było wykonać najpierw [...]

PHP: Skracanie długich linków

Czasem w komentarzach ktoś może wstawić długi link, który może rozciągnąć naszą stronę. Jednym z rozwiązań jest skrócenie linku. Przykładowo [...]