ToB企服应用市场:ToB评测及商务社交产业平台

标题: CTFHub技能树-Git泄漏-Log [打印本页]

作者: 丝    时间: 2024-12-26 03:13
标题: CTFHub技能树-Git泄漏-Log
目录
一、前提知识
1.git泄漏原理
​编辑
2.git文件泄漏造成后果
3.利用方法
(1) GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,还原重建工程源代码。渗出测试职员、攻击者,可以进一步审计代码,挖掘:文件上传,SQL注射等安全毛病。
(2) 爬虫爬取整个git目录 (这个方法比力原始 , 必要具有肯定的Git经验 , 这里先重点介绍这种方法 , 但是这种方法和利用githack这个工具相比 , 有一个比力好的地方就是 , 可以完全模拟服务器上的代码环境 , 可以跟踪到git的每一次提交 , 但是githack好像只可以将源码恢复到近来的一次提交,这里的好处另有可以去查察git的提交日志 , 这个日志信息中会有开发职员对每一次commit的描述 , 比如某个BUG的修复等等 , 对于这些和BUG相关的地方 , 可以有针对性地进行白盒审计 , 有可能这个BUG修复了还不如没修复 , 可能会造成更大的毛病)
4.毛病修复
二、解题过程
方法一:利用GitHack扫描
方法二: Git_Extract工具



当前大量开发职员利用git进行版本控制,对站点自动部署。假如配置不妥,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露毛病。请实验利用BugScanTeam的GitHack完成本题
一、前提知识

1.git泄漏原理

开发职员在开发时,常常会先把源码提交到远程托管网站(如github、gitee),最后再从远程托管网站把源码pull到服务器的web目录下,假如忘记把.git文件删除,就造成此毛病。利用.git文件恢复网站的源码,而源码里可能会有数据库的信息。
在一个目录中初始化一个仓库以后 , 会在这个目录下产生一个名叫 .git 的隐蔽文件夹(版本库)这个文件夹里面保存了这个仓库的所有版本等一系列信息
  1. git init
复制代码
以我的SpringBoot项目为例,当输入这个指令时就会生成 .git隐蔽文件夹和.gitignore文件


2.git文件泄漏造成后果

一般情况下 , 开发职员为了让版本控制和网站部署比力方便 , 在开发的时间就会走如许的流程
       1.初始化仓库 , 并将仓库托管在Coding或者Github上 , 便于远程协作/备份/部署
    2.在本地进行网站开发 , 并定时提交commit , push到远程托管网站
    3.当一个阶段的开发差不多的时间 , 必要远程登陆服务器 , 通过托管网站再将发行版网站pull到Web目录下
    4.网站正常运行
  这里当网站维护(开发)职员在从托管网站pull代码的时间 , 也会将这个储存了所有的版本信息的.git文件夹下载到服务器的Web目录下 , 如许的话 , 攻击者就可以利用这个目录 , 去下载git文件夹 , 就可以利用其中储存的版本控制信息。
1.完全恢复网站后台的代码和目录结构
2.当然 , 一般网站都会涉及到数据库操作 , 而一般来说 , 必要链接数据库就必要用户名/密码/端口/库名等信息 , 而这些信息肯定会在网站后台的源码里面又体现 , 因此这种情况是极其危险的 , 另有 , 一旦服务器开放了数据库的远程毗连功能 , 攻击者就可以利用从源码中找到的数据库用户名和密码对远程数据库进行登陆 , 危险性不言而喻。
3.利用方法

(1) GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,还原重建工程源代码。渗出测试职员、攻击者,可以进一步审计代码,挖掘:文件上传,SQL注射等安全毛病。

   脚本的工作原理:
          解析.git/index文件,找到工程中所有的: ( 文件名,文件sha1 )
        去.git/objects/ 文件夹下下载对应的文件
        利用zlib解压文件,按原始的目录结构写入源代码
  .git泄露利用工具GitHack
       .git 泄漏利用工具,可还原汗青版本
  利用前需确保 git 在 环境变量中
利用方法
  1. python GitHack.py http://www.example.com/.git/     #别忘了最后的.git
复制代码
还原后的文件在 dist/ 目录下
(2) 爬虫爬取整个git目录 (这个方法比力原始 , 必要具有肯定的Git经验 , 这里先重点介绍这种方法 , 但是这种方法和利用githack这个工具相比 , 有一个比力好的地方就是 , 可以完全模拟服务器上的代码环境 , 可以跟踪到git的每一次提交 , 但是githack好像只可以将源码恢复到近来的一次提交,这里的好处另有可以去查察git的提交日志 , 这个日志信息中会有开发职员对每一次commit的描述 , 比如某个BUG的修复等等 , 对于这些和BUG相关的地方 , 可以有针对性地进行白盒审计 , 有可能这个BUG修复了还不如没修复 , 可能会造成更大的毛病)

       具体利用思路 :
          利用爬虫递归下载.git目录的所有文件
        利用git命令对网站的commit汗青进行查察
        利用git命令对网站的源码进行恢复
        具体操作 :
    演示网站 : http://www.xxx.com/.git/
    1.在虚拟机中利用wget对该目录进行递归下载(-r)
  1. wget -r -p -np -k http://www.xxx.com/.git/
  2.     --recursive(递归)
  3.     -k,  --convert-links(转换链接)
  4.     -p,  --page-requisites(页面必需元素)
  5.     -np, --no-parent(不追溯至父级)
复制代码
    2.下载完成后 , 进入下载的网站目录
    3.利用命令 : git log 查察网站的提交记载
    4.利用命令 : git reset --hard [log hash] 恢复到指定版本号 (一般假如只必要得到源码的话就恢复到近来的一次提交)
  4.毛病修复

    对.git目录的访问权限进行控制
    在每次pull到web目录下之后删除.git文件夹

二、解题过程

利用dirsearch扫描

利用dirb扫描

方法一:利用GitHack扫描

  1. python2 GitHack.py http://challenge-1d1b871ce8ce68eb.sandbox.ctfhub.com:10800/.git
复制代码

进入GitHack的dist目录 ,利用git log命令

利用git diff 查察版本差异,他们之间差异就flag,如下图所示

方法二: Git_Extract工具

工具下载https://github.com/gakki429/Git_Extract
利用方法与GitHack一样
  1. python2 git_extract.py http://challenge-1d1b871ce8ce68eb.sandbox.ctfhub.com:10800/.git
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4