youdianCMS v8代码审计
一 代码执行漏洞
在后台模板处修改任意模板添加php代码即可执行。
youdiancms8.0\App\Core\Lib\Template\ThinkTemplate.class.php
97行,其使用include包含了模板文件
证明:
在后台模板管理处写入phpinfo
2 刷新首页,phpinfo执行了
二 XXE漏洞
后台模板管理处存在XXE漏洞,包括电脑模板管理,手机模板管理两处
写入
点击设置会触发XXE
接收到了请求
代码审计:
1 /App/Lib/Action/Admin/TemplateAction.class.php:68
当攻击者通过/index.php/Admin/template/Modify?file=/config.xml页面修改xml文件后,通过此模块功能进行保存,可以看到其对文件名进行验证,对内容进行相关解码但并未进行任何恶意代码的过滤,使得攻击者的恶意代码可以顺利保存。
2 /App/Lib/Action/Admin/TemplateAction.class.php:307
此为xxe漏洞的触发页面,当上述恶意代码写入config.xml并保存后通过此功能进行触发。可以看到,代码判断config.xml文件存在时,实例一个YdTemplateConfig()对象,并调用getAttribute方法
三 文件上传漏洞
CMS会在后台处设置允许上传文件的格式白名单,且在代码中有一串黑名单,当上传文件时会对后缀验证是否处在此黑名单。但是由于白名单可认为控制添加,黑名单存在绕过,所以出现了此漏洞
添加pht或phtml格式
任意上传点都行
返回包中显示了文件路径
连接即可
代码审计:
App/Lib/Action/BaseAction.class.php
可以看到作者添加了很多黑名单后缀,但是pht 和phtml未在其中,且可以执行php代码。
四 任意文件上传
CMS存在模板压缩包上传功能,但是未能对其中文件数量和内容进行控制,所以在压缩包中添加任意文件即可
此为我添加在压缩包中的后门文件
代码审计:
App/Lib/Action/AdminBaseAction.class.php
代码只对压缩包进行了重名验证,有效验证,无任何安全性处理,所以存在此漏洞。