Mysql数据库UDF的安全问题利用
最近一直在休假,没有写博客,转眼十一还剩最后一天,时间真的很快。今天想谈谈数据库的安全问题。
对于数据库的安全问题,首先,重要的生成库千万不能放在公网上,一旦被******后果不堪设想,轻则数据丢失,重则被***(整库被打包导出),如果恰恰又以明文存储了用户的密码,那么就太可怕了,去年轰动一时的某几个大型网站的用户数据泄漏事件都是因为明文的方式存储了用户的密码。
其次是大量的数据库弱口令问题存在,造成这个问题的原因往往是sa或者dba对安全问题疏忽,只为方便。
今天无意扫到一个弱口令的mysql数据库,我的话题也从这个弱口令mysql库开始。首先远程登录数据库,居然还是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表;在skip grant tables开启的情况下,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)
- Mysql数据库UDF的安全问题利用
- 深入探究Windows平台客户端安全问题-进程地址空间入侵和白加黑高阶利用
- 利用JAVA线程安全队列简单实现读者写者问题。
- 利用MySQLDriverCS链接MySQL数据库及中文乱码问题
- 第四章:iOS应用漏洞利用 ——4.17 CFStream和NSStream安全问题
- 利用MySQL数据库如何解决大数据量存储问题?
- 浅谈MySQL数据库的Web安全问题
- PHP和MySQL数据库经常出现的安全问题及其预防
- mysql中UDF引入的安全问题
- 利用Python爬虫每天获取最新的CVE安全漏洞,存放至mysql数据库中
- 关于利用Tocmat安全域实现安全认证的问题
- 在mysql数据库插入中文数据出现乱码(利用可视化工具不存在问题)
- MySQL数据库产品体系结构的安全问题
- Linux系统利用SSH远程控制安全问题
- 解决SpringBoot框架下利用jdbcTemplate插入mysql数据库中文乱码问题
- android安全问题(八)伪造短信(利用原生android4.0漏洞)
- 游戏安全资讯精选 2018年第八期:3975款游戏被查处,游戏圈重击;Memcached被利用UDP反射攻击漏洞预警;VentureBeat称区块链或可定位和消除恶意可执行代码的安全问题
- 浅谈利用同步机制解决Java中的线程安全问题
- 利用POST进行用户登录的安全问题剖析
- 首席问题官CSO利用大数据分析挖掘出的五大安全线索