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.

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...

jQuery Validation i funkcja remote

Jakiś czas temu zwrócił się do mnie użytkownik z problemem. Chodzi o to, że korzysta on z pluginu walidacji jQuery, […]

Zend Framework: integracja z Uploadify

W tym wpisie postaram się przedstawić Wam w jaki sposób zintegrować skrypt Uploadify z Zend Frameworkiem. Dzięki temu będziemy mogli […]

Javascript: Czasowe wyświetlanie reklamy

Czasami chcemy, aby na pewnym elemencie naszej strony wyświetlała się reklama przez jakiś czas, a następnie zniknęła. W tym wpisie […]

Linux: backup wszystkich baz danych MySQL

Swego czasu pisałem o tym jak z poziomu konsoli można szybko i przyjemnie zrobić backup bazy MySQL. Wszystko jest ładnie […]