知识屋:更实用的电脑技术知识网站
所在位置:首页 > 网络安全 > 安全资讯

Mysql数据库UDF的安全问题利用

发布时间:2014-04-28 12:39:48作者:知识屋

今天想谈谈数据库的安全问题。

对于数据库的安全问题,首先,重要的生成库千万不能放在公网上,一旦被入侵后果不堪设想,轻则数据丢失,重则被脱裤(整库被打包导出),如果恰恰又以明文存储了用户的密码,那么就太可怕了,去年轰动一时的某几个大型网站的用户数据泄漏事件都是因为明文的方式存储了用户的密码。

其次是大量的弱口令问题存在,造成这个问题的原因往往是sa或者dba对安全问题疏忽,只为方便。

今天无意扫到一个弱口令的my,我的话题也从这个弱口令库开始。首先远程登录数据库,居然还是mysql数据库里root用户的弱口令,毫不客气的进入了数据库,执行一条sql语句查看ip地址和/etc/passwd文件的内容

这里主要是用到了load_file()函数,当然这个函数是可以被禁用的。以上可以轻松看到/etc/passwd文件的信息和ip地址,当然其他的文件内容都可以被看到。

由于load_file()函数只能实现类似命令cat的查看文件功能,但是想执行系统命令的功能,那么只能用UDF了,也就是User defined Function,用户定义函数。

查看mysql的plugin,plugin_dir的路径为/usr/lib/mysql/plugin

如果像我遇到这个数据库服务器一样,plugin_dir的路径为空也无所谓了。

执行以下sql语句,把udf.txt里面的十六进制的文件内容导出到/usr/lib/mysqludf.so

查看下这个udf库所支持的函数

创建函数并且查看是否创建成功,可以看到一个名叫sys_eval的UDF创建成功了。

最后利用UDF执行更高权限的功能

剩下的就用这个UDF获得系统权限吧,提示可以用nc反弹,在自己的主机上执行nc -vv -l -p 12345,在数据库上执行一下sql语句

就可以成功反弹出linux shell了,再往下就。不过UDF的利用也有局限性,需要有mysql库的操作权限,在mysql库下必须有func表;在skipgranttables开启的情况下,UDF会被禁止。

PS:mysqludf.so是我已有的一个库文件,利用它生成了udf.txt,执行以下sql语句即可

mysql> select hex(load_file('/usr/lib/mysqludf.so')) into outfile '/tmp/udf.txt'; 
Query OK, 1 row affected (0.04 sec)

 

(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜