mysql udf禁用_Mysql数据库提权:浅谈UDF的安全问题利用

一直比较关注服务器安全问题,最近和一个朋友探讨mysql的利用UDF提权问题。我们攻陷一个网站的时候拿到root密码,有时候不仅仅看看数据库,还可以做其他事情,甚至服务器提权哦。

譬如, 执行一条sql语句查看/etc/passwd文件的内容:

f10332135071e0795b5b1ad263a21561.png

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

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

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

0169db7bcb18a0d5dee1d04cab25d162.png

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

71fe8117ad5b836ba9f1951ea34f775b.png

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

fe17040655e7c867ff1434168413aa2b.png

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

03d736c9fb1da273189a65d0ae74f341.png

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

c473a784ff992d0eeae02f04db21b73b.png

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

e9735700b994a89c4b9681b1cf70544a.png

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

5303358f4be84133d1ed353fc3fb455d.png

就可以成功反弹出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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值