Mysql中Load Data语句在phpadminer中的利用
字数 943 2025-08-26 22:11:51
MySQL中LOAD DATA语句在phpMyAdmin中的利用
概述
本文详细介绍了如何利用MySQL的LOAD DATA LOCAL INFILE语句在phpMyAdmin环境下读取客户端本地文件的技术方法。这种技术可以用于渗透测试中获取目标系统的敏感文件。
技术原理
MySQL提供了LOAD DATA INFILE语句用于将文件数据导入数据库表中。关键点在于:
LOAD DATA LOCAL INFILE可以从客户端(而非服务器)读取文件- phpMyAdmin作为客户端可以连接远程MySQL服务器
- 当连接远程数据库时,可以在远程服务器上执行该语句读取phpMyAdmin所在客户端的文件
环境搭建
所需环境
- phpMyAdmin或Adminer (用于数据库管理)
- 远程MySQL服务器 (需开启外网连接)
- 目标系统运行phpMyAdmin
配置步骤
- 在云服务器上搭建MySQL并开启外网连接
- 确保phpMyAdmin可以连接该远程MySQL服务器
利用方法
基本利用步骤
- 通过phpMyAdmin连接攻击者控制的远程MySQL服务器
- 在远程服务器上创建测试数据库和表:
CREATE DATABASE test; USE test; CREATE TABLE table_name (id INT, name TEXT); - 执行LOAD DATA语句读取客户端文件:
LOAD DATA LOCAL INFILE 'C:\\Windows\\win.ini' INTO TABLE table_name; - 检查远程MySQL服务器上的表内容,确认文件内容已被读取
关键注意事项
- 需要创建包含至少两个字段(id和name)的表
- 文件路径需要使用双反斜杠或正斜杠
- 可以读取系统敏感文件如:
C:\Windows\System32\drivers\etc\hosts- 数据库配置文件(如wp-config.php等)
防御措施
-
禁用
LOAD DATA LOCAL功能:- 在MySQL配置文件中设置
local-infile=0 - 启动MySQL时添加
--local-infile=0参数
- 在MySQL配置文件中设置
-
限制phpMyAdmin的使用:
- 仅允许连接可信的MySQL服务器
- 使用最新版本的phpMyAdmin
-
网络层面:
- 限制MySQL服务器的外网访问
- 使用防火墙规则限制出站连接
总结
这种利用方式展示了当phpMyAdmin连接不受信任的MySQL服务器时可能带来的安全风险。渗透测试人员可以利用此技术读取目标系统的敏感文件,而防御方则应采取相应措施关闭这一攻击面。