git信息泄露漏洞

git信息泄露漏洞

当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。

危害

攻击者可以利用该漏洞下载git文件夹里的所有内容。如果文件夹内有敏感信息比如站点源码、数据库账户密码等,攻击者可能直接控制服务器。

Git介绍

Git作为大家熟悉的,深受欢迎的版本控制工具,和其他同类工具有很多不同之处:

  • Git始终保存快照而不是文件差异。
  • 任何数据存储前始终使用SHA-1计算校验和,保证内容完整性。
  • 使用分布式仓库设计,让大多数操作都在本地进行,保证了使用效率。几乎所有操作都是向数据库增加数据,提交之后就很难丢失数据。它的本质更像一个内容寻址(content-addressable)文件系统,并在此之上提供了一个版本控制系统的用户界面。

Git 有三种状态,你的文件可能处于其中之一:已修改(modified)、已暂存(staged)、已提交(committed)。由此引出三个逻辑区域,他们和文件状态以及部分对应操作的关系如下图。
在这里插入图片描述

Git对象
在Git系统中有四中类型的对象,所有的Git操作都是基于这四种类型的对象。

  • “blob”,这种对象用来保存文件的内容。
  • “tree”,可以理解成一个对象关系树,它管理一些"tree"和“blob”对象。
  • “commit”,指向一个"tree",它用来标记项目某一个特定时间点的状态。它包括以下关于时间点的元数据,如时间戳、最近一次提交的作者、指向上次提交、
  • “tag”,给某个提交增添一个标记。
    git对象之间的个关系如下图

SHA1哈希值
在Git系统中,每个Git对象都通过哈希值来代表这个对象。哈希值是通过SHA1算法计算出来的,长度为40个字符(40-digit)。

.git目录

  • config - 包含一些配置选项
  • description - 仓库的描述信息,主要给gitweb等git托管系统使用
  • HEAD - 指定当前分支,映射到ref引用,能够找到下一次commit的前一次哈希值
  • hooks - 存放可在某些指令前后触发运行的钩子脚本(hook scripts),默认包含一些脚本样例
  • index - 这个文件就是我们前面提到的暂存区(stage),是一个二进制文件
  • info - 存放仓库的信息
  • objects - 存储所有Git的数据对象,对象的SHA1哈希值的前两位是文件夹名称,后38位作为对象文件名
  • refs - 存储各个分支指向的目标提交
  • branches - 还没发现有什么用处

Git基本操作

对照这张图来理解两段提交,工作区(working tree),暂存区(stage/index)和 branch之间的关系
在这里插入图片描述

常用命令:

git ls-files -u显示冲突的文件,-s是显示标记为冲突已解决的文件
git diff 对比工作区和stage文件的差异
git diff --cached 对比stage和branch之间的差异
git ls-files --stage 检查保存在stage的文件
git log 显示到HEAD所指向的commit为止的所有commit记录 。
git reset HEAD <file>
git reset --hard HEAD放弃工作区和index的改动,HEAD指针仍然指向当前的commit.

实际操作流程

git init
此命令初始化一个新本地仓库,它在工作目录下数据目录生成一个名为.git的隐藏文件夹。git会将所有的文件,目录,提交等转化为git对象,压缩存储在这个文件夹当中。
git init 命令后面不加参数表示把当前目录变为仓库,如下表示在当前目录下创建test仓库
在这里插入图片描述
git add
创建一个test1.txt文件,git status查看当前状态,此时test.txt文件位于工作目录
在这里插入图片描述
通过
git add
跟踪这个文件,把test.txt文件放到暂存区.(可以使用git rm --cached命令来取消暂存)
在这里插入图片描述
git commit
在暂存区的文件使用git commit提交到版本库(数据目录)中
-m参数表示提交的注释,如果不使用-m参数那么会跳出页面提示主动输入注释
在这里插入图片描述
修改test.txt文件
在这里插入图片描述

修改后,通过查看git status可以看到文件状态被改变了。根据提示知道文件已被修改,但是未提交修改到版本库中。
在这里插入图片描述

git diff,对比工作区和暂存区文件的差异,查看文件被修改的地方
在这里插入图片描述

确认修改无误后提交到版本库的方法和提交初始文件一样,需要先提交到暂存区,然后提交到版本库.
在这里插入图片描述
再修改一次文件
在这里插入图片描述

提交
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0MtGIDS6-1595853273844)(_v_images/20200727191944395_1255481628.png)]
git log 查看下历史记录,HEAD我的理解就是指针,指到最后提交的版本
在这里插入图片描述
git reset --hard,回退版本
回退到上一个版本,gei reset --hard HEAD^
在这里插入图片描述

厉害了,可以看到HEAD指针也指到了第一次修改的版本,第二次修改的版本看不到了
但是我要是因为操作失误怎么追回地二次修改的版本呢,可以使用git reset --hard 版本号追回
git reflog获取版本号,得到第二次修改版本号为5edcc89
在这里插入图片描述

get reset --hard 5edcc89恢复
在这里插入图片描述

我后面测试使用comit后面一串很长的字符,这里理解为对象sha1字符串吧.也可以回退到那个版本
在这里插入图片描述

可以把工作区修改的文件git add提交到暂存区,也可以使用git checkout — test1.txt 把工作区的修改撤销,这样,文件就会回退到上一次提交时的状态。
在这里插入图片描述

Git信息泄露原理

  • 通过泄露的.git文件夹下的文件,还原重建工程源代码
  • 解析.git/index文件,找到工程中所有的(文件名,文件sha1)
  • .git/objects文件夹下下载对应的文件
  • zlib解压文件,按原始的目录结构写入源代码
    (危害:渗透测试人员、攻击者,可以进一步代码审计,挖掘:文件上传,sql注入等安全漏洞)

GitHack工具使用

GitHack会按照上面的原理自动恢复
在这里插入图片描述

参考:https://www.zhihu.com/tardis/sogou/art/30044692

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

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

相关文章

java实验文法报告_西安邮电大学编译原理LL文法分析器实验(java).doc

西安邮电大学编译原理LL文法分析器实验(java)《编译原理》实验报告题目: 语法分析器的制作学生姓名:班 级: 软件1202学 号:指导教师:成 绩:西安邮电大学计算机学院2015 年 6 月 7 日一&#xff1a;实验目的熟悉语法分析的过程&#xff1b;理解相关文法的步骤&#xff1b;熟悉Fi…

PHP 数据库 ODBC

PHP 数据库 ODBC ODBC 是一种应用程序编程接口&#xff08;Application Programming Interface&#xff0c;API&#xff09;&#xff0c;使我们有能力连接到某个数据源&#xff08;比如一个 MS Access 数据库&#xff09;。 创建 ODBC 连接 通过一个 ODBC 连接&#xff0c;您可…

bash简介

目录 Shell 的含义 Shell 的种类 命令行环境 终端模拟器 命令行提示符 进入和退出方法 Shell 和 Bash 的历史 <

功能项目拼图将Java 9引入

因此&#xff0c;拼图项目...我们已经对此颇为了解&#xff0c;但尚未看到计划如何兑现其承诺的细节。 这篇文章将精确地做到这一点&#xff0c;并介绍项目的核心概念和功能。 系列 这篇文章是正在进行的有关拼图项目系列的一部分。 按照推荐的顺序&#xff08;不同于发布顺序…

2021Kali -- 木马免杀制作

​知道为什么梦里的人都看不清脸么&#xff1f;因为怕你当真。。。 ---- 网易云热评 一、通过MSF生成shellcode 1、启动MSF&#xff0c;演示版本是6.0.36 2、通过msfvenom生成相关代码 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b \x00 l…

Bash脚本教程之基本语法

目录 echo 命令 -n参数 -e参数 命令格式 空格 分号 命令的组合符&&和|| type 命令 快捷键

qq音乐mp3解析php源码,QQ音乐API

QQ音乐API搜索歌曲API&#xff1a;&aggr1&cr1&loginUin{3}&formatjson&inCharsetGB2312&outCharsetutf-8&notice0&platformjqminiframe.json&needNewCode0&p{1}&catZhida0&remoteplacesizer.newclient.next_song&w{0}{0}需…

OpenCV与YOLO学习与研究指南

引言 OpenCV是一个开源的计算机视觉和机器学习软件库&#xff0c;而YOLO&#xff08;You Only Look Once&#xff09;是一个流行的实时对象检测系统。对于大学生和初学者而言&#xff0c;掌握这两项技术将大大提升他们在图像处理和机器视觉领域的能力。 基础知识储备 在深入…

2015年 六·一 儿童节——我

现是2015年的六一儿童节。按说儿童节对于一个己20岁的成年女生来讲已毫无渊渊&#xff0c;于是乎&#xff0c;我花费了将近半个下午的时间来解析自己&#xff1a;是否真的已经成人&#xff1f; 首先在外形上&#xff0c;毋庸置疑&#xff0c;已长成了大人的样子。158cm身高&…

目录爆破工具 -- dirsearch

我记得&#xff0c;以前总会和你聊的很晚很晚&#xff0c;现在我们不再说话了&#xff0c;我还是会熬夜&#xff0c;但我想&#xff0c;不如从今天开始早点睡吧。。。 一、环境&#xff1a;Kali2020.01、Python3.0 二、安装过程&#xff1a; 1、复制dirsearch到本地安装包 gi…

网页 php pdf文件怎么打开是乱码,打开php文件乱码的解决方法

打开php文件乱码的解决方法发布时间&#xff1a;2021-02-14 11:45:35来源&#xff1a;亿速云阅读&#xff1a;94作者&#xff1a;小新小编给大家分享一下打开php文件乱码的解决方法&#xff0c;相信大部分人都还不怎么了解&#xff0c;因此分享这篇文章给大家参考一下&#xff…

Bash教程之模式扩展

目录 简介 波浪线扩展 ? 字符扩展 * 字符扩展 方括号扩展 [start-end] 扩展 大括号扩展 {start..end} 扩展

java coin介绍_代码示例中的Java 7:Project Coin

java coin介绍该博客通过代码示例介绍了一些新的Java 7功能&#xff0c;这些项目在Project Coin一词下进行了概述。 Project Coin的目标是向JDK 7添加一组小的语言更改。这些更改确实简化了Java语言语法。 更少的打字&#xff0c;更简洁的代码&#xff0c;愉悦的开发人员&#…

如何设置浏览器禁止使用UC浏览器

通过UA可以判断浏览器是否是UC浏览器 if(navigator.userAgent.indexOf(UCBrowser)>-1) { alert("当前浏览器不支持本站&#xff0c;建议更换为QQ浏览器"); } 转载于:https://www.cnblogs.com/mqingqing123/p/4555188.html

Bash脚本教程之引号和转义

目录 转义 单引号 双引号 Here 文档 Here 字符串 转义 某些字符在 Bash 里面有特殊含义(比如$、&、*)。 $ echo $date$ 上面例子中,输出$date不会有任何结果,因为$是一个特殊字符。 如果想要原样输出这些特殊字符,就必须在它们前面加上反斜杠,使其变成普通字…

php分页教程,php 如何分页 教程

php 如何分页 教程这是一篇初级入门的教程了,我们这个与asp分页有一点的区别了,下面我们就来讲讲最简单的php分页代码吧,我们首先要有一个数据库.假如有我们有了一个数数据库里面有一张表a下面就是我们要讲到的分页代码了.$page $_GET[page]//这里是用来获取当前的页面,下面我…

在Java中实现过滤器和面包店锁

为了了解锁的工作方式&#xff0c;实现自定义锁是一个好方法。 这篇文章将展示如何在Java上实现Filter和Bakery锁&#xff08;自旋锁&#xff09;&#xff0c;并将它们的性能与Java的ReentrantLock进行比较。 过滤器锁和面包房锁满足互斥并且也是无饥饿算法&#xff0c;面包房锁…

Burpsuite工具的证书安装

Burpsuite工具的证书安装 Bursuite作为一款可以用来挖掘各种各样的WEB安全漏洞工具&#xff0c;在web安全渗透方面经常会使用到&#xff0c;可以用Bursuite进行对数据的抓包&#xff0c;其不安装证书时只能抓取http的包&#xff0c;安装证书就可以抓取https包&#xff0c;并分析…

Bash脚本教程之变量

目录 简介 创建变量 读取变量 删除变量 输出变量,export 命令 特殊变量 变量的默认值 declare 命令

【下班后学Android】Android开发环境搭建

Android开发环境搭建方法&#xff1a; 方法一&#xff1a;百度搜索“Android开发环境搭建”&#xff1a;http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html。 博主在土耳其出差期间&#xff0c;按照该步骤安装&#xff0c;完全OK。但是&#xff0c;回国后&#…