3306 - Pentesting Mysql

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)

其他支持HackTricks的方式:

RootedCON西班牙最重要的网络安全活动之一,也是欧洲最重要的之一。作为促进技术知识的使命,这个大会是技术和网络安全专业人士在各个领域的热点交流之地。

基本信息

MySQL可以被描述为一种开源关系数据库管理系统(RDBMS),可免费使用。它运行在**结构化查询语言(SQL)**上,可以管理和操作数据库。

默认端口: 3306

连接

本地

远程

外部枚举

一些枚举操作需要有效的凭据。

写入任何二进制数据

MySQL 命令

MySQL权限枚举

MySQL文件RCE

您可以在文档中查看每个权限的含义:https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html

MySQL客户端的任意文件读取

实际上,当您尝试将本地数据加载到表中时,MySQL或MariaDB服务器会要求客户端读取文件并发送内容。因此,如果您能够篡改一个MySQL客户端以连接到您自己的MySQL服务器,您就可以读取任意文件。 请注意,这是使用以下行为:

(注意"local"这个词) 因为没有"local",你可能会得到:

初始 PoC: https://github.com/allyshka/Rogue-MySql-Server 在这篇论文中,您可以看到对攻击的完整描述,甚至如何将其扩展到 RCE: https://paper.seebug.org/1113/ 在这里,您可以找到对攻击的概述: http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/

RootedCON西班牙最重要的网络安全活动之一,也是欧洲最重要的之一。作为促进技术知识的使命,这个大会是技术和网络安全专业人士在各个领域的热点聚会。

POST

Mysql 用户

如果 mysql 以 root 用户身份运行,将会非常有趣:

MySQL 配置文件 mysqld.cnf 的危险设置

在 MySQL 服务的配置中,采用了各种设置来定义其操作和安全措施:

  • user 设置用于指定 MySQL 服务将在哪个用户下执行。

  • password 用于建立与 MySQL 用户关联的密码。

  • admin_address 指定在管理网络接口上监听 TCP/IP 连接的 IP 地址。

  • debug 变量表示当前的调试配置,包括日志中的敏感信息。

  • sql_warnings 管理在单行 INSERT 语句出现警告时是否生成信息字符串,其中包含日志中的敏感数据。

  • 通过 secure_file_priv,数据导入和导出操作的范围受到限制以增强安全性。

通过库进行权限提升

如果 mysql 服务器以 root 用户身份运行(或其他更高特权用户),您可以让其执行命令。为此,您需要使用 用户定义函数。要创建用户定义函数,您将需要一个运行 mysql 的操作系统的

可以在 sqlmap 和 metasploit 中找到要使用的恶意库,方法是执行 locate "*lib_mysqludf_sys*" 命令。.so 文件是 Linux 库,而 .dllWindows 库,请选择您需要的那个。

如果您 没有 这些库,您可以 寻找它们,或者下载这个 Linux C 代码 并在易受攻击的 Linux 机器上 编译

现在您已经有了库,作为特权用户(root?)登录到Mysql,并按照以下步骤操作:

Linux

Windows

从文件中提取MySQL凭据

/etc/mysql/debian.cnf 中,您可以找到用户 debian-sys-maint明文密码

您可以使用这些凭据登录到MySQL数据库

在文件:/var/lib/mysql/mysql/user.MYD 中,您可以找到所有MySQL用户的哈希值(可以从数据库中的mysql.user中提取出来).

您可以执行以下操作提取它们:

启用日志记录

您可以在/etc/mysql/my.cnf文件中取消注释以下行以启用mysql查询的日志记录:

有用的文件

配置文件

  • windows *

  • config.ini

  • my.ini

  • windows\my.ini

  • winnt\my.ini

  • <InstDir>/mysql/data/

  • unix

  • my.cnf

  • /etc/my.cnf

  • /etc/mysql/my.cnf

  • /var/lib/mysql/my.cnf

  • ~/.my.cnf

  • /etc/my.cnf

  • 命令历史

  • ~/.mysql.history

  • 日志文件

  • connections.log

  • update.log

  • common.log

默认的MySQL数据库/表

ALL_PLUGINS APPLICABLE_ROLES CHARACTER_SETS CHECK_CONSTRAINTS COLLATIONS COLLATION_CHARACTER_SET_APPLICABILITY COLUMNS COLUMN_PRIVILEGES ENABLED_ROLES ENGINES EVENTS FILES GLOBAL_STATUS GLOBAL_VARIABLES KEY_COLUMN_USAGE KEY_CACHES OPTIMIZER_TRACE PARAMETERS PARTITIONS PLUGINS PROCESSLIST PROFILING REFERENTIAL_CONSTRAINTS ROUTINES SCHEMATA SCHEMA_PRIVILEGES SESSION_STATUS SESSION_VARIABLES STATISTICS SYSTEM_VARIABLES TABLES TABLESPACES TABLE_CONSTRAINTS TABLE_PRIVILEGES TRIGGERS USER_PRIVILEGES VIEWS INNODB_LOCKS INNODB_TRX INNODB_SYS_DATAFILES INNODB_FT_CONFIG INNODB_SYS_VIRTUAL INNODB_CMP INNODB_FT_BEING_DELETED INNODB_CMP_RESET INNODB_CMP_PER_INDEX INNODB_CMPMEM_RESET INNODB_FT_DELETED INNODB_BUFFER_PAGE_LRU INNODB_LOCK_WAITS INNODB_TEMP_TABLE_INFO INNODB_SYS_INDEXES INNODB_SYS_TABLES INNODB_SYS_FIELDS INNODB_CMP_PER_INDEX_RESET INNODB_BUFFER_PAGE INNODB_FT_DEFAULT_STOPWORD INNODB_FT_INDEX_TABLE INNODB_FT_INDEX_CACHE INNODB_SYS_TABLESPACES INNODB_METRICS INNODB_SYS_FOREIGN_COLS INNODB_CMPMEM INNODB_BUFFER_POOL_STATS INNODB_SYS_COLUMNS INNODB_SYS_FOREIGN INNODB_SYS_TABLESTATS GEOMETRY_COLUMNS SPATIAL_REF_SYS CLIENT_STATISTICS INDEX_STATISTICS USER_STATISTICS INNODB_MUTEXES TABLE_STATISTICS INNODB_TABLESPACES_ENCRYPTION user_variables INNODB_TABLESPACES_SCRUBBING INNODB_SYS_SEMAPHORE_WAITS

HackTricks自动命令

RootedCON西班牙最重要的网络安全活动之一,也是欧洲最重要的活动之一。以促进技术知识为使命,这个大会是技术和网络安全专业人士在各个领域的热点交流会。

从零开始学习AWS黑客技术,成为专家 htARTE (HackTricks AWS Red Team Expert)!

支持HackTricks的其他方式:

最后更新于