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. getOutputStream() has already been called for this response解释以及解决方法

    异常:getOutputStream() has already been called for this response 的解决方法 今天在第一次接触使用“验证码”功能时,在执行时出现了异常信息: ...

  2. Chrome RenderText分析(1)

      先从一些基础的类开始 1.Range // A Range contains two integer values that represent a numeric range, like the ...

  3. ERROR: While executing gem … (Gem::RemoteFetcher::FetchError)

    原文地址:https://www.zfanw.com/blog/error-while-executing-gem-gem-remote-fetch-error.html 我对命令行下安装 gem 包 ...

  4. STM32 F103 F407 F429 F767对比图

  5. Python中调用自然语言处理工具HanLP手记

    手记实用系列文章: 1 结巴分词和自然语言处理HanLP处理手记 2 Python中文语料批量预处理手记 3 自然语言处理手记 4 Python中调用自然语言处理工具HanLP手记 5 Python中 ...

  6. 浅谈常用的几种web攻击方式

    一.Dos攻击(Denial of Service attack) 是一种针对服务器的能够让服务器呈现静止状态的攻击方式.有时候也加服务停止攻击或拒绝服务攻击.其原理就是发送大量的合法请求到服务器,服 ...

  7. iOS关于沙盒文件拷贝manager.copyItem的一个坑

    记录一下: 沙盒文件操作,当需要拷贝文件时,我们可以使用如下类似方式: // 文件拷贝 func copyFile(from:String,to:String)->Bool{ if !manag ...

  8. hihocoder第238周:杨氏矩阵的个数

    题目链接 问题描述 给定一个N行M列的矩阵,往里面填入$1-N\times M$个数字,使得这个矩阵每行.每列都满足递增.问:有多少种填法? 问题分析 这个问题很难,如果能够直接想到,那就是天才了. ...

  9. 在Asp.Net中操作PDF – iTextSharp - 操作图片

    iTextSharp支持所有主流的图片格式,比如:jpg, tif, gif, bmp, png和wmf.在iTextSharp中使用Image.GetInstance()方法创建图片有很多种方式,或 ...

  10. WCF兼容WebAPI输出Json格式数据,从此WCF一举两得

    问题起源: 很多时候为了业务层调用(后台代码),一些公共服务就独立成了WCF,使用起来非常方便,添加服务引用,然后简单配置就可以调用了. 如果这个时候Web站点页面需要调用怎么办呢? 复杂的XML , ...