写在前面:本文旨在通过透彻分析Linux下MySQL的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("命令")执行,如下图