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

Вопрос про БД и sqlmap

fludd777

HDD-drive
Пользователь
Регистрация
08.03.2024
Сообщения
48
Реакции
1
Привет.
Каким параметром я могу узнать данные от базы данных (логин и пароль) в sqlmap ?
И еще вопрос. Как я могу подключиться к бд по этим данным(при условии, что база не на локалхосте). Известно, что используется Microsoft SQL.
Заранее спасибо!
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Код:
sqlmap -u http://example.com/page.php --data="param1=value1&param2=value2" --dbms=mssql --password=<пароль> --user=<логин> --hostname=<хост>
Подбор cred для mssql
Код:
 hydra -L <файл_с_списком_пользователей> -P <файл_с_паролями> <IP_адрес_сервера> mssql
как подключиться если есть креды

Код:
sqlcmd -S local.corp -U vasya -P qwerty

Код:
isql -S local.corp -U vasya -P qwerty
 
Последнее редактирование:
Код:
sqlmap -u http://example.com/page.php --data="param1=value1&param2=value2" --dbms=mssql --password=<пароль> --user=<логин> --hostname=<хост>
Подбор cred для mssql
Код:
 hydra -L <файл_с_списком_пользователей> -P <файл_с_паролями> <IP_адрес_сервера> mssql
Спасибо большое!
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Вместо того что-бы открыть официальный гайд и найти там буквально за 10-30 секунд нужные команды, лучше потратим больше своего и чужого времени на форуме, для вопроса. Полнейший пиздец и деградация.
 
Вместо того что-бы открыть официальный гайд и найти там буквально за 10-30 секунд нужные команды, лучше потратим больше своего и чужого времени на форуме, для вопроса. Полнейший пиздец и деградация.
Спасибо за линк, как раз не мог найти
 
Поиск - это первое, что должен прокачать пентестер в 5
 
Вместо того что-бы открыть официальный гайд и найти там буквально за 10-30 секунд нужные команды, лучше потратим больше своего и чужого времени на форуме, для вопроса. Полнейший пиздец и деградация.
Поиск - это первое, что должен прокачать пентестер в 5

Знаете, с одной стороны вы абсолютно правы - умение находить информацию, обрабатывать и правильно интерпретировать, это главное. Другое дело, что как новичок, прекрасно понимаю подобные темы с простыми вопросами из справки. Когда на тебя обрушился шквал информации и, при серьезном погружении, у тебя чуть ли не каждый час взрывается мозг с возгласом "так можно было?". При этом еще и пытаешься реализовать свои первые атаки... просто настолько устаешь, что легче попытать удачу на форуме. Поискать есть ли подобный вопрос, а иногда слукавить и просто создать тему. Хотя бы, чтобы тебя пальцем тыкнули в конкретную строчку справки, а идеально, если профи подскажет.

Сам сейчас нахожусь в такой же ситуации. Пытаюсь добраться до недр своего ПЕРВОГО, можно сказать))), сайта на WP. Burp нашел инъекцию, разматываю ее уже четвертые сутки. Могу только читать данные из базы. Читаю их через Intuder, создавая массовые атаки, а после посимвольно выстраивая строчку. И закралось у меня в голове подозрение, что все это можно было делать не руками, а тем же sqlmap. И понимаю, что руками утилиты это заняло бы в десятки раз меньше времени. Но я, то подбираю инъекции, чтобы выкачать какие-то данные. То пытаюсь умудриться запустить правильно hashcat, чтобы подобраль пароли по хэшам. То копаюсь в дампе, который я смог вытащить благодаря подбору имени файла бэкапа. В общем, эта загадка истощила меня, в силу неподготовленности и т.п. Я честно пытался разобраться в справке sqlmap, но не хватает ума. К слову, если кто подскажет, я буду крайне благодарен. Хотя, конечно же, постараюсь додуматься своим умом.

Сама нагрузка у меня выглядит таким образом:
Код:
GET /sitemap1.xml'%2b(select*from(select(if((select(substr(option_value,118,1))from(wp_options)where(option_name='wp-phpmyadmin-extension'))='R',sleep(5),sleep(0))))a)%2b' HTTP/1.1

Как ее запихнуть в sqlmap, чтобы можно было прочитать пользователя базы данных, список баз (хотя я его уже умудрился вытащить. но вдруг где ошибся) и т.п., я ума не приложу. Да, читал, что в --url можно подставить * в нужном месте, но ведь там предполагается какой-то изменяемый параметр. Если бы был, например, id=1, у меня вопросов не возникло бы. Хоть звездочкой, хоть через -p прописал бы. Про нагрузки тоже читал, что через --tamper можно указать нагрузку, но как я понял, только предустановленные скрипты. Я конечно полезу с этим разбираться, может там и свои скрипты можно писать, но пока я до этого доберусь и разберусь, пройдет много времени. Просто попросить помочь гораздо эффективнее.
С тем же --technique, тоже вообще не понял. Думал, что понял, но когда криво-косо запустил sqlmap, понял. что он не только Time Blind использует.

Кстати, с терминологией тоже отдельный вопрос. Может, как говорит Киркоров, я зашел не в ту дверь и теперь ошибочно называю инъкцию Time-Blind, а она как-то по другому называется.
 
GET /sitemap1.xml'%2b(select*from(select(if((select(substr(option_value,118,1))from(wp_options)where(option_name='wp-phpmyadmin-extension'))='R',sleep(5),sleep(0))))a)%2b' HTTP/1.1
Код:
sqlmap.py -u "https://site.com/sitemap1.xml*" --dbs --dbms=MySQL --risk=3 --level=5 --technique=TS --random-agent
Ну попробуй так, по желанию еще -v3 можно добавить, дабы видеть каждый отправляемый пейлоад. Если будет обнаружен stacked queries вектор, то просто админа своего добавишь через инсерт, либо у действующих пассы апдейтнуть можно. А вообще, на всякий случай, пройтись по всем техникам лучше, без --technique=TS.
 
Последнее редактирование:
--risk=3 --level=5
советую хорошо почитать про эти 2 параметра) иначе создадут очень много головной боли) слишком уж привыкли все указывать тут максимальные значения)
 
Спасибо за информацию, почитаю на досуге, а то как-то не удалось за 10 лет.
да тут не лично вам совет а впринципе всем, как бы совет к которому пришел за 20 лет в сфере ИБ, а если уже быть точным то за 23 года.
 
Код:
sqlmap.py -u "https://site.com/sitemap1.xml*" --dbs --dbms=MySQL --risk=3 --level=5 --technique=TS --random-agent
Ну попробуй так, по желанию еще -v3 можно добавить, дабы видеть каждый отправляемый пейлоад. Если будет обнаружен stacked queries вектор, то просто админа своего добавишь через инсерт, либо у действующих пассы апдейтнуть можно. А вообще, на всякий случай, пройтись по всем техникам лучше, без --technique=TS.
Я, вроде, подобный запуск делал, но явно без --dbms=MySQL. В упор не замечал этого параметра.

Протестировал с рисками от 1 до 3, с указанием --technique=TS и без него - все мимо. Самое интересное, что среди нагрузок видел подобную той, которая у меня работает. Попробую помучить куки и заголовки. Вероятно в них причина.

Что касается инсерта.... к сожалению, не вариант. По крайней мере с моей точки входа. Я так понял, что это какая-то система статистики обеспечивает мне дыру для чтения базы. Тупо пихает инсертом в базу все данные реквеста, вот запросы и обрабатываются. Возможно есть какой-то способ у MySQL запихать в INSERT вторую операцию INSERT или UPDATE, но я такого варианта не смог найти. Буду дальше ковырять sqlmap, может найду что-то интересное.
 
1) По логике вещей там нет INSERT/UPDATE это же карта сайта, там SELECT.
2) Скорей всего куки и другие заголовки тоже не играют роль т.к. карта сайта предназначена для поисковых ботов, но если прям очень хочется можно бурпом перехватить пакет и сохранить в файл "copy to file" а потом использовать параметр -r в sqlmap.
3) risk=1 тут нужно подумать.
4) ставим logger++ в бурп (https://github.com/portswigger/logger-plus-plus) подключаем прокси к sqlmap --proxy=http://127.0.0.1:8080 и полноценно мониторим процесс.
5) --technique=TS тут еще можно указать B либо вообще не указывать ничего
6) стоит обратить внимание на tampers исходя из wafwoof
7) --force-ssl, --skip-waf
8) для точности определения указать --string основываясь на выводах sqlmap если приручной проверке было выявлено что страница крашится при плохих запросах итд.

В общем хорошо почитайте мануал sqlmap потому указывая минимальный набор вместе с --risk=3 --level=5 вы делаете откровенную х#йню. В первую очередь нужно собрать информацию руками потом уже пихать в софт для автоматизации.
 
Последнее редактирование:
1) По логике вещей там нет INSERT/UPDATE это же карта сайта, там SELECT.
2) Скорей всего куки и другие заголовки тоже не играют роль т.к. карта сайта предназначена для поисковых ботов, но если прям очень хочется можно бурпом перехватить пакет и сохранить в файл "copy to file" а потом использовать параметр -r в sqlmap.
3) risk=1 тут нужно подумать.
4) ставим logger++ в бурп (https://github.com/portswigger/logger-plus-plus) подключаем прокси к sqlmap --proxy=http://127.0.0.1:8080 и полноценно мониторим процесс.
5) --technique=TS тут еще можно указать B либо вообще не указывать ничего
6) стоит обратить внимание на tampers исходя из wafwoof
7) --force-ssl, --skip-waf
8) для точности определения указать --string основываясь на выводах sqlmap если приручной проверке было выявлено что страница крашится при плохих запросах итд.

В общем хорошо почитайте мануал sqlmap потому указывая минимальный набор вместе с --risk=3 --level=5 вы делаете откровенную х#йню. В первую очередь нужно собрать информацию руками потом уже пихать в софт для автоматизации.
Спасибо за развернутый ответ!
1. Тут хотел написать, что не понимаю, какую роль в селекте сайтмапа может играть урл и тут же понял, что плагин на основании урла и выдается конкретный узел сайтмапа. В целом, можно даже покопаться и найти где формируется этот запрос. У меня же есть список установленых плагинов. Как собранный разными инструментами, так и информация хранящаяся в самой БД сайта. Бэкап ведь я выкачал уже.
2. Не совсем понимаю о чем речь. Я из Burp и отправляю запрос, т.е. он у меня весь есть.
1712304736748.png

Извиняюсь, что закрыл данные, но я же переживаю)))))

Сохранить этот запрос и его запихать в sqlmap?
3. Пробовал с разными рисками. Результат один и тот же, sqlmap упорно твердит, что параметр выглядит не ижектабле
4. Спасибо за мысль! Обязательно попробую!
5. Пробовал не указывать ничего, результат тот же.
6. Вчера наткнулся на неплохой набор инфы по tampers, пробовал запускать с lowercase, space2plus. Хотя есть смысл попробовать вариации вроде связанные с mysqldash и mysqlblank. Просто, на основании опыта ручных запросов. Например, выяснил, что комменты /**/ не срабатывают.
7. --force-ssl попробую, вроде не использовал его. --skip-waf пробовал, --hpp пробовал, --ignore-code=400 т.к. выпадали ошибки. --ignore-redirects использовал, хотя тут большой вопрос. Если нагрузка прошла до стадии запроса, возвращается 301 редирект. Соответственно, если иф запроса выкинул на слип, то редирект с задержкой, например, 5679 мс. Иначе, 679мс, как пример.
--no-escape тоже пробовал, т.к. руками запросы с % не проходили, хотя иъекция начинается и заканчивается с плюсом в виде %2b. Проффисывал в prefix и suffix то, что идет в начале и конце '%2b( и )%2b'. Так же пробовал выносить в эти параметры первую обертку запроса select*from()a. В --sql-query= пробовал прописать, как саму инъекцию целиком, так и селект со слипом, соответственно, комбинируя с суфиксами и префиксами или без них.

Сейчас появилась мысль, что --code= надо прописать 301 редирект. Может тут собака зарыта. Ну и --string, как вы указали, тоже надо затестить. Даже, наверное, их вместе. Сейчас буду пробовать.
Если не прокатит, что же.... тогда останется только накидать свой скрипт. Хотя, уверен, что sqlmap сам прекрасно справится. Свой скрипт для этой ситуации, это не самая большая проблема. Просто боюсь, что элементарно не разобрался с sqlmap.

P.S.
На всякий случай, тестировал указание места инъекции как *, так и %INJECT HERE% - разницы никакой. Ровно как и с попыткой отделить место инъекции от урла пробелом.
P.P.S.
--delay же еще прописывал. Последнее время при массовых запросах стали появляться проблемы. Тупо по минуте сервер не отвечал. Либо админы что-то подкрутили, а может еще кто пришел на сайт.... Ну и таймаут соответственно увеличивал. Скорость, конечно же, резко просела, зато ошибок почти не сыпалось.
 
Последнее редактирование:
Thanks for the detailed answer!
1. Here I wanted to write that I don’t understand what role a URL can play in the sitemap selection, and I immediately realized that the plugin is based on the URL and produces a specific sitemap node. In general, you can even dig around and find where this request is formed. I also have a list of installed plugins. Both collected by various tools and information stored in the site’s database itself. I already downloaded the backup.
2. I don’t quite understand what we’re talking about. I'm from Burp and I'm sending a request, i.e. I have all of it.
Посмотреть вложение 81779
I apologize for closing the data, but I’m worried)))))

Save this query and put it in sqlmap?
3. Tried with different risks. The result is the same, sqlmap stubbornly insists that the parameter does not look compatible
4. Thanks for the thought! I'll definitely try it!
5. I tried not to specify anything, the result was the same.
6. Yesterday I came across a good set of information on tampers, I tried to launch it with lowercase, space2plus. Although it makes sense to try variations like those associated with mysqldash and mysqlblank. Simple, based on experience with manual queries. For example, I found out that /**/ comments do not work.
7. --force-ssl I'll try, I don't think I've used it. I tried --skip-waf, I tried --hpp, I tried --ignore-code=400 because... errors occurred. I used --ignore-redirects, although this is a big question. If the load has reached the request stage, a 301 redirect is returned. Accordingly, if the request if is thrown into a slip, then the redirect will be delayed, for example, 5679 ms. Otherwise, 679ms, as an example.
I also tried --no-escape, because... manual requests with % did not work, although the injection begins and ends with a plus in the form of %2b. I added in prefix and suffix what comes at the beginning and end of '%2b( and )%2b'. I also tried to include the first wrapper of the select*from()a request in these parameters. In --sql-query= I tried to register both the injection itself and the select with a slip, respectively, combining with or without suffixes and prefixes.

Now the idea has arisen that --code= should be used to set up a 301 redirect. Maybe the dog is buried here. Well, --string, as you indicated, also needs to be tested. Even, probably, them together. I'll try it now.
If it doesn't work, well...then all you have to do is write your script. Although, I’m sure that sqlmap itself will do a great job. Having your own script for this situation is not the biggest problem. I'm just afraid that I simply didn't understand sqlmap.

PS
Just in case, I tested indicating the injection site both * and %INJECT HERE% - no difference. Exactly like with an attempt to separate the injection site from the URL with a space.
P.P.S.
I also specified --delay. Recently, problems have begun to appear with mass requests. The server didn't respond for a minute. Either the admins tweaked something, or maybe someone else came to the site.... Well, the timeout increased accordingly. The speed, of course, dropped sharply, but there were almost no mistakes.
you can easily use your burp data in sqlmap.

1: Right click on the request field in Burp Suite.

2:Click "Save item" or "Copy to file" to download the request state.

3:Save as "request.txt" (this is arbitrary nam e).

cmd: sqlmap -r request.txt
 
Извиняюсь за долгое молчание. По какой-то причине не получалось зайти на форум. Такое ощущение, что один из моих айпи попал под ататат.

Что касается ситуации с сайтом и sqlmap. Во-первых, спасибо всем большое за ответы! Если честно, безумно туплю в отношении него, но очень хочется самому своим умом и руками дожать. Вижу, что там явно есть все шансы пробиться, просто неопытность мешает. Но, так сказать, уже дело принципа что ли)))) Я уже раза три психовал и бросал его, но возвращаюсь снова через день-два)))

Я пробовал загружать отчет из Burp, пробовал кучу разных вариаций и комбинаций, практически всю справку проштудировал и на каком-то уровне разобрался с командами. Но... то ли лыжи не едут.... Попутно в Акуентикс попался сайт с такой же Boolean Time-blind уязвимостью. Его спокойно, хоть и с небольшими проблемами, затолкал в sqlmap. Сейчас парсится структура таблиц правда очень долго, но тут скорее мои ограничения по пропускной способности. Другими словами, я не совсем безнадежен. Хочется так думать.

Для этого сайта написал небольшой скрипт, который выпарсит мне нужные данные. Благодаря чему, кстати, нашел уже интересные таблицы. И плагин, который не нашел тот же wpscan. Хотя, может его только сейчас установили.

Обязательно вернусь и отпишусь по результатам. На самом деле, подумывал, может описать все мои потуги с этим сайтом отдельной темой? За время борьбы с ним, много чего узнал, кучу ошибок совершил. Подобный материал может помочь кому-то, кто с нуля идет. Но опять же... неоднократно встречал тут мнение, что всех задолбало большое количество материала "для самых маленьких". Не хотелось бы засорять форум, пусть и своим опытом, а не переводом зарубежной статьи.
 
Ура! Загадка разгадана!

1712756464597.png


"Ку!" - всем любителям "Кин-Дза-Дза!"

Я двигался в правильном направлении, но зашел не в ту дверь. Нужно было внимательнее прочитать про --technique, а конкретно про технику "Q", которая означает "Inline queries". А в моем случае, это именно инлайн. Запрос, который наконец сработал, выглядит следующим образом:

Код:
sqlmap -u "https://site.com/sitemap.xml*" --risk=2 --level=3 --technique=TQ --random-agent --batch --skip-urlencode --no-escape --dbms=MySQL --delay=0.3 --ignore-redirects --skip-waf --force-ssl --prefix="'%2b(" --suffix=")%2b'"

Вот список параметров и мое мнение по поводу смысла, который они в себе несут:
--risk=2 - у меня Time-based blind ijection, а в справке сказано: "Значение риска 2 добавляет к уровню по умолчанию тесты для внедрения SQL-кода на основе времени выполнения тяжелых запросов"
--level=3 - по идее, мне хватило бы значения 1, но видимо на автомате написал... вообще, как я понял, этот параметр влияет на то, какие параметры проверяются, на уровне 3 проверяются значения HTTP User-Agent/Referer и куки
--technique=TQ - используемые техники инъекции. В данном случае, T - Time-based blind и Q - Inline queries. Вот такое объяснение мне попалось в сети для Q:

Inline query, is as the name says, inline. Those are all cases where the RAW query can just be injected without any prefix and/or suffix. You put the SQL query and it works.


Now, in real life, those are cases such as:


  1. mysql_query($_REQUEST['sql'])
    OR
  2. mysql_query("SELECT * FROM users WHERE id=($_REQUEST['id'])") # with DBMS error reporting turned on
    OR
    ...

В моем случае, ключевое сыграло сочетание --technique=TQ и --prefix с -suffix. Похоже, подобной нагрузки в sqlmap нет. Поэтому, есть два варианта. Либо прописать свой пэйлоад в xml/payloads.xml, либо прописать недостающие части в параметры слудующим образом:
--prefix="'%2b("
--suffix=")%2b'"

--skip-urlencode - убираем кодирование запроса в URL. В моем случае, это тоже важно, так как запрос проходит "как есть", и не проходит в виде енкодинга
--ignore-redirects - игнорируем редиректы. У меня в ответе приходит 301, если успех, но не думаю, что это имело какое-то ключевое занчение.
--no-escape- отключаем экранирование строк. Опять же, у меня проходит прямой запрос, без лишнего.

Дальше ничего необычного:
--random-agent - случайный юзер-агент
--batch - sqlmap сам решает, как отвечать на свои вопросы

--dbms=MySQL - тип СУБД, правда мне sqlmap сказал, что я не прав
--delay=0.3 - задержка между запросами, т.к. слишком частые запросы приводят к тому, что сервер начинает отвечать с задержками
--skip-waf - пропускаем определение WAF, в моем случае это лишнее
--force-ssl принудительное использование SSL/HTTPS

P.S.
Всем спасибо за помощь!
 
Последнее редактирование:
Сам сейчас нахожусь в такой же ситуации. Пытаюсь добраться до недр своего ПЕРВОГО, можно сказать))), сайта на WP. Burp нашел инъекцию, разматываю ее уже четвертые сутки. Могу только читать данные из базы. Читаю их через Intuder, создавая массовые атаки, а после посимвольно выстраивая строчку. И закралось у меня в голове подозрение, что все это можно было делать не руками, а тем же sqlmap. И понимаю, что руками утилиты это заняло бы в десятки раз меньше времени. Но я, то подбираю инъекции, чтобы выкачать какие-то данные. То пытаюсь умудриться запустить правильно hashcat, чтобы подобраль пароли по хэшам. То копаюсь в дампе, который я смог вытащить благодаря подбору имени файла бэкапа. В общем, эта загадка истощила меня, в силу неподготовленности и т.п. Я честно пытался разобраться в справке sqlmap, но не хватает ума. К слову, если кто подскажет, я буду крайне благодарен. Хотя, конечно же, постараюсь додуматься своим умом.
Для инъекций есть инструментарий, более-менее автоматизированное ПО и обыкновенно люди экстатически рады такому решению, потому что запоминают глядя на его работу.
Но это иллюзия знания. Вам нужно понять где изначально вы чуть вывихнули ногу, после споткнулись, может ушли чуть не туда, а сейчас не можете понять последовательность усвоения знаний.
Вероятней всего что вы не понимаете синтаксис и переменные, вы понимаете их в примерах, функциональность >> или << отношении. Что это значит практически? Ну вот абсурд, но факт, бывает и так, что люди слияние путают с конкатенацией, но они считают что отстранение понятно им, это противоположно и короче урок усвоен. В итоге оказываеся что нет. Склеивание, присоединение, слияние это контекстуальные синонимы возможно, но как функции категорически нет.
Что касаетcя hashcat, сам сталкивался, у них нет адаптационного подхода, где-то логика проста, где-то понятна, комьюнити на форуме попросту забыло блядь когда у них вопросы были об очевидном, им не нужно адаптировать что-то для кого-то, зачастую банальные вопросы про, ну например подгон md5 decode это нуль или единичка где надо только мыло тупо прогнать, они не станут на этот вопрос отвечать. Извините, но человек первый раз берет инструмент под конкретную блядь задачу, а не брут или изучение вариантов настройки под обилие задач. Словарь поискать немного стоит, корень, 50 вопросов задаваемых тупых, они видят это так что человек вообще деревянный. Ну я ХЗ, полагаю я несколько часов потратил на изучение этих маравихеров. Комьюнити классное, отзывчивое, в сравнении с веткой на форуме по помощи в этом, нельзя сравнивать. Но, они не снобы, просто люди на хер забыли когда они открыли, они знали как миниму JR и были другие сценарии, этой логике сто лет в обед. Поэтому так.
Но у вас возможно проблема в основе, не страшно не знать чего то и проебать что-то существенное, страшно годами сука кривить ебало что ты не ебацца в рот спец, а потом оказывается что тебе что не отстранение то всё на х#й присоединение. Заебатая логика, всё шо не отнимает от суммы то себе в копилку, только при чем здесь функциональность? )))
Есть ряд вопросов для понимания где вывих и что проебано. У людей такое бывает не когда нет учителя и плана обучения, а когда не знают все же где упущено.
Второй момент это мотивация и необходимость, если они есть и это не схема типа щаз научусь натыкивать эту херню и масть покатит, то сможете чуть более достичь, или перепрыгнуть барьеры, это часто бывает. В остальном вас не поймут. Когда надо, за полгода по Латанье Суини писали работы, µ-Argus алгоритм, datafly и другое, люди которые не знают банальных вещей, сумели не быть попугаями. Величайший ум современности, а не просто доктор наук и первая дама чернокожая получившая бакалавра в Массачусетском. Но это редкость, но такое имеет место, я не путаю видимость с наявностью. Суини точно такая же, точнее ее мотивация сделала ее такой.
Всё в ваших руках, начните с синтаксиса, переменных, понимания того, что возможно вы ошибочно интерпретировали как ясно-понятное для вас.
 


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