记一次mybb代码审计
字数 1057 2025-08-26 22:11:56
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的图片木马(避免被压缩破坏)
- 获取管理员权限(必要条件)
利用流程
-
修改头像上传路径:
POST /mybb/admin/index.php?module=config-settings&action=change upsetting[avataruploadpath]=./inc/languages/english -
上传图片木马:
POST /mybb/admin/index.php?module=user-users&action=edit&uid=1#tab_avatar [上传包含PHP代码的图片] -
触发文件包含:
POST /mybb/admin/index.php?module=config-languages&action=edit&lang=english file=avatar_1.jpg -
执行任意代码:
- 通过包含图片木马执行PHP代码
- 可创建持久化后门如
shell.php
技术要点
-
路径控制:
- 通过修改
avataruploadpath配置将上传目录指向语言文件夹 - 默认语言文件夹为
inc/languages/english/
- 通过修改
-
文件包含限制绕过:
- 利用头像上传功能将PHP代码写入服务器
- 通过文件包含执行上传的"图片"文件
-
木马制作要求:
- 文件大小必须小于1KB(避免被压缩破坏)
- 可使用图片头+PHP代码的组合
防御建议
-
输入验证:
- 对
file参数进行严格过滤 - 限制包含文件的后缀和路径
- 对
-
权限控制:
- 加强后台管理权限验证
- 实现操作日志审计
-
安全配置:
- 限制可修改的配置项范围
- 实现上传文件内容检查
-
代码修复:
- 使用白名单方式验证语言文件
- 禁止包含非PHP语言文件
总结
该漏洞展示了后台功能中配置修改与文件操作的组合风险,强调了即使在后端也需要实施严格的安全控制。漏洞利用需要管理员权限,但一旦获取权限,可导致服务器完全沦陷。