百家cms代审

2024-02-09 08:44
文章标签 cms 百家 代审

本文主要是介绍百家cms代审,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境搭建

源码链接如下所示 https://gitee.com/openbaijia/baijiacms 安装至本地后

直接解压到phpstudywww目录下即可

接下来去创建一个数据库用于存储CMS信息。(在Mysql命令行中执行)

接下来访问CMS,会默认跳转至安装界面

数据库名称和账密注意一下就好,其他随便写

审计

准备工作

对具体文件夹进行一次分析,这样才能对CMS有一个初步的印象,为后续审计做一些铺垫。 根目录如下所示:

其对应目录解释如下

addons     插件
api        接口
assets     静态文件
attachment 上传目录
cache      缓存目录
config     系统文件
include    系统文件
system     后端代码

针对system目录,这个较为常用,我们可以对其进行进一步分析

system 系统模块目录├─alipay 支付宝服务窗模块├─bonus 优惠券模块├─common 公共函数模板├─index 登录页├─member 会员模块├─modules 可再扩展模块和模块管理├─public 公共模块├─shop 后台商城模块├─shopwap 前台商城模块├─user 系统用户└─weixin 微信模块

 对这些有过了解后,还需要看的就是一些后端支撑文件,例如这种xxxinc.php文件,他们常常存在一些漏洞,进而导致CMS出现漏洞

路由解析

对一个CMS进行漏洞探测前,我们需要首先需要对CMS的路由有所了解。 这里我们直接访问默认页面baijiacms-master/index.php,然后登录后台,这里说一下找路由还可以的方法,就是关注一些特别点,好找一些,比如这里的修改密码界面

我们点击它,发现此时的路由如下

/baijiacms-master/index.php?mod=site&act=manager&do=changepwd&beid=1

可以发现act其实是system文件夹下的文件夹名称,do是所选择具体文件的名称,对这些有个初步的了解,待会找到文件时能在网页中访问即可。

漏洞查找

任意目录删除

源码分析:

漏洞点位于:includes/baijiacms/common.inc.php

首先关注的是unlink函数,他会删除文件,只要$path不是目录就会进入改分支。
但如果你是目录呢,会对目录中非.、..、qrcode的文件内循环一次,就是会删除文件
循环了一次退出来还会判断改目录是否是/cache目录,不是的话直接删除目录。

综上,因为$path来自于参数,会发现有可能可以实现 “任意” 文件的删除,也包括删除目录

全局搜索,位于system/manager/class/web/database.php的一处调用了rmdirs函数,且发现$_GP['id']可控,也就是整个参数路径可控,但只有通过is_dir()才可以调用,因此可以实现任意目录的删除了。

此外这段代码可以猜出是数据文件的备份删除功能

可以发现这里对变量进行了base64_decode处理,这下我们想删除的目录的话,我们首先需要对他进行一个base64编码,同时我们可以看到这里指定了路径

$path = WEB_ROOT . '/config/data_backup/';

但这个我们其实是可以绕过的,后续只校验了是不是目录,而未限定目录,所以我们通过burpsuite抓包修改目录就可以实现任意目录删除。

$_GP是三个数组的整合,故$_GP['id']也能通过GET、POST请求得到

实操:

 进入备份与还原模块,点击备份商城数据

然后进入数据还原模块

点击删除 数据备份,使用burp抓包

发现url中的id参数为删除的数据库备份文件名称,既然这是文件,就试试能不能删除其他文件。

在WWW目录下创建一个123目录(目录,重要的事情说两遍),然后将../../../123路径base64加密为Li4vLi4vLi4vMTIz  ,然后使用burp发包删除。

远程文件上传

源码分析:

该漏洞由于调用file_put_contents函数但未对文件名或文件内容做任何过滤操作而造成的。位于includes/baijiacms/common.inc.php

后缀是通过pathinfo()得到的,然后直接将其拼接进$extpath中,然后拼接成一个文件名,文件后缀则取决于url的文件后缀
文件内容则是直接来自file_get_contents($url)

全局搜索,只有一个地方调用了fetch_net_file_upload函数。位于system/public/class/web/file.php


只需要令do=fetch即可,且url可通过GET传递,那么完全可以通过url指定获取远程文件的内容

实操:

命令执行

源码分析:

没有对相应的参数进行过滤而直接使用。位于includes/baijiacms/common.inc.phpfile_save()中,其中有个system函数,而$file_full_path来自于该调用该函数的参数,那么可以猜想使用命令分隔符即可执行到命令了。

全局搜索,发现system/weixin/class/web/setting.php调用了file_save(),这个$file['name']来自于一个上传文件的名称。可控

实操:

首先在附件中有个开启选项,选择此选项,否则在file_save()中会执行不下去

在微信号的设置中上传并提交,抓包并在文件名中命令注入

 

存储型XSS

使用安装时使用的管理员账号密码登录系统。

点击店铺管理 -->添加店铺

在店铺名称的位置输入测试XSS payload:<script>alert(11);</script>

点击提交

再次查看店铺管理,发现弹出xss

这篇关于百家cms代审的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/693730

相关文章

SEO之网站结构优化(十五-CMS系统)

初创企业搭建网站的朋友看1号文章;想学习云计算,怎么入门看2号文章谢谢支持: 1、我给不会敲代码又想搭建网站的人建议 2、“新手上云”能够为你开启探索云世界的第一步 博客:阿幸SEO~探索搜索排名之道 15、CMS系统 现在的网站绝大多数是通过CMS系统制作和管理的,SEO人员优化网站就会受限于CMS 系统本身的灵活性和功能。市面上有很多开源免费的CMS系统,如中文的dede(织梦)、

sickos 靶机渗透(wolf cms 渗透,squid 代理)

靶机信息 vulnhub靶机 主机发现 192.168.50.152 为靶机Ip ┌──(kali㉿kali)-[~/testSickos]└─$ sudo nmap -sn 192.168.50.0/24[sudo] password for kali: Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-30 09:56 C

垃圾收集器知识点总结-CMS

使用回收算法:标记清除 适用区域:老年代 回收过程: 1.初始化标记: 标记Root可达的对象。对于是否把年轻带作为root的这个问题,有不同答案,但是看到了代码里初始化标记的时候做了如下操作 初始化标记会执行到上述代码,然后第二个变量是true(可能对代码的理解有偏差) 2.并发标记: 标记新生代活的对象为Root;沿着Root标记存活的对象;在与程序运行期间,对象引用关系会变化,

【PyQt6 应用程序】CMS自动上稿12数据库综合版

在数字化时代,内容管理系统(CMS)的优化配置成为提高工作效率的关键步骤。CMS能够简化内容的创建、管理和发布过程,但对于初学者或是非技术人员来说,CMS的各项功能和操作可能显得复杂难懂。 使用本软件可以在配置好的数据中基于LM Studio进行批量文章撰写实现SEO。在原有单模板的基础之上增加了多站点管理,管理站点高达12个,实现了一套配置挂机无忧的工作环境。 单篇的操作效果可以参考文章:

垃圾回收器——CMS收集器

CMS[Concurrent Mark Sweep]收集器是一种以获取最短回收停顿时间为目标的收集器。  目前很大一部分的Java应用集中在互联网站或者B/S系统的服务端上,这类应用尤其重视服务的相应速度. 从名字就可以看出,CMS收集器是使用的标记清除算法,它的运作过程相当于前面几种收集器来说更为复杂,整个过程分为四个步骤: 初始标记,标记一下GC Roots能直接关联到的对象,速度很快

CMS收集器配置

HotSpot JVM的并发标记清理收集器(CMS收集器)的主要目标就是:低应用停顿时间。该目标对于大多数交互式应用很重要,比如web应用。在我们看一下有关JVM的参数之前,让我们简要回顾CMS收集器的操作和使用它时可能出现的主要挑战。 就像吞吐量收集器(参见本系列的第6部分),CMS收集器处理老年代的对象,然而其操作要复杂得多。吞吐量收集器总是暂停应用程序线程,并且可能是相当长的一段时间,

uni-CMS:全端开源内容管理系统的技术探索

摘要 本文介绍了uni-CMS,一个基于uniCloud开发的开源内容管理系统(CMS)。该系统旨在帮助开发者快速搭建并管理内容丰富的网站、小程序和移动应用。通过其全端渲染、内容安全检测、广告解锁付费内容以及AI生成文章等特性,uni-CMS不仅提高了开发效率,还促进了内容生产效率的提升和变现能力的增强。本文详细探讨了uni-CMS的技术架构、功能特性以及实施步骤,为开发者提供了一个全面的技术参

比较Freemaker和Nuxt.js作为CMS模板语言的特点

在开发内容管理系统(CMS)时,选择合适的模板语言至关重要。本文将讨论Freemarker和Nuxt.js这两种常用模板语言的特点,以帮助开发者选择最适合其项目需求的工具。 Freemarker的特点 Freemarker是一个基于Java的模板引擎,常用于Java Web应用开发中。以下是Freemarker的主要特点: 1. 易于集成 Freemarker作为Java生态系统的一部分,

易优cms远程调试

易优cms自ThinkPHP5.0版本开始,提供了Socket日志驱动用于本地和远程调试。 Socket调试 只需要在配置文件中设置如下: ‘log’ => [ ‘type’ => ‘socket’, ‘host’ => ‘slog.thinkphp.cn’, //日志强制记录到配置的client_id ‘force_client_ids’ => [], //限制允许读取日志的cl

前后端分离的后台管理系统源码,快速开发OA、CMS网站后台管理、毕业设计项目

那有没有一款软件解-决这种现状呢?答案是肯定的。引入我们的软件——eladmin。 介绍 ELADMIN,一个简单且易上手的 Spring boot 后台管理框架,已发布 Mybatis-Plus 版本,为开发者提供了一个全-面、高-效的解-决方案。 特点 高-效率:前后端完全分离,项目简单可配,内置代码生成器,一键生成前后端代码。 易用性:几乎可用于所有 Web 项目