首页 > 其他分享 >源代码泄露总结

源代码泄露总结

时间:2023-08-29 22:23:52浏览次数:36  
标签:总结 svn git 文件 文件夹 源代码 泄露 目录

.git 源码泄露

.git信息泄露漏洞-简明原理及利用方法 - FreeBuf网络安全行业门户

Git信息泄露原理解析及利用总结 - FreeBuf网络安全行业门户

commit、tree和blob三个对象之间的关系|Git (geek-docs.com)

参考源于上面师傅文章,引用以作学习之用!

git 简单使用

Git常用命令实操

   1. 工程准备 git init/git clone
   2. 新增/删除/移动文件到暂存区 git add/ git rm/ git mv
   3. 查看工作区 git diff/ git status
   4. 提交更改的文件 git commit
   5. 查看日志 git log
   6. 推送远端仓库 git push
   7. 分支管理 git branch/git checkout /git branch –d/git pull
   8. 分支合并 git merge/git rebase
   9. 强制回退到历史节点 git reset/git checkout . 

Git版本控制下的工程区域

只有三种:
1.版本库( Repository )
在工作区中有一个隐藏目录.git,这个文件夹就是Git的版本库,里面存放了Git用来管理该工程的所有版本数据,也可以叫本地仓库。
2.工作区( Working Directory )
日常工作的代码文件或者文档所在的文件夹。
3.暂存区( stage )
一般存放在工程根目录 .git/index文件中,所以我们也可以把暂存区叫作索引(index)。

Git版本控制下的文件状态

只有三种:
1.已提交( committed ) 
该文件已经被安全地保存在本地数据库中了;
2.已修改(modified) 
修改了某个文件,但还没有提交保存;
3.已暂存(staged)
把已修改的文件放在下次提交时要保存的清单中。

Git 常用命令使用

工程准备
工程克隆—— git clone

查看工作区
查看工作区的修改内容—— git diff
查看工作区文件状态—— git status

文件修改后提交推送
新增/删除/移动文件到暂存区—— git add/ git rm/ git mv
提交更改的文件—— git commit
推送远端仓库—— git push

查看日志
查看当前分支上的提交日志—— git log

分支管理
列出本地分支—— git branch
新建分支—— git branch / git checkout –b
删除分支—— git branch –d
切换分支—— git checkout
更新分支—— git pull
合并分支—— git merge 

撤销操作
强制回退到历史节点—— git reset
回退本地所有修改而未提交的—— git checkout 

分支合并
合并目标分支内容到当前分支—— git merge/git rebase

.git 源码泄露原理

commit、tree和blob三个对象之间的关系

image

image

objects 文件夹

.git下的objects文件夹是用来存放所有被追踪的git对象的,每个git对象所对应的hash值的头两位会变为文件夹,剩下的变为文件名,保存在这里。

我们想下载源码、文件,都是通过这个文件夹。通过目标文件的hash值,这样就能在objects下找到目标文件。

image

image

image

结合上述信息,通过下面脚本找到目标文件。

import zlib
import requests

url = "http://X.X.X.X:8000/.git/objects/12/6b3a8415dd1de4bd81087ccae3ae5de392f49a"

# /12/6b3a8415dd1de4bd81087ccae3ae5de392f49a
# /31/aa1c87420f57ff17c165406d4d68c27c3c828e
# /1e/ff285895bcd12915619952e04b67c354351cec

re = requests.get(url)
ss = re.content
word = zlib.decompress(ss)

print (word) 
# b'tag 159\x00object 31aa1c87420f57ff17c165406d4d68c27c3c828e\ntype commit\ntag 1.0-rc2\ntagger xxxxxxx <[email protected]> 1409401628 +0800\n\nReleased on 2014/08/30\n'

文件里包含了一个tree对象的hash值(31aa1c87420f57ff17c165406d4d68c27c3c828e),和文件的身份作者([email protected]

我们现在可以用tree的hash值去,得到这个tree对象文件的内容【这里存在重复套娃,hash链条式的查找直到看到项目文件】【这里其实就是子文件夹的关系】

如下:

b"tree 213\x00100755 cardapi.php\x00\xc3\xffk\x95\xa1?\x87\xf8#\xf5TD\x8e\xf6~\xb2\x02%Y\xb940000 conf\x00\x1a \xe3\xd1\x10\xe7\xf9z\x1f\x91<\xdeb\xb3\xf2&\xef\x94\xf9\xa840000 core\x004WAF\xe1\x93\xabJ\x89\xb6+\xc3U\xfd\xfd\xe3\x84\x11\xe8^40000 model\x00\xf0%\xd8\x98m'\x00\xa5\xcc\xd3\xb1\xe0GUy\xeb0\xaf9.100755 recordapi.php\x00!\xc3\x15\xf3\xb4\xdb\xa9\xa0\xe3L\xdc1\xb0a/O\x01{\x92\xe3100755 userapi.php\x00\x1a\x8ebD)\xf1\x8d8\x1dG\xad\xec\xd7;\xb0\xbd\rK`\xfc"

到这里可以看到具体文件啦!

例如 cardapi.php:

http://X.X.X.X:8000/.git/objects/c3/ff6b95a13f87f823f554448ef67eb2022559b9

用上述脚本即可获得源码:

b"blob 272\x00<?php\nrequire('./core/zx.class.php');\n$api = new api();\n\n//\xe5\x8f\x8d\xe5\xba\x8f\xe5\x88\x97\xe5\x8c\x96\n$_POST['users'] = unserialize($_POST['users']);\n\n\n//\xe8\xb0\x83\xe7\x94\xa8\xe6\x8e\xa5\xe5\x8f\xa3\n$api->actionCardInfo($_POST);\n\n//\xe8\xb0\x83\xe7\x94\xa8\xe7\xbb\x93\xe6\x9e\x9c\n$result = $api->actionGetResult();\n\n//\xe8\xbe\x93\xe6\xb5\x8f\xe8\xa7\x88\xe5\x99\xa8\nprint_r(json_encode($result));\n\n\n\n\n\n?>"

GitHacker 脚本使用

WangYihang/GitHacker:

标签:总结,svn,git,文件,文件夹,源代码,泄露,目录
From: https://www.cnblogs.com/Only-xiaoxiao/p/17665975.html

相关文章

  • 8月pyyz考试总结
    【20230801暑期提高特训营】摸底考试#1T1-三值的排序\(100pts\)Solution可以考虑预处理三个值的个数。如果当前的值不在正确的位置,则在其应当在的位置范围内寻找是否有当前位置上应该放置的数字。若有则直接交换,若没有则任选数字交换,并统计答案。T2-日记\(100pts\)Solu......
  • 开学总结
    我从7月8号开始放假,9号找兄弟玩了一天,10号就开始正式上班,本来8月初就能结课,可惜老天爷下了几天暴雨。其次我考了科目二,这些加起来一共花了一个月是时间。我正式开始学习是在8月12日,虽然学的东西不多,但还是想总结一下。截至到今天已经学了半个月了。学习收获:学习了linux的基础语......
  • uniapp 项目实践总结(二)从零开始搭建一个项目
    导语:本篇文章主要是项目方面的技术开发总结,新建一个项目可以选择使用可视化界面,也可以使用命令行搭建。目录可视化界面命令行搭建安卓开发环境苹果开发环境可视化界面安装软件使用官方推荐的HbuilderX软件,开发方式比较简单,内置相关环境以及终端,无需配置node。下......
  • 传输层协议总结
    传输层就是在信纸的空白上写上新的“收信人”信息。每一所房子【某一个终端】会配备一个管理员(传输层协议)。管理员从邮差手中接过信,会根据“收信人”,将信送给房子中的某个人。使用端口号(portnumber)来识别收信人(某个进程)。传输层协议TCP面向字节流服务面向连接,可靠,......
  • java基础(根据狂神总结)
    java基础(狂神)注释单行//多行/**/文档注释(可以加参数)/****/***@Descriptionhelloworld*@Authorcheems*/}数据类型类型基本数据类型数值类整数(查看最大字节大小,通过对应的类的源码看)byte占1个字节short2in......
  • 32位数字电位器AD5228使用及调试总结
    一概念什么是数字电位计?  数字电位器(DigitalPotentiometer)亦称数控可编程电阻器,是一种代替传统机械电位器(模拟电位器)的新型CMOS数字、模拟混合信号处理的集成电路。数字电位器由数字输入控制,产生一个模拟量的输出。依据数字电位器的不同,抽头电流最大值可以从几百微安到几个......
  • [java基础知识复习] Java基础知识总结分享一
    写代码:1,明确需求。我要做什么?2,分析思路。我要怎么做?1,2,3。3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。4,代码实现。用具体的java语言代码把思路体现出来。学习新技术的四点:1,该技术是什么?2,该技术有什么特点(使用注意):3,该技术怎么使用。demo4,该技术什么时候用?test。————......
  • 剑指offer刷题总结
    文章目录一、数组二、链表三、栈和队列四、二叉树五、字符串六、回溯算法七、其他一、数组01、二维数组中的查找06、旋转数组的最小数字12、调整数组顺序使奇数位于偶数前面27、数组中出现次数超过一半的数字29、连续子数组的最大和31、把数组排成最小的数34、数组中的逆序对36、......
  • ThinkPHP5 SQL注入漏洞 && 敏感信息泄露
    ThinkPHP5SQL注入漏洞&&敏感信息泄露启动后,访问http://10.10.10.154/index.php?ids[]=1&ids[]=2,即可看到用户名被显示了出来,说明环境运行成功。漏洞利用访问http://10.10.10.154/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1,信息成功被爆出:当然,这是一个比较鸡......
  • 本周总结
    这周开始了解spark技术Spark是当今大数据领域最活跃、最热门、最高效的大数据通用计算平台之一 Spark优势及特点 优秀的数据模型和丰富计算抽象首先看看MapReduce,它提供了对数据访问和计算的抽象,但是对于数据的复用就是简单的将中间数据写到一个稳定的文件系统中(例如HDFS)......