WEP lekcja #17 – Wprowadzenie do SQL Injection, phpMyAdmina i MySQL w teorii

Przechodzimy do kolejnej grupy filmów dotyczących nauki SQL Injection. Podatność ta polega na niefiltrowaniu danych pochodzących od użytkownika strony internetowej. Najczęściej występuje w przypadku, gdy do wykonania zapytania do bazy danych potrzebne są dodatkowe informacje od internauty a programista nie sprawdza ich pod względem poprawności technicznej.

Dzięki wstrzykiwaniu zapytań SQL napastnik może pobierać, modyfikować a nawet usuwać elementy z bazy danych. Wszystko oczywiście zależy od konfiguracji w naszym przypadku serwera MySQL. Najczęściej jednak wykorzystuje się do tego ataku hakerskiego klauzurę UNION SELECT, umożliwiającą pobranie dodatkowych informacji z bazy danych takich jak loginy i hasła użytkownika. Dzisiaj w tym poradniku zajmiemy się jedynie wprowadzeniem do tego zagadnienia.

Film o ataku hakerskim SQL Injection

Poniżej znajduje się wideo szkoleniowe wprowadzające do teoretycznych zagadnień związanych z bazami danych, encjami, językiem SQL i atakami typu SQL Injection. W filmie znajduje się również kilka praktycznych przykładów języka SQL wykonanych w znanym już Tobie skrypcie phpMyAdmin.

Typowa luka związana z SQL w PHP

Jak już wspomnieliśmy we wstępie tego wpisu, najczęściej luka związana jest z niefiltrowaniem danych od internauty. Wiele dynamicznych mechanizmów stron internetowych pobiera numer newsa, nazwę kategorii, nazwę użytkownika lub inne parametry od samego internauty.  Właśnie w tych miejscach najczęściej wstrzykuje się złośliwy kod SQL. Podatność dotyczy wszystkich możliwych miejsc, w których napastnik może wprowadzić dane łącznie z nagłówkami HTTP (np: User-Agent zapisywany do logów CMS).

Jak już pewnie zauważyłeś, programista nie dokonujący walidacji i filtracji wprowadzonych danych i używając ich bezpośrednio w zapytaniu SQL sprowadza na siebie katastrofę.  Haker może spreparować i zmodyfikować ostatecznie całe zapytanie zmieniając tym samym jego działanie.

Przykład ataku sql injection w PHP i drop databases.
Slajd z wideo szkoleniowego #17 prezentujący prosty skrypt PHP odwołujący się do bazy danych. Zwróć uwagę na fakt, że programista nie sprawdził zmiennych $_GET pobranych od internauty. Powyższy przykład jest typowym obrazem podatności typu SQL Injection.

Komendy użyte w tutorialu filmowym o SQL Injection

Poniżej znajduje się kilka poleceń użytych w filmie szkoleniowym Web Application Pentesting. Oczywiście jest to tylko malutka garstka możliwości tego strukturalnego języka zapytań, ponieważ nie jest to kurs dla przyszłych administratorów baz danych.

Polecenia języka SQL

Pobranie wszystkich użytkowników tabeli users.

select * from 'users';

Pobranie wszystkich użytkowników o wartości user_id mniejszej od 3 lub równej 5

select * from users where users_id<3 OR user_id=5;

Usunięcie z bazy danych rekordu o wartości atrybutu user_id 66

delete from users where user_id=66;

Usunięcie bazy danych o nazwie x

drop database x;

Logowanie się do konsoli MySQL w XAMPP

W celu zalogowania się do serwera MySQL za pomocą konsoli wydaj następujące polecenie

mysql -h localhost -u root -p

Podgląd nazw istniejących baz danych

show databases;

Wybór bazy danych na której chcesz pracować (dvwa)

use dvwa;

Wyświetlenie dostępnych tabel (encji) w wybranej bazie danych

show tables;

Teraz już możesz zadawać w normalny sposób zapytania w swojej konsoli. W podobny sposób możesz wykorzystać klienta MySQL w systemie Kali Linux.

Praca domowa z wstrzykiwania SQL

-> Zadanie 1

Dzisiejsze zadanie ma uzbroić Ciebie w umiejętność samorozwoju. Znajdź w internecie jakiś krótki kurs wprowadzający do języka zapytań SQL (MySQL) i przejrzyj go. Nie musisz wszystkiego uczyć się na pamięć. Polecam Tobie zwrócić szczególną uwagę na następujące zagadnienia:

  • klauzura SELECT,
  • klauzura UNION SELECT
  • operatory logiczne MySQL,
  • wbudowane funkcje silnika MySQL.

Oczywiście obojętne czy to kurs wideo, piśmienniczy ewentualnie książkowy. Jak to mawiał nasz wieszcz narodowy:

Nauką i pieniędzmi drudzy Cię wzbogacą, mądrość musisz sam z siebie własną dobyć pracą.

Autor: Adam Mickiewicz

Więc fruuuuu do nauki i traktuj to jako przyjemność zdobywania wiedzy za darmo! 😉

Podsumowanie o atakach SQL Injection

Musisz wiedzieć, że atak SQL Injection jest na drugim miejscu najpopularniejszych ataków crackerskich na Web Aplikacje. W praktyce cyberprzestępca najczęściej wykorzystuje specjalnie spreparowane zapytania UNION SELECT w celu pobrania interesujących jego informacji z bazy danych. Najczęściej jest to oczywiście login użytkowników strony i ich hasła.

Hasło często jest zahashowane w bazie danych z wykorzystaniem soli takimi funkcjami skróty jak MD5/SHA-2, więc napastnik następnie za pomocą słownika, kolizji, brute-force, chmury obliczeniowej lub tęczowych tablic próbuje je złamać. Właśnie w ten sposób nie tak dawno po wycieku bazy danych dokonano włamania do konta YouTubera Gimpera.

W następnych lekcjach poznasz standardowy typ ataku SQL Injection i dodatkowo niepozorny ślepy atak Blind SQL Injection. Oczywiście jak zwykle w ostatniej lekcji o tej luce przedstawimy kilka narzędzi BOMBA automatyzujących cały atak. Pamiętaj, że jeśli chcesz być na bieżąco, to daj lajka na naszym fanpage #HakerEduPL. Powodzenia w pracy domowej! 😉

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *