1.5 信息泄露

在网站开发者开发网站的过程中,或多或少会在上传到服务器可供外网访问的代码中遗留一些敏感文件或者信息,这些文件一旦被攻击者掌握,可能就会造成不可预料的后果。本节将对信息泄露这一种类的漏洞做出讲解。

1.5.1 Dirsearch扫描器使用

Dirsearch是一个目录扫描器,可以使用它来扫描网站上的敏感文件。命令格式如下:

• -u:指定扫描的URL。

• -e:指定扫描的扩展名。∗为通配符。

• -w:指定字典。

比如:

以上命令是对https://url这个网站发起扫描,并使用Kali Linux自带的字典对所有有扩展名的文件进行扫描。

1.5.2.git与.svn泄露与利用

下面让我们来简单地了解一下什么是Git。Git是目前世界上最先进的分布式版本控制系统之一,在项目开发中十分常见。例如,多人协作开发项目时出现了问题,想将代码回退到某个点,回退操作需要在每次代码修改前都备份一次,这样出了问题就可以回退到上一版本,但当多人同时编辑时就不太好处理了,这时Git就解决了这个问题。每个用户使用Git提交代码,当前版本增加了哪些内容,删除了哪些内容都会被记录下来,并且可以随时回退,这样一来就大大提升了开发效率。

那么什么是Git源码泄露呢?当运行git init来初始化代码库时,便会在当前目录下生成一个.git的隐藏文件夹用于记录代码的变更等。设想这样一种情况,如果.git文件夹在发布时未删除,在Web目录下一起投入使用,这个目录中的内容可以被任意访问者直接访问到,那么你的项目源码就泄露了。因为攻击者可以通过访问.git文件夹来恢复出Web的源码。

对于Git源码泄露的利用,可以使用GitHacker这个工具。主要命令如下:

其中,http://127.0.0.1/.git/就是我们的目标地址,result就是我们要把源码下载到的目录。运行之后稍等片刻,源码就会出现在那个目录里了。

介绍完Git,再来介绍一下SVN。SVN类似于Git,也是一个版本控制系统,主要用于协作开发。和Git源码泄露的原理类似,使用svn checkout后,当前项目目录下会生成.svn隐藏文件夹,如果未删除就和项目一起发布了,攻击者便可借此恢复出项目源码。

和Git源码泄露一样,SVN源码泄露也有对应的利用工具——svnExploit。

检测目标是否存在SVN源码泄露的命令如下:

后面追加-dump参数即可把源码下载下来。

1.5.3 其他源码泄露

除了上面提到的几种源码泄露,在CTF中也还有一些其他的源码泄露类型值得留意。

下面是备份文件泄露。此种泄露一般是由于网站管理员为了方便,直接在服务器上打包备份网站文件,还把这个压缩文件放在了网站根目录或者子目录下便于访问下载造成的。常见的备份文件名有:www.zip/tar.gz/rar、bak.zip/tar.gz/rar、web.zip/tar.gz/rar和index.php.bak。

当vi编辑文件时,vi会生成一个交换文件,如果这个文件可以被访问到,那么就可以依据这个文件恢复出被编辑文件的内容。例如,我们在用vi编辑index.php时,同级目录下就可能出现如下这些文件:.index.php.swp、.index.php.swo和.index.php.swn。

通过输入“vi-r.index.php.swp”即可将文件内容恢复。

接下来再来介绍DS_Store文件泄露。如果使用过macOS编写过网站,当你编写完代码,将这些文件打包上传到服务器或者发送给其他人时,可能就会发现当前目录下多出了一个名为. DS_Store的文件。这个文件是macOS的Finder缓存文件,用于存储当前目录下文件的摆放位置等信息。如果攻击者能拿到这个文件,那么就可以获取到当前目录的文件列表,从而发起进一步攻击。

执行如下命令即可在存在DS_Store文件的网站上获取到目录下的文件列表:

1.5.4 实战练习

我们来看“[Web入门]粗心的小李”这道题。

进入题目,看到主页上有git字样,从而可以想到这题可能和Git有关,继而想到Git源码泄露。那么如何判断存在Git源码泄露呢?访问/.git/,如果显示是403,就可能存在源码泄露,如图1-41所示。

图1-41 访问.git返回403 Forbidden

接着用GitHacker去恢复文件,使用如下命令,如图1-42所示。

图1-42 GitHacker运行输出目录

可以看到多出来一个文件夹,进入该文件夹查看,如图1-43所示。

发现恢复了一个index.html,cat index.html后发现了flag,如图1-44所示。

图1-43 列目录

图1-44 获得flag