• 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验证一下猜想,基本符合。

  • 相关阅读:
    1321_一份BootLoader xmodem部分的协议分析
    使用Triton部署chatglm2-6b模型
    操作符的优先级、结合性、是否控制求值顺序【详解】
    互融云融资担保系统 | 数智化将成为融资担保行业发展新模式
    XXL-JOB核心源码解读及时间轮原理剖析
    知识图谱(5)知识表示
    cocosCreator 之 crypto-es数据加密
    Git常用命令学习笔记
    redis cluster如何添加和删除节点?
    Kafka、RabbitMQ、RocketMQ中间件的对比
  • 原文地址:https://blog.csdn.net/2301_80520893/article/details/138117828