网站源码泄露

我最近做ctf时又找到了一个知识盲区–网站源码泄露。以前对源码的了解只是简单的F12,能看到的就是源码。但这些源码都是前端的,真正有价值的是后端源码,或准确来说是后端源码中包含的数据库信息,或者结构中可能存在的漏洞。要想获得这些信息,以前我只了解过文件包含,但这个实施起来难度比较大,但现在了解的网站源码泄露,使用工具即可,操作简单同时难度更小,范围更广。

暂时了解到的源码泄露种类有svn泄露和git泄露两种,其他的人为疏忽泄露也有,比如文件备份压缩包使用默认名称(archive.tgz)或未及时删除从而被获取。另外未对文件设置权限也存在风险,如js等文件或cms配置文件被读取或多或少也会泄露信息。

SVN源码泄露

我对于SVN管理系统没多少深入了解,先概括性介绍一下:

SVN是Subversion的简称,是一个开放源代码的版本控制系统。如同GitHub管理项目一样,它会记录每一次文件的变更信息,方便版本恢复或查看变动信息。

但管理员的操作疏忽可能会造成源码泄露:

SVN的repository(源代码库)是源码统一存放的地方,checkout(受控检出)和export(不受控导出)。

如果要从SVN导出一个项目部署到服务器,一般使用export导出部署。然而某些管理员直接在SVN复制文件夹到网站(或使用checkout导出的文件夹),使得文件夹包含.svn隐藏文件夹,并暴露在外网中。这.svn隐藏文件夹里包含重要的源代码信息,可能被黑客获取到服务器源码,数据库账号密码及SVN信息。

获取这些泄露的信息也不难,我使用的是”Seay-SVN源代码泄露漏洞利用工具”,在工具内添加”目标网站/.svn/entries“进行扫描,工具即可自动扫描出泄露文件。

git源码泄露

套用网上的原话来描述:

在运行git init初始化代码库的时候,会在当前目录下面产生一个.git的隐藏文件,用来记录代码的变更记录等等。在发布代码的时候,把.git这个目录没有删除,直接发布了。使用这个文件,可以用来恢复源代码。

工具:githack
GitHub地址:https://github.com/lijiejie/GitHack
使用方法:**python githack.py [目标网站]/.git/**

实现原理

在.git文件夹内,有一个HEAD文件,这是一个类似于档案的文件,里面的信息经过加密保存,记录着项目的变动,也记录着文件名等关键信息。githack先获取这个HEAD文件,然后解密,得到文件名,即存放在服务器上的敏感文件。然后访问进行下载保存,从而获取网站完整源码。

实际操作

刚好我是因为一道ctf题目才了解到这方面的,所以贴上ctf题目: http://106.75.72.168:9999

打开网站,只见到一个简单的helloworld,F12查看源码标出了一个js路径,但并不能访问。在页面添加后缀/.git访问,发现403,可知是git源码泄露类题目(git源码泄露在ctf比较常见),使用工具获取泄露源码。

成功下载到本地:

然后这道ctf剩下的解题步骤我就不会了…

发表评论

电子邮件地址不会被公开。 必填项已用*标注