环境:
web应用服务器权限较低
MySQL system权限
什么是UDF
UDF -----User defined Function 用户定义函数。 MySQL 本身支持很多内建函数,此外我们还可以通过创建存储方法来定义函数。UDF 为用户提供了一种更高效的方式来创建函数。
UDF提权利用过程
导入udf.dll 到服务器指定目录
mysql版本大于等于5.1 udf.dll 需要导入到 plugin_dir 目录的,plugin_dir在mysql安装目录下
的 lib/plugin目录下,默认目录不存在,创建目录。 mysql安装目录select @@basedir。
mysql版本小于5.1 udf.dll 需要导入到 c:\windows\ 目录
使用SQL语句创建功能函数
CREATE FUNCTION shell RETURNS STRING SONAME 'udf.dll'
执行mysql语句调用新创建的函数
select shell('cmd', 'whoami')
删除创建的函数
drop function shell;
演示:
环境为搭建环境,仅供学习交流。
首先是已经取得一个Webshell,并且没办法进行系统提权,因此我们只能够尝试进行第三方服务提权。这里使用mysql udf提权(mysql sysytem权限),上传大马之后执行whoami查看权限比较低
执行 ner user apache 查看apache属于哪个组
apache权限较低 mysql 权限可能是system的权限 尝试上传udf.php进行提权
访问上传的udf.php 成功登陆进来之后,可以看到mysql版本是大于5.1的。mysql版本大于等于5.1 udf.dll 需要导入到 plugin_dir 目录的,plugin_dir在mysql安装目录下的 lib/plugin目录下,默认目录不存在,创建目录。 mysql安装目录select @@basedir。
点击 Cerate PluginDir 发现提示创建成功
使用 udf.dll 创建 函数
使用新建的shell函数执行命令
接下来 可以
修改管理员密码
创建一个新用户 添加到管理员组
提取当前登录用户密码 (Getpass.exe)
修改帮助账号(SUPPOTR_338945a0)的密码,并添加管理员组 (比较不容易被发现,推荐使用)
提取用户密码哈希值(wce.exe)
在前两篇提权文章内做过演示,因此这里不再做演示!