Gin-Vue-Admin 跨站点脚本漏洞分析

CVE-2022-32177 Gin-Vue-Admin 跨站点脚本漏洞

项目介绍

Gin-Vue-Admin是一个使用gin+vue进行极速开发的全栈开发基础平台,集成jwt鉴权,权限管理,动态路由,显隐可控组件,分页封装,多点登录拦截,资源权限,上传下载,代码生成器,表单生成器,chatGPT自动查表等开发必备功能。

项目地址

https://github.com/flipped-aurora/gin-vue-admin
https://www.gin-vue-admin.com/

漏洞概述

gin-vue-admin后台文件上传的fileUploadAndDownload/upload方法存在跨站点脚本漏洞,该漏洞源于文件上传时前台common.vue中的checkFile 函数仅判断了file.type的值是否为image/jpeg或 image/png,并未对文件后缀进行安全效验,当管理员用户查看上传的文件时,低权限攻击者将可以访问管理员的 cookie,从而导致管理员帐户被接管。

影响版本

有待进一步核实

CVE和 whitesource 提供:v2.5.1 至 v2.5.3beta(仅供参考)

环境搭建

本次漏洞分析采用windwos环境,如果想使用linux环境复现的读者请参考官网文档:https://www.gin-vue-admin.com/guide/deployment/docker_develop.html

①:下载受影响版本(v2.5.1)的项目代码到本地
在这里插入图片描述

②:前端环境搭建

# 进入web文件夹
cd web

# 安装依赖
npm install

# 启动web项目
npm run serve

③:后端环境搭建

# 进入server文件夹
cd server

# 使用 go mod 并安装go依赖包
go mod tidy

# 运行
go run main.go

④:访问web页面进行数据库初始化

http://localhost:8080/#/login

在这里插入图片描述

漏洞分析

①:定位受影响的文件和函数信息

首先来看CVE漏洞库中的描述信息:

在这里插入图片描述

两个有价值的参考链接

链接1:https://github.com/flipped-aurora/gin-vue-admin/blob/v2.5.3beta/web/src/components/upload/common.vue#L29-L37

common.vue文件中的checkFile 函数仅判断了file.type的值是否为image/jpeg或 image/png,并未对文件后缀进行安全效验。

在这里插入图片描述

链接2:https://www.mend.io/vulnerability-database/CVE-2022-32177

mend漏洞库提供了完整的漏洞详情。

在这里插入图片描述

②:浏览器登录系统,找到相对应的接口并获取数据包

在这里插入图片描述

web页面如下:

在这里插入图片描述

数据包如下:

在这里插入图片描述

漏洞复现

直接按照whitesource提供的步骤进行。

①:从 Web 浏览器访问应用程序并以管理员用户身份登录。

②:打开私人窗口并以普通(低权限)用户身份登录。(注意,③至均为普通低权限用户操作)

③:转到个人信息,单击个人资料图片,然后单击“正常上传”按钮。

④:使用 PoC 代码部分中的代码创建一个 takeover.png 文件。

在这里插入图片描述

⑤:使用 python 创建 HTTP 服务器 (python3 -m http.server 3333)

在这里插入图片描述

⑥:选择takeover .png 进行头像上传并拦截请求。

在这里插入图片描述

⑦:将takeover.png 的名称更改为takeover.html 并转发请求。

在这里插入图片描述

⑧:从管理员帐户转到媒体库(上传和下载)并打开 takeover.html(“在新选项卡中打开图像”)。

在这里插入图片描述

在这里插入图片描述

这将触发 takeover.html 中的 XSS 负载,并将管理 cookie 发送到攻击者的服务器,从而导致管理员帐户被接管。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值