记一次mybb代码审计
字数 1057 2025-08-26 22:11:56

MyBB后台代码执行漏洞分析与复现

漏洞概述

本漏洞存在于MyBB论坛系统的后台管理模块,通过文件包含和文件上传路径配置不当的组合,可实现远程代码执行。漏洞影响MyBB的后台管理功能,需要管理员权限才能利用。

漏洞分析

漏洞位置

漏洞核心位于以下文件:

  • \mybb\admin\modules\config\languages.php - 存在不安全的文件包含
  • \mybb\admin\modules\config\settings.php - 存在配置修改功能

关键代码分析

  1. 文件包含漏洞点

    • languages.php第432行:@include $editfile;
    • $editfile$folder$file拼接而成(第418行)
    • $file来自POST请求(第408行)
    • $folder路径为MYBB_ROOT."inc/languages/".$editlang."/"(第84行)
  2. 配置修改功能

    • settings.php第1101行:$db->update_query("settings"...
    • 通过POST请求中的upsetting数组更新配置值
    • 可修改avataruploadpath配置项(第1042行)

漏洞利用步骤

准备工作

  1. 准备一个小于1KB的图片木马(避免被压缩破坏)
  2. 获取管理员权限(必要条件)

利用流程

  1. 修改头像上传路径

    POST /mybb/admin/index.php?module=config-settings&action=change
    upsetting[avataruploadpath]=./inc/languages/english
    
  2. 上传图片木马

    POST /mybb/admin/index.php?module=user-users&action=edit&uid=1#tab_avatar
    [上传包含PHP代码的图片]
    
  3. 触发文件包含

    POST /mybb/admin/index.php?module=config-languages&action=edit&lang=english
    file=avatar_1.jpg
    
  4. 执行任意代码

    • 通过包含图片木马执行PHP代码
    • 可创建持久化后门如shell.php

技术要点

  1. 路径控制

    • 通过修改avataruploadpath配置将上传目录指向语言文件夹
    • 默认语言文件夹为inc/languages/english/
  2. 文件包含限制绕过

    • 利用头像上传功能将PHP代码写入服务器
    • 通过文件包含执行上传的"图片"文件
  3. 木马制作要求

    • 文件大小必须小于1KB(避免被压缩破坏)
    • 可使用图片头+PHP代码的组合

防御建议

  1. 输入验证

    • file参数进行严格过滤
    • 限制包含文件的后缀和路径
  2. 权限控制

    • 加强后台管理权限验证
    • 实现操作日志审计
  3. 安全配置

    • 限制可修改的配置项范围
    • 实现上传文件内容检查
  4. 代码修复

    • 使用白名单方式验证语言文件
    • 禁止包含非PHP语言文件

总结

该漏洞展示了后台功能中配置修改与文件操作的组合风险,强调了即使在后端也需要实施严格的安全控制。漏洞利用需要管理员权限,但一旦获取权限,可导致服务器完全沦陷。

MyBB后台代码执行漏洞分析与复现 漏洞概述 本漏洞存在于MyBB论坛系统的后台管理模块,通过文件包含和文件上传路径配置不当的组合,可实现远程代码执行。漏洞影响MyBB的后台管理功能,需要管理员权限才能利用。 漏洞分析 漏洞位置 漏洞核心位于以下文件: \mybb\admin\modules\config\languages.php - 存在不安全的文件包含 \mybb\admin\modules\config\settings.php - 存在配置修改功能 关键代码分析 文件包含漏洞点 : languages.php 第432行: @include $editfile; $editfile 由 $folder 和 $file 拼接而成(第418行) $file 来自POST请求(第408行) $folder 路径为 MYBB_ROOT."inc/languages/".$editlang."/" (第84行) 配置修改功能 : settings.php 第1101行: $db->update_query("settings"... 通过POST请求中的 upsetting 数组更新配置值 可修改 avataruploadpath 配置项(第1042行) 漏洞利用步骤 准备工作 准备一个小于1KB的图片木马(避免被压缩破坏) 获取管理员权限(必要条件) 利用流程 修改头像上传路径 : 上传图片木马 : 触发文件包含 : 执行任意代码 : 通过包含图片木马执行PHP代码 可创建持久化后门如 shell.php 技术要点 路径控制 : 通过修改 avataruploadpath 配置将上传目录指向语言文件夹 默认语言文件夹为 inc/languages/english/ 文件包含限制绕过 : 利用头像上传功能将PHP代码写入服务器 通过文件包含执行上传的"图片"文件 木马制作要求 : 文件大小必须小于1KB(避免被压缩破坏) 可使用图片头+PHP代码的组合 防御建议 输入验证 : 对 file 参数进行严格过滤 限制包含文件的后缀和路径 权限控制 : 加强后台管理权限验证 实现操作日志审计 安全配置 : 限制可修改的配置项范围 实现上传文件内容检查 代码修复 : 使用白名单方式验证语言文件 禁止包含非PHP语言文件 总结 该漏洞展示了后台功能中配置修改与文件操作的组合风险,强调了即使在后端也需要实施严格的安全控制。漏洞利用需要管理员权限,但一旦获取权限,可导致服务器完全沦陷。