gpt4 book ai didi

MySql LOAD_FILE 奇怪的权限问题?

转载 作者:行者123 更新时间:2023-11-29 22:30:05 24 4
gpt4 key购买 nike

我在工作中管理一个网站,该网站是 SQL 注入(inject)攻击的受害者通过检查日志,攻击者似乎使用了 sqlmap 使用文件读取选项并从服务器获取了一堆配置文件,因为我们的 Web 开发人员很草率并使用 root mysql 帐户进行连接(其中有文件权限)。

这是我试图理解的最奇怪的部分。这些文件被读取了——我知道它们被读取了——因为攻击者随后在其中一个文件中使用了密码来进行一些系统渗透。查看日志,他首先获取了一个 index.php,其中引用了 config.php 和其他一些内容。他们都成为目标。

为了加强安全性,我捕获了 sqlmap 并访问了我们的服务器,在弄清楚它是如何工作的之后,我能够捕获文件。

我们的 SQL 服务器不面向外部,因此攻击者无法尝试此操作。这是奇怪的部分:

我从桌面连接到我们的 MySQL 服务器,并尝试选择 LOAD_FILE 以及 LOAD_FILE>将数据 INFILE 加载到表中。

其中一些有效。例如,select LOAD_FILE('/etc/passwd') 返回 /etc/passwd.

但并非所有方法都有效。

选择 LOAD_FILE('/var/www/site_name/index.php') 返回 NULL.

将数据 INFILE '/var/www/site_name/index.php' 加载到临时文件中; 返回:

ERROR 29 (HY000): File '/var/www/site_name/index.php' not found (Errcode: 13)

什么?文件未找到?啊?

所以我对同一个文件运行 sqlmap 并下载它。

我用-v 6运行sqlmap,这样我就可以看到一切 - 它使用LOAD_FILE来获取文件。

为什么注入(inject)攻击中的LOAD_FILE会起作用,但从mysql客户端命令行加载文件会返回NULL或找不到文件?但仅适用于某些文件?/etc/passwd 和/etc/hosts 可读。

有什么线索吗?

最佳答案

事实证明,经过几天的努力,我发现另一位管理员改变了一些做法,使得面向外部的服务器(我以为我正在访问的服务器)实际上将端口 80 转发到另一台较新的服务器。两台服务器上都有数据库的副本。因此,当执行 SQL 注入(inject)时,它会攻击内部/较新的数据库,并且可以读取该服务器上的文件。当我使用 mysql 客户端访问相同的 IP 地址时,它正在读取不同文件系统上的旧数据库副本,该文件系统与其他服务器没有相同的文件。

此后,人们的头颅开始滚动。感谢您的努力,并对浪费任何人的时间表示歉意。

关于MySql LOAD_FILE 奇怪的权限问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29880786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com