技术饭
针对爱客猴echoCMS存在远程代码执行漏洞解决方案
最近阿里针对tp3.2.3框架进行了检查,并发公告称tp3.2.3的文件缓存机制很容易被破解,如果使用了文件缓存未设置 DATA_CACHE_KEY 会造成任意代码执行,这个会对整个服务器以及数据造成很大的困扰,tp官方也第一时间辟谣称框架本身没有问题,只是需要设置 DATA_CACHE_KEY 这个值让攻击者不容易猜到即可。
一、程序概况
Echo内容管理系统v3.0~v3.2.3,采用了thinkphp3.2.3框架,并默认开启了cache,未设置 DATA_CACHE_KEY 造成任意代码执行
二、漏洞分析
查thinkphp官方文档缓存S函数使用方法如下:
跟进S函数具体实现
继续跟进set方法
set方法中数据序列化后被写入文件(对数据没有检查,可以使用插入换行符和php代码造成php代码执行),文件名由filename 加工,继续跟进filename函数
我们看到文件最后是以 DATA_CACHE_KEY 拼接$name 后的 md5值
而查看echo内容管理系统配置文件,没有配置DATA_CACHE_KEY值
那文件名也就是传入$name的md5值
在程序中随意找一处,如系统配置
查看它的控制类中方法
跟进setconfig方法
可以看出最后缓存的文件名是由 字符串’ALL_CONFIG’拼接siteid后的md5
在页面中获取siteid
修改提交数据 插入%0d%0aecho 'CNVD_V587_'. date('y-m-d H:i:s',time());//
执行后,按照预期应该在 根目录下的Apps/Runtime/Temp 生成一个文件名为 md5('ALL_CONFIG'.'0') 即 e701a6a47a4959f2a512e66f5c9ee986.php
成功换行插入php代码
访问这个php文件
成功执行任意代码。
下面使用这个漏洞,测试官方demo
感谢国家互联网应急中心(CNCERT),国家信息安全漏洞共享平台(CNVD)的数据反馈,bug已经修复。。。
文明上网理性发言!