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,一经查实,立即删除!

相关文章

SQL Server 详细使用教程

SQL Server 详细使用教程 一、安装与启动 1. 安装 SQL Server 傻瓜式安装: 下载对应版本的 SQL Server 安装介质。运行安装程序&#xff0c;按照向导提示进行操作。选择合适的安装类型&#xff08;典型、自定义等&#xff09;&#xff0c;并配置实例名称、安装目录、服务账…

论文速览 | 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…

前端HTML5学习1(新增布局,状态,列表,文本标签)

前端HTML5学习1&#xff08;新增布局&#xff0c;状态&#xff0c;列表&#xff0c;文本标签&#xff09; 新增布局标签新增状态标签新增列表标签新增文本标签 新增布局标签 HTML5 引入了许多新的语义化标签&#xff0c;用于更清晰地描述网页内容结构。这些新增的语义标签有助…

面试经典150题——整数转罗马数字

面试经典150题 day18 题目来源我的题解方法一 模拟方法二 不使用额外空间的方法 题目来源 力扣每日一题&#xff1b;题序&#xff1a;12 我的题解 方法一 模拟 俗称 狗屎代码 哈哈哈哈 时间复杂度&#xff1a;O(K)。K13 空间复杂度&#xff1a;O(1) public String intToRoma…

MATLAB初学者入门(21)—— 霍夫曼树

霍夫曼编码是一种广泛用于数据压缩的有效技术。它基于字符频率或概率来构造最优的前缀码&#xff0c;使得常用字符的编码长度较短&#xff0c;不常用的字符编码长度较长&#xff0c;从而达到压缩数据的目的。MATLAB中可以通过一系列步骤来实现霍夫曼树的构建和相应的编码过程。…

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

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

python实现DIY高考倒计时小软件

目录 一.前言 二.代码 三.分析 一.前言 高考是中国的全国性统一考试,全称为普通高等学校招生全国统一考试。它被认为是中国教育系统中最重要、最具决定性的考试之一。高考是中国学生从初中毕业后进入高中学习三年后的最终考试,也是他们升入大学的关键。 二.代码 import…

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

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

分布式复习提纲(ppt)

第一章 分布式系统定义&#xff1a;硬件控制数据基本属性必要属性主要特征 1-37目标 1-38 可访问性开放性可扩展性可用性可靠性透明性 1-43、 1-94 分布式支持技术 Ad hoc&#xff1a;IPC中间件 1-66、1-82 中间件要解决的问题 1-18 中间件的类别、特性 1-20RPC 安全性&#xf…

(四)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…

Collections.singletonList

1、Collections.singletonList public static <T> List<T> singletonList(T o) {return new SingletonList<>(o); } 列表只有一个元素&#xff0c;节省内存&#xff0c;返回列表不可以改变。 2、Arrays.asList public static <T> List<T> asL…

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, //分页器每页显示…