谈谈源码泄露 · WEB 安全

向作者提问
安全爱好者,《PHP WEB安全开发实战》作者
查看本场Chat

1. 漏洞成因

在WEB安全体系当中,可能你对SQL注入,XSS跨站一些漏洞已经耳熟于心了,而源码泄露问题对于大部分开发者来说就相对陌生了,而源码泄露导致的问题却并不少见,在过往的泄露案例当中,不仅是小网站有此问题,在一些大的厂商同样出现不少,并因此拿到webshell。

比如在一些小型企业,可能公司并没有专门的服务器,而是把网站部署在某一个虚拟主机上面,代码文件比较多的时候FTP上传是比较慢的,于是开发者把代码先打包压缩后再上传,上传成功后再去服务器解压,这有虽然解决了上传速度慢的问题,不过却留下了一些安全隐患。

压缩包解压后如果没有删除,当攻击者发现后就可以把代码压缩包下载;因为部署到服务器上的都是源代码,这个时候攻击者就可以通过代码进一步挖掘一些安全漏洞:文件上传,SQL注射等。

2. GIT源码泄露

2.1 漏洞成因

当在一个空目录执行 git init 时,Git 会创建一个 .git 目录。 这个目录包含所有的 Git 存储和操作的对象。 如果想备份或复制一个版本库,只需把这个目录拷贝至另一处就可以了。

该目录的结构如下所示:

HEAD

config*

description

hooks/

info/

objects/

refs/

在这些结构中description 文件仅供 GitWeb 程序使用,我们可以无需关心。

  • config 文件包含项目特有的配置选项。

  • info 目录包含一个全局性排除(global exclude)文件,用以放置不希望被记录在 .gitignore 文件中的忽略模式(ignored patterns)。

  • hooks 目录包含客户端或服务端的钩子脚本(hook scripts)

而在剩下的四个条目很重要:

  • HEAD 文件指示目前被检出的分支;

  • index 文件保存暂存区信息;

  • objects 目录存储所有数据内容;

微信扫描登录