一文了解常见源码泄露

2022-09-28 12:31:27 浏览数 (1)


一文了解常见源码泄露

前言

这几天回顾做过的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龙牵头,联合国内多位顶尖高校研究生成立。其团队从成立至今多次参加国际网络安全竞赛并取得良好成绩,积累了丰富的竞赛经验。团队现有三十多位正式成员及若干预备人员,下属联合分队数支。红客突击队始终秉承先做人后技术的宗旨,旨在打造国际顶尖网络安全团队。

0 人点赞