Viktiga SQLMap-kommandon

SQLMap-verktyget finns i varje penetrationstestares verktygslåda. Det är ett av de mest populära och kraftfulla verktygen när det gäller att utnyttja SQL-injektionssårbarheten, som i sig självt toppar OWASP:s lista över de tio största sårbarheterna. Från att bekräfta SQL-injektionssårbarheten till att extrahera databasens namn, tabeller, kolumner och få ett fullständigt system, kan det användas för flera olika ändamål.

I den här artikeln kommer vi att se olika typer av SQLMap-kommandon som kan komma väl till pass när vi utnyttjar olika scenarier för SQL-injektion.

SQLMap kan laddas ner från följande länkar:

Windows

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

För demoändamål använder jag denna maskin från Vulnhub.

Låt oss titta på den grundläggande användningen av SQLMap-verktyget på GET- och POST-förfrågningar.

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 att skanna

-p: parameter att skanna

*: Parameter att skanna (om -p inte anges)

POST-förfrågan

Vi kan tillhandahålla de data som skickas i POST-förfrågningskroppen som ska skannas av SQLMap-verktyget.

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

-data = POST-data

Ett annat sätt är att kopiera Burp-förfrågan till en fil och skicka samma till SQLMap.

sqlmap -r <sökväg till förfrågningsfilen>

Låt oss gå lite längre fram för att förstå andra alternativ som SQLMap-verktyget tillhandahåller.

Scanning av POST-inloggningssidor

Post-inloggningssidor auktoriseras av cookie-huvudet, som skickas i HTTP-huvudet för en GET/POST-förfrågan. För att skanna postinloggningssidan(erna) måste vi tillhandahålla den giltiga cookien till SQLMap.

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

/admin/index.php?id=1 är en postinloggningssida.

Samma gäller för många av sidorna, som är skyddade av User-Agent- eller Referrer-huvudet. Samma kan inkluderas i kommandot:

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

Och vi kan dessutom slumpmässigt bestämma user-agent-huvudet genom att använda alternativet -random-agent.

CRAWL

Crawl är ett viktigt alternativ som gör det möjligt för SQLMap-verktyget att crawla webbplatsen, med början från rotplatsen. Djupet för crawl kan definieras i kommandot:

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

-crawl: Definiera ett djup för att söka efter information. (Exempel: Om du definierar 2 kommer verktyget att kunna genomsöka upp till två kataloger)

Om vi vill utesluta någon sida från genomsökarens räckvidd kan vi definiera med -crawl-exclude. Detta är ett användbart alternativ när vi ska söka efter en inloggningssida.

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

Detta kommando kommer att söka efter webbplatsen upp till tre kataloger och utesluta alla webbadresser där nyckelordet ”logout” finns.

Som du kan se nedan har SQLMap kryssat webbplatsen men uteslutit webbadressen för utloggning.

Låt oss köra samma kommando utan alternativet -crawl-exclude:

Som du ser nedan när -crawl-exclude inte är definierat har SQLMap crawlat utloggningsadressen. Detta skulle göra att den befintliga sessionen blir ogiltig (på grund av utloggning) och inte slutföra genomsökningen.

SQLMap Through Proxy

Vi kan definiera en proxys detaljer varifrån vi tillåter att begäran passerar. Om vi vill skicka begäran via ett proxyverktyg som Burp startar vi Burp Suite och konfigurerar den så att den körs på localhost på port 8080. Använd nu följande SQLMap-kommando:

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

Tänk nu på ett scenario där sqlinjection-nyckelord som OrderBy och Union är svartlistade på servern. Vi kan kringgå dessa typer av implementeringar genom att använda camel casing-tekniken. Vi kommer att använda SQLMap för att skicka trafiken till Burp och använda funktionen ”match and replace” i Burp för att kringgå ovanstående begränsning.

Funktionen ”Match and Replace” finns under fliken ”Options”, under fliken ”Proxy” i Burp.

Detta kommer att kontrollera om begäran har ett nyckelord som ”union”. Om ja, ersätts det med ”UnIoN.”

I ett scenario där programmet endast är tillgängligt via en proxyserver kan samma definieras med hjälp av följande kommando:

sqlmap -u http://192.168.202.162/cat.php?id=1 -p id -proxy=”http://localhost:8080″ -proxy-cred=användarnamn:lösenord

Batch

Batchkommandot används för icke-interaktiva sessioner. När vi försöker skanna något kan SQLMap be oss att lämna in uppgifter under skanningen: när vi till exempel använder crawl-funktionen frågar verktyget användaren om användaren vill skanna den identifierade webbadressen. När -batch definieras i kommandot använder verktyget ett standardvärde för att fortsätta utan att fråga användaren.

Form

En URL till en sida med ett formulärfält (t.ex. en inloggningssida) kan anges tillsammans med -form-alternativet för att analysera sidan och vägleda användaren att testa de identifierade fälten.

Nu kan sidor med ett stort antal formulärfält testas effektivt med hjälp av alternativen -form och -batch tillsammans. Detta kommer att analysera sidan och kontrollera om det finns formulärfält och automatiskt tillhandahålla inmatningen för användarens räkning.

Om hela applikationen måste skannas kan crawl-alternativet tillsammans med form och switch användas.

Threads

Med threads-alternativet kan användaren definiera hur många samtidiga förfrågningar som ska skickas av SQLMap-verktyget. Detta skulle minska den totala testtiden. Detta bör inte hållas till ett högre värde, eftersom det kan påverka resultatets noggrannhet.

Risk och nivå

Risk tillåter den typ av nyttolaster som används av verktyget. Som standard används värde 1 och kan konfigureras upp till nivå 3. Nivå 3, som är den högsta nivån, innehåller några tunga SQL-förfrågningar.

Nivån definierar antalet kontroller/payload som ska utföras. Värdet sträcker sig från 1 till 5. 5, som är det högsta värdet, inkluderar ett stort antal nyttolaster i genomsökningen.

Risken och nivån rekommenderas att ökas om SQLMap inte kan upptäcka injektionen i standardinställningarna.

Verbose

Om vi vill se nyttolasten som skickas av verktyget kan vi använda verbose-alternativet. Värdena sträcker sig från 1 till 6.

Database Enumeration

Som vi vet att SQLMap huvudsakligen används för att utnyttja SQL-injektion, låt oss se några av kommandona för att räkna upp databasen genom en applikation som är sårbar för SQL-injektion.

1. -dbs: Detta alternativ används för att räkna upp databasen.

2. Nu har vi databasens namn. För att extrahera tabellen för databasen ”photoblog” kör du följande kommando:

3. Om du vill extrahera kolumndetaljerna från tabellen ”users” kör du följande kommando:

4. Om du vill dumpa data för tabellen ”users” använder du kommandot -dump:

5. För att identifiera den aktuella databasanvändaren:

6. För att identifiera det aktuella databasnamnet:

7. Identifiera privilegier, roller och om aktuell DB-användare är DB-administratör:

Bypassing WAF Using Tamper Script

Många gånger stöter vi på ett scenario där applikationen hålls bakom brandväggen för webbapplikationer (WAF). För att kontrollera om webbplatsen skyddas av WAF kan vi använda följande alternativ:

-identify-waf

När WAF:en identifieras kan vi använda manipuleringsskriptet för att angripa de WAF-skyddade programmen. Tamper-skriptet kan ändra begäran för att undgå WAF-detektering. Skripten finns i katalogen /usr/share/sqlmap/tamper/.

Körning av systemkommandon

Vi kan köra kommandon på OS/systemnivå om den aktuella databasanvändaren har DBA-rättigheter. Vi kan använda följande alternativ:

För en Linux-server:

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

För en Windows-server:

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

Körning av SQL-frågor

Vi kan köra SQL-angivelsen på databasen genom att köra följande kommandon:

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

Andra alternativ

Vissa andra alternativ inkluderar:

1. Skanning av en sida som skyddas av HTTP-autentisering som Basic, NTLM och Digest:

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

2. Skanning av en sida som skyddas av en nyckelbaserad autentisering

sqlmap -u http://example.com/admin.aspx -auth-file=<sökväg till PEM-certifikat eller privatnyckelfil>

3. För att randomisera angripande IP-adresser (detta kan vara till hjälp i fall som WAF-detektering, eller när det skulle bli svårare att spåra IP-adressen om man döljer angreppskällan).

För att använda standardnätverket för anonymitet Tor:

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

För att definiera en Tor-port:

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

4. Om det krävs en fördröjning mellan varje HTTP-förfrågan:

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

5. Om en sida skyddas av en CSRF-token kan vi inkludera densamma i kommandot:

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

Second-Order SQL injection: I den här typen av SQL-injektion lagras SQL-nyttolasten i databasen och hämtas senare vid åtkomst till en annan sida. Vi tillhandahåller en URL som kommer att begäras av SQLMap-verktyget efter varje injektion. Vi kan instruera SQLMap-verktyget att testa denna injektion genom att använda följande kommandon:

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

The Burp.txt-filen innehåller den begäran på vilken injektionen ska utföras.

-second-order ”URL” innehåller den URL som kommer att nås av SQLMap efter varje injektion.

Slutsats

Lämna ett svar

Din e-postadress kommer inte publiceras.