project文件_移动和发出时通过UploadsReWriter读取的任意文件
摘要
这个UploadsRewriter
不验证文件名,允许在将问题转移到新项目时通过目录遍历复制任意文件。
用于查找引用的模式是:
MARKDOWN_PATTERN = %r{!?[.*?](/uploads/(?<secret>[0-9a-f]{32})/(?<file>.*?))}.freeze
这是由UploadsRewriter
在复制问题时,也要跨文件复制:
@text.gsub(@pattern) do |markdown|file = find_file(@source_project, $~[:secret], $~[:file])break markdown unless file.try(:exists?)klass = target_parent.is_a?(Namespace) ? NamespaceFileUploader : FileUploadermoved = klass.copy_to(file, target_parent)
...def find_file(project, secret, file)uploader = FileUploader.new(project, secret: secret)uploader.retrieve_from_store!(file)uploaderend
因为对什么没有任何限制file可以,路径遍历可用于复制任何文件。
演示
演示视频https://www.zhihu.com/video/1241105980542746624
复制步骤
- 创建两个项目
- 添加具有以下描述的问题:
![a](/uploads/11111111111111111111111111111111/../../../../../../../../../../../../../../etc/passwd)
- 将问题转移到第二个项目
- 该文件将被复制到项目中。
危害性
允许攻击者读取服务器上的任意文件,包括令牌、私有数据、信任等等。
漏洞原理
在项目之间复制问题时,不检查文件名和路径。
修复方案
在复制文件之前,应该验证文件或路径。
检查输出
GitLab环境信息结果
System information
System: Ubuntu 18.04
Proxy: no
Current User: git
Using RVM: no
Ruby Version: 2.6.5p114
Gem Version: 2.7.10
Bundler Version:1.17.3
Rake Version: 12.3.3
Redis Version: 5.0.7
Git Version: 2.24.1
Sidekiq Version:5.2.7
Go Version: unknownGitLab information
Version: 12.8.7-ee
Revision: 2643fd87200
Directory: /opt/gitlab/embedded/service/gitlab-rails
DB Adapter: PostgreSQL
DB Version: 10.12
URL: http://gitlab-vm.local
HTTP Clone URL: http://gitlab-vm.local/some-group/some-project.git
SSH Clone URL: git@gitlab-vm.local:some-group/some-project.git
Elasticsearch: no
Geo: no
Using LDAP: no
Using Omniauth: yes
Omniauth Providers:GitLab Shell
Version: 11.0.0
Repository storage paths:
- default: /var/opt/gitlab/git-data/repositories
GitLab Shell path: /opt/gitlab/embedded/service/gitlab-shell
Git: /opt/gitlab/embedded/bin/git
project文件_移动和发出时通过UploadsReWriter读取的任意文件相关推荐
- python文件审计_Python代码审计实战案例总结之CRLF和任意文件读取
文章目录 介绍 CRLF和任意文件读取的审计实战 CRLF 审计实战 urllib CRLF漏洞(CVE-2019-9740和CVE-2019-9947) httplib CRLF 漏洞 任意文件读取 ...
- access vba打开excel文件_除了VBA,还有哪些编程语言可以操作Excel文件?
Excel(Microsoft office)是现在最常用的办公软件,主要涉及电子表格制作.数据处理.报表输出展示以及更高端的还有金融建模等:我们知道,在需要批处理多个Excel工作表以及工作簿的时候 ...
- nginx不同server不同日志文件_招标里的答疑是什么?和澄清文件有何不同?
招标过程中,由于招投标文件的失误,经常会需要澄清文件,那么招标里的答疑又是什么?和澄清文件是否一样?今天保标招标小编就来重点研究一下这个问题. 招标里的答疑是什么? 答疑应该是指是投标人购买招标文件后 ...
- python打开文件_用Python(in PsychoPy)打开SPSS数据文件
用Python(in PsychoPy)打开SPSS数据文件 有时,要访问SPSS的sav文件中的内容,而手里电脑没有SPSS软件,或者需要对SPSS数据文件中的数据进行SPSS支持不够好的操作,如对 ...
- 保存多序列tiff文件_干货技巧!如何使你保存的Phtoshop文件容量更小?
设计师使用Photoshop储存文件时,保存的文件时可能会占用过多的磁盘空间,并且发送或者下载PSD文件的时候也会花费太多的时间,那么我们有些什么方法技巧可以缩小,或者优化我们的PSD文件呢?我们以一 ...
- 转储sql文件_在Linux上SQL Server中更改SQL转储文件位置
转储sql文件 In this article, we will talk about SQL Dump files and the process to change the dump direct ...
- 局域网传文件_手机和电脑之间互传比较大的文件,哪种方式比较好?
在我们的生活中,大家经常会遇到手机电脑没法方便地互传文件的问题.如果你是用iPhone和MacOS,那么使用AirDrop功能还好方便些,但大多数读者可能都是使用Windows为主. 那么今天小趣带大 ...
- matlab读int16读文件_[转载]Matlab中的textread textscan读取文本文件
1.MATLAB从文本文件中读取格式化的数据函数是textread. 调用方式 [A,B,C,...] = textread('filename','format') [A,B,C,...] = te ...
- windows文件读取 xxe_XXE任意文件读取(当xml解析内容有输出时)
利用XXE漏洞读取文件 参考:https://www.jianshu.com/p/4fc721398e97 首先找到登录源码如下: 由题目可以利用XXE漏洞读取文件 先登录用Burp Suite抓包: ...
最新文章
- 【yolov4目标检测】(4) opencv+yolov4-tiny 实现选择性目标检测,附python完整代码
- ubuntu体验python_在Ubuntu下配置舒服的Python开发环境
- 关于E1的一些扫盲资料
- 基于BP神经网络+HOG特征提取的视频中车辆车牌识别算法仿真
- 【Android】SlidingMenu属性详解(转)
- ASP.NET事件顺序
- 二路单调自增子序列模型【acdream 1216】
- rtp发送h264和h265
- 装饰器,语法糖.有参装饰器 ,无参装饰器
- SQL 中OPENQUERY的使用
- CentOS-6.5-x86_64 最小化安装,已安装包的总数,这些包?
- python经典实例pdf-Python机器学习经典实例_PDF电子书
- 用python 开发合同管理系统_python3.6+django2.0 一小时学会开发一套学员管理系统demo...
- linux shell用变量的值作为新变量名
- linux下的man和info命令
- ITIL4-foundation学习和考试心得
- window安装ipython_windows ipython安装
- USB转I2C芯片操作EEPROM--CH347应用
- .Net再次使用FlashPaper
- 2022最新WiFi大师小程序3.0.9源码+独立版后台