系统重装漏洞

news2024/11/15 16:02:20

zzcms系统重装漏洞

一、配置zzcms环境

1. 使用小皮搭建zzcms框架

在这里插入图片描述

2. 安装zzcms

按照下面的操作进行,傻瓜式操作即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 打开网站

在这里插入图片描述

二、漏洞利用

在访问install目录的默认文件后,会出现zzcms安装向导
http://www.zzcms.com/install/index.php

但是会显示 “安装向导已运行安装过,如需重安装,请删除 /install/install.lock 文件” 这句话
在这里插入图片描述

使用burp抓包,将get方法转换为post方法
在这里插入图片描述

然后post传入step参数,step=2

在这里插入图片描述

放包之后就可以进行zzcms的重装了

在这里插入图片描述

三、漏洞原理

要理解原理,得需要审计代码,我这里顺着思路介绍一遍

首先,当访问install目录下的index.php的时候
其中有段代码包含这个switch,switch是用来做选择的,我们可以看到关键就在于step变量
在这里插入图片描述
那么上面的step变量从哪里来呢?其实就在index.php文件上方的代码中
有一个三元运算符

$step = isset($_POST['step']) ? $_POST['step'] : 1;

这段代码的意思就是如果post参数中存在step,那么step变量的值就等于post参数中step的值,如果post参数中不存在step,那么step变量的值就等于1
在这里插入图片描述
所以当我们访问/install/index.php的时候,使用的是get方式,所以post参数,更不用说post参数中存在step,那么step变量的值就为1

当switch选择的时候,选择case ‘1’

case '1'://协议
	include 'step_'.$step.'.php';
break;

而case ‘1’ 里面的代码为,include 文件包含,包含的是自动带入step变量的step_1.php文件

打开step_1.php文件之后,发现确实就是安装向导出现的那句话
在这里插入图片描述
我单独提取部分出来讲解,开头这部分代码意思是,如果存在install.lock文件,就会输入"安装向导已运行安装过,如需重安装,请删除 /install/install.lock 文件" 这句话,否则就执行else里面的代码

我们可以看到左边确实是存在install.lock文件的,所以说网页确实是这样运行的

if(file_exists("install.lock")){
echo "<div style='padding:30px;'>安装向导已运行安装过,如需重安装,请删除 /install/install.lock 文件</div>";
}else{
......
}
?>

再然后我漏洞利用的时候就简单了,抓包转换为post方式提交,然后自带step参数
那么它再次经过三元运算符的代码的时候,step变量的值变成了2,而不是1

$step = isset($_POST['step']) ? $_POST['step'] : 1;

switch选择的时候,选择运行case ‘2’ 里面的代码
case '2’里面的代码同样存在文件包含
这时候文件包含就包含得到是step_2.php
在这里插入图片描述
打开step_2.php文件,并且和post方式传参数step=2提交之后的网页页面进行比较,发现页面的源代码确实是这个文件里面的内容

通过这种方式,重装了zzcms的数据库
在这里插入图片描述

四、系统重装漏洞+其它漏洞 获取webshell

这里我参考的是别人写的文章,fengcms系统重装漏洞,可以去看看

https://blog.csdn.net/weixin_40412037/article/details/107844062?spm=1001.2014.3001.5506

这里简单的说一下,前面的系统重装漏洞没什么好说的,跟zzcms差不多,主要是后面如何获取webshell,fengcms的源代码中存在如下图的一个写入配置文件的代码,也就是fopen那里,字母w意思就是以写入的方式打开文件,然后这里没过滤写入的参数,就会产生任意代码写入配置文件的漏洞
在这里插入图片描述
打开配置文件,里面内容是这样的,这个文章的博主测试成功的是这个写入扩展名这里,也是数据库表前缀那栏
在这里插入图片描述

数据库表前缀写入f_');assert($_POST['c']);//

') 为了和数据库语句中的前面的('闭合
然后插入assert($_POST['c']); 
后面的注释会注释掉本行多余的代码

在这里插入图片描述
提交之后,直接写入了配置文件,源代码变成我们修改的存在一句话木马的文件
在这里插入图片描述
因为index.php,或者其它的文件,里面都会使用include等包含这个config.php这个配置文件,所以我们直接传入参数c就能利用一句话木马了

整体来看不难,但是如果没有源代码的话,是真的不知道这里可以写入文件
所以系统重装漏洞无法直接获取webshell,得配合其它的漏洞
在这里插入图片描述

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

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

相关文章

MQTT协议-发布消息(客户端向服务器发送)

MQTT协议-发布消息&#xff08;客户端向服务器发送&#xff09; 发布消息报文组成&#xff1a;https://blog.csdn.net/weixin_46251230/article/details/129414158 在分析完服务器下发到客户端的报文后&#xff0c;就可以参考JSON格式的有效载荷&#xff0c;将温湿度的值改为…

Linux发行版的backport

遇到一个问题,简要记录如下: base on ubuntu18.06 4.15内核,这版内核不支持一款intel的集成网卡,追踪内核代码的提交历史才发现,这款网卡是从linux-4.20才开始支持的,系统自带的这个Kernel版本不支持。 如果不允许升级内核,面对这种问题,社区的做法是把新内核的特性cher…

顺序表【数据结构】

文章目录:star2:1. 顺序表概念:star2:2. 框架3. 基本功能3.1 头文件:star:3.2 初始化:star:3.3 扩容:star:3.4 打印:star:3.5 尾插:star:3.6 头插:star:3.7 尾删:star:3.8 头删:star:3.9 指定插入:star:3.10 指定删除:star:3.11 查找:star2:3.12 注意事项4. 顺序表的缺点&#…

云原生安全2.X 进化论系列|云原生安全2.X未来展望(4)

随着云计算技术的蓬勃发展&#xff0c;传统上云实践中的应用升级缓慢、架构臃肿、无法快速迭代等“痛点”日益明显。能够有效解决这些“痛点”的云原生技术正蓬勃发展&#xff0c;成为赋能业务创新的重要推动力&#xff0c;并已经应用到企业核心业务。然而&#xff0c;云原生技…

Git学习笔记(六)-标签管理

发布一个版本时&#xff0c;我们通常先在版本库中打一个标签&#xff08;tag&#xff09;&#xff0c;这样&#xff0c;就唯一确定了打标签时刻的版本。将来无论什么时候&#xff0c;取某个标签的版本&#xff0c;就是把那个打标签的时刻的历史版本取出来。所以&#xff0c;标签…

销售使用CRM系统集成Excel的五个技巧

销售过程中有很多情况会降低团队的效率。通过正确的实施CRM客户管理系统&#xff0c;可以帮助您的企业自动执行手动任务、减少错误并专注于完成交易。这里有5个技巧&#xff0c;可以帮助您的销售人员通过CRM集成Excel为销售流程赋能并提高他们的整体效率。 技巧1&#xff1a;将…

Python每日一练(20230309)

目录 1. 删除有序数组中的重复项 ★ 2. 二叉树的最小深度 ★★ 3. 只出现一次的数字 II ★★ &#x1f31f; 每日一练刷题专栏 C/C 每日一练 ​专栏 Python 每日一练 专栏 1. 删除有序数组中的重复项 给你一个有序数组 nums &#xff0c;请你原地删除重复出现的元素…

Xuetr杀毒工具使用实验(28)

实验目的 &#xff08;1&#xff09;学习Xuetr的基本功能&#xff1b; &#xff08;2&#xff09;掌握Xuetr的基本使用方法。预备知识 windows操作系统的基本知识如&#xff1a;进程、网络、服务和文件等的了解。 XueTr是近年推出的一款广受好评的ARK工具。ARK工具全称为Anti R…

Ubuntu20.04中Docker安装与配置

一、安装 1、卸载可能存在的旧版本 sudo apt-get remove docker docker-engine docker-ce docker.io2、更新apt包索引 sudo apt-get update显示“正在读取软件包列表… 完成” 3、安装以下包以使apt可以通过HTTPS使用存储库(repository) sudo apt-get install -y apt-tran…

java多线程(二三)并发编程:Callable、Future和FutureTask

一、Callable 与 Runnable 先说一下java.lang.Runnable吧&#xff0c;它是一个接口&#xff0c;在它里面只声明了一个run()方法&#xff1a; public interface Runnable {public abstract void run(); }由于run()方法返回值为void类型&#xff0c;所以在执行完任务之后无法返…

关于React Hook(18)

useState&#xff08;&#xff09;&#xff1a;&#x1f449;详情 &#xff08;必须“有条件地调用”&#xff1b;注意避免冗余状态的产生&#xff09; 关于useState的两种使用方式的区别&#xff1a;&#x1f449;详情 关于batch机制&#xff1a;有条件地调用一些状态的set方…

L3-021 神坛

在古老的迈瑞城&#xff0c;巍然屹立着 n 块神石。长老们商议&#xff0c;选取 3 块神石围成一个神坛。因为神坛的能量强度与它的面积成反比&#xff0c;因此神坛的面积越小越好。特殊地&#xff0c;如果有两块神石坐标相同&#xff0c;或者三块神石共线&#xff0c;神坛的面积…

STM32F103R8T6 SPWM实现正弦波输出

前言 PWM合成正弦波&#xff0c;原理什么的不详细说了&#xff0c;概括一下就是 PWM有效面积的积分 正弦波的有效面积。PWM的频率越快&#xff0c;细分的越多&#xff0c;锯齿也就越不明显。 做法是&#xff1a;首先利用正弦波取点软件&#xff0c;取点1000个&#xff0c;生…

计算机网络:OSPF协议和链路状态算法

OSPF协议 开放最短路经优先OSPF协议是基于最短路径算法SPF,其主要特征就是使用分布式的链路状态协议OSPF协议的特点&#xff1a; 1.使用泛洪法向自治系统中的所有路由器发送信息&#xff0c;即路由器通过输出端口向所有相邻的路由器发送信息&#xff0c;而每一个相邻的路由器又…

阶段二12_面向对象高级_继承3

知识点内容&#xff1a; 抽象类 模板设计模式 final关键字 一.抽象类 (1)抽象类概述 抽象方法&#xff1a;将共性的行为&#xff08;方法&#xff09;抽取到父类之后&#xff0c;发现该方法的实现逻辑 无法在父类中给出具体明确&#xff0c;该方法就可以定义为抽象方法。 抽…

ASP.NET CORE API 使用Orleans

快速使用Monimal API 快速集成Orleans 微软官网地址如下&#xff1a;https://learn.microsoft.com/zh-cn/dotnet/orleans/quickstarts/build-your-first-orleans-app?sourcerecommendations&tabsvisual-studio当然它的存储grain存储采用的是内存级别存储&#xff0c;我缓存…

JVM调优面试题——参数命令专题

文章目录1、JVM参数有哪些&#xff1f;1.1、 标准参数1.2、-X参数1.3、 -XX参数1.4、 其他参数1.5、 查看参数1.6、 设置参数的常见方式1.7、 常用参数含义2、JVM常用命令有哪些&#xff1f;2.1、jps2.2、jinfo2.3、jstat2.4、jstack2.5、jmap3、你会估算GC频率吗?4、 内存溢出…

【unity3D】创建TextMeshPro(TMP)中文字体(解决输入中文乱码问题)

&#x1f497; 未来的游戏开发程序媛&#xff0c;现在的努力学习菜鸡 &#x1f4a6;本专栏是我关于游戏开发的学习笔记 &#x1f236;本篇是unity的TMP中文输入显示乱码的解决方式 创建 TextMeshPro 中文字体遇到的问题描述解决方式Font Asset Creator 面板扩展中文字体文本遇到…

深度学习零基础学习之路——第五章 个人数据集的制作

Python深度学习入门 第一章 Python深度学习入门之环境软件配置 第二章 Python深度学习入门之数据处理Dataset的使用 第三章 数据可视化TensorBoard和TochVision的使用 第四章 UNet-Family中Unet、Unet和Unet3的简介 第五章 个人数据集的制作 深度学习数据集的制作Python深度学…

MySQL 行锁

行锁 : 对表中行记录的锁 MySQL 的行锁 : 由各个引擎自己实现MyISAM 不支持行锁InnoDB 支持行锁 两阶段锁协议 : 行锁是在需要时才加上&#xff0c;要等到事务结束才释放 例子 : id 是表 t 的主键的 B 的 update 会阻塞&#xff0c;直到 A 执行 commit 后&#xff0c;B 才能…