当前位置: 首页 > news >正文

GitLab项目导入远程代码执行漏洞分析(CVE-2022-2185)

Gitlab Project Import RCE Analysis (CVE-2022-2185)

ENVIRONMENT SETUP & DEBUGGING

本部分详细介绍了如何搭建GitLab调试环境:

  1. 使用Ubuntu 18.04虚拟机
  2. 安装GitLab开发工具包(GDK)
  3. 检出漏洞版本(v15.1.0-ee)
  4. 配置关键文件(gitlab.yml, puma.rb)
  5. 使用RubyMine IDE配置调试环境
  6. 启动相关服务(webpack, sidekiq等)

CVE-2022-2185 ANALYSIS

漏洞存在于GitLab的项目导入功能中,CVSS评分高达9.9分。分析过程分为两个主要案例:

相关背景

  • 修复版本:15.1.1, 14.10.5
  • 关键提交:5d58c705
  • 漏洞点:DecompressedArchiveSizeValidator类中的命令拼接

GitLab中的工作线程机制

GitLab使用Sidekiq作为工作队列处理繁重任务,Web控制器将作业推送到工作队列。

案例1:文件导入路径分析

  1. 通过Import::GitlabProjectsController创建导入任务
  2. 经过多层服务调用(Projects::CreateService)
  3. 最终到达DecompressedArchiveSizeValidator执行命令
  4. @archive_path参数不可控

案例2:批量导入功能分析

  1. 通过隐藏的批量导入功能触发
  2. 使用BulkImportsController处理请求
  3. 通过ProjectPipeline管道处理数据
  4. 利用GraphQL提取器和转换器控制数据
  5. 最终通过模板导入路径触发漏洞

案例1+2组合利用

  1. 利用批量导入功能控制项目参数
  2. 通过模板导入路径绕过限制
  3. 最终实现命令注入
  4. 注入命令需要等待255秒才会执行

概念说明

批量导入中的管道机制

  • 管道包含extract/transform/load/after_run方法
  • 执行顺序:提取数据→转换数据→加载数据→后续处理
  • 通过stage.rb文件定义执行顺序

漏洞验证视频

文章最后提供了漏洞验证视频演示。


更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

http://www.sczhlp.com/news/5228/

相关文章:

  • 自用思源笔记CSS配色记录
  • 定期删除全量和增量备份
  • JUC学习-23-线程池拒绝策略
  • RS485硬件电路设计参考:工业数据交互的基石
  • Kubernetes v1.33:HPA 可配置容差
  • Java学习:Java与C++数组初始化全对比
  • Revit高版本载入低版本族库,软件卡死 - Andy
  • ​​Linux CentOS 命名空间(Namespace)​​ 的应用场景及命令详解
  • 洛谷P1364 医院设置(dfs\树形dp\树重心)
  • Modbus转Profinet协议网关与微型空气质量监测系统
  • VLAN 0 1 4095
  • [CTF Reverse] 初见SMC
  • 深入指南:在SCSS中高效使用@font-face引入自定义字体
  • 题解:qoj9564 Hey, Have You Seen My Kangaroo?
  • BT137-800-ASEMI工业自动化BT137-800
  • 8.4
  • Java数组
  • appium安装文档
  • 正之和软件
  • Linux CentOS 系统中 X11(X Window System)​​ 的详细解析
  • 使用OpenAI文本转语音(Text to Speech)详解
  • 深入解析:jmeter--While控制器--循环直到接口响应符合条件
  • Git基本使用
  • 又是周一,又要上班
  • 杂交瘤细胞构建|单克隆抗体筛选|高效抗体制备
  • 生成式AI实现多模态信息检索新突破
  • 【自学嵌入式:51单片机】LCD1602
  • Java编程练习:洗牌
  • 猿大师中间件:Chrome网页内嵌Windows PC版微信桌面EXE应用程序
  • 实用指南:Cost-Effective and Scalable: A Smarter Choice for RISC-V Development