yunyeCMS漏洞合集-by Track-柚子

Track-mss   ·   发表于 2021-09-27 16:38:18   ·   CTF&WP专版

yunyeCMS前台注入漏洞(一)

环境搭建

云业CMS内容管理系统是由云业信息科技开发的一款专门用于中小企业网站建设的PHP开源CMS,可用来快速建设一个品牌官网(PC,手机,微信都能访问),后台功能强大,安全稳定,操作简单。
源码下载:https://down.easck.com/code/60244.html

漏洞寻找

下载源码,搭建起来,打开登录页面。

  1. http://127.0.0.1/yunyecms/admin.php?c=login&=


打开Seay源代码审计工具,分析代码。
经过一番寻找与“提示”,发现getip()方法获取ip没有进行过滤,可能有戏。


搜索getip()函数,发现login.php调用了该函数,变量为$logiparr。


跟踪该变量,发现CheckLoginTimes函数调用该变量。


去到该函数定义处,发现我们的ip变量没有进行任何过滤直接由GetCount函数执行。

漏洞复现

  1. $cnt=$this->db->GetCount("select count(*) as total from `#yunyecms_adminloginfail` where ip='$ip' and failtimes>=".ADMLOGIN_MINUTES." and lastlogintime>$checktime limit 1");

可以看出,我们可以构造该ip变量达到注入目的,打开burp抓包。


发送到Repeater模块,构造参数,可以看到sql报错。


进一步利用,得到数据库名称,漏洞存在。

漏洞利用

将数据包发送给sqlmap去跑可以拿到更多信息

yunyeCMS前台注入漏洞(二)

漏洞描述

云业CMS内容管理系统是由云业信息科技开发的一款专门用于中小企业网站建设的PHP开源CMS,可用来快速建设一个品牌官网(PC,手机,微信都能访问),后台功能强大,安全稳定,操作简单。
yunyecms cookie参数存在sql注入漏洞,攻击者可以通过利用漏洞获取数据库敏感信息。

影响版本

yunyecms 2.0

漏洞发现

1.注册一个普通用户

2.然后直接进行抓包,抓任何页面的数据包都可行。在cookie处 YUNYECMS_userid 参数这里找到存在SQL注入漏洞。


用最简单的方法,在这里手注一个单引号,返回包里的报错信息都是与数据库相关的,所以可以判断是存在sql注入。


尝试手工注入找到数据库库名


3.也可以交给sqlmap跑一跑,把注入点的地方用 * 号标注,这样也能跑到其他数据库。

yunyeCMS后台注入漏洞(一)

漏洞分析

发现core/admin/deparment.php文件,其中id值是通过post直接获取的,然后被edit_admin_department()调用。


去到edit_admin_department()函数定义处,发现过滤语句。


但是仔细一看,发现代码只是过滤了departmentname和olddepartmentname两个变量,放过了我们的id变量,只是判断id值是否为空。

  1. if($departmentname!=$olddepartmentname){
  2. $num=$this->db->GetCount("select count(*) as total from `#yunyecms_department` where departmentname='$departmentname' and departmentid<>$id limit 1");
  3. if($num){ messagebox(Lan('department_already_exist'),url_admin('department_add','','',$this->hashurl['usvg']),"warn"); }
  4. }

从代码可以看出,如果departmentname的值不等于olddepartmentname,就执行sql语句,我们的id值没有任何过滤出现在sql语句中,应该有注入无疑了。

漏洞复现

找到 core/admin/deparment.php所在的页面,即后台的部门管理处。


随意修改部门名字,只要前后名字不一致就行,然后抓取数据包。


发送到Repeater模块,构造参数,可以看到sql报错。

yunyeCMS后台注入漏洞(二)

漏洞分析

漏洞出现在在后台文件department.php钟,department_add 函数对GET和POST参数先进行了是否empty判断,最终将传入的几个参数传给了edit_admin_department。


跟入edit_admin_department,对参数依次进行了处理,但是发现只有$departmentname,$olddepartmentname进行了usafestr安全过滤,漏网的$id拼接到了sql语句中执行。


最终导致了sql注入。

漏洞复现

这个和上述三种情况相同,直接交给sqlmap去跑。

打赏我,让我更有动力~

0 Reply   |  Until 2021-9-27 | 1035 View
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.