BossCMS RCE

简介

BossCMS是一款基于自主研发PHP框架+MySQL架构的内容管理系统,能够满足各类网站开发建设的需求。系统开源、安全、稳定、简洁、易开发、专注为中小型企业及政企单位、个人站长、广大开发者、建站公司提供一套简单好用的网站内容管理系统解决方案。官网提供了大量的网站模板,可以让您不需要任何的专业技术就能轻松搭建您的网站,易操作、易上手、快捷方便的后台操作让您10分钟就会建立自己的网站。

工具准备

工具版本
mysqlV5.7.26
phpV5.6.9
seay源代码审计系统V2.1
phpstormV2021.3
phpstudy_proV8.1.1.3

路由分析

认识bosscms

打开cms目录后我们先去简单阅读一下BOSScms的README.md,看看设计者的对于自己的介绍,搜 集点信息看看注意事项,作者也是很nice都录制了视频。

图片

寻找路由

这里打开cms目录后会有几个我们需要关注的目录,首先是admin目录这里可能就是后台功能目录,install目录是安装cms的功能目录配置数据库文件、初始化cms功能等,upload目录为上传文件存储目录。

图片

我们直接进入根目录下的index.php,看看会有什么发现,这里定义了四个常量和一个利用文件包含 system目录下的enter文件,我们跟进去看看enter文件。

图片

这里enter文件设置了一下请求头内容、时区、一些常量,在最后继续进行文件包含into.class.php 文件,调用into文件中的load()方法,我们继续跟进。

图片

这里self了一下,我们看看self方法的定义,就是调用本类中的静态方法和属性,也可以访问父类的。这里就是返回一下调用本类下的load_class()方法,那我们继续跟进一下。

图片

图片

这里该load_class()方法需要四个参数,我们先来进去第一个if逻辑判断一下$type类型因为初始赋值 为null,直接进入判断if逻辑,这里涉及前后台功能调用,如果是IS_INSIDE是true进入system/admin目录功能,如果是fales进入system/web目录功能。

图片

这里简单的思考了一下,为什么会做到前后台功能分开调用呢,看了一下代码发现,在admin/index.php存在常量IS_INSIDE为true,如果是admin/index.php下的load下的类就会存在该常量,自然做到了前后功能分离,感觉这样设计思维真的很巧妙~

图片

$func先检查一下是否在包含的类里面,也就是$part里面就利用回调函数call_user_func()实现。

图片

也就是我们路由分析下来就是需要传入的值为?mold=&part=&func,而通过分析我们发现mold值为system目录的下级目录,而part为功能目录下的实现文件,而func值为该实现文件的方法。通过输入admin验证一下猜想,基本符合。

图片

图片

图片

未授权漏洞

在登录后台的时候通过查看添加用户功能,看能不能挖掘sql注入漏洞,结果发现了个大问题,一个比较好玩的权限逻辑问题。这里添加用户的路由

http://192.168.18.132/bosscms/admin/?mold=manager&part=manager&func=add

我们跟进到manager.class.php里面的add()方法,这里先into::basc_class('admin'),应该是load一个名字admin的类我们跟进去看看。

图片

这里bassic_class()方法需要两个值,两个值$name和一个$func,$func初始值为null,在代码中给他复制一个固定值init,感觉像是初始化之类的,问题不大,跟进去。

图片

在admin.class.php里面的,init()方法,我以为是初始化类的,结果是个判断权限,就是判断获取到session,如果是不存在的seesion就是空的,然后进入if逻辑,利用header进行跳转会登录页面。

图片

可能大家还没发现问题,这里没有做终止,它在做完跳转后动作后,继续进入add()方法进行添加用户。这里一个巧妙的帽子戏法导致了整个信息系统后台功能点存在未授权漏洞。

我们利用登录后的添加用户poc,然后随便改个cookie来进行验证,显示保存成功,看来我们分析的没有错,我们进行登录看看是否成功。

图片

图片

图片

这里就要回归我们怎么getshell在后台功能中有个安全设置可以修改上传后缀,然后找个上传点上传祖产大宝贝即可~

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/636587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SystemVerilog中数组内置函数sum()的一个注意点

Systemverilog内置了数组求和运算方法(sum()),将数组的所有元素累加起来,返回一个最终值。在使用时要注意数组类型的位宽,通常情况下,如果你将一组单bit的值加起来,Systemverilog会使用足够的精度来确保不丢失任何bit的…

INS-06003错误处理

在麒麟V10操作系统上安装Oracle RAC 19C,安装GI的建立互信步骤中,遇到INS-06003错误: [INS-06003] Failed to setup password SSH connectivity with following node(s) 查看详细信息: PRVG-11001: PRCZ-2136: PRCZ-2006: 此时在操…

实验四 SQL语言

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

SSE[Server-Sent Events]实现页面流式数据输出(模拟ChatGPT流式输出)

文章目录 前言SSE 简介应用场景区分浏览器支撑性 实现过程Web VUE核心解析数据代码实例demo参考 前言 服务端向客户端推送消息,除了用WebSocket可实现,还有一种服务器发送事件(Server-Sent Events)简称 SSE,这是一种服务器端到客户端(浏览器)…

ChatGPT与文心一言:AI助手之巅的对决

随着科技的飞速发展,人工智能助手已经渗透到我们的日常生活和工作中。 而在这个充满竞争的领域里,ChatGPT和文心一言无疑是最引人注目的两款产品。它们各自拥有独特的优势,但在智能回复、语言准确性、知识库丰富度等方面却存在差异。那么&am…

mybatis xml多表查询,子查询,连接查询,动态sql

项目结构 数据库表 student_type 表 student 表 依赖 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency><dependency><groupId>org.…

Yield Guild Games 宣布与区块链游戏中心 Iskra 建立战略合作伙伴关系

Yield Guild Games (YGG) 宣布将向 Iskra 引入其任务系统&#xff0c;Iskra 是一个 Web3 游戏中心和发布平台&#xff0c;拥有超过 400 万注册钱包和 10 万月度活跃用户 (MAU)。在 LINE、Kakao、Wemade 和 Netmarble 等公司的支持下&#xff0c;Iskra 将游戏玩家和游戏工作室聚…

Java 内存模型深度解析

优质博文&#xff1a;IT-BLOG-CN 一、并发编程模型的两个关键问题 【1】并发中常见的两个问题&#xff1a;线程之间如何通信及线程之间如何同步。通信是指线程之间以何种机制来交换信息。在命令式编程中&#xff0c;线程之间的通信机制有两种&#xff1a;内存共享和消息传递&…

日常常见应用组件升级记录

一、前言 因近期安全扫描&#xff0c;发现java后端应用涉及多个引用组件版本过低&#xff0c;涉及潜在漏洞利用风险&#xff0c;特记录相关处理升级处理过程&#xff0c;以备后续确认&#xff1b; 二、升级处理过程 2.1、Java类应用内置Spring Boot版本升级 Spring Boot是一…

bug笔记:解决 HTTP Error 500.30 - ASP.NET Core app failed to start

总结下后端部署windos iis环境net6版本&#xff0c;500.30问题报错的一种解决方案&#xff1a; 一、问题描述 二、解决方案 检查下是否安装了net6对应的环境&#xff0c;是否已经安装 然后在事件管理器>Windows日志>应用程序&#xff0c;里面查看详细异常记录 在iis下面…

使用golang对接微软Azure AI翻译

文章目录 一、官方地址二、准备工作三、代码示例 一、官方地址 https://learn.microsoft.com/zh-CN/azure/ai-services/translator/translator-text-apis?tabsgo 二、准备工作 创建服务 创建服务连接地址&#xff1a;https://portal.azure.com/#create/Microsoft.CognitiveS…

RabbitMQ与SpringAMQP

MQ&#xff0c;中文是消息队列&#xff08;MessageQueue&#xff09;&#xff0c;字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。&#xff08;经纪人&#xff01;&#xff09; 1.RabbitMQ介绍 微服务间通讯有同步和异步两种方式 同步&#xff08;通信&#xff0…

ruoyi-cloud—若依微服务打包部署

1. 前端端口修改 2. 后端端口修改 &#xff08;1&#xff09;修改ruoyi-gateway服务中的bootstrap.yml的port端口 &#xff08;2&#xff09;修改ruoyi-ui中的vue.confing.js的target中的端口 3. 后端部署 (1) 在本地电脑上代码界面上打包后端 在ruoyi项目的bin目录下执行pa…

回溯法:N皇后问题

问题背景 八皇后问题是十九世纪著名的数学家高斯于1850年提出的。 • 问题是&#xff1a;在88的棋盘上摆放八个皇后&#xff0c; 使其不能互相攻击&#xff0c; 即任意两个皇后都不能处于同一行、 同一列或同一斜线上。 • n皇后问题&#xff1a;即在n n的棋盘上摆放n个皇后…

看完这篇我就不信还有人不懂卷积神经网络!

看完这篇我就不信还有人不懂卷积神经网络&#xff01; 前言 在深度学习大&#x1f525;的当下&#xff0c;我知道介绍卷积神经网络的文章已经在全网泛滥&#xff0c;但我还是想要写出一点和别人不一样的东西&#xff0c;尽管要讲的知识翻来覆去还是那么一些&#xff0c;但我想…

Redis原理篇(SkipList)

一.概述 本质是双端链表&#xff0c;只不过在正向遍历时可以不一个一个遍历&#xff0c;而是可以跳着遍历。 怎么实现的呢&#xff0c;下面是SkipList源码 二.源码 1. zskiplist 意义&#xff1a;跳表 zskiplist里面有头指针和尾指针&#xff0c;节点数量&#xff0c;最大…

【信号与系统】(1)连续和离散表示

在信号处理和数学中&#xff0c;连续和离散是两种基本的表示方法&#xff0c;用于描述信号、函数或数据集。 对连续信号 f(t)进行等间隔采样得到 连续表示&#xff08;Continuous Representation&#xff09; 连续表示通常用于描述在一个连续范围内变化的信号或函数。在连续…

Java学习(二十一)--JDBC/数据库连接池

为什么需要 传统JDBC数据库连接&#xff0c;使用DriverManager来获取&#xff1b; 每次向数据库建立连接时都要将Connection加载到内存中&#xff0c;再验证IP地址、用户名和密码&#xff08;0.05s~1s)时间。 需要数据库连接时候&#xff0c;就向数据库要求一个&#xf…

JS-WebAPIS(四)

日期对象&#xff08;常用&#xff09; • 实例化 在代码中发现了 new 关键字时&#xff0c;一般将这个操作称为实例化创建一个时间对象并获取时间 获得当前时间 获得指定时间 • 时间对象方法 使用场景&#xff1a;因为日期对象返回的数据我们不能直接使用&#xff0c;所以…

【2023我的编程之旅】七次不同的计算机二级考试经历分享

目录 我报考过的科目 第一次报考MS Office 第二次报考Web语言&#xff0c;C语言&#xff0c;C语言 第三次报考C语言&#xff0c;C语言&#xff0c;Java语言 分享一些备考二级的方法 一些需要注意的细节 结语 2023年的CSDN征文活动已经进入了尾声&#xff0c;在这最后我…