一文了解常见源码泄露
前言
这几天回顾做过的ctf题 看到好多题有源码泄露 本篇做个归纳总结
1、.git
源码泄露
在运行git init
初始化代码库的时候,会在当前目录下面产生一个.git
的隐藏文件夹
这个文件夹包含所有的 Git 存储和操作的对象记录,如代码的变更记录等等
主要有以下内容:
- hook:存放一些sheel的地方。
- info:存放仓库的信息
- object:存放所有git对象的地方
- refs:存放提交hash的地方
- config:github的配置信息
- description:仓库的描述信息,主要给gitweb等git托管系统使用
- HEAD:映射到ref引用,能够找到下一次commit的前一次哈希值
在发布代码的时候,如果.git
这个目录没有删除,直接发布了
使用这个文件,可以用来恢复源代码,这造成git泄露
可以通过网页访问 .git
目录,或扫描后台看看有没有 .git
目录来探测
若果有git泄露,用GitHack可以恢复源代码
GitHack使用方法
2、.svn
源码泄露
SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS 很多网站都使用了 svn 版本控制系统,和使用 git 版本控制器类似,很多开发者网站安全意识不足,代码放到生产坏境中后,没有清理 svn 的一些信息,导致 svn 残留
svn利用要看版本
- svn1.6及以前版本会在项目的每个文件夹下都生成一个.svn文件夹,里面包含了所有文件的备份,文件名为
.svn/text-base/文件名.svn-base
,默认文件名都是直接明文存的,可以访问到/.svn/entries
的时候,就证明存在源码泄露 - svn1.7及以后版本则只在项目根目录生成一个.svn文件夹,里面的pristine文件夹里包含了整个项目的所有文件备份,文件名会被hash,然后再按照文件名对应hash的方式存到
wc.db
中,就是个sqlite数据库,通过访问wc.db
文件,就可以读取到所有的网站目录
工具
- dvcs-ripper
- SvnExploit
3、.DS_Store
文件泄露
.DS_Store
文件在 MAC 系统里每个文件夹下都有一个,是用来存储这个文件夹的显示属性的,比如文件图标的摆放位置
通过 .DS_Store
可以知道这个目录里面所有文件的清单
当访问/.ds_store
可以访问的到,就证明存在文件泄露
工具 ds_store_exp
4、.hg
源码泄露
使用hg init
新建仓库的时候,会生成一个备份文件.hg
当然也是存在泄露问题,不过比较少见
当访问/.hg
存在的时候,就证明存在该漏洞
工具 rip-hg.pl
5、网站备份文件泄露
在网站的升级和维护过程中,通常需要对网站中的文件进行修改 此时就需要对网站整站或者其中某一页面进行备份。
当备份文件或者修改过程中的缓存文件因为各种原因而被留在网站 web 目录下 而该目录又没有设置访问权限时,便有可能导致备份文件或者编辑器的缓存文件被下载 导致敏感信息泄露,给服务器的安全埋下隐患
该漏洞的成因主要有是管理员将备份文件放在到 web 服务器可以访问的目录下
常见格式
代码语言:javascript复制'.rar','.zip','.tar','.tar.gz','.tar.bz2','.sql','.7z','.bak','.txt','.swp','.old'
通过扫描网站的目录,可以发现这些敏感的备份文件 由于浏览器不能直接解析这些文件后缀,导致可以直接下载
6、 WEB-INF/web.xml泄露
WEB-INF 是 Java 的 WEB 应用的安全目录 该目录原则上来说是客户端无法访问,只有服务端才可以可以访问 如果想在页面中直接访问其中的文件,必须通过 web.xml 文件对要访问的文件进行相应映射才能访问
主要包含以下文件或目录:
- /WEB-INF/web.xml:Web 应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则
- /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非 servlet class,他们不能包含在
.jar
文件中 - /WEB-INF/lib/:存放 web 应用需要的各种 JAR 文件,放置仅在这个应用中要求使用的 jar 文件 , 如数据库驱动 jar 文件
- /WEB-INF/src/:源码目录,按照包名结构放置各个 java 文件
- /WEB-INF/database.properties:数据库配置文件
- /WEB-INF/tags:存放了自定义标签文件
- /WEB-INF/jsp:jsp 1.2 一下版本的文件存放位置
- /WEB-INF/jsp2:存放jsp2.0以下版本的文件
- /META-INF:相当于一个信息包
漏洞
- Tomcat的WEB-INF目录,每个j2ee的web应用部署文件默认包含这个目录
- Nginx在映射静态文件时,把WEB-INF目录映射进去,而又没有做Nginx的相关安全配置,或Nginx自身一些缺陷影响
- 从而导致通过Nginx访问到Tomcat的WEB-INF目录
- 注意:是通过Nginx,而不是Tomcat访问到的,Tomcat是禁止访问这个目录的
扫描后台有没有WEB-INF/web.xml
即可
然后直接访问
7、cvs文件泄露
CVS是一个C/S系统 多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的
后台扫描是否有CVS/Root
以及CVS/Entries
目录,分别返回根信息和所有文件的结构
工具
- bitkeeper
- dvcs-ripper
8、Bazaar/bzr
Bazaar-NG 是个分散式版本控制系统,旨在易于开发人员和最终用户的使用 分散式版本控制系统采用了 集市开发模型 ,可让人们通过互联网进行协作
不过笔者没见过这个漏洞 记一笔
工具 dvcs-ripper
结语
对源码泄露和文件泄露做了个归纳
还有个信息搜集工具 weakfilescan
红客突击队于2019年由队长k龙牵头,联合国内多位顶尖高校研究生成立。其团队从成立至今多次参加国际网络安全竞赛并取得良好成绩,积累了丰富的竞赛经验。团队现有三十多位正式成员及若干预备人员,下属联合分队数支。红客突击队始终秉承先做人后技术的宗旨,旨在打造国际顶尖网络安全团队。