CTF中常见源码泄露
SVN源码泄露
SVN(subversion)是源代码版本管理软件,造成SVN源代码漏洞的主要原因是管理员操作不规范。“在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,黑客可以借助其中包含的用于版本信息追踪的‘entries’文件,逐步摸清站点结构。”(可以利用.svn/entries文件,获取到服务器源码、svn服务器账号密码等信息)
更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码。
利用工具SvnHack
git源码泄露
Git是一个开源的分布式版本控制系统,在执行git init
初始化目录的时候,会在当前目录下自动创建一个.git
目录,用来记录代码的变更记录等。发布代码的时候,如果没有把.git
这个目录删除,就直接发布到了服务器上,攻击者就可以通过它来恢复源代码。
利用工具GitHack
py -2.7 GitHack.py -u |
hg源码泄露
Mercurial 是一种轻量级分布式版本控制系统,使用 hg init的时候会生成.hg文件
利用需要perl
github项目地址:https://github.com/kost/dvcs-ripper
perl rip-hg.pl -v -u url |
cvs漏洞泄露
CVS是一个C/S系统,是一个常用的代码版本控制软件。主要在开源软件管理中使用。与它相类似的代码版本控制软件有subversion。多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。CVS版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。但是由于之前CVS编码的问题,大多数软件开发公司都使用SVN替代了CVS。主要是针对 CVS/Root以及CVS/Entries目录,直接就可以看到泄露的信息。
http://url/CVS/Root 返回根信息
http://url/CVS/Entries 返回所有文件的结构
利用
github项目地址:https://github.com/kost/dvcs-ripper.git
运行示例:
perl rip-cvs.pl -v -u http://www.example.com/CVS/ |
Bazaar/bzr泄露
原理
Bazaar(bzr)是另一个开源的 DVCS(Distributed Version Control System,即分布式版本控制系统),它试图给 SCM(Source Code Management,即源码管理) 的世界里带来一些新的东西。
bzr 是 Canonical 公司支持的一个项目,也就是 Ubuntu Linux 的发行公司。简单来说,bzr 是用 python 编写的,用于版本控制。
利用
perl rip-bzr.pl -v -u http://www.example.com/.bzr/ |
网站备份压缩文件
管理员将网站源代码备份在Web目录下,攻击者通过猜解文件路径,下载备份文件,导致源代码泄露。
常见备份文件后缀
.index.php.swp |
WEB-INF/web.xml 泄露
WEB-INF是Java的WEB应用的安全目录,如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
WEB-INF 主要包含一下文件或目录:
WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则. |
通过找到 web.xml 文件,推断 class 文件的路径,最后直接 class 文件,再通过反编译 class 文件,得到网站源码。
SWP 文件泄露
swp即swap文件,在编辑文件时产生的临时文件,它是隐藏文件,如果程序正常退出,临时文件自动删除,如果意外退出就会保留,文件名为 .filename.swp。
漏洞利用:直接访问.swp文件,下载回来后删掉末尾的.swp,获得源码文件。
github源码泄露
GitHub是一个面向开源及私有软件项目的托管平台,很多人喜欢把自己的代码上传到平台托管。攻击者通过关键词进行搜索,可以找到关于目标站点的敏感信息,甚至可以下载网站源码。
github常见搜索语法
in:name test #仓库标题搜索含有关键字 SpringCloud |
Google邮箱搜索
使用 Github 进行邮件配置信息收集
很多网站及系统都会使用 pop3 和 smtp 发送来邮件,不少开发者由于安全意识不足会把相关的配置信息也放到Github上,所以如
果这时候我们动用一下google搜索命令语句,构造一下关键字,就能把这些信息给找出来了。
site:Github.com smtp |
数据库信息搜集
site:Github.com sa password |
.DS_Store泄露
.DS_Store 文件利用 .DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单。
利用
github项目地址:https://github.com/lijiejie/ds_store_exp
使用下载后,进入目录更新python2库
pip install -r requirements.txt |