第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份
一、上节内容回顾
00:29
- 源码获取重要性:获取源码后可进行白盒测试(代码审计),否则只能进行效果较差的黑盒测试
- 课程主题:围绕代码获取方式展开,涉及CMS识别技术和针对性工具使用
二、资产泄漏
01:28
1. 资产泄漏原因
03:08

- 特性入口:源码本身的特性导致
- 习惯问题:管理员不良操作习惯
- 配置问题:网站配置错误
- 意识问题:安全意识不足
- 信息搜集:通过资源监控获取
2. 资产泄漏集合
03:26

- 版本控制相关:git/svn/hg源码泄露
- 配置文件:composer.json/WEB-INF/web.xml
- 系统文件:DS_Store/SWP文件
- 备份文件:网站备份压缩包
3. 应用案例
03:44
1)例题:直接获取CMS资源
03:59

- 识别原理:通过指纹特征识别网站使用的CMS系统
- 操作流程:
- 使用识别平台查询目标网站
- 获取CMS名称和版本信息
- 搜索对应源码下载
- 注意事项:
- 仅适用于有公开指纹的系统
- 大型网站(如百度)多为自研系统无法识别
2)例题:备份文件源码泄漏
14:52

- 产生原因:管理员在网站根目录直接备份
- 危害:通过扫描可获取完整源码
- 防护建议:
- 在上一级目录备份
- 使用非常规命名
- 设置访问权限
3)例题:配置不当GIT/SVN/DS_Store源码泄漏
19:49

- GIT泄漏:
- 暴露.git目录
- 使用GitHack工具可恢复完整版本库
- SVN泄漏:
- 暴露.svn目录
- 使用SvnHack工具提取
- DS_Store:
- Mac系统自动生成文件
- 包含目录结构信息
三、源码获取方法总结
- 直接获取:通过CMS识别下载官方源码
- 间接获取:
- 扫描备份文件(zip/rar等)
- 利用版本控制泄漏(git/svn)
- 解析系统文件(DS_Store)
- GitHub等平台搜索
- 测试价值:获取源码后可进行代码审计,发现更多漏洞
四、Git源码泄露
20:21
1. Git泄露定义
20:31

- 本质原因:开发者在发布代码时未删除.git目录,导致版本控制信息暴露
- 泄露内容:通过.git目录可恢复完整的源代码变更记录
- 漏洞利用工具:GitHack(项目地址:https://github.com/lijiejie/GitHack)
- 典型特征:访问目标网站/.git返回403状态码(存在但禁止访问)
- 修复建议:
- 删除.git目录
- 修改中间件配置禁止访问.git隐藏文件夹
2. 应用案例
21:17
1)例题:Git泄露案例

- 检测方法:
- 在网站URL后追加/.git路径
- 返回403状态码即存在漏洞
- 利用过程:
- 安装Python2环境
- 执行命令:python GitHack.py http://target/.git/
- 自动恢复源代码到本地目录
- 实际案例:
- 目标网站:http://121.36.49.234
- 验证存在:http://121.36.49.234/.git 返回403
- 成功恢复:获取到包括HBase、Spark等大数据相关源代码
3. 文件下河
22:04
1)Git
- 产生原因:
- 开发者使用IDE自动同步功能
- 发布时直接复制整个项目目录
- 管理员安全意识不足未清理版本控制文件
- 危害等级:
- 高危漏洞,可直接获取业务源代码
- 可能发现数据库配置等敏感信息
2)SVN
26:57

- 与Git区别:
- 版本控制系统不同但原理相似
- SVN生成的是.svn隐藏文件夹
- 检测方法:
- 访问目标/.svn/entries文件
- 利用工具:
- SvnHack(项目地址:https://github.com/callmefeifei/SvnHack)
- 利用命令:
- 典型案例:
五、应用案例
28:01
1. 例题:网站源码下载

- GIT源码泄露:
- 示例地址:http://121.36.49.234/.git/
- 利用工具:GitHack.py执行命令:D:\Python27\python.exe GitHack.py http://121.36.49.234/.git/
- SVN源码泄露:
- 示例地址:http://trafficbonus.com/.svn/entries
- 利用工具:SvnHack.py执行命令:python SvnHack.py -u http://trafficbonus.com/.svn/entries -download
- DS_Store文件泄露:
- 示例地址:http://zhuchao.yslts.com/.DS_Store
- 利用工具:ds_store_exp.py执行命令:D:\Python27\python.exe ds_store_exp.py http://zhuchao.yslts.com/.DS_Store

- 工具使用要点:
- 需要进入工具所在目录执行命令
- 注意Python环境版本兼容性(示例中使用Python2.7环境)
- 实际操作中需确认漏洞是否存在后再进行利用
六、课程回顾
28:19

- 操作验证流程:
- 先测试目标是否存在漏洞("我们来试一下发问这个例子,看它是否存在")
- 使用真实案例进行演示("我这都是找的真实的...它是有用武之地的")
- 强调工具的实际应用价值

- 环境配置注意:
- 明确工具存放路径("找到这个脚本工具下载的目录")
- 注意Python版本差异("因为我的环境变量呢,拍子呢是拍子三的,他不支持")
- 需要手动指定Python2解释器路径执行
七、SvnHack辅助工具
28:42
1. SvnHack辅助工具介绍

- 功能概述:用于检测和利用SVN信息泄露漏洞,可列取网站目录、读取源码文件及下载整站代码
- 核心参数:
- -u/--url:指定SVN目标地址(如http://x.x.x.x/.svn/entries)
- -d/--dic:列出指定目录内容
- -r/--read:读取特定文件内容
- --download:下载整个站点代码
- 执行要点:必须使用-u参数指定目标地址,否则会报错(演示中因漏写参数导致执行失败)
2. 应用案例
28:54
1)例题:网站目录下载
- 操作流程:
- 执行python SvnHack.py -u http://trafficbonus.com/.svn/entries --download
- 自动创建目录结构并下载文件(国外站点下载速度较慢)
- 获取加密/未加密的源码文件(如.php文件可查看业务逻辑)
- 漏洞成因:开发者未删除版本控制目录(.svn)导致源码泄露
- 典型特征:恢复的源码中可能包含配置文件、数据库连接信息等敏感内容
2)例题:DNS配置不当文件下载
31:30

- 文件特性:Mac系统自动生成的隐藏文件,记录目录结构
- 利用方法:
- 使用ds_store_exp.py脚本检测(示例:http://zhuchao.yslts.com/.DS_Store)
- 可获取网站真实目录结构(演示中成功恢复QQ官网历史目录)
- 实战价值:适用于Mac开发的网站,但现代网站已较少存在此问题
3)例题:common gs配置文件
35:00
- 文件作用:PHP项目的依赖声明文件(类似Java的pom.xml)
- 信息价值:
- 包含框架名称(如ThinkCMF)、版本号、插件信息
- 示例:通过composer.json识别出ThinkCMF系统
- 检测方法:直接访问/composer.json路径
- 适用场景:仅限PHP项目,其他语言项目不适用
4)例题:配置文件泄露
41:15

- 文件定位:Java Web应用的WEB-INF/web.xml文件
- 关键信息:
- Servlet映射关系(示例中/heap.do对应com.example.demo.HelloController)
- Class文件存储路径(/WEB-INF/classes/)
- 利用限制:
- 需配合文件下载漏洞(如示例中的download?filename=参数)
- 单独获取配置文件无法直接下载class文件
- CTF应用:在RoarCTF 2019-EasyJava题中,通过下载web.xml找到flag控制器路径
3. 知识点拓展
48:00
- 漏洞成因分析:源码泄露主要源于五个方面:备份文件习惯、开发环境残留、版本控制疏忽、管理员意识薄弱以及特性文件未清理。
- 实战思维培养:看似不重要的知识点往往隐藏解题突破口,关键在于理解漏洞产生原理和适用条件,例如通过特性文件(如.git/.svn)获取源码。
- 信息关联技巧:通过js文件中的版权信息、邮箱等线索,在代码托管平台反向关联可能泄露的源码项目。
4. 应用案例
51:34
1)例题:GitHub泄露
- 搜索策略:
- 使用域名/邮箱等关键字段在代码库中检索
- 结合filename:限定文件类型,如filename:web.xml
- 通过stars:筛选热门项目提高命中率
- 信息挖掘:
- 博客域名→关联GitHub账号→发现62个相关代码库
- 开发者ID→定位历史项目→获取swp备份文件
- 自动化监控:建立脚本持续监控新提交,第一时间获取目标关联代码更新。
2)例题:网站源码下载
55:55
- 线索发现:
- 从网页加载的js文件中提取版权信息
- 捕获扫描工具输出的管理员邮箱
- 逆向追踪:
- 将zblog版权文本作为关键词全网搜索
- 在GitHub发现3个相同声明的源码项目
- 防御建议:
- 删除源码中的敏感注释和测试账号
- 使用代码混淆工具处理前端js文件
- 定期审计网站目录下的临时文件
八、信息收集方法
01:07:23
1. 中间件判断方法
- 路径后缀观察法:通过查看URL路径的后缀特征来判断使用的编程语言(如.php/.jsp等)
- 搜索引擎检索法:利用搜索引擎查找特定脚本特征(如搜索"powered by WordPress")
- 答卷组合推算法:通过数据包特征和端口服务组合分析进行技术栈推测
2. 操作系统识别
- 大小写敏感测试:通过文件路径大小写测试判断操作系统类型(Linux区分大小写,Windows不区分)
- TTL值分析:通过网络数据包的TTL初始值判断操作系统(如Linux默认64,Windows默认128)
3. 源码分类与获取
1)源码三大类型
- CMS开源系统:具有标准化结构和公开漏洞库(如WordPress、DedeCMS)
- 商业闭源系统:需通过授权获取,漏洞信息较少(如Oracle产品)
- 自主开发系统:定制化程度高,需针对性分析
2)源码获取途径
- 正规渠道获取:
- 开源CMS:直接官网下载
- 商业系统:合法购买授权
- 非常规渠道获取:
- 黑产源码:需通过特定暗网渠道获取(如博彩/诈骗类系统源码)
- 历史漏洞利用:通过已知漏洞获取源码包
4. 域名收集技巧
- 相似域名挖掘:通过主体名称变形发现关联域名(如taobao.com vs taoba0.com)
- 反常域名识别:观察非常规域名组合(如数字+随机字母组合)
- 旁站查询技术:通过IP反查发现同服务器其他站点
5. 信息收集价值
- 漏洞利用基础:源码分析可发现已知漏洞和自定义漏洞
- 攻击面扩展:通过子域名/旁站发现更多渗透入口
- 防御规避:了解系统架构可定制化攻击载荷避免触发防护
九、知识小结
| 知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
| CMS识别技术 | 通过指纹识别(如版权信息、文件特征)或工具(如任希平台)确定网站使用的CMS程序 | 需区分开源CMS、商业程序与自主研发系统的识别差异 | ⭐⭐ |
| 源码泄露途径 | 1. 备份文件泄露(如www.zip) 2. 版本控制泄露(.git/.svn目录未删除) 3. 配置不当(如DS_Store、web.xml文件暴露) 4. 开发者习惯(如composer.json泄露PHP框架信息) 5. 托管平台泄露(GitHub/Gitee敏感信息搜索) | 备份文件路径错误与版本控制工具恢复原理是实操难点 | ⭐⭐⭐ |
| Git/SVN泄露利用 | 使用工具(GitHack/SVNExploit)恢复历史代码,需存在.git或.svn目录且可访问 | 四零三状态码可能表示目录存在但无权限 | ⭐⭐⭐⭐ |
| 黑盒与白盒测试对比 | 白盒测试(源码审计)效率高于黑盒,但依赖源码获取能力 | 源码获取是安全测试的关键前置步骤 | ⭐⭐ |
| GitHub信息搜集 | 通过关键字(域名、邮箱、JS文件名)搜索公开代码库,关联目标资产 | 需掌握高级搜索语法(如site:、filename:) | ⭐⭐⭐ |
| Web.xml文件利用 | JAVA应用中通过下载漏洞获取web.xml,解析路径结构后下载class文件 | 需配合文件下载漏洞,实战中较少独立生效 | ⭐⭐⭐⭐ |
| 违法类源码获取 | 需通过黑色产业渠道搜索,与正规CMS获取逻辑完全不同 | 法律风险与资源获取难度是核心限制 | ⭐⭐⭐⭐⭐ |