EyouCMS 1.5.5 漏洞防御实战:3 种 WAF 规则与代码修复方案对比

发布时间:2026/7/6 2:09:38
EyouCMS 1.5.5 漏洞防御实战:3 种 WAF 规则与代码修复方案对比 EyouCMS 1.5.5 漏洞防御实战3 种 WAF 规则与代码修复方案对比1. 漏洞背景与影响分析EyouCMS 1.5.5 版本中发现的命令执行漏洞主要存在于后台模板管理功能中。攻击者可通过精心构造的 PHP 短标签绕过现有过滤机制在服务器上执行任意命令。这一漏洞的利用门槛较低但危害极大——攻击者可能获取服务器完全控制权导致数据泄露、网站篡改等严重后果。该漏洞的核心问题在于FilemanagerLogic.php文件中的editFile函数过滤不严。虽然系统已对常规 PHP 标签进行了拦截$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语法...; }但攻击者仍可通过短标签配合不闭合语句的方式绕过检测。例如? system(id); //2. 应用层代码修复方案2.1 安全函数重写最根本的解决方案是修改editFile函数增加对短标签的检测逻辑。以下是修复后的核心代码public function editFile($filepath, $content) { $content htmlspecialchars_decode($content, ENT_QUOTES); // 增强的PHP标签检测 $php_patterns [ /lt;\?php/i, // 标准PHP标签 /lt;\?.?\?gt;/is, // 短标签带闭合 /lt;\?[^?]*$/is, // 短标签无闭合 /\{eyou\:php[^\}]*\}/i, /\{php[^\}]*\}/i ]; foreach ($php_patterns as $pattern) { if (preg_match($pattern, $content)) { $this-logSecurityEvent($filepath); // 记录安全事件 return 检测到非法PHP语法; } } // 其他安全处理... }关键改进点增加对?短标签的全面检测采用数组模式便于后续规则扩展添加安全事件日志记录2.2 输入内容二次验证即使前端进行了过滤后端也应增加验证层function sanitizeTemplateContent($content) { $dangerous_functions [ system, exec, passthru, shell_exec, eval, assert, popen, proc_open ]; foreach ($dangerous_functions as $func) { if (strpos($content, $func.() ! false) { return false; } } return true; }3. WAF 规则配置方案对于无法立即更新代码的系统可通过 WAF 进行临时防护。以下是适用于 ModSecurity 的规则集3.1 基础防护规则SecRule REQUEST_FILENAME endsWith /admin/FilemanagerLogic/editFile \ id:1001,\ phase:2,\ block,\ msg:EyouCMS 命令执行尝试,\ chain SecRule ARGS:content rx (?:\?|system\(|exec\(|shell_exec\() \ setvar:tx.anomaly_score_pl1%{tx.critical_anomaly_score}3.2 增强型正则防护SecRule REQUEST_URI rx /admin/.*?FilemanagerLogic \ id:1002,\ phase:1,\ t:none,\ block,\ msg:可疑的文件管理操作,\ chain SecRule ARGS_POST:content rx (?:\?(?!xml)|(?:\{|%)php) \ ctl:auditLogPartsE3.3 异常行为检测SecRule ARGS_POST:content gt 0 \ id:1003,\ phase:2,\ t:none,\ block,\ msg:异常模板修改请求,\ chain SecRule ARGS_POST:content validateByteRange 32,126 \ chain SecRule ARGS_POST:content rx \x00-\x1f \ setvar:tx.inbound_anomaly_score_pl1%{tx.warning_anomaly_score}规则说明规则ID检测重点防护效果1001基础命令执行特征拦截明显攻击1002各种PHP标签变种防御标签绕过1003非可见字符检测防范编码混淆攻击4. 系统层加固措施4.1 文件权限最小化建议的目录权限设置# 关键目录权限设置 chown -R www-data:www-data /var/www/eyoucms/ find /var/www/eyoucms -type d -exec chmod 750 {} \; find /var/www/eyoucms -type f -exec chmod 640 {} \; # 模板目录特殊限制 chmod -R 700 /var/www/eyoucms/template/4.2 PHP 安全配置修改php.ini关键参数disable_functions exec,passthru,shell_exec,system,proc_open,popen short_open_tag Off display_errors Off expose_php Off4.3 入侵检测规则适用于 Suricata 的 IDS 规则示例alert http $HOME_NET any - $EXTERNAL_NET any \ (msg:EYOUCMS Potential Exploit Attempt; \ flow:to_server,established; \ content:/admin/FilemanagerLogic/editFile; \ content:content; \ pcre:/\?[^x]/i; \ classtype:web-application-attack; \ sid:20245501; rev:1;)5. 多方案对比与选择建议5.1 防护方案效果对比方案类型实施难度防护效果性能影响适用场景代码修复高★★★★★低长期稳定运行的系统WAF规则中★★★★☆中无法立即更新的紧急防护系统加固低★★★☆☆低所有环境基础防护5.2 组合方案推荐根据不同的业务场景我们建议1. 新部署系统直接应用修复后的代码配合系统层加固措施启用WAF作为额外防护2. 已上线系统优先部署WAF规则安排低峰期进行代码更新实施权限最小化原则3. 高安全要求环境代码修复WAF双重防护定期安全审计文件完整性监控6. 后续维护建议监控机制设置模板文件修改告警监控可疑进程创建行为更新策略# 示例自动化更新检查脚本 #!/bin/bash CURRENT_VER$(cat /var/www/eyoucms/version.txt | grep 1.5.5) if [ -n $CURRENT_VER ]; then echo 发现需升级的漏洞版本 | mail -s 安全告警 adminexample.com fi应急响应保留漏洞触发时的完整日志准备系统快照用于取证建立回滚预案