youdiancms(友点cms)漏洞

前言

在近期的授权项目中,遇到了一个目标,使用了youdiancms,需要获取权限,进而进行审计,本次代码审计过程先发现SQL注入漏洞,继续审计发现getshell的漏洞,本文将本次审计过程书写下来,仅作为学习研究,请勿用作非法用途。

0x01 未授权SQL注入

首先拿到源码一看,发现该系统是基于THINKPHP3开发的。

App/Lib/Action/HomeBaseAction.class.php:16

image-20210514153103940

cookie可控,然后赋值给了$this->_fromUser

跟踪一下$this->_fromUser的引用。

App/Lib/Action/Home/ChannelAction.class.php:732

image-20210514152830011

这里将$this->_fromUser带入到了hasVoted函数中,跟进该函数:

image-20210514152908218

很明显,TP3的where注入。

延时注入payload如下:

  
  
  1. GET /index.php/Channel/voteAdd HTTP/1.1
  2. Host: localhost
  3. Content-Length: 2
  4. Accept: application/json, text/javascript, */*; q=0.01
  5. X-Requested-With: XMLHttpRequest
  6. Accept-Encoding: gzip, deflate
  7. Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
  8. Cookie: youdianfu[0]=exp;youdianfu[1]==(select 1 from(select sleep(3))a)
  9. Connection: close

0x02 绕过登录到getshell过程

0x0201 流程思路

  1. 验证码处可以设置任意session

  2. 碰撞md5让AdminGroupID==1(超级管理员)

  3. 后台修改模板插入phpcode实现代码执行

0x0x202 任意session设置

App/Lib/Action/BaseAction.class.php:223

img

这个函数挺有意思的,本来是个生成验证码的操作,但是没想到所有的参数都是用户可以控制的,特别是这个$verifyName还可控。跟进buildImageVerify看看如何设置的session

img

红框处设置了session,并且session的键名我们是可控的,但是值不可控,是个md5值。

然后我们去看看管理员的校验函数。在App/Lib/Action/AdminBaseAction.class.php:7

img

起作用的就两个函数,isLogincheckPurview。跟进第一个看看:

img

这个函数很简单,就简单的判断session是否存在,我们可以通过上文的验证码函数来设置。

然后就是checkPurview函数。

img

这里判断了AdminGroupID的值,当等于1的时候就是超级管理员,由于这里是个弱类型比较。所以上文设置session中的md5是可以碰撞的。

编写脚本得到超级管理员的session了,然后登录。

img

0x0203 后台getshell

后台模板管理,可以修改模板,但是对<?php有检测,如图所示:

img

我们可以用<?=?>来绕过这个检测。

如图所示:

img

访问首页即可触发:

img

注:zc.cn为本地127.0.0.1的地址,并非zc.cn的域名

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
YouDianCMS友点企业网站管理系统集电脑站+手机站+微信站+APP+小程序五合一,数据自动同步,降低人力维护成本;共用一个管理后台,只要一个虚拟主机,有效节约空间投资。系统采用开源技术PHP+MYSQL开发,开源且具有操作简单、功能强大、稳定性好、易扩展、安全性强、维护方便、兼容性好等特点,可帮您快速构建一个强大专业的企业网站。系统支持多语言轻松打造国际站、自定义模型、支持网站模板换肤、内置SEO优化功能、静态页、评论留言、购物车、在线支付、优惠券、积分、三级分销、订单管理、会员、数据采集、短信接口、插件应用商店、广告等企业网站基本功能。运行环境:PHP5.3/5.4/5.5/5.6/7.0/7.1/7.2/7.3 + MYSQL。 运行环境: 操作系统:跨平台,支持Windows、Unix、Linux等操作系统 WEB服务器:IIS/APACHE/NGINX等 PHP环境:PHP5.3-8.0 数据库:MYSQL5.0-8.0 产品特点: 1、完全开源:系统采用开源技术PHP+MYSQL开发,安全、成本低、性价比高、方便安装(全面支持PHP的最新版本)、功能不受限制、使用灵活;全面开放系统前端+后台的源代码,解除了开发者和用户的后顾之忧,完全支持二次开发,没有预留后门,代码使用权自己轻松掌握 2、五站合一:电脑站、手机站、微信、APP、小程序五站合一,共用空间,数据同步,不用维护多个端口数据,一个后台就搞定 3、系统跨平台:Unix/Linux+windows,支持跨平台安装,一键备份轻松搞定网站迁移 支持扩展插件,功能可以无限扩展:系统后台插件应用商店集成了功能强大的免费插件:包含数据采集、三级分销、七牛云存储、邮件群发、图像批量处理等 4、内置网站优化功能SEO优化:系统后台可以设置伪静态、设置HTML静态缓存策略、搜索引擎优化设置、常用搜索引擎登录入口、生成网站地图、生成关键词内链、百度自动推送 5、可以DIY装修模板:可视化编辑,所见即所得!可DIY装修模板,高级装修组件,还拥有非常丰富的样式选择,不用写代码,也可以装修出漂亮的网站!  功能模块: 功能列表 核心功能:电脑站、手机站、微信、APP、小程序五站合一,共用空间,数据同步;一键备份全站(备份所有程序文件、上传文件、数据库),方便网站迁移;手机站和电脑站可独立绑定一级域名、共用空间、数据同步;领先的静态HTML文件缓存策略技术,通过设置缓存时间,自动生成HTML文件,再无需手工生成HTML;内置搜索引擎优化功能,方便网站优化;内置插件,功能无限扩展 系统设置:基本设置、联系方式设置、水印设置、文件上传设置、站长统计设置、百度分享设置、缩略图设置、数据库设置、邮箱设置、语言设置、第三方登录设置、手机网站设置、其它设置等 系统管理:自定义标签管理、数据库管理、数据库还原、频道模型管理、一键备份全站、操作日志管理、网站目录权限检测、菜单管理、区域管理 内容管理:频道管理、专题管理、类型管理、信息管理(各个频道信息增删改查) 互动管理:在线客服管理、第三方在线客服管理、订单管理、配送方式管理、支付方式管理、销售统计、资金管理、积分管理、优惠券管理、留言管理、人才招聘、评论管理 广告管理:幻灯片管理、幻灯分组管理、广告内容管理、邮件群发管理、订阅邮箱管理、邮件订阅分类管理、友情链接管理、友情链接分类管理 会员管理:会员信息管理、会员分组管理、会员功能设置、管理员信息管理、管理员分组管理 APP管理:内置APP端支持,在后台可以查看APP安装统计、活跃度分析! 网站优化:伪静态设置(是否启用伪静态、伪静态扩展名设置)、搜索引擎优化设置(页面标题Title、页面关键词Keywords、页面描述Description)、常用搜索引擎登录入口、生成网站地图、生成关键词内链 微信平台:微信绑定设置、基本信息设置、微信自定义菜单设置、小程序设置、微信功能设置、关注自动回复、关键词自动回复、地理位置自动回复、默认自动回复、微消息、微查询、微活动、微投票、微调查、微会员卡 模板管理:电脑模板管理(在线模板安装、模板选择、模板管理、样式管理)、手机模板管理(在线模板安装、模板选择、模板管理、样式管理) 插件管理:系统支持扩展插件,内置插件有:数据采集、三级分销、七牛云存储、邮件群发、图像批量处理等,可自行开发插件,无限功能自由扩展 缓存管理:一键清除系统所有缓存、HTML静态缓存管理(缓存时间设置、一键清除网站首页/频道首页/内容页面Html静态缓存) YouDianCMS 9.2.6版 更新日志: 1、【新增】程序兼容PHP8.0 2、【优化】优化系统升级算法,更人性化 3、【优化】模板装修功能优化与增强 4、【优化】完善产品OEM功能 5、【BUG】修复部分已知BUG
Python CMS是一种基于Python语言开发的内容管理系统。它可以帮助用户快速搭建网站,并提供了一系列的功能和工具来管理网站的内容、布局和设计。其中一个常用的Python CMS是Wagtail,它是基于Django框架开发的CMS工具。 使用Python CMS可以带来以下好处: 1. 简化网站建设:Python CMS提供了一套完整的工具和功能,使得网站建设变得更加简单和高效。 2. 灵活的内容管理:Python CMS允许用户轻松管理网站的内容,包括创建、编辑和发布文章、页面和其他类型的内容。 3. 自定义布局和设计:Python CMS提供了丰富的主题和模板,用户可以根据自己的需求自定义网站的布局和设计。 4. SEO优化:Python CMS提供了一些内置的SEO优化功能,帮助用户提升网站在搜索引擎中的排名。 5. 多语言支持:Python CMS支持多语言功能,使得用户可以轻松创建多语言网站。 使用Wagtail作为Python CMS的例子: 1. 安装Wagtail:使用pip命令安装Wagtail模块。 ```shell pip install wagtail ``` 2. 创建Wagtail项目:使用wagtail命令创建一个新的Wagtail项目。 ```shell wagtail start mysite ``` 3. 运行开发服务器:进入项目目录并运行开发服务器。 ```shell cd mysite python manage.py runserver ``` 4. 访问Wagtail后台:在浏览器中访问http://localhost:8000/admin/,使用管理员账号登录。 5. 创建页面:在Wagtail后台创建新的页面,并添加内容和布局。 6. 发布网站:在Wagtail后台发布网站,使其对外可见。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值