利用MySQL LOAD DATA读取任意文件

admin 2025年1月13日19:31:45评论9 views字数 1085阅读3分37秒阅读模式

LOAD DATA INFILE的工作原理

了解一下LOAD DATA INFILE的工作原理。使用wireshark抓包:

  1. 客户端(即攻击者)连接mysql服务器3306端口

  2. 服务器发送问候包,包括协议线程ID,版本,mysql认证类型等。

  3. 客户端的下一个数据包是带有用户名,密码,数据库的认证包,以及LOAD DATA LOCAL选项的标志位

  4. 之后有一些包含客户端指定查询的数据包,如:“'show databases”',“'select @@ version_comment limit 1”'等

  5. 然后是我们的查询语句load data local infile '/etc/passwd' into table test.test fields terminated by 'n';以及回包

这个数据包对连接的客户端说:“嘿!请阅读/etc/passwd 文件并发给我”

上述过程就是LOAD DATA INFILE 的整个过程。如果能执行LOAD DATA INFILE 导入服务器上的文件自然是最好的,但是有时候我们并不能执行LOAD DATA INFILE,我们只能执行LOAD DATA LOCAL INFILE,即导入我们本机上的文件,这是因为我们当前账户没有读取服务器本地文件的权限。所以我们转换思路,互换一下服务器和客户端的位置,让被攻击者作为客户端来连接我们的服务器,并使客户端执行LOAD DATA LOCAL INFILE语句,下面的利用方式就是如此。

从客户端读取文件

关于LOAD DATA INFILE读取文件的技术并不新鲜,以前就有了相关的帖子、工具和文章(见文末参考连接),所以介绍一下从客户端读取文件的攻击流程:

利用MySQL LOAD DATA读取任意文件

攻击流程大致如上图-flow

  1. 攻击者向受害者提供MySQL服务器地址、账户、密码

  2. 受害者向攻击者提供的服务器发起请求,并尝试进行身份认证

  3. 攻击者的MySQL接受到受害者的连接请求,攻击者发送正常的问候、身份验证正确,并且向受害者的MySQL客户端请求文件。

  4. 受害者的MySQL客户端认为身份验证正确,执行攻击者的发来的请求,通过LOAD DATA INLINE 功能将文件内容发送回攻击者的MySQL服务器。

  5. 攻击者收到受害者服务器上的信息,读取文件成功,攻击完成。

攻击已经被写成了工具(如Rogue-MySql-Server Tool),工具将模拟一个假的MySQL服务器发送payload读取文件。

利用MySQL LOAD DATA读取任意文件

详细使用方式参考官方链接:

https://www.bettercap.org/modules/ethernet/servers/mysql.server/

原文始发于微信公众号(菜鸟小新):利用MySQL LOAD DATA读取任意文件

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月13日19:31:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   利用MySQL LOAD DATA读取任意文件https://cn-sec.com/archives/1096136.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息