Ⅰ udf提权时,mysql5.0以下和5.0以上有什么区别
1、UDF提权专用webshell,导出dll、再执行命令。
2、Phpspy.php的Mysql上传(提示 "上传失败、原因:Result consisted of more than one row"、实际上大多数已上传成功),再连接mysql执行命令。
3、Mysql允许外连的情况下也可以使用Hack MySQL上传,再通过命令行登陆执行命令。
Ⅱ linux udf上传不了怎么提权
Linux操作系统自从诞生后,其高效的处理能力和卓越的稳定性受到广大用户的亲睐,特别是服务器市场,Linux占有很大的份额。俗话说:树大招风。Linux在服务器领域的广泛应用使得Linux的安全也受到了前所未有的挑战。针对Linux的渗透与攻击手段也越来越多,渗透Linux最常见的手段就是MySQL udf提权。
众所周知,MySQL是一款免费的、开源的数据库服务器软件。其安全性也十分高,因此很多Linux厂商都将其内建在操作系统,特别是一些livecd或者liveDVD。由于MySQL在Linux上的广泛应用,使得MySQL也成为安全界重点研究的对象,udf是MySQL的一个共享库,通过udf创建能够执行系统命令的函数sys_exec、sys_eval,使得入侵者能够获得一般情况下无法获得的shell执行权限。这对于服务器来说是十分危险的。那么入侵者究竟是怎样获得这个权限的呢?换句话说是如何安装这个函数的呢?下面我们可以演示一下
操作系统:backtrack5 r2
平台:Apache+MySQL+PHP
安装这几个函数,必须用到lib_mysqludf_sys.so(windows是对应的dll文件),为方便大家,我就直接作为附件上传。lib_mysqludf_sys_0.rar下载之后,你可以选择通过源代码建构so文件,也可以直接复制so文件夹下的文件。
首先,开启bt5上的Apache服务和MySQL服务,键入"/etc/init.d/apache2 restart"开启Apache服务,MySQL服务可以通过开始菜单来启动,如下图所示:
其实,Apache也可以通过菜单启动,上图中的httpd的子菜单就可以启动,我比较习惯从命令行启动而已。
我们可以访问127.0.0.1来查看Apache是否启动成功,如下图:
没有问题,启动成功
然后,打开终端,键入"mysql -uroot -ptoor"命令连接数据库(注意,-u和-p参数后都不要带空格),如果连接成功,将会出现mysql的提示符
紧接着,上传lib_mysqludf_sys.so到/usr/lib/mysql/plugin,然后键入如下命令:
create function sys_eval returns string soname "lib_mysqludf_sys.so" (创建函数)
创建完成之后就可以通过select sys_eval("命令")执行,如下图
执行ls命令后的结果
看到这里,你也许会说,不过就是执行了一个ls命令吗?这有什么大不了呢?的确,一个ls命令确实没什么大不了。但是这使入侵者获得了一个执行shell的权限,这种权限可以执行任何可执行的文件,也就是说通过它可以为Linux安装后门如使用nc等,而这无异于将服务器拱手让给他人。一般说来,服务器会将PHP的sys_exec等函数禁用,但是udf方式绕过了这种限制,轻易获得了shell。
说完了攻,我们来说说防。可以通过升级MySQL的版本或者禁用udf功能来实现针对udf攻击的防御。
Ⅲ 【原创】MySQL常见提权姿势总结
在深入探索 MySQL 提权策略时,总结了一些常见姿势,以便于进一步理解并实操这些安全实践。
**操作**
MySQL 提权中的一项关键操作是调整 `secure-file-priv` 设置。通常,这涉及到修改允许用户读写文件的权限路径,比如将 `secure-file-priv` 设置为允许远程连接的服务器上的特定目录,从而为提权操作创造条件。
**开启远程连接**
MySQL 提权的另一核心是确保远程连接功能的启用。通过调整全局变量 `general_log`,可以开启日志记录功能,以便于记录关键操作和潜在的提权尝试。设置日志路径和内容,如 `set global general_log_file='C://phpStudy//PHPTutorial//WWW//shell.php'`,并执行 `select '';` 来写入一句话,确保日志文件被正确生成。
**mof 提权**
mof 提权依赖于一个特殊的操作,即修改系统文件 `nullevt.mof`,使其在特定时间自动执行命令。该文件每分钟执行一次,由 `And TargetInstance.Second = 5` 控制,确保在第五秒执行命令,从而实现自动执行 cmd 操作。添加特定的 mof 代码,分别用于添加用户和将用户添加到管理员组,是实现这一目标的关键步骤。
**udf 提权**
udf 提权涉及创建自定义函数,并将特定 DLL 文件整合至 MySQL 环境。步骤包括创建目录、写入 DLL 文件、创建自定义函数等。这需要对 MySQL 版本和目录结构有深入理解,确保 DLL 文件在正确的目录下,如 MySQL 安装目录的 lib\plugin 文件夹。实现过程包括编写或获取特定的 DLL 文件代码,并通过 SQL 语句将其整合至数据库环境。
**利用 msf**
利用 Metasploit Framework (msf) 工具集,可以轻松实现 MySQL 相关的提权攻击。通过执行特定的 msf 命令,如 `use auxiliary/scanner/mysql/mysql_login`、`use exploit/multi/mysql/mysql_udf_payload`、`use exploit/windows/mysql/mysql_mof`,可以尝试登录、执行提权操作,或利用特定的漏洞进行攻击。
**文件写入**
文件写入技术是实现提权的一种直接方法,涉及使用 SQL 语句将特定内容写入到目标系统的文件系统中。例如,`select '' into outfile 'C:\\phpStudy\\PHPTutorial\\WWW\\1.php'` 可以用于写入包含恶意代码的文件,从而实现进一步的控制和利用。
**os-shell**
os-shell 功能允许在目标系统上执行命令,前提条件是需要有写权限和对网站绝对路径的访问权限。通过 SQLmap 工具,结合 `--os-shell` 参数,可以实现对目标系统的操作,如 `sqlmap -u 192.168.12.17/sql/Less-... --os-shell`。在具备正确配置和路径信息的情况下,可以成功执行命令,例如 `ipconfig`,以验证权限提升的成果。
以上策略和方法提供了对 MySQL 提权操作的基本理解,重要的是在实际应用时,务必遵循安全最佳实践,避免对系统造成潜在的风险。
Ⅳ 利用MySQLUDF进行提权攻击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补丁。