是一个用python2写的.git泄露利用脚本,速度快,默认20个工作线程,通过泄露的.git文件夹下的文件,重建还原项目源代码。
脚本的工作原理
-
解析.git/index文件,找到工程中所有的: ( 文件名,文件sha1 )
-
去.git/objects/ 文件夹下下载对应的文件
-
zlib解压文件,按原始的目录结构写入源代码
可能的改进
-
存在文件被gc打包到git\objects\pack的情况,稍后可测试下看能否直接获取并解压这个文件,还原源代码
使用
python Githack.py http://www.test.com/.git/
用python2去使用脚本,因为基于python2开发的。
我没得演示,因为我的服务器保护.git文件。执行脚本会出现如下404。
这种情况可能是真的不存在该.git目录,也可能是存在但遭到防护了。
我的网站域名是ink0.cn,我在网站根目录下放置了两个文件夹css和.git,浏览器访问http://ink0.cn/.git访问显示404,不存在文件夹,浏览器访问http://ink0.cn/css访问显示403,存在文件夹。如果我把.git改名为其他如git,此时访问http://ink0.cn/git则会显示403。这是为什么?
这是因为.git文件夹通常被用作版本控制工具(如Git)的存储库文件夹,它包含了项目的版本历史和其他相关信息。为了安全起见,防范GitHack脚本攻击,许多Web服务器会对这些文件夹进行保护,防止未经授权的访问。所以,当你尝试访问http://ink0.cn/.git时,服务器会返回404错误,表示文件夹不存在。
该防护的服务提供商可能是Apache、Nginx、IIS,也可能是安全狗,我电脑上也没安装其他的防护啊。
SvnHack.Py
使用
,也是用python2开发的,要用python2去执行脚本。用起来几乎和GitHack.py一样,用于获取网站源码。
使用前请访问http://ink0.cn/.svn/entries,注意事项如404不行,403或200状态码可以,和GitHack.py一样。
注意到--download
可以下载站点全部源码,要-u指定目标URL。最终命令是python ./SvnHack.py -u https://ink0.cn/.svn/entries --download
不常用命令
-h, --help show this help message and exit
-u Url, --url=Url add a svn url.
-d Dic, --dic=Dic list a directory.
-r READFILE, --read=READFILE read a file.
--download download the entire station. 列取目录:
根目录 python SvnHack.py -u http://x.x.x.x/.svn/entries
指定目录 python SvnHack.py -u http://x.x.x.x/.svn/entries -d scripts
读源码:
指定文件 python SvnHack.py -u http://x.x.x.x/.svn/entries -d scripts -r upd.js
DS_Store
.DS_Store是Mac下Finder用来保存如何展示文件/文件夹的数据文件,每个文件夹下对应一个。如果将.DS Store.上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。
工具ds_store_exp.py,
-
漏洞POC:访问https://ink0.cn/.DS_Store,若访问后出现下载.DS_Store文件:
那么存在可利用的漏洞。
-
安装脚本所需依赖
pip install ds-store requests
-
python ds_store_exp.py https://ink0.cn/.DS_Store
防护方法:
-
不要把.DS_Store文件部署到云服务器上。
-
若一定要部署在云服务器上,使用技术手段限制权限,让别人访问该目录为404
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.ink0.cn/index.php/2023/11/04/githack/
共有 0 条评论