使用 SQLMap 中的凭据直接连接到数据库
Connecting directly to database with credentials in SQLMap
我有 TARGET 网站数据库的凭据和 SQLMap 声明您可以直接连接到数据库
这是我在 Kali 中对 SQLMap 的命令 Linux
sudo sqlmap -d mysql://USER:PASSWORD@TARGET_IP:MySQL_Port/DATABASE
例子
sudo sqlmap -d mysql://admin:12345@95.12.45.12: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 ofc 被拒绝
我的命令有问题吗?
或者有人知道使用凭据直接连接到目标数据库的更好方法吗?
以足够的权限进入 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';
我说 "something like" 因为您可能需要的不仅仅是 SELECT
或者您可能希望将其限制为少于所有数据库 (*.*
),或者不仅仅是那个数据库IP地址。等等
注意:如果您已经有一些 GRANT ... TO 'admin'@'localhost' ...
,那是不够的。
此外,请注意,无论您做什么,都应仔细检查是否存在安全问题。
默认情况下,mysql 服务器不允许远程访问,只允许本地主机 (127.0.0.1)。检查服务器上的用户访问权限。
MySQL 的凭据不仅包括用户名和密码,还包括一组允许的 IP 地址。所以,即使我们有正确的用户名和密码,但连接是从一个不允许的 IP 建立的,我们也会从 sqlmap 得到 1045 "Access denied" 错误。
为了说明问题,我使用用户 admin
设置了一个测试数据库 testdb
。以下是用户的凭据:
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访问服务器。现在,如果我从这个 IP 运行 sqlmap 成功:
$ sudo sqlmap -d 'mysql://admin:12345@92.168.0.99: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
如果我 运行 来自不同 IP 的 sqlmap 它失败并出现 1045 "Access denied" 错误(与您的输出完全相同):
$ sudo sqlmap -d 'mysql://admin:12345@92.168.0.99: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 并从其中之一进行连接。
我有 TARGET 网站数据库的凭据和 SQLMap 声明您可以直接连接到数据库 这是我在 Kali 中对 SQLMap 的命令 Linux
sudo sqlmap -d mysql://USER:PASSWORD@TARGET_IP:MySQL_Port/DATABASE
例子
sudo sqlmap -d mysql://admin:12345@95.12.45.12: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 ofc 被拒绝
我的命令有问题吗?
或者有人知道使用凭据直接连接到目标数据库的更好方法吗?
以足够的权限进入 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';
我说 "something like" 因为您可能需要的不仅仅是 SELECT
或者您可能希望将其限制为少于所有数据库 (*.*
),或者不仅仅是那个数据库IP地址。等等
注意:如果您已经有一些 GRANT ... TO 'admin'@'localhost' ...
,那是不够的。
此外,请注意,无论您做什么,都应仔细检查是否存在安全问题。
默认情况下,mysql 服务器不允许远程访问,只允许本地主机 (127.0.0.1)。检查服务器上的用户访问权限。
MySQL 的凭据不仅包括用户名和密码,还包括一组允许的 IP 地址。所以,即使我们有正确的用户名和密码,但连接是从一个不允许的 IP 建立的,我们也会从 sqlmap 得到 1045 "Access denied" 错误。
为了说明问题,我使用用户 admin
设置了一个测试数据库 testdb
。以下是用户的凭据:
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访问服务器。现在,如果我从这个 IP 运行 sqlmap 成功:
$ sudo sqlmap -d 'mysql://admin:12345@92.168.0.99: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
如果我 运行 来自不同 IP 的 sqlmap 它失败并出现 1045 "Access denied" 错误(与您的输出完全相同):
$ sudo sqlmap -d 'mysql://admin:12345@92.168.0.99: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 并从其中之一进行连接。