git泄露_.git泄露-程序员宅基地

技术标签: git  

目录

一、漏洞形成的原因

二、判断是否存在git泄露

三、漏洞的危害

四、git的结构

五、一些常用的命令

六、git的一些命令演示

git log //查看提交历史记录,从最近到最远,可以看到3次 

 git reflog //查看每一次修改历史

git remote -v //查看远程仓库信息

 七、相关例题(ctfhub)

Log

Stash(git的暂存文件)

Index(也可以理解为暂存文件)


一、漏洞形成的原因

开发人员会使用 git 进行版本控制,对站点自动部署。但如果配置不当,可能会将 .git 文件夹直接部署到线上环境,这就引起了 git 泄露漏洞,我们可以利用这个漏洞直接获得网页源码。

二、判断是否存在git泄露

利用 dirsearch这类扫描工具,如果存在./git泄露的问题的话,会被扫描出来的

三、漏洞的危害

攻击者利用该漏洞下载.git文件夹中的所有内容。如果文件夹中存在敏感信息(数据库账号密码、源码等),通过白盒的审计等方式就可能直接获得控制服务器的权限和机会!

四、git的结构

Git大体上分为四个结构:工作区,暂存区,本地仓库(版本库),远程仓库

(1)工作区

所谓工作区,就是项目放置的位置。直白的说就是 .git 所在文件夹,就是你的工作区
(2)暂存区

暂存区英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
(3)本地仓库

本地仓库(版本库)用于存储各种版本(分支)的信息。直接点,.git 文件就是你的版本库,其中有一个 HEAD 文件,存储着用于指向当前分支的游标,通过这个游标就可以切换到版本库中存储的各个版本
(4)远程仓库

这个很好理解,就是一个服务器存贮着你的各种项目,像国内的 gitee ,国外的 github , gitlab 等等

.git目录:使用git init初始化git仓库的时候,生成的隐藏目录,git会将所有的文件,目录,提交等转化为git对象,压缩存储在这个文件夹当中。

COMMIT_EDITMSG:保存最新的commit message,Git系统不会用到这个文件,用户一个参考文件

config:Git仓库的配置文件

description:仓库的描述信息,主要给gitweb等git托管系统使用

HEAD:这个文件包含了一个档期分支(branch)的引用,通过这个文件Git可以得到下一次commit的parent

hooks:这个目录存放一些shell脚本,可以设置特定的git命令后触发相应的脚本;在搭建gitweb系统或其他

git托管系统会经常用到hook script(钩子脚本)

index:这个文件就是我们前面提到的暂存区(stage),是一个二进制文件

info:包含仓库的一些信息

logs:保存所有更新的引用记录

objects:所有的Git对象都会存放在这个目录中,对象的SHA1哈希值的前两位是文件夹名称,后38位作为对象文件名

refs:这个目录一般包括三个子文件夹,heads、remotes和tags,heads中的文件标识了项目中的各个分支指向的当前commit

ORIG_HEAD:HEAD指针的前一个状态

五、一些常用的命令

git init 初始化一个git仓库

git add && git commit //git 添加文件和提交文件

git status 查看当前仓库状态和内存状态

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 -hard HEAD放弃工作区和index的改动,HEAD指针仍然指向当前的commit

六、git的一些命令演示

下载git参考资料:kali下载使用GitHack_kali下载使用githack_kali安装gitclone-csdn博客-程序员宅基地

git命令的参考资料:

GIT常用命令大全——赶紧收藏_git命令大全-程序员宅基地

1.把文件添加add和提交commit到版本库:

把文件添加add和提交commit到版本库 

$ git add test.txt    //添加
$ git commit -m "wrote a test file"    //提交
$ git commit -m "add 3 files."        //一次性提交多个文件

注意:必须在当前版本库和当前目录下

2.版本控制:(加粗加红的是常用的)

$ git log    //查看提交历史记录,从最近到最远,可以看到3次,查看commit提交的历史数据,git log默认会输出commit hash, author, date, commit message。

git diff HEAD:显示工作目录(已track但未add文件)和暂存区(已add但未commit文件)与最后一次commit之间的的所有不相同文件的增删改。
$ git log --pretty=oneline    //加参,简洁查看
$ git reflog    //查看每一次修改历史
$ cat test.txt    //查看文件内容
$ git status    //查看工作区中文件当前状态
$ git reset --hard HEAD^(HEAD~100)(commit id)    //回退版本
$ git checkout -- test.txt    //丢弃工作区的修改,即撤销修改
$ git reset HEAD test.txt    //丢弃暂存区的修改(若已提交,则回退) 

3.远程仓库:

$ ssh-keygen -t rsa -C "[email protected]"    //创建SSH Key
$ git remote add origin [email protected]:Daisy/AKgit.git    //关联
$ git push -u origin master    //将本地内容推送到远程仓库(第一次)
$ git push origin master    //将本地内容推送到远程仓库(之后)
$ git remote -v        //查看远程仓库信息
$ git remote rm origin    //删除远程仓库(解绑)
$ git clone [email protected]: Daisy/AKgit.git    //克隆远程仓库
//克隆之后使用和查看
$ cd gitskills
$ ls
$ git remote    //查看远程库的信息
$ git remote -v    //查看远程库的详细信息

4.$ git stash    //将现场储藏起来
$ git stash list    //查看储存的工作现场,列 出Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复

//恢复和删除

$ git stash apply
$ git stash drop
//恢复并删除
$ git stash pop  从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。

$ git cherry-pick 4c805e2    //复制修改 

git log //查看提交历史记录,从最近到最远,可以看到3次 

 git reflog //查看每一次修改历史

git remote -v //查看远程仓库信息

 

 七、相关例题(ctfhub)

Log

 1.使用dirsearch扫描,发现有git泄露

  2.先用cd命令进入githack,进入Githack目录:python2 GitHack.py,再对网站进行处理

  

3.用git log查看提交历史记录

  

  4.使用git diff来文件对比 或者用git reset回退文件版本,去文件夹中打开文件发现flag 

   

Stash(git的暂存文件)

1.使用disearch扫描,发现有git漏洞

2.使用GitHack克隆目录

  

3.进入新文件后,与上题一样,先用git log查看提交历史记录发现了add flag的历史,但是发现使用git reset回退文件版本与git diff进行文件对比均无法得到flag。

  

4.于是可使用git stash pop提取git的暂存文件

git stash       //备份当前工作区的内容,保存到git栈中,从最近的一次commit中读取相关内容
git stash pop   //从git栈中获取到最近一次stash进去的内容,恢复工作区的内容。获取之后,会删除栈中对应的stash

  

Index(也可以理解为暂存文件)

1.扫描成功后githack生成一个文件夹dist,里面直接存放有重新生成的flag文件

  

注意:index虽然也是暂存文件,但是使用git log查看提交历史记录,发现指针直接指向add flag的分支,故查看目录文件直接有flag。

   

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/2401_82388450/article/details/137753128

智能推荐

javascript 获取指定国家(时区)的时间 - npm库_js 获取当前的德国时间-程序员宅基地

文章浏览阅读2.7k次。让代码运行在不同国家环境下,都能准确获得指定国家、时区的时间!判断美国是否冬令时、夏令时,能自定义返回时间的格式等其他API。完整时间、完整时间格式调整、年月日 | 日月年 | 月日年、年月日格式自定义:顺序、分隔符、时分秒、年、月、日、小时(24小时制)、分、秒、星期_js 获取当前的德国时间

初始c语言-程序员宅基地

文章浏览阅读981次,点赞17次,收藏16次。int age=20;int是整型%d表示打印十进制数据short int短整型(与整型只是空间上的区别)

JavaScript - math.js 数学库,实现 math.add() “数字累加“ 计算总和的操作(例如:循环 N 个整数或小数,然后再循环内 “+=“ 叠加算数)适用于Vue等全部前端项目-程序员宅基地

文章浏览阅读2.7k次,点赞5次,收藏3次。vue.js / uniapp / nuxt.js / react.js 使用 math.js 数学库,math.add() 怎么把多个数字进行累加计算综合,vue math.js 库如何实现一些小数或整数加在一起,math.js math.add() 怎么进行数字的叠加累加,vue math.add() 计算多个整数的总和,math.add() 计算一堆小数累加在一起的结果,uniapp math.js 数学库,实现 math.add() 数字累加,math.add() 如何将数组内的数字进行相加叠加,J_math.add

冒泡排序_真冒泡排序-程序员宅基地

文章浏览阅读94次。冒泡排序 工作原理: 第一次排序:从数组中依次取出相邻两个元素,进行比较,小的元素被被放在大的元素前面,然后小的元素不在参排序。 第二次排序:再从刚比较过的大的元素开始,依次向后取出相邻的两个元素进行比较,,小的元素被被放在大的元素前面, 然后小的元素不在参排序。 ..... 一次类推,直到排序完成。动图链接:https://www.runoob.com/w3cnote/bubble-sort.html代码演示: public static void main(Stri_真冒泡排序

第十章 集合类 总结_创建集合长度为1 的list-程序员宅基地

文章浏览阅读183次。10.1集合类概述为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java 提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。Java 所有的集合类都位于 java.util 包下,提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量),而集合里只能保存对象(实际上只是保存对象的引用变量,但通常习惯上认为集合里保存_创建集合长度为1 的list

extjs 获取grid的选中行的某列的值_extjs grid 判断点击的是哪一列-程序员宅基地

文章浏览阅读834次。我的情景是这样的:一个grid(就叫gridA吧),最后一列的每行都是超链接,点击超链接时会弹出一个窗体,这个窗体也需要一个grid(gridB)展示,并且呢,gridB所需的数据需要gridA里的某列的值(把这个列叫做Param)作为参数。于是就产生了点击gridA的某行的超链接,获取该行的Param列的值这样的需求。不知道为什么,我用var param=this.grid..getSe_extjs grid 判断点击的是哪一列

随便推点

61、服务攻防——中间件安全&CVE复现&K8s&Docker&Jetty&Websphere(1)-程序员宅基地

文章浏览阅读356次,点赞5次,收藏8次。这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!docker逃逸:1、由内核漏洞引起;2、由Docker软件设计引起;3、由配置不当引起。k8s:简单来说,跟docker一样,是个容器系统。常见漏洞:未授权访问、提权漏洞。

如何做好性能压测(一):压测环境的设计和搭建-程序员宅基地

文章浏览阅读500次。本文是阿里巴巴 PTS 团队《Performance Test Together》系列专题分享,霍格沃兹测试学院经特别授权转载,也会结合学员实际需求组织大咖公开课主题分享,文末有福利!性..._压测环境 资源配置 与生产不一致

uiapp简单介绍-程序员宅基地

文章浏览阅读68次。一、什么是uni-appuni-app是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。二、uni-app适合什么样的开发者以及它有哪些优点1.uni-app适合那些有Vue.js开发经验的开发者尤其是那些需要同时开发iOS、Android和Web应用程序的开发者。同时,uni-app也适合初学者,因为它的学习曲线比较平缓。

【数据分享】1999—2021年地级市各类交通工具的客货运量和拥有量数据(Shp/Excel格式)-程序员宅基地

文章浏览阅读137次。【数据分享】1999—2021年地级市各类交通工具的客货运量和拥有量数据(Shp/Excel格式)

SQL SERVER 2008安装教程_sql server 2008 enterprise-程序员宅基地

文章浏览阅读548次。本篇文章介绍了安装SQL Server 2008企业版的软硬件配置要求,安装过程的详细步骤,以及需要注意的事项。安装步骤(1). 在安装文件setup.exe上,单击鼠标右键选择“以管理员的身份运行”,如下图所示:(2). 打开如下所示的”SQL Server安装中心”对话框:(3). 选择左边的安装选项,单击右边的“全新SQL Server独立安装或向现有安装添加功能”选项,如图所示:(4). 在打开”SQL Server 2008安装程序“对话框中,出现“安装程序支持规则” 选项,可以看到,一些_sql server 2008 enterprise

Flutter 环境搭建以及填坑指南(Win10 系统且已有 Android 开发环境 )-程序员宅基地

文章浏览阅读2.1k次。地址 https://flutter.io/docs/get-started/install/windows中文教程地址 https://flutterchina.club/setup-windows/需要下载 git ,下载地址 git for win,安装完成之后需要 配置环境变量。获取 Flutter SDK,推荐使用 git clone 的方式如我想将安装目录放在C...

推荐文章

热门文章

相关标签