前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.Git信息泄露漏洞检测防范

.Git信息泄露漏洞检测防范

原创
作者头像
Al1ex
修改2023-12-04 14:18:12
4020
修改2023-12-04 14:18:12
举报
文章被收录于专栏:网络安全攻防网络安全攻防

漏洞介绍

Git是一个开源的分布式版本控制系统,在执行git init初始化目录的时候会在当前目录下自动创建一个.git目录,用来记录代码的变更记录等,发布代码的时候如果没有把.git这个目录删除直接发布到服务器上,那么攻击者就可以通过它来恢复源代码,从而造成信息泄露的安全问题

检测工具

项目地址:https://github.com/lijiejie/GitHack

工具原理:

  • 解析.git/index文件,找到工程中所有的(文件名,文件sha1)?
  • 去.git/objects/文件夹下下载对应的文件
  • zlib解压文件并按原始的目录结构写入源代码

用法示例:

代码语言:javascript
复制
python3 GitHack.py http://www.openssl.org/.git/

项目地址2:https://github.com/BugScanTeam/GitHack

工具使用:

漏洞案例

Log示例

Step 1:直接访问靶场环境可以看到如下界面信息

http://challenge-ed902de60e85397f.sandbox.ctfhub.com:10800/

Step 2:扫描以下目录

代码语言:javascript
复制
python3 dirsearch.py -u http://challenge-ed902de60e85397f.sandbox.ctfhub.com:10800/ -e *

Step 3:从上面的结果可以发现存在git信息泄露,之后我们利用Githack(https://github.com/BugScanTeam/GitHack)扫描一下

代码语言:javascript
复制
python2 GitHack.py http://challenge-ed902de60e85397f.sandbox.ctfhub.com:10800/.git/

Step 4:历史查询

代码语言:javascript
复制
git log

Step 5:从上面发现一个add flag的历史命令,之后利用一下命令进行差异对比成功获取到flag

代码语言:javascript
复制
#版本对比
git diff <分支名1> <分支名2>

#执行示例
git diff 727b1543630ea8e366afb0646dcd24a68273657b

#版本回退
git reset --hard <分支名>

Stash示例

此题目注意考察.git stash的使用,该命令主要用于想要保存当前的修改,但是想回到之前最后一次提交的干净的工作仓库时进行的操作,.git stash将本地的修改保存起来并且将当前代码切换到HEAD提交上,下面我们使用CTFHUB的环境进行演示说明:

Step 1:访问靶场地址可以看到如下界面信息

http://challenge-3035c4ab094fc730.sandbox.ctfhub.com:10800/

Step 2:进行目录扫描,发现存在.git信息泄露

代码语言:javascript
复制
python3 dirsearch.py -u http://challenge-3035c4ab094fc730.sandbox.ctfhub.com:10800/ -e *

Step 3:使用Githack扫描

代码语言:javascript
复制
python2 GitHack.py http://challenge-3035c4ab094fc730.sandbox.ctfhub.com:10800/.git/

Step 4:进入到源码获取目录下面并利用git stash list列出Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复

代码语言:javascript
复制
git stash list

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

代码语言:javascript
复制
git stash pop

之后查看文件获得最终的flag

防护建议

  • 信息更改:如果敏感信息已经被泄露,需要更改敏感信息并确保新的信息不会再次泄露,例如:更改密码,API密钥,数据库凭据等
  • 审查代码:需要仔细审查Git仓库中的代码,以确保没有其他敏感信息泄露。可以使用Git命令行或Git托管服务的搜索功能来查找敏感信息,例如密码和凭据
  • 权限移除:立即移除公共访问权限以防止进一步的信息泄露,可以使用Git命令行或Git托管服务(例如:GitHub,GitLab等)来更改仓库的访问权限或将仓库更改为私有
  • 撤销提交:如果敏感信息已经提交到公共Git仓库中则可以使用Git命令行或Git托管服务的撤销提交功能来撤销提交并删除敏感信息,具体操作是使用Git命令行或Git托管服务撤销提交并强制推送到Git仓库以覆盖已提交的历史记录

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 漏洞介绍
  • 检测工具
  • 漏洞案例
    • Log示例
      • Stash示例
      • 防护建议
      相关产品与服务
      网站渗透测试
      网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com