利用MySQL UDF进行提权攻击(mysql下udf提权)
利用MySQL UDF进行提权攻击
MySQL是一款开源的关系型数据库管理系统,全球范围内广泛使用。然而,由于MySQL默认情况下允许用户加载用户定义函数(User-Defined Function,简称UDF),这个特性被不良分子利用,成为MySQL提权攻击的利器。
MySQL UDF提权攻击原理
MySQL UDF通过加载动态链接库实现用户自定义函数,攻击者可以通过加载自己的动态链接库来执行恶意代码,获取管理员权限,掌控MySQL服务器。攻击者可以利用MySQL UDF执行任意代码并且具有完全系统权限。此外,攻击者还可以把自己的UDF安装到MYSQL数据目录下的lib/plugin目录中,在不需要任何授权的情况下就可以完成攻击。
MySQL提权攻击实战
在实践中,攻击者通常需要先掌握某个能够上传文件的应用或者漏洞,然后通过上传或者包含文件的形式把自己的优化动态链接库上传到MYSQL的lib/plugin目录中。
使用root账号将dll放到mysql的lib目录中:
![](https://cdn.nlark.com/yuque/0/2021/png/12759998/1623142313014-fec587a0-9063-4b36-8ae2-9b52a10987a4.png#align=left&display=inline&height=312&margin=%5Bobject%20Object%5D&name=image.png&originHeight=624&originWidth=1116&size=122385&status=done&style=none&width=558)
重启MySQL服务,并使用攻击者自己的账号,连接到MYSQL服务器:
![](https://cdn.nlark.com/yuque/0/2021/png/12759998/1623142361462-18d2f2ff-d8c7-4839-8a03-c02d1b45bcf0.png#align=left&display=inline&height=76&margin=%5Bobject%20Object%5D&name=image.png&originHeight=152&originWidth=1111&size=29788&status=done&style=none&width=555)
使用mysql_udf模块中提供的sys_exec函数执行Linux系统命令,获取管理员权限:
![](https://cdn.nlark.com/yuque/0/2021/png/12759998/1623142409588-7c9de996-ef5a-4f20-8f7b-5a6d52a72e3b.png#align=left&display=inline&height=208&margin=%5Bobject%20Object%5D&name=image.png&originHeight=416&originWidth=1129&size=46595&status=done&style=none&width=564)
此时攻击者已经成功获取到管理员权限。
防御MySQL UDF提权攻击
为了防止MySQL UDF提权攻击,我们可以采取以下一些措施:
1.关闭MySQL UDF
在MySQL 5.0及以上版本中可以通过设置参数”old_passwords=0″和”secure_file_priv”为”on”来关闭MySQL UDF。
2.加强应用安全
通过限制应用上传和包含DLL、实现白名单机制等措施加强应用安全性。
3.限制MySQL用户权限
为用户设置最小化权限,并禁止已知敏感函数和SQL语句。
4.定期更新MySQL补丁
及时修补已知漏洞并进行安全加固。
总结
MySQL UDF提权攻击是一种常见的攻击手段,攻击者可借助UDF加载恶意代码,获取管理员权限,掌控MySQL服务器。为了保护数据库安全,我们需要关闭或限制MySQL UDF的使用,并加强应用安全,对用户权限进行最小化限制,定期更新MySQL补丁。