Testowanie pod kątem wstrzykiwania zapytań SQL

Ataki typu SQL injection polegają na wstawieniu lub „wstrzyknięciu” zapytania SQL za pośrednictwem danych wejściowych przesyłanych przez klienta do aplikacji. Pomyślnie przeprowadzony atak tego typu może posłużyć do odczytu wrażliwych informacji z bazy danych oraz ich modyfikacji, czy też usunięcia. W najbardziej skrajnych przypadkach umożliwia on wydawanie poleceń systemowych.


Poniżej został zaprezentowany niebezpieczny fragment kodu umożliwiający przeprowadzenie ataku typu SQL injection:

SELECT * FROM users WHERE name = userName;

Zmienna  „userName”  pobierana jest od użytkownika. Jeżeli atakujący poda jako nazwę użytkownika wyrażenie: ‘OR’ 1 ‘=’1’ spowoduje to wymuszenie wyboru prawidłowej nazwy użytkownika, ponieważ wyrażenie „1” = „1” jest zawsze prawdziwe.


Do testowania podatności typu sql injection można wykorzystać narzędzie zwane sqlmap, które w sposób automatyczny jest w stanie znaleźć i wykorzystać możliwość wstrzykiwania zapytań SQL. Obsługuje ono sześć technik sql injection: opartych na logice, niewidomych, błędach, zapytaniach typu UNION, kwerendach skumulowanych i atakach typu OOB. Pozwala na atakowanie baz danych MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, HSQLDB i Informix .


Na rysunku poniżej zaprezentowany został przykład użycia aplikacji sqlmap, która to za pomocą testów heurystycznych wykryła, że w testowanym zapytaniu, parametr id może być podatny na atak typu sql injection.

przykład użycia aplikacji sqlmap

Chcesz wiedzieć więcej?

Zapisz się i bądź informowany o nowych postach (zero spamu!).
Dodatkowo otrzymasz, moją prywatną listę 15 najbardziej przydatnych narzędzi (wraz z krótkim opisem), których używam przy testach penetracyjnych.

Nigdy nie podam, nie wymienię ani nie sprzedam Twojego adresu e-mail. W każdej chwili możesz zrezygnować z subskrypcji.

Otagowano , , , , , , , , , , , , .Dodaj do zakładek Link.

Podziel się swoją opinią na temat artykułu