附:完整笔记目录~
ps:本人小白,笔记均在个人理解基础上整理,若有错误欢迎指正!
2.3 源码信息收集
- 引子:上一篇主要介绍了与Web架构相关的信息收集,而在Web架构中有一至关重要的一环,那就是源码。Web应用中美观的ui、特色的功能全靠源码来实现,但同样的,几乎绝大多数与Web相关的漏洞都也都与其源码有关。而本篇则介绍几种常见的源码信息收集方式。
- 源码泄露
源码&配置文件泄露,往往由开发者配置不当造成,也是最容易避免与修复的。- .git 目录泄露
.git 目录往往在初始化或克隆git仓库时出现,.git 目录中完整的记录了项目版本历史、内容、变更信息等。总之,若开发者配置不当导致.git目录被泄露,则攻击者可利用其还原出完整项目源码,造成源码泄露。
Tool:https://github.com/lijiejie/GitHack
例子(使用小迪上课案例)
- .svn 目录泄露
当开发者使用SVN版本控制系统时,会在根目录下默认生成.svn目录。同.git目录一样,一旦配置不当造成了.svn目录的泄露,攻击者就可以通过泄露的.svn/entires文件对整个项目源码进行还原。
Tool:https://github.com/callmefeifei/SvnHack
例子:
- DS_Store 文件泄露
MacOS下的一种隐藏文件,由Finder(MacOS文件管理器)自动生成,用于存储文件夹的显示属性和视图设置等且每个目录下均会存在。不过与.git, .svn泄露能还原整个系统源码不同,目标即使存在DS_Store文件泄露,攻击者也仅能对DS_Store文件进行还原,意义不大。要非说作用 → 泄露源码目录结构。
Tool:https://github.com/lijiejie/ds_store_exp
例子:
- composer.json 文件泄露
composer.json文件是php依赖管理工具Composer的配置文件,用于记录php项目中的一些基本信息,如依赖、项目名称、版本、配置等信息,类似python中的requirements.txt(pip)、java中的pom.xml(maven)等。若composer.json文件泄露,可能会暴露其项目中的敏感信息。
例子:
- Webpack泄露
Webpack是一款JavaScript打包器,可以将项目中的多种文件进行打包(如JavaScript、CSS、图片等),提升项目性能&可维护性。Webpack泄露常常出现在Vue,Node.js项目中,一旦攻击者发现了Webpack泄露,则可以扒下整个前端使用Webpack打包的源码。
Tool:https://github.com/NothingCw/SourceDetector-dist (谷歌插件)
例子:
- 源码备份泄露
开发者未删除源码备份文件造成源码泄露。备份文件往往以压缩包的形式存在,访问即下载。
例子:本地Demo
- .git 目录泄露
- 代码托管平台泄露
由目标系统所加载的特殊文件&特殊信息(邮箱、手机号等),在代码托管平台如github、gitee上搜索与之相关的源码。当然,于结果而言,可能搜到也可能搜不到。也可能曾经能搜到现在搜不到,也可能未来能搜到,若是碰到了后两种情况该如何解决呢?→ 对代码托管平台进行监控。 - 源码购买
主要针对目标为中小型黑灰站,这类系统往往会在第三方平台购买现成源码搭站。而作为攻击者,我们也可以通过对比猜测目标站点可能购买了什么源码,从而获取源码信息。
这里推荐两个源码购买平台:https://www.huzhan.com/ , https://www.goofish.com/ (某鱼)