0x01 组件说明
PHPMyWind是一款基于PHP+MySQL开发符合W3C标准的建站引擎,漏洞源于admin/site_save.php中对于数据未进行校验,导致可插入恶意代码造成RCE
0x02 影响版本
0x03 漏洞分析&复现
根据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 即可触发:
0x04 修复建议
对用户的输入数据进行过滤,包括不限于<、 >、?、 = 、`、等特殊字符。