文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

系统重装漏洞

2023-09-05 07:50

关注

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 "
安装向导已运行安装过,如需重安装,请删除 /install/install.lock 文件
";}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,得配合其它的漏洞
在这里插入图片描述

来源地址:https://blog.csdn.net/qq_45301512/article/details/129424639

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯