WEB中的敏感文件泄漏

 文件泄露, 根据泄漏的信息敏感程度, 在WEB漏洞中可以算是中危甚至高危的漏洞, 本篇文章就来

介绍下一些常见的泄漏, 主要分为由版本管理软件导致的泄露, 文件包含导致的泄露和配置错误导致的泄露.

版本管理软件造成的泄露

git

git可以说是当今最受欢迎的版本控制/版本管理软件了, 很多基于git的云端托管仓库都提供了
免费的托管服务, 甚至有不少还支持免费私有仓库, 如bitbucket和国内的gitosc(开源中国)等.

关键文件

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

泄露内容

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

利用方法

常规的利用方法就是下载整个目录, 然后用git命令回滚整个项目:

wget -r --no-parent --mirror http://www.example.com/.git cd www.example.com && git reset --hard

当然也有一些自动化利用的脚本:

修复建议

一般基于MVC的现代WEB框架都不会直接挂载文件, 但如果是基于PHP,ASP等语言的项目, 还是会存在安全隐患,
虽然可以通过配置WEB服务器(apache/nginx等)来拒绝对.git路径的访问, 但也会出现被意外绕过的风险.
最好的办法就是在项目新建一个www目录来存放源代码文件.

hg/Mercurial

Mercurial的意思是水银, 所以缩写成hg(汞), 也是一个版本管理软件. 用法和git有点类似, 但也保留了svn命令简明的特点,
而且原生地支持Windows/MacOS/Linux三大平台, 不像git需要MinGW才得以运行, 所以当今也有不少人偏向于用hg做版本控制.
关于他们有一些讨论, 如为什么要用hg,
为什么选hg而不是git等等, 我认为也是值得了解的.

关键文件

与git类似, hg在初始化项目时, 会在项目的根目录下创建一个名为.hg的隐藏文件夹,
里面包含了代码和分支的修改记录和开发人员的相关信息.

泄露内容

  • 项目源代码
  • 项目仓库地址
  • (可能)仓库的用户名
  • 其他

利用方法

手动利用, 下载+回滚:

wget -r --no-parent --mirror http://www.example.com/.hg cd www.example.com && hg revert

也可以用上面提到的dvcs-ripper工具来利用

修复建议

同git

svn/Subversion

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

关键文件

svn同样在项目根目录下会创建一个名为.svn的隐藏文件夹, 包含了所有分支commit信息和代码记录.

泄露内容

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

利用方法

同样是先下载目录, 然后回滚:

wget -r --no-parent --mirror http://www.example.com/.svn 
                    
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信