Подключение напрямую к базе данных с учетными данными в SQLMap

У меня есть учетные данные базы данных веб-сайта TARGET и утверждения SQLMap, что вы можете напрямую подключиться к базе данных. Вот мои команды на SQLMap в Kali Linux

sudo sqlmap -d mysql://USER:PASSWORD@TARGET_IP:MySQL_Port/DATABASE

пример

sudo sqlmap -d mysql://admin:[email protected]:3306/information_schema

но это ошибка, которую я получаю каждый раз

[CRITICAL]  SQLAchemy connection issue ('(_mysql_exceptions.OperationalError)
(1045, "Access denied for user 'admin'@'17.45.65.11' (using password: YES)")')

IP 17.45.65.11 был моим IP-адресом, который отклонил

Так есть проблема с моей командой?

ИЛИ кто-нибудь знает лучший способ прямого подключения к целевой базе данных с учетными данными?


person CatChMeIfUCan    schedule 03.03.2018    source источник
comment
Предоставляет ли ваш SQL-сервер удаленный доступ? В большинстве случаев конфигурация по умолчанию не открывает внешний доступ. См. этот поток stackoverflow.com/questions/8348506/   -  person Tarun Lalwani    schedule 05.03.2018
comment
это не мой сервер, это ЦЕЛЬ   -  person CatChMeIfUCan    schedule 05.03.2018
comment
Можете ли вы вставить вывод, который вы получили от sqlmap? Вы можете скрыть любые конфиденциальные данные перед публикацией этого журнала.   -  person Tarun Lalwani    schedule 05.03.2018
comment
@TarunLalwani уже писал выше! [CRITICAL] SQLAlchemy connection issue ('(_mysql_exceptions.OperationalError) (1045, "Access denied for user 'admin'@'17.45.65.11' (using password: YES)")') это означает, что мои учетные данные верны, но сервер отклонил мой IP-адрес... должен быть способ   -  person CatChMeIfUCan    schedule 05.03.2018
comment
Согласно этому объяснению ошибки 1045 , это могут быть неправильные учетные данные (неправильный пользователь или пароль) или ваш IP-адрес (17.45.65.11) не разрешен для подключения.   -  person SergiyKolesnikov    schedule 06.03.2018
comment
@SergiyKolesnikovЯ на 100% уверен, что учетные данные верны, потому что цель использует те же учетные данные, но проблема заключается в отказе в IP-адресе, который вызывает проблему, испробовано множество выделенных IP-адресов! нужно решение, чтобы обойти это   -  person CatChMeIfUCan    schedule 06.03.2018
comment
Просто идея, но может ли быть так, что база данных настроена с --ssl-mode=REQUIRED или у пользователя есть REQUIRE SSL или REQUIRE X509?   -  person SuperShoot    schedule 06.03.2018
comment
@CatChMeIfUCan Как я уже сказал, та же ошибка (1045) возникает, если подключающемуся IP-адресу не был предоставлен доступ к базе данных. Общепринятой практикой является разрешение доступа только к локальному хосту при создании пользователя базы данных. Итак, у вас может быть правильное имя пользователя и пароль, но вы можете использовать их только локально на сервере. С другой стороны, тот факт, что сервер принимает подключения извне, может указывать на то, что некоторым другим IP-адресам разрешено подключение. В этом случае вам нужно выяснить, какие IP-адреса разрешены, и подключиться с одного из них. Но это не имеет ничего общего с sqlmap. Это другая проблема.   -  person SergiyKolesnikov    schedule 06.03.2018
comment
@SergiyKolesnikov поиск IP-адресов на самом деле хорошая идея, и ofc не имеет ничего общего с sqlmap, НО SQLmap утверждает, что вы можете подключаться к внешним базам данных, есть много видео и статей.   -  person CatChMeIfUCan    schedule 06.03.2018
comment
@georgexsh это проникновение через уязвимость! у меня на сайте такие же утверждения   -  person CatChMeIfUCan    schedule 08.03.2018


Ответы (3)


Учетные данные для MySQL включают не только имя пользователя и пароль, но и набор разрешенных IP-адресов. Таким образом, даже если у нас есть правильное имя пользователя и пароль, но соединение установлено с неразрешенного IP, мы получим ошибку 1045 «Отказано в доступе» от sqlmap.

Чтобы проиллюстрировать проблему, я настроил тестовую базу данных testdb с пользователем admin. Вот учетные данные пользователя:

MariaDB [testdb]> select host,user,password from mysql.user where user='admin';
+-------------+-------+-------------------------------------------+
| host        | user  | password                                  |
+-------------+-------+-------------------------------------------+
| 92.168.0.20 | admin | *00A51F3F48415C7D4E8900010101010101010101 |
+-------------+-------+-------------------------------------------+

Как показано в столбце host, пользователю admin разрешен доступ к серверу только с IP 92.168.0.20. Теперь, если я запускаю sqlmap с этого IP-адреса, он преуспевает:

$ sudo sqlmap -d 'mysql://admin:[email protected]:3306/testdb'

...

[*] starting at 09:28:43

[09:28:43] [INFO] connection to mysql server 92.168.0.99:3306 established
[09:28:43] [INFO] testing MySQL
[09:28:43] [INFO] resumed: [[u'1']]...
[09:28:43] [INFO] confirming MySQL
[09:28:43] [INFO] resumed: [[u'1']]...
[09:28:43] [INFO] the back-end DBMS is MySQL
back-end DBMS: MySQL >= 5.0.0
[09:28:43] [INFO] connection to mysql server 92.168.0.99:3306 closed

[*] shutting down at 09:28:43

Если я запускаю sqlmap с другого IP-адреса, он завершается с ошибкой 1045 «Отказано в доступе» (точно так же, как в вашем выводе):

$ sudo sqlmap -d 'mysql://admin:[email protected]:3306/testdb'

...

[*] starting at 09:32:00

[09:32:00] [CRITICAL] SQLAlchemy connection issue ('(_mysql_exceptions.OperationalError)
  (1045, "Access denied for user 'admin'@'92.168.0.55' (using password: YES)")')

[*] shutting down at 09:32:00

Так что, если вы уверены, что у вас правильный логин и пароль, то проблема, скорее всего, в разрешенных IP-адресах. При создании пользователя MySQL общепринятой практикой является разрешение доступа только с локального хоста. Поэтому у вас может быть правильное имя пользователя и пароль, но вы можете использовать их только локально на сервере. С другой стороны, тот факт, что сервер принимает подключения извне, может указывать на то, что некоторым другим IP-адресам разрешено подключение. В этом случае вам нужно выяснить, какие IP-адреса разрешены, и подключиться с одного из них.

person SergiyKolesnikov    schedule 06.03.2018
comment
спасибо за ваше объяснение! теперь у вас есть идеи, как я могу искать разрешенные IP-адреса? У меня также есть инструменты для проникновения в kali Linux - person CatChMeIfUCan; 06.03.2018
comment
@CatChMeIfUCan Хороший вопрос... Я бы задал его на security.stackexchange.com - person SergiyKolesnikov; 06.03.2018
comment
security.stackexchange.com/questions/181076/ достаточно ясно? - person CatChMeIfUCan; 06.03.2018
comment
SELECT host, plugin FROM mysql.user WHERE user = 'admin'; предоставит список IP-адресов / CDR / имен хостов, разрешенных для admin. - person Rick James; 07.03.2018

Зайдите в MySQL с достаточными привилегиями и проверьте, какие разрешения у вас есть:

SHOW GRANTS FOR 'admin'@'17.45.65.11';
SHOW GRANTS FOR 'admin'@'%';
SELECT host, plugin FROM mysql.user WHERE user = 'admin';

Последнее - отчаяние, чтобы увидеть, что у вас может быть.

Если не подходит, сделайте что-то вроде

GRANT SELECT ON *.* TO 'admin'@'17.45.65.11' IDENTIFIED BY 'some password';

Я говорю «что-то вроде», потому что вам может понадобиться больше, чем просто SELECT, или вы можете ограничить его количеством меньше, чем все базы данных (*.*), или больше, чем только этот один IP-адрес. И Т. Д.

Примечание. Если у вас уже есть GRANT ... TO 'admin'@'localhost' ..., этого будет недостаточно.

Кроме того, обратите внимание, что все, что вы делаете, должно быть тщательно проверено на предмет безопасности.

person Rick James    schedule 05.03.2018
comment
Мне известно о привилегиях SQL... Пожалуйста, внимательно прочитайте вопрос. Это ЦЕЛЬ, например, кто-то еще пытается взломать или протестировать уязвимости - person CatChMeIfUCan; 05.03.2018
comment
Теперь понял, что ты имел в виду. Позвольте мне кое-что проверить и вернуться - person Tarun Lalwani; 05.03.2018
comment
@TarunLalwani спасибо, буду признателен, если вы найдете способ - person CatChMeIfUCan; 05.03.2018
comment
Извините, я не понял, что вы имели в виду под TARGET. 1045 означает неверный пароль. Так что это линия обороны. Другой - обязательно ограничить, с каких IP-адресов может прийти администратор. Я надеялся увидеть это от SHOWs. - person Rick James; 06.03.2018
comment
@RickJames хорошо, когда я ввожу другой пароль, это дает мне другую ошибку, пользователь использует те же учетные данные, что и успешное подключение через его веб-сайт, я просто копирую учетные данные из его файла конфигурации, так что почти уверен, что учетные данные верны, проблема в отказе IP - person CatChMeIfUCan; 06.03.2018

По умолчанию сервер mysql не разрешает удаленный доступ, разрешает только локальный хост (127.0.0.1). Проверьте права доступа пользователя на сервере.

person MarkH    schedule 06.03.2018
comment
пожалуйста, внимательно прочитайте вопрос, это целевая база данных, а не моя - person CatChMeIfUCan; 06.03.2018