一、漏洞概述 *
1.1 漏洞简介
·漏洞名称:CuppaCMS 本地文件包含
·漏洞编号:CVE-2022-34121
·漏洞类型:本地文件包含漏洞
·漏洞威胁等级:高危
·影响范围:Cuppa CMS V 1.0
·利用条件:Cuppa cms版本为V 1.0
1.2 组件描述
Cuppa CMS创建并个性化所有内容的管理。主要功能是简单快捷的形式,开发人员可以创建一个复杂、完整的系统来快速管理所有内容,而无需编写代码。
1.3 漏洞描述
CuppaCMS v1.0版本存在安全漏洞,该漏洞/templates/default/html/windows/right.php 页面存在本地文件包含问题。
二、漏洞复现
2.1 应用协议
http
2.2 环境搭建
1.下载该漏洞环境源码,地址为https://github.com/CuppaCMS/CuppaCMS
2.按照提示提示安装数据库,网站首页如下
2.3 漏洞复现 *
1.找到存在漏洞的uri:/templates/default/html/windows/right.php
2.该路径下的right.php文件存在参数$_POST['url'],利用post提交,在参数url后可以访问任意文件,在网站根目录下创建文件1.php
3.网页访问无回显,用burp抓包,实现文件包含漏洞任意访问网站文件
三、漏洞分析
3.1 技术背景
\
3.2 代码分析
<?php
@session_start();
include_once(realpath(__DIR__ . '/../../../..')."/classes/Cuppa.php");
$cuppa = Cuppa::getInstance();
if(!@$path) $path = $cuppa->utils->getUrlVars(@$_POST["path"]);
$language = $cuppa->language->load();
?>
<?php
include realpath(__DIR__ . '/../../../..')."/".$_POST["url"];
?>
通过/templates/default/html/windows/right.php 文件发现,此处的$POST['url']并未起到任何过滤作用,直接通过url=文件包含功能访问任意文件。
3.3 流量分析 *
3.4 绕过方式
\
四、漏洞检测
4.1 组件版本自检
以下版本受该漏洞影响:Cuppa cms=V 1.0
目前最高版本:v 1.0
4.2 研判建议 *
观察响应包中内容,若请求头出现出现“templates/default/html/windows/right.php”,且用$POST[‘url’],包含敏感文件“etc/passwd”或出现“../”,则收到该漏洞攻击。若响应体出现文件内容,则攻击成功,若出现“failed to open stream: No such file or directory in :...(PATH)”,则攻击失败。
五、防范建议
5.1 官方修复建议
\
5.2 临时修复建议
在“/templates/default/html/windows/right.php”脚本中,添加以下内容:
$url = $_POST[“网址”];
if(strstr($url, “../") ||strstr($url, “..\\“)){
echo ”Security attack!“;
退出;
}
include realpath(DIR .'/../../../..')."/“.$url;
参考链接
- 源码下载url:https://github.com/CuppaCMS/CuppaCMS.git