漏洞简介

PHPMyWind是一套基于PHP和MySQL并符合W3C标准的企业网站建设解决方案。

PHPMyWind 5.6版本存在代码注入漏洞,攻击者可以将php代码注入"/include/config.cache.php"文件来触发漏洞。
 
 

组件说明

PHPMyWind是一款基于PHP+MySQL开发符合W3C标准的建站引擎,漏洞源于admin/site_save.php中对于数据未进行校验,导致可插入恶意代码造成RCE
 
 

影响版本

PHPMyWind 5.6
 
 

漏洞分析

根据CVE官方的描述:由于未正确处理特殊字符,导致写入恶意数据到配置文件中

PHPMyWind 5.6 is vulnerable to Remote Code Execution. Becase input is filtered without "<, >, ?, =, `,...." In WriteConfig() function, an attacker can inject php code to /include/config.cache.php file.


这段描述中提到了WriteConfig()方法和include/config.cache.php文件,
 

分析


首先全局搜索下WriteConfig()方法:看到site_save.php文件



看下site_save.php文件的WriteConfig()方法的实现:最后一步为写入配置文件,基本确定为存在漏洞的文件



继续往上查看分析:可以看到当action为add(添加站点)时,直接插入了site_key、site_name、site_lang三个参数值,未进行过滤。


 
 

漏洞复现

访问后台



使用默认账号admin/admin登录:选择站点配置管理-> 添加新站点



在站点标识处插入恶意代码



最后在任意页面访问 ?cmd=id 即可触发:


 
 

修复建议

对用户的输入数据进行过滤,包括不限于<、 >、?、 = 、`、等特殊字符。

官方
目前厂商已发布升级补丁以修复漏洞,详情请关注厂商主页:

https://github.com/gaozhifeng/PHPMyWind