CTF之路:git项目本地版本库(.git文件夹)漏洞利用
1.题目
BP监听数据包里有一个flag,base64试了一下,假的。
试试扫描后台目录,用御剑后台扫描珍藏版OK
题干提示用linux,kali linux平台有gobuster(但是扯淡的是2021版本里竟然没有安装)
扫描发现了.git目录,说明存在git本地版本库漏洞,flag就在这里。
2.知识点
git项目本地版本库漏洞利用
** 简要介绍git的目录结构 **
在一个目录中初始化一个仓库以后 , 会在这个目录下产生一个名叫.git
的隐藏文件夹
这个文件夹里面保存了这个仓库的所有版本等一系列信息** 简要介绍利用git的开发模式 **
一般情况下 , 开发人员为了让版本控制和网站部署比较方便 , 在开发的时候就会走这样的流程
- 初始化仓库 , 并将仓库托管在Coding或者Github上 , 便于远程协作/备份/部署
- 在本地进行网站开发 , 并定时提交commit , 并push到远程托管网站
- 当一个阶段的开发差不多的时候 , 需要远程登陆服务器 , 通过托管网站再将发行版网站pull到Web目录下
- 网站正常运行
这里当网站维护(开发)人员在从托管网站pull代码的时候 , 也会将这个储存了所有的版本信息的
.git
文件夹下载到服务器的Web目录下 , 这样的话 , 攻击者就可以利用这个目录 , 去下载git文件夹 , 就可以利用其中储存的版本控制信息 , 完全恢复网站后台的代码和目录结构 。** 具体利用思路 : **
- 利用爬虫递归下载.git目录的所有文件
- 利用git命令对网站的commit历史进行查看
- 利用git命令对网站的源码进行恢复
** 具体操作 : **
- 在ubuntu下利用wget对该目录进行递归下载
wget -r -p -np -k http://www.xxx.com/.git/ --recursive(递归) -k, --convert-links(转换链接) -p, --page-requisites(页面必需元素) -np, --no-parent(不追溯至父级)
- 下载完成后 , 进入下载的网站目录
- 利用命令 :
git reflog
查看网站的提交记录- 利用命令 :
git reset --hard [log hash]
恢复到指定版本号 (一般如果只需要得到源码的话就恢复到最近的一次提交)
3.解析
#安装gobuster
sudo apt install gobuster
使用gobuster对网站后台进行扫描
匹配kali自带的目录字典 /usr/share/wordlists/dirb/common.txt
gobuster dir -u http://114.67.246.176:10491/ -w /usr/share/wordlists/dirb/common.txt
把git本地版本库下载到本地,递归下载网站/.git目录下的所有文件和文件夹
wget -r http://114.67.246.176:10491/.git
在网站目录/.git下,查看版本日志
日志里有好几个描述flag is here?挨个查看日志
使用git show commit_id 命令查看commit,标黄色的是commit_id
很快就找到了
git show 40c6d51
CTF之路:git项目本地版本库(.git文件夹)漏洞利用相关推荐
- 【Git】Git 版本管理 ( 补充提交版本 git commit --amend | 版本库提取文件 git checkout -- filename | 删除文件 git rm )
文章目录 一.补充提交版本 git commit --amend 二.版本库提取文件 git checkout -- filename 三.删除文件 git rm 一.补充提交版本 git commi ...
- 【Git】Git 基础命令 ( Git 版本库概念 | 创建版本库 git init | 克隆版本库 git clone )
文章目录 一.Git 版本库概念 二.创建版本库 git init 三.克隆版本库 git clone 一.Git 版本库概念 Git 版本库概念 : Git 版本库 Repository 又称为 G ...
- Git for Windows之推送本地版本库到远程仓库
Git for Windows之基础环境搭建与基础操作中介绍了Git基本环境的构建与基本的操作.生成了一个本地git版本库,本文将介绍如何将这个版本库推送到远程仓库(码云,github也可以). 1. ...
- git版本控制工具(二)----本地版本库的常用操作
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- Git学习(1)-本地版本库的创建
我用的是Git-2.14.3-64-bit版本,在windows64位上运行的,把软件分享下链接:http://pan.baidu.com/s/1jIoZ7Xc 密码:13q2. 安装及配置自行百度, ...
- git创建本地版本仓库及注意事项
git怎么创建本地版本仓库 安装git我就不用说了吧!下载地址:https://github.com/msysgit/msysgit/releases/download/Git-1.9.4-previ ...
- Git学习笔记 -- 安装git、创建版本库、时光穿梭、远程仓库
一.Git的安装 在window系统上安装:从https://git-for-windows.github.io下载,然后按默认选项安装即可: 安装完成后,在"桌面"上右击,在弹出 ...
- 【Git】Git 基础命令 ( 添加暂存文件 git add | 提交文件至版本库 git commit | 查看版本库状态 git status | 查询文件修改 git diff )
文章目录 一.添加暂存文件 git add 二.提交文件至版本库 git commit 三.查看版本库状态 git status 四.查询文件修改 git diff 一.添加暂存文件 git add ...
- git项目中的子git项目_使用子模块和子树管理Git项目
git项目中的子git项目 如果您从事开源开发,则可能与Git一起管理源代码. 您可能遇到过具有大量依赖项和/或子项目的项目. 您如何管理它们? 对于开源组织,为社区和产品实现单源文档和依赖性管理可能 ...
最新文章
- Centos系统上安装php遇到的错误解决方法集锦
- ApacheBench(ab)使用详解
- (详细全面)softmax和log_softmax的联系和区别,NLLLOSS和CrossEntropyLoss的联系和区别
- 算法-- 删除排序链表中的重复元素(Java)
- ETSI GS MEC 014,UE 标识 API
- 动态规划 dp01 西瓜分堆问题 c代码
- JavaScript对象的chapterI
- centos文件服务器软件,seafile服务器端的centos8的快速部署
- /dev/mtdN和/dev/mtdblockN的区别
- sharpssh远程linux监控系统,利用SharpSsh远程执行linux的shell命令
- Oracle中group by用法
- 计算机房面积设置气消条件,广东省《建筑防烟排烟系统技术标准》问题释疑
- verilog学习笔记:简单的数据选择器modelsim仿真
- 直角坐标积分化为极坐标积分_将直角坐标系下的二次积分转换成极坐标系下的二次积分...
- uni-app安卓禁止截屏,一行代码
- C++单个配置与多个配置
- Windows下载安装Redis
- OpenCV每日函数 几何图像变换模块 (7) linearPolar函数/logPolar函数/warpPolar函数
- 高斯噪声成因_相位噪声的产生原因和影响
- 干货:如何让自已设计思维源源不断?
热门文章
- linux 脚本 wait,shell脚本使用 timeout + wait 完成: 超时退出执行,等待执行完毕并处理执行结果 - yanbin's Blog...
- vue2和vue3 面试题
- C语言指针关键知识点总结
- 团队中技术同质化的反思
- c语言程序实践感受心得,C语言实践心得体会
- round在python是什么意思_细说python中的round()方法
- 【Java】微信企业付款报错:java.io.IOException: toDerInputStream rejects tag type 45
- 详解活动图计算关键路径、最早开始时间、最晚开始时间、冗余时间,C++ 程序实现
- “别人家孩子”的大学四年
- 半导体中载流子的统计分布