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在后台功能中有个安全设置可以修改上传后缀,然后找个上传点上传祖产大宝贝即可~

图片

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 可观测性 BPFeBPF 以及 BCCbpftrace 认知

写在前面 博文内容为 《BPF Performance Tools》 读书笔记整理,对原书内容做了摘要博文内容涉及: BPF 和 eBPF 认知BCC 和 bpftrace 认知BCC 和 bpftrace 工具简单认知 理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找…

PTA 6-11 先序输出叶结点

本题要求按照先序遍历的顺序输出给定二叉树的叶结点。 函数接口定义: void PreorderPrintLeaves( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ElementType Data;BinTree Left…

C++ | 五、哈希表 Hash Table(数组、集合、映射)

哈希表基础 哈希表是一种数据结构(哈希表包含数组,和前两篇文章叙述的字符串、链表平级)哈希表概念:类似于Python里的字典类型,哈希表把关键码key值通过哈希函数来和哈希表上的索引对应起来,之后输入key值…

操作系统——进程管理篇

操作系统——进程管理篇(王道23年版) 2.1_1_进程的概念、组成、特征 1.进程的概念 程序:是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合 进程:是动态的,是程序的一次执行过…

x-cmd pkg | aliyun - 阿里云 CLI

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 aliyun 是基于阿里云 OpenAPI 的管理工具,用于与阿里云服务交互,管理阿里云资源。 首次用户 使用 x env use aliyun 即可自动下载并使用 在终端运行 eval "$(curl https://get.x-cmd.com…

Red Hat Enterprise Linux 9.3 安装图解

引导和开始安装 选择倒计时结束前,通过键盘上下键选择下图框选项,启动图形化安装过程。需要注意的不同主板默认或者自行配置的固件类型不一致,引导界面有所不同。也就是说使用UEFI和BIOS的安装引导界面是不同的,如图所示。若手动调…

MySQL缓冲池(Buffer Pool)深入解析:原理、组成及其在数据操作中的核心作用

在关系型数据库管理系统(RDBMS)中,性能优化一直是数据库管理员和开发者关注的焦点。作为最流行的开源RDBMS之一,MySQL提供了多种优化手段,其中InnoDB存储引擎的缓冲池(Buffer Pool)是最为关键的…

二、Flask学习之CSS

1.CSS在HTML中的三种表示方法 1.1 直接在标签中添加 <div><span style"color: orange">欢迎光临</span> </div>1.2 在头部添加 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&g…

2024年MacBookPro电脑数据恢复软件EasyRecovery数据恢复

前天新入手了一台MacBook pro&#xff0c;第一次用Mac激动的心情简直难以言喻&#xff0c;可是随后这激动的心情顿时就烟消云散了&#xff0c;因为对Mac操作系统的不熟练&#xff0c;导致我删除了一份很重要的Word文件。MacBook pro如何恢复误删除的文件?就这件事我向朋友求助…

SpringMVC下半篇之整合ssm

4.ssm整合 4.1.创建表 CREATE TABLE account (id int(11) NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,money double DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8;4.2.创建工程 4.3.pom.xml <?xml version"1.0" encoding&…

第十一站:运算符重载operate(+-*/)

目录 使用成员函数重载运算符 使用非成员函数重载运算符 使用重载函数运算整数 禁区: 赋值重载运算符 bug: 关系重载运算符>< 下标运算符重载 bug 输入输出运算符重载<<,>> 使用成员函数 使用友元函数 (更方便) 普通类型>类类型 类类型>普通类型…

OpenCV-Python(48):K均值聚类

目标 学习K值聚类的概念以及工作原理。K均值聚类的OpenCV实现 背景 下面用一个最常用的例子来给大家介绍K 值聚类。 话说有一个公司要生产一批新的T 恤。很明显他们要生产不同大小的T 恤来满足不同客客的要求。所以这个公司搜集了很多人的身高和体重信息&#xff0c;并把这些…

【C语言】编译和链接深度剖析

文章目录 &#x1f4dd;前言&#x1f320; 翻译环境和运行环境&#x1f309;翻译环境 &#x1f320;预处理&#xff08;预编译&#xff09;&#x1f309;编译 &#x1f320;词法分析&#x1f320;语法分析 &#x1f309;语义分析&#x1f320;汇编 &#x1f309; 链接&#x1f…

23号资源——电力系统程序集合已提供下载资源

23号资源&#xff1a;程序集合包含9个程序&#xff08;经典电力系统经济调度程序&#xff1b;2解决带储&#xff1b;3智能微电网PSO优化算法&#xff1b;微电网调度等等&#xff0c;见资源描述&#xff09;资源-CSDN文库https://download.csdn.net/download/LIANG674027206/887…

C++继承(万字详!!)

文章目录 继承的概念及定义继承的概念继承定义 基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数继承与友元继承与静态成员复杂的菱形继承及菱形虚拟继承菱形继承菱形虚拟继承 继承的总结和反思笔试面试题 继承的概念及定义 继承的概念 继承(inheritance) 机制是面…

【Docker】实战多阶段构建 Laravel 镜像

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; 本节适用于 PHP 开发者阅读。Laravel 基于 8.x 版本&#xff0c;各个版本的文件结构可能会有差异&#xff0c;请根据实际自行修改。 准备 新…

开源模型应用落地-qwen模型小试-入门篇(五)

一、前言 这是关于qwen模型入门的最后一篇文章。主要介绍如何使用魔搭的API在本地调用qwen模型。此外&#xff0c;通过阅读这一系列的文章&#xff0c;如果您真的亲自动手实践过&#xff0c;我相信您已经掌握了qwen模型的基本使用方法。 二、术语 2.1. ModelScope社区 打造下一…

HCIA—— 16每日一讲:HTTP和HTTPS、无状态和cookie、持久连接和管线化、(初稿丢了,这是新稿,请宽恕我)

学习目标&#xff1a; HTTP和HTTPS、无状态和cookie、持久连接和管线化、HTTP的报文、URI和URL&#xff08;初稿丢了&#xff0c;这是新稿&#xff0c;请宽恕我&#x1f636;‍&#x1f32b;️&#xff09; 学习内容&#xff1a; HTTP无状态和cookieHTTPS持久连接和管线化 目…

流量控制与熔断利器:Sentinel介绍

这是《百图解码支付系统设计与实现》专栏系列文章中的第&#xff08;19&#xff09;篇&#xff0c;也是流量控制系列的第&#xff08;6&#xff09;篇。点击上方关注&#xff0c;深入了解支付系统的方方面面。 本篇聊聊流量控制与熔断利器Sentinel&#xff0c;背后的原理&…

分享行政检察院法律监督模型的构建价值和运用范式

数字检察是检察工作现代化的重要依托。在数字化时代背景下&#xff0c;行政检察监督办案要深入推进检察大数据战略&#xff0c;推动办案模式从“个案为主、数量驱动”向“类案为主、数据赋能”转变&#xff0c;通过数据分析、数据碰撞、数据挖掘发现治理漏洞或者监督线索&#…