Belangrijke SQLMap commando’s

Het SQLMap gereedschap is te vinden in de gereedschapskist van elke penetratie tester. Het is een van de meest populaire en krachtige tools als het gaat om het misbruiken van SQL-injectie kwetsbaarheden, die zelf bovenaan de OWASP lijst van Top 10 kwetsbaarheden staat. Van het bevestigen van de SQL-injectie kwetsbaarheid tot het extraheren van de database naam, tabellen, kolommen en het verkrijgen van een volledig systeem, het kan worden gebruikt voor meerdere doeleinden.

In dit artikel zullen we verschillende type SQLMap commando’s zien die van pas kunnen komen bij het exploiteren van verschillende scenario’s van SQL-injectie.

SQLMap kan van de volgende links worden gedownload:

Windows

Linux: git clone -depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

Voor demodoeleinden gebruik ik deze machine van Vulnhub.

Laten we eens kijken naar het basisgebruik van SQLMap tool op GET en POST requests.

sqlmap -u http://site-to-test.com/test.php?id=1 -p id

sqlmap -u http://site-to-test.com/test.php?id=1*

-u: URL om te scannen

-p: parameter om te scannen

*: Parameter om te scannen (als de schakelaar -p niet is opgegeven)

POST Request

We kunnen de gegevens die in de body van het POST-verzoek worden doorgegeven, doorgeven om door het SQLMap-hulpprogramma te worden gescand.

sqlmap -u http://site-to-test.com/admin/index.php -data=”user=admin&password=admin” -p user

-data = POST data

Een andere manier is om het Burp-verzoek in een bestand te kopiëren en dat aan SQLMap door te geven.

sqlmap -r <pad naar het request-bestand>

Laten we een beetje verder gaan om andere opties van het hulpprogramma SQLMap te begrijpen.

Scannen van POST-inlogpagina’s

Post-inlogpagina’s worden geautoriseerd door de cookie-header, die wordt meegestuurd in de HTTP-header van een GET/POST-verzoek. Om de post login pagina(‘s) te scannen, moeten we de geldige cookie doorgeven aan SQLMap.

sqlmap -u http://192.168.202.163/admin/index.php?id=1 -cookie=”cookie value”

/admin/index.php?id=1 is een post login pagina.

Ook veel pagina’s worden beschermd door de User-Agent of Referrer header. Deze kunnen ook in het commando worden opgenomen:

sqlmap -u http://192.168.202.163/admin/index.php?id=1 -user-agent=infosec

sqlmap -u http://192.168.202.163/admin/index.php?id=1 -referer= http://192.168.202.163/admin/index.php

Extra kunnen we de user-agent header randomiseren door de -random-agent optie te gebruiken.

CRAWL

Crawl is een belangrijke optie waarmee het hulpprogramma SQLMap de website kan crawlen, beginnend vanaf de hoofdlocatie. De diepte om te crawlen kan worden gedefinieerd in het commando.

sqlmap -u http://192.168.202.160/ -crawl=1

-crawl: Definieer een diepte om te crawlen. (Voorbeeld: Als u 2 definieert, kan het hulpprogramma maximaal twee directory’s crawlen)

Als we een pagina willen uitsluiten van het bereik van de crawler, kunnen we dit definiëren met -crawl-exclude. Dit is een handige optie wanneer we een post-loginpagina crawlen.

sqlmap -u http://192.168.202.163/ -crawl=3 -cookie=”cookie value” -crawl-exclude=”logout”

Dit commando crawlt de website tot drie directory’s en sluit elke URL uit waar het sleutelwoord “logout” in voorkomt.

Zoals u hieronder kunt zien, heeft SQLMap de website gecrawld maar de URL “logout” uitgesloten.

Laten we hetzelfde commando uitvoeren zonder de optie -crawl-exclude:

Zoals u hieronder kunt zien, heeft SQLMap, wanneer -crawl-exclude niet is gedefinieerd, de afmeld-URL gecrawld. Hierdoor zou de bestaande sessie ongeldig kunnen worden gemaakt (als gevolg van uitloggen) en zou de scan niet kunnen worden voltooid.

SQLMap via proxy

We kunnen de details van een proxy definiëren van waaruit we het verzoek laten passeren. Als we het verzoek door een proxy tool zoals Burp willen laten lopen, start dan Burp Suite en configureer deze om op localhost op poort 8080 te draaien. Gebruik nu het volgende SQLMap commando:

sqlmap -u http://192.168.202.162/cat.php?id=1 -p id -proxy=”http://localhost:8080″

Nu, denk aan een scenario waarbij de sqlinjection keywords zoals OrderBy en Union op de zwarte lijst staan van de server. We kunnen dit soort implementaties omzeilen door de camel casing techniek te gebruiken. We zullen SQLMap gebruiken om het verkeer naar Burp te sturen en de “match and replace” functie van Burp gebruiken om de bovenstaande restrictie te omzeilen.

De Match and Replace functie kan worden gevonden onder de “Options” tab, onder de “Proxy” tab van Burp.

Dit zal controleren of het verzoek een keyword als “union” heeft. Zo ja, dan vervangt u het door “UnIoN.”

In een scenario waarin de toepassing alleen toegankelijk is via een proxyserver, kan hetzelfde worden gedefinieerd met het volgende commando:

sqlmap -u http://192.168.202.162/cat.php?id=1 -p id -proxy=”http://localhost:8080″ -proxy-cred=username:password

Batch

Het batchcommando wordt gebruikt voor niet-interactieve sessies. Wanneer we iets proberen te scannen, kan SQLMap ons vragen om input te geven tijdens de scan: bijvoorbeeld bij het gebruik van de crawl-functie, vraagt de tool of de gebruiker de geïdentificeerde URL wil scannen. Wanneer -batch in het commando is gedefinieerd, gebruikt het hulpprogramma een standaardwaarde om door te gaan zonder de gebruiker te vragen.

Form

Een pagina-URL met een formulierveld (bijvoorbeeld een inlogpagina) kan samen met de -form-optie worden opgegeven om de pagina te parseren en de gebruiker te begeleiden bij het testen van de geïdentificeerde velden.

Nu kunnen pagina’s met een groot aantal formuliervelden effectief worden getest door de opties -form en -batch samen te gebruiken. Hiermee wordt de pagina geparsed en wordt gecontroleerd op formuliervelden, waarna de invoer automatisch namens de gebruiker plaatsvindt.

Als de hele toepassing moet worden gescand, kan de crawl-optie samen met form en switch worden gebruikt.

Threads

Met de optie threads kan de gebruiker het aantal gelijktijdige verzoeken definiëren dat door het hulpprogramma SQLMap moet worden verzonden. Dit zou de totale testtijd verkorten. Deze waarde moet niet te hoog worden gekozen, omdat dit van invloed kan zijn op de nauwkeurigheid van het resultaat.

Risico en niveau

Risico maakt het mogelijk het type payloads te bepalen dat door het hulpprogramma wordt gebruikt. Standaard wordt waarde 1 gebruikt en deze kan worden geconfigureerd tot niveau 3. Niveau 3, het maximum, bevat een aantal zware SQL queries.

Het niveau bepaalt het aantal controles/payloads dat moet worden uitgevoerd. De waarde varieert van 1 tot 5. 5, zijnde het maximum, omvat een groot aantal payloads in de scan.

Het risico en het niveau worden aanbevolen om te worden verhoogd als SQLMap niet in staat is om de injectie te detecteren in de standaard instellingen.

Verbose

In het geval dat we de payload willen zien die wordt verzonden door de tool, kunnen we de verbose optie gebruiken. De waarden variëren van 1 tot 6.

Database opsomming

Zoals we weten dat SQLMap vooral wordt gebruikt voor SQL-injectie, laten we eens kijken naar een aantal commando’s om de database op te sommen via een toepassing die kwetsbaar is voor SQL-injectie.

1. -dbs: Deze optie wordt gebruikt om de database op te tellen.

2. Nu hebben we de naam van de database. Om de tabel voor database “photoblog” uit te pakken, voert u het volgende commando uit:

3. Voer het volgende commando uit om de kolomgegevens uit de tabel “users” te extraheren:

4. Om de gegevens voor de tabel “users” te dumpen, gebruikt u het commando -dump:

5. Om de huidige databasegebruiker te identificeren:

6. Om de huidige databasenaam te identificeren:

7. De rechten, rollen en of de huidige DB-gebruiker de DB-admin is identificeren:

WAF omzeilen met behulp van Tamper Script

Vaak komen we een scenario tegen waarbij de toepassing zich achter de web application firewall (WAF) bevindt. Om te controleren of de site wordt beschermd door WAF, kunnen we de volgende opties gebruiken:

-identify-waf

Als de WAF eenmaal is geïdentificeerd, kunnen we het tamper script gebruiken om de WAF-beveiligde applicaties aan te vallen. Het tamper script kan het verzoek wijzigen om aan WAF detectie te ontsnappen. De scripts kunnen worden gevonden onder /usr/share/sqlmap/tamper/ directory.

Systeemcommando’s uitvoeren

We kunnen de commando’s op OS/systeemniveau uitvoeren als de huidige databasegebruiker DBA-rechten heeft. We kunnen de volgende opties gebruiken:

Voor een Linux-server:

sqlmap -u http://192.168.202.162/cat.php?id=1 -os-shell

Voor een Windows-server:

sqlmap -u http://192.168.202.162/cat.php?id=1 -os-cmd <cmd>

Running SQL Queries

We kunnen het SQL statement op de database uitvoeren door de volgende commando’s uit te voeren:

sqlmap -u 192.168.202.164/cat.php?id=2 -sql-shell

Andere opties

Een aantal andere opties zijn:

1. Scannen van een pagina die is beveiligd met HTTP-authenticatie zoals Basic, NTLM en Digest:

sqlmap -u http://example.com/admin.aspx -auth-type Basic -auth-cred “admin:admin”

2. Scannen van een pagina die is beveiligd met een op sleutels gebaseerde authenticatie

sqlmap -u http://example.com/admin.aspx -auth-file=<pad naar PEM-certificaat of privésleutelbestand>

3. Om aanvallende IP’s willekeurig te maken (dit kan helpen in gevallen zoals WAF-detectie, of wanneer het verbergen van de aanvallende bron het moeilijker zou maken om het IP te traceren).

Om het standaard Tor anonimiteits netwerk te gebruiken:

sqlmap -u http://example.com/admin.aspx -tor

Om een Tor poort te definiëren:

sqlmap -u http://example.com/admin.aspx -tor-port=<tor proxy port>

4. Als er vertraging nodig is tussen elk HTTP-verzoek:

sqlmap -u http://example.com/admin.aspx -delay=1 #1 seconde vertraging

5. Als een pagina wordt beschermd door een CSRF-token, kunnen we dit ook in het commando opnemen:

sqlmap -u http://example.com/admin.aspx -csrf-token=<csrf-token>

Tweede-Orde SQL-injectie: Bij dit type SQL-injectie wordt de SQL payload opgeslagen in de database en later opgehaald bij het openen van een andere pagina. We voorzien een URL, die na elke injectie zal worden opgevraagd door SQLMap tool. We kunnen de SQLMap tool opdracht geven om deze injectie te testen door de volgende commando’s te gebruiken:

sqlmap -r /root/Desktop/Burp.txt -second-order “http://target/vulnerbalepage.php”

Het Burp.txt bestand bevat het verzoek waarop de injectie moet worden uitgevoerd.

-second-order “URL” bevat de URL die door SQLMap zal worden benaderd na elke injectie.

Conclusie

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.