Git泄露和hg泄露原理理解和题目实操

一.Git泄露

1.简介

       Git是一个开源的分布式版本控制系统,它可以实现有效控制应用版本,但是在一旦在代码发布的时候,存在不规范的操作及配置,就很可能将源代码泄露出去。那么,一旦攻击者发现这个问题之后,就可能利用其获取网站的源码、数据库等重要资源信息,进而造成严重的危害。

2.危害

       在配置不当的情况下,可能会将“.git”文件直接部署到线上环境,这就造成了git泄露问题。攻击者利用该漏洞下载.git文件夹中的所有内容。如果文件夹中存在敏感信息(数据库账号密码、源码等),通过白盒的审计等方式就可能直接获得控制服务器的权限和机会!

3.原理以及它的造成原因

     Git泄露的原理主要有以下几个方面:

配置错误:在使用Git时,如果配置不当,比如将敏感信息直接写入配置文件或者未正确设置访问权限,就会导致这些敏感信息被提交到代码仓库中。

操作失误:在进行Git操作时,比如误将敏感文件添加到暂存区或者提交到代码仓库中,或者误将敏感信息包含在提交的日志中,都可能导致敏感信息泄露。

公开仓库:如果将代码仓库设置为公开可访问的状态,任何人都可以查看和下载其中的内容,包括敏感信息。

其他公开可访问的地方:除了代码仓库,还有一些其他公开可访问的地方,比如代码托管平台的问题追踪系统、Wiki页面、邮件列表等,如果在这些地方发布了敏感信息,也可能导致泄露。
 

4.git库的结构图

git中文件的状态
git仓库中的文件存在三种状态:①Untracked files:文件未被跟踪                                                                                                       ②Changes to be commited:文件已暂存,指向下一次提交的内容                                                ③Changes not staged for commit:已跟踪文件的内容发生了变化,但是还没有放到暂存区

Git的四种对象
     commit:指向一个tree,它用来标记项目某个特定时间点的状态

    一般包含以下信息:①代表commit的哈希值                                                                                                                      ②指向tree对象的哈希值                                                                                                                    ③作者    ④提交者   ⑤注释

    tree:可以简单的理解成这是一个对象关系树,用来管理一些tree和blob

一般包含以下信息:

①代表blob的哈希值             ②指向tree对象的哈希值

blob:这种对象用来保存文件内容                                                                                                      tag:给某个提交增添的标记

(画一个比较简陋的对应图,稍微形象一点,哈哈哈,虽然很丑,但自我感觉这个图还是挺直观的)

5.git常用命令

6.例题实操

这里我以ctfhub上的git泄露为例

1.log(1)进入环境,看了看页面以及源码,啥有用的信息也没有

(2)这里一来我是先用dirsearch扫描之后发现扫出几个git后缀的文件,所以这里还是直接用GitHack扫扫看

注:GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,还原重建工程源代码

(3)使用git log查看历史记录

(4)可以看见文件有过三次操作,flag处于add flag版本中
查阅其他博主wp得知在这里flag有两种解法:
   1.文件比对
   2.退回版本

这里我直接用git diff对比文件

注:①:git diff:当工作区有改动,临时区为空,diff的对比是“工作区与最后一次commit提交的仓库的共同文件”;当工作区有改动,临时区不为空,diff对比的是“工作区与暂存区的共同文件”。
     ②:git diff <分支名1> <分支名2> :比较两个分支上最后 commit 的内容的差别

即可得到flag

2.Stash

注:

stash是git的一个操作命令
git stash list 查看隐藏的记录
git stash pop 恢复隐藏的内容,同时删除隐藏记录
git stash apply 恢复隐藏的内容,但不会删除隐藏记录
使用stash pop/apply可以选择恢复哪条记录,如恢复stash@{1}记录,则使用git stash pop stash@{1}或者git stash apply stash@{1}

(1)打开环境后还是跟前面一样,啥也没有

(2)这里跟前面一样,还是用GitHack扫描网页

扫描到文件后,直接进入

(3)然后使用stash命令寻找stash:git stash list

(4)发现有stash,再使用命令:git stash pop

(5)发现该文件夹多了一个txt文件,flag应该就在这里了,直接cat一下,果然

3.index

  • Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区

(1)进入环境

(2)这题,和上面一题常规流程,打开GitHack,扫描该网址,就出现一个txt文件

(3)打开后flag就在里面

二.hg泄露

1.简介

Mercurial(hg)是一种分布式版本控制系统,它与Git类似也可以用于管理代码的版本控制,如果Mercurial服务器的安全措施不当或用户不小心,可能会导致Mercurial源码的信息泄露的问题,而Mercurial源码信息泄露的原理是因为Mercurial服务器上的源代码未被正确保护,导致未经授权的用户可以轻易地访问和下载代码,

这可能会导致以下问题

    (1)暴露源代码:未经授权的用户可以轻易地访问和下载源代码,包括敏感信息,例如密码、API密钥和凭据等

    (2)增加恶意攻击的风险:未经授权的用户可以轻易地访问和下载源代码,黑客可以使用这些代码来发起攻击,例如通过发现代码漏洞来入侵服务器或者应用程序

2.Mercurial通过hg命令加上关键字来进行操作,可以远程同步、上传代码。

拷贝(同步)源码并提交修改:

$ hg clone repository (这里repository是源码的地址)

$ cd hello

$ (edit files)

$ hg add (new files)

$ hg commit -m 'My changes'

$ hg push

创建新的hg项目,并提交:

$ hg init (project-directory)

$ cd (project-directory)

$ (add some files)

$ hg add

$ hg commit -m 'Initial commit'

3.题目实操

ctfhub  hg泄露

(1)打开环境后如下(2)这里需要运用到dvcs-ripper这个工具,这里我是在kali系统里安装这个工具然后进行题解

(3)然后输入命令扫描该网页

(4)使用tree命令列出刚刚下载的.hg网站目录,发现可疑的文本文件

(5)查看可疑的文本文件是否存在此题flag,发现历史版本add flag

(6)发现历史版本可以使用正则表达式进行关键字查找,即可找到flag

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

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

相关文章

论文速览 | IEEE Symposium on Security and Privacy (SP), 2023 | FMCW雷达反射阵列欺骗攻击

注1:本文系"计算成像最新论文速览"系列之一,致力于简洁清晰地介绍、解读非视距成像领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; CVPR, ICCV, ECCV, SIGGRAPH, TPAMI; Light‑Science & Applications, Optica 等)。 本次介绍的论文是:<I…

MariaDB 修改用户密码的 SQL

有时候我们希望能够修改数据库中访问用户的密码。 但是我们只能 SQL 登录服务器后才能进行修改。 修改的 SQL 为&#xff1a; ALTER USER root% IDENTIFIED WITH mysql_native_password BY 123;针对实际上数据的配置情况&#xff0c;上面的 SQL 是需要进行一些调整的。 MySQ…

鸿蒙云函数调试坑点

如果你要本地调试请使用 const {payload, action} event.body/** 本地调试不需要序列化远程需要序列化 */ // const {payload, action} JSON.parse(event.body) const {payload, action} event.body 注意: 只要修改云函数&#xff0c;必须上传云函数 如果使用 const {pay…

25计算机考研院校数据分析 | 南京大学

南京大学&#xff08;Nanjing University&#xff09;&#xff0c;简称“南大”&#xff0c;是中华人民共和国教育部直属、中央直管副部级建制的全国重点大学&#xff0c;国家首批“双一流”、“211工程”、“985工程”重点建设高校&#xff0c;入选首批“珠峰计划”、“111计划…

WordPress AI Engine 插件 文件上传致RCE漏洞复现(CVE-2023-51409)

0x01 产品简介 AI Engine插件是WordPress中的AI一体化解决方案,包括创建聊天机器人、生成内容和图像、推荐标题和帖子摘录、支持多种人工智能引擎等功能,可以节省用户时间。 0x02 漏洞概述 WordPress AI Engine 插件upload接口存在文件上传漏洞,未经身份验证的远程攻击者…

(四)Servlet教程——Maven的安装与配置

1.在C盘根目录下新建一个Java文件夹,该文件夹用来放置以下步骤下载的Maven&#xff1b; 2. 下载Maven的来源有清华大学开源软件镜像站和Apache Maven的官网&#xff0c;由于清华大学开源软件镜像站上只能下载3.8.8版本以上的Maven&#xff0c;我们选择在Apache Maven的官网上下…

codeforce#933 题解

E. Rudolf and k Bridges 题意不讲了&#xff0c;不如去题干看图。 传统dp&#xff0c;每个点有两个选择&#xff0c;那么建桥要么不建。需要注意的是在状态转移的时候&#xff0c;桥是有长度的&#xff0c;如果不建需要前d格中建桥花费最少的位置作为状态转移的初态。 #incl…

深度学习论文: MobileNetV4 - Universal Models for the Mobile Ecosystem及其PyTorch实现

深度学习论文: MobileNetV4 - Universal Models for the Mobile Ecosystem及其PyTorch实现 MobileNetV4 - Universal Models for the Mobile Ecosystem PDF: https://arxiv.org/pdf/2404.10518.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: ht…

swagger xss漏洞复现

swagger xss漏洞复现 文章目录 swagger xss漏洞复现漏洞介绍影响版本实现原理漏洞复现修复建议: 漏洞介绍 Swagger UI 有一个有趣的功能&#xff0c;允许您提供 API 规范的 URL - 一个 yaml 或 json 文件&#xff0c;将被获取并显示给用户 根本原因非常简单 - 一个过时的库Dom…

高级控件5-RecyclerView

与ViewPager类似的一个滑动的高级控件是RecyclerView&#xff0c;使用更加灵活。 第1步&#xff1a;添加依赖 打开mvn官网&#xff0c;检索recyclerview&#xff0c;选择使用人数较多的版本&#xff0c;复制依赖&#xff0c;放入项目中即可 快捷方法&#xff08;复制下面的代…

科普:PD协议、QC协议、三星AFC、华为SCP是什么,怎么获取这些协议及协议通讯原理

PD协议是什么 PD协议是由 USB-IF 组织制定的一种快速充电规范&#xff0c;它一般使用Type-C接口&#xff0c;所以常见的Type-C接口充电器一般都是支持PD协议。 USB Power Delivery(USB PD)是目前主流的快充协议之一&#xff0c;USB PD 通过Type-C电缆和连接器增加电力输送&…

【Unity动画系统】动画基本原理与Avater骨骼复用

动画基本原理 动画片段文件是一个描述物体变化状态的文本文件 在Unity中创建的资源文件大多都是YAML语言编写的文本文件 Curves表示一种变化状态&#xff0c;为空的话则没有记录任何内容 位置变化后的旋转变化状态&#xff1a; 动画文件里的Path名字要相同才能播放相同的动画 …

uniapp制作分页查询功能

效果 代码 标签中 <uni-pagination change"pageChanged" :current"pageIndex" :pageSize"pageSize" :total"pageTotle" class"pagination" /> data中 pageIndex: 1, //分页器页码 pageSize: 10, //分页器每页显示…

[笔试训练](九)

目录 025&#xff1a;添加逗号 026&#xff1a;跳台阶 027&#xff1a;扑克牌顺子 025&#xff1a;添加逗号 添加逗号_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 将输入的数字&#xff0c;每次模上10&#xff0c;从个位开始取每一位数&#xff…

[C++ QT项目实战]----C++ QT系统登陆界面设计

前言 在C QT项目开发过程中&#xff0c;设计系统登录界面可以使用QT框架来实现。以下是一个简单的系统登录界面设计示例&#xff1a; 创建登录界面UI&#xff1a;可以使用QT Designer来设计登录界面的UI&#xff0c;包括用户名输入框、密码输入框、登录按钮等。在QT Designer中…

Centos8操作系统安装mysql5.7版本以及报错解决

目录 一、卸载MySql 1.首先查看已安装的mysql 2.逐个或者执行一下命令统一卸载掉 注意&#xff1a; 3. 卸载其他相关文件 二、安装MySql 1.安装mysql的rpm源 2.安装MySql 如果遇到以下错误&#xff1a; 问题一: 解决方法&#xff1a; 问题二、 解决方法&#xff1…

C语言面试题之相交链表

相交链表 实例要求 1、给定两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。2、如果两个链表不存在相交节点&#xff0c;返回 null 。示例&#xff1a; 实例分析 可以使用两种方法&#xff1a;哈希表方法和双指针方法。哈希表方法…

【分布式 | 第四篇】限流算法实现方案

文章目录 4.限流算法4.1计算器4.2漏桶算法4.3令牌桶限流 4.限流算法 4.1计算器 计数器比较简单粗暴&#xff0c;比如我们要限制1s能够通过的请求数实现的思路就是从第一个请求进来开始计时&#xff0c;在接下来的1s内&#xff0c;每个请求进来请求数就1&#xff0c;超过最大请…

删除二叉搜索树中的节点

题目链接 删除二叉搜索树中的节点 题目描述 注意点 节点值唯一root 是合法的二叉搜索树节点数的范围 [0, 10000] 解答思路 可以根据二叉搜索树的性质找到要删除的节点&#xff0c;关键是删除节点后怎么重新构建成一棵新的二叉搜索树首先要找到的是删除节点node的父节点nod…

微信小程序:9.小程序配置

全局配置文件 小程序根目录下的app.json文件是小程序的全局配置文件。 常用的配置文件如下: pages 记录当前小程序所有的页面存放路径信息 window 全局设置小程序窗口外观 tabBar 设置小程序底部的tabBar效果 style 是否启用新版style 小程序窗口的组成部分 了解windo节点常…