信息泄露-常见敏感文件总结

本文最后更新于 2024年10月22日 下午

Git泄露

简介

Git 是一个开源的分布式版本控制系统,用于跟踪和管理文件的变化,主要用于软件开发。它允许多个开发者同时工作,并记录每个文件的修改历史,以便在需要时恢复到之前的版本。

泄露原因

git在初始化项目的时候, 会在项目的根目录创建一个名为.git的隐藏文件夹, 里面包含了本地所有commit的历史记录. 如果无意间将这个目录置于WEB的路径下让用户可以访问, 那么也就泄露了几乎所有的源代码和其他其他敏感信息.

就拿我这个博客项目来说,我这个博客项目就是使用Git来推送发布文章的

image

这里的.git就是在初始化博客项目时产生的,.git 目录是 Git 仓库的核心,它包含了所有跟踪和管理项目所需的信息。这些信息包括提交历史、配置选项、对象存储、引用(如分支和标签)等,其中如果直接把.git放在网站的根目录下就能被所有人访问,那么也就泄露了几乎所有的源代码资源和其他其他敏感信息。

泄露内容

  • 所有该项目的源代码
  • 私有仓库的地址
  • 私密的配置信息
  • 所有commiter的邮箱账号信息
  • (可能)内部的账号和密码
  • .……

利用

实战案例

这个案例居然同样也是一个技术博客,和我的博客一样也是采用HEXO框架搭建的,但是看样子这位师傅是搞开发的,疏忽了.git文件的控制,直接就放在网站根目录了,使用GitHack也是直接可以下载还原几乎整个项目,不过还好,毕竟是技术博客,绝大多数文件本来在github仓库就是公开的,不存在什么敏感的信息,只是做个例子演示一下

image

image

修复

不要把.git文件暴露在网站根目录下

svn泄露

简介

svn, 即Subversion, 在github之前曾经也是炙手可热的版本管理工具, 虽然已经日渐式微, 但在很多国企, 研究院等地方依然是作为版本管理的主要工具. 对于一些历史悠久的项目, 比如LLVM, 出于历史原因, 也是主要使用svn管理源代码.

泄露原因

同git,只是成了.svn文件

泄露内容

  • 所有该项目的源代码
  • svn仓库的地址
  • svn仓库所属用户的用户名

利用

修复建议

同git

Hg泄露

简介

Mercurial是一种轻量级分布式版本控制系统,使用hg init的时候会生成.hg。

泄露原因

同git,只是成了.hg文件

利用

修复建议

同git

bzr泄露

bzr也是个版本控制工具, 虽然不是很热门, 但它也是多平台支持, 并且有不错的图形界面, 所以也有一些人认为bzr比git要好用, 只是对于渗透测试人员来说, 其实都无所谓

泄露原因

同git,只是文件成了.bzr

泄露内容

  • 源代码
  • 仓库地址
  • 开发者的信息

利用

修复建议

同git

CVS泄露

简介

CVS是一个年代比较久远的版本控制系统, 通过它可以追踪源代码的历史变化记录. 但是因为功能比较简单, 而且不支持分支, 所以很早前就被上面提到的svn替代了.

泄露原因

还是差不多,cvs项目在初始化(cvs checkout project)的时候, 会在project目录下创建一个名为CVS的目录, 其中保存了各个文件的修改和commit记录. 通过此目录可以获取代码的历史版本. 其中两个关键文件为:CVS/RootCVS/Entries, 分别记录了项目的根信息和所有文件的结构

泄露内容

  • 因为是纯客户端的工具, 所以只会泄露源代码

利用

修复

同理

.DS_Store泄露

简介

.DS_Store 文件是 macOS 系统在每个目录中自动生成的隐藏文件,用于存储该目录的自定义属性。.DS_Store 是 “Desktop Services Store” 的缩写,它包含了文件夹视图的设置和布局等信息可以说是比较严重的泄露.

泄露原因

同上

泄露内容

  • 目录下的所有内容

利用

修复建议

使用macOS开发的同学, 可以把.DS_Store加入忽略列表中(如.gitignore), 但本质上其只是泄露目录结构, 就算删掉.DS_Store, 文件也依然存在于web服务器可以访问得到的地方, 所以治本的方法还是不要将敏感信息放在web路径中.

WEB-INF泄露

简介

在Java的Servlet文档中,说到WEB-INF目录“包含了所有web应用会用到但是不处于web路径中的资源”,也就是说,WEB-INF目录下的内容是不属于公开页面的。web应用可以通过getResource等API在servlet的上下文中访问到这些资源。

常见路径

① WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则.

② WEB-INF/database.properties : 数据库配置文件

③ WEB-INF/classes/ : 一般用来存放Java类文件(.class)

④ WEB-INF/lib/ : 用来存放打包好的库(.jar)

⑤ WEB-INF/src/ : 用来放源代码(.asp和.php等)

它里面记载了servlet以及其他组件配置文件的信息

image

利用

  • 通过web.xml文件推测应用组件相关类的名字, 然后在src目录下查找代码, 如果没有源代码可以直接下载class文件反编译即可.

修复建议

发布前确认WEB-INF目录是禁止访问的, 或者在server设置好对于的过滤规则.