小迪安全2023-2024|第14天:信息打点-JS架构&框架识别&泄漏提取&API接口枚举&FUZZ爬虫&笔记|web安全|渗透测试|
一、前端JS打点00:06
1. 业务资产分类00:35

- Web资产:包括语言/CMS/中间件/数据库/系统/WAF等
- 系统资产:包含操作系统/端口服务/网络环境/防火墙等
- 应用资产:涉及APP对象/API接口/微信小程序/PC应用等
- 架构资产:涵盖CDN/前后端/云应用/站库分离/OSS资源等
- 技术资产:包含Js爬虫/敏感扫描/端口扫描/源码获取/接口泄漏等技术手段
2. JS渗透测试02:34
1)什么是JS渗透测试

- 核心概念:在Javascript中寻找可控变量和函数调用可能导致的参数漏洞
- 白盒特性:JS开发的WEB应用即使没有源代码,也能通过浏览器查看真实代码点,相当于自带源码参考
- 测试重点:主要寻找URL地址、分析代码逻辑(加密算法、APIkey配置、验证逻辑等)
- 前后端区别:
- 后端语言(PHP/JAVA/.NET)浏览器端看不到真实源代码
- 前端语言(JS及框架)浏览器端可直接查看源代码
2)流行JS框架

- 常见框架:Vue、NodeJS、jQuery、Angular等
- 判定方法:
- 使用插件wappalyzer检测
- 源代码简短且引入多个js文件
- 通常有/static/js/app.js等顺序文件
- cookie中常见connect.sid标识
3)信息获取方法

- 手工方式:通过浏览器直接搜索分析
- 半自动:使用Burpsuite插件(JS Link Finder & JS Miner)
- 自动化:各类提取&FUZZ项目工具
- 价值信息:重点关注源码泄漏、未授权访问、敏感key泄漏、API接口安全等
3. 演示案例14:37
1)手工分析模式15:26

- 分析步骤:
- 判断是否为JS开发应用
- 查看加载的js文件名(如admin、login等关键文件)
- 分析文件内容寻找敏感信息(如源码泄漏、加密逻辑等)
- 典型案例:
- 发现ThinkAdmin后台管理系统
- 识别md5加密处理逻辑
- 定位登录验证码刷新机制
2)常见分析目标19:44
- 关键函数:重点关注$.ajax等网络请求函数
- 接口特征:查找http://service.httppost等接口地址
- 敏感信息:挖掘APIkey、加密算法、验证逻辑等代码段
- 工具推荐:
- HaE:基于正则匹配的高亮标记插件
- Unexpected_information:敏感信息标记工具
二、JS文件分析与路径挖掘19:53
1. JS文件获取方法20:00

- 手工获取:通过浏览器开发者工具直接搜索JS文件,如查找/static/js/app.js等常见路径
- 半自动工具:使用Burpsuite插件辅助扫描,可识别connect.sid等关键cookie信息
- 自动化工具:利用FUZZ项目批量探测JS文件路径,效率更高但可能产生较多噪音
2. 路径地址与未授权访问20:30
- 搜索目的:通过JS文件查找隐藏的API接口路径和连接地址,如admin/in或top/deadada等非常规路径
- 典型场景:在JS代码中发现src="admin/top.go"等路径后直接访问,可能绕过登录验证实现未授权访问
- 价值信息:路径中可能包含method: "get"、http.post(等关键请求方法,暴露系统接口调用方式
3. 前端架构分析与插件使用20:40

- 插件组合:
- HaE:用于高亮显示异常响应
- Unexpected information:捕获非常规信息泄露
- JS Link Finder:专用于JS文件中的链接提取
- 环境配置:需要jython-standalone-2.7.2作为插件加载基础环境
4. 代码搜索与路径发现21:00
- 关键词搜索:
- src=:查找资源引用路径
- $.ajax:定位AJAX请求端点
- http.get(:发现直接HTTP调用
- 分析技巧:
- 注意未完整显示的路径,如src="+ret.data.image+"需要动态拼接
- 关注layui.use等框架特有的模块加载语法
- 检查window.onhashchange等事件处理函数中的路径逻辑
5. 示例网站分析22:00

- 典型漏洞:在login.js中发现$.ajax({url: "/admin/common/login.shtml"...暴露后台登录接口
- 信息关联:备案信息粤ICP备2021068834号-1等元数据可辅助资产识别
- 框架特征:layui-v2.5.6等版本信息有助于漏洞匹配
6. 路径泄露与搜索技巧23:00
- 高效搜索:
- 优先检查/static/目录下的JS文件
- 重点搜索method: "get"等HTTP方法定义
- 注意http://service.httpget等硬编码服务地址
- 验证方法:
- 对发现的路径直接浏览器访问测试
- 使用Burpsuite的Engagement tools->Find scripts功能批量验证
- 结合Wappalyzer识别到的框架特征进行针对性搜索
三、登录操作24:02

- 请求实现:通过
.ajax方法向"/admin/common/login.shtml"发送POST请求,表单数据使用.ajax方法向"/admin/common/login.shtml"发送POST请求,表单数据使用.ajax方法向"/admin/common/login.shtml"发送POST请求,表单数据使用
('#login').serialize()序列化 - 验证机制:前端验证码非空检查(data.captcha ''时弹出提示),验证通过后根据返回的res.code判断跳转(code1时跳转res.url)
- 调试工具:使用Chrome DevTools中文版进行Elements/Console/Sources/Network等面板调试,演示了DOM断点设置和调用栈查看
四、后台管理登录24:19
1. 登录功能实现与调试24:26

- 请求分析:Network面板显示20个请求共153KB资源,DOM加载时间177ms,包含jquery.min.js(321.3kB)等关键资源
- 安全验证:登录操作未泄露敏感信息,演示了请求地址刷新和参数检查过程
- 调试技巧:使用Preserve log保持日志,Disable cache禁用缓存进行准确调试
2. 登录相关安全与设置问题24:47

- 设备限制:系统检测到登录设备数量超限,提示"请至个人中心进行设置"
- 安全策略:展示了Windows设备登录记录(包含设备ID、地域、有效期等信息)
- 第三方组件:系统使用HaE插件和jython-2.7.2插件加载器进行安全检测
3. 登录过程中的错误与解决25:12
- 路径分析:需要跟踪代码换算真实路径(如server点对应实际路径),演示了通过jsfinder工具查找路径
- 常见接口:
- 登录接口:/admin/common/login.shtml
- 验证码接口:需通过代码分析确定
- 密码修改接口:通过字面意思识别
- 分析方法:
- 需要具备代码跟踪能力
- 学会分析函数调用关系
- 注意绝对路径与相对路径的转换
- 通过搜索功能辅助定位关键代码段
五、bupsuit插件29:38
1. bupsuit插件的使用30:14
- 单自动应用模式:演示bupsuit的基本操作模式,通过代理开启和网站刷新来捕获数据包
- 目标分析功能:在目标区域右键选择"find scripts"功能,可自动显示访问网站时触发的脚本和路径
- 插件安装方法:
- 官方插件通过商店直接安装(js like find和js两个插件)
- 第三方插件(hre和u磊)需手动添加,选择对应目录进行安装
2. bupsuit插件的功能34:40
- 自带功能:
- 自动捕获网站访问时触发的脚本和路径
- 提供基础的数据包分析界面
- 官方插件功能:
- js like find:用于查找特定脚本
- js:增强JavaScript分析能力
- 第三方插件功能:
- hre:标记请求包中的敏感信息(如js接口和特殊信息)
- u磊:筛选并高亮显示关键数据包,便于快速识别重要信息
3. bupsuit插件的介绍40:22
- 规则配置:
- 通过config ye ML文件配置匹配规则
- 可自定义关键字(如email、电话号码等)和对应颜色标记
- 实际应用:
- 自动识别js文件中的敏感信息(如username、email等)
- 快速发现潜在的安全问题(如信息泄露、路径泄露等)
- 示例:发现username字段可帮助分析代码作用,发现email地址可识别信息泄露风险
- 工作模式:
- 半自动模式:通过插件获取信息,需人工确认风险
- 全自动模式:完整自动化分析流程(未完全演示)
六、findsomething插件45:16
1. findsomething插件的使用45:58
- 安装方法:需在开发者模式下勾选"加载已解压的扩展程序",选择包含find something项目的文件夹目录
- 置顶操作:安装后需将项目置顶显示,方便快速访问
- 核心功能:
- 自动识别网页加载的JS文件中涉及的域名
- 提取JS代码中的敏感信息如手机号、路径等
- 分析JS算法(如MD5加密)和文件加载路径
2. findsomething插件的介绍49:43
- 工作原理:模拟人工分析过程,自动扫描JS文件内容
- 典型发现:
- 密码相关路径(如password=123456)
- 用户登录/注册接口(user login等)
- 后台管理路径(如admin、system_center)
- 使用技巧:
- 通过状态码判断未授权访问漏洞
- 对比页面标题差异识别安全绕过风险
- 重点关注upload_action等特殊路径
七、jsfive老牌常用插件50:35
1. jsfive老牌常用插件的介绍50:37
- 特点:使用最广泛但功能相对基础
- 局限性:
- 分析深度不足
- 信息提取效率较低
- 需要配合其他工具使用
- 适用场景:简单的JS文件初步筛查
八、ulul_fido插件56:17
1. ulul_fido插件的介绍
- 优势:
- 无需Python环境,开箱即用
- 分析深度和广度显著提升
- 可视化结果展示(带颜色标记)
- 检测内容:
- 敏感信息(邮箱、电话等)
- 外部域名依赖(平均发现11个外部域名)
- 接口路径(400+信息点/次扫描)
2. ulul_fido插件的使用56:58
- 基本命令:直接加目标地址参数(-u)
- 深度扫描:支持-d参数进行更深入分析
- 结果解读:
- 重点关注非200状态码的路径
- 对比不同工具的分析结果
- 验证疑似漏洞路径(如/excel导出功能)
- 注意事项:
- 数据量过大时需限制扫描范围
- 敏感目标需谨慎测试
- 建议配合人工验证使用
九、ffuf和pakc_fuzz01:04:15
1. ffuf插件01:04:21
1)功能特点
- 专业用途: 专门用于fuzz测试的强大工具,通过爆破方式发现隐藏资源
- 工作原理: 使用字典文件对目标路径进行暴力枚举,返回存在的资源路径
- 典型应用: 主要用于发现网站未直接引用的JS文件,扩大信息收集范围
2)使用演示01:04:25
- 字典来源: 提供专用字典下载站点,包含各类文件命名字典(如SBX字典、DR扫描字典、HTML字典等)
- 字典示例: JS字典包含45.1M大小,最后更新于去年12月28日
- 基本语法:
- 其中FUZZ为占位符,-t指定线程数
- 结果解析:
- 返回状态码200表示存在该路径
- 示例测试中扫描出241万条可能路径
- 实际演示中发现login.js等隐藏JS文件
- 价值分析:
- 页面默认加载的JS通常只有7-8个
- 通过爆破可发现额外JS文件(如演示中发现pep.js、one.js等)
- 更多JS意味着更多潜在的信息泄露点
2. webpack插件01:15:32
1)工具定位
- 专用对象: 针对使用webpack打包器的JS项目
- 项目热度: GitHub上获得8k星标,属于高关注度项目
- 检测前提: 目标网站必须使用webpack打包技术
2)使用方式
- 基本命令:
- 工作流程:
- 自动分析webpack打包结构
- 提取内部JS文件
- 检测安全漏洞(如敏感信息泄露、未授权访问等)
- 生成详细报告
- 输出内容:
- 风险等级分类(高危、中危等)
- 具体漏洞描述(如演示中发现arc case k相关敏感信息)
- 涉及的JS文件列表
3)价值说明
- 与传统区别: 不是直接分析JS内容,而是解析打包结构
- 效率优势: 自动化检测打包后代码的安全问题
- 局限说明: 仅适用于webpack打包的项目,非通用解决方案
十、工具实际案例应用01:22:44
1. JS文件分析实战
- 核心目的: 从JS文件中提取敏感信息,包括URL路径、接口信息、配置密钥等
- 分析方法:
- 人工搜索关键字(如access key、database host等)
- 使用插件自动检测敏感信息(如个人邮箱、身份证号等)
- 识别框架类型(如检测到v1框架)
- 常见发现:
- 阿里云access key
- 腾讯云数据库配置(host、port、password)
- 未授权访问接口路径
- 敏感业务逻辑代码
2. JS渗透测试原理
- 未授权访问:
- 通过JS分析获取更多URL
- 确定接口访问路径
- 发现配置信息泄露(如短信应用密钥、数据库凭证)
- 接口安全:
- 分析代码中的加密提交方式
- 追踪参数传递逻辑
- 识别业务关键流程(如登录验证机制)
3. 工具分类与功能
- 分析类工具:
- 从表现层JS提取URL和敏感数据
- 支持子域名发现、接口路径提取
- 示例功能:高亮显示关键信息
- 探测类工具:
- 通过fuzz技术发现隐藏JS文件
- 批量爆破可能存在的JS资源
- 扩大信息收集范围
- 框架检测工具:
- 识别JS打包器类型
- 分析webpack等构建工具配置
- 辅助逆向工程
4. 开发视角的重要性
- 代码逻辑分析:
- 理解登录流程(提交地址、触发机制)
- 逆向业务关键路径
- 需要基础开发经验支撑
- 渗透测试价值:
- 发现配置信息泄露风险
- 识别未授权访问漏洞
- 辅助接口安全测试
- 后续案例方向:
- JS渗透测试实战演示
- 开发简单案例理解原理
- 工具组合使用技巧
十一、JS安全测试核心知识点01:30:19
1. JS信息提取方法
- 三大核心问题:
- 如何从表现层JS中提取关键信息
- 如何通过fuzz技术从地址中提取未知JS文件
- 如何对JS开发框架(如webpack)进行安全测试
- 价值信息类型:
- 配置信息(如API密钥、数据库连接信息)
- 未授权访问端点
- 隐藏的业务逻辑接口
- 加密算法实现细节
2. JS信息获取策略
- 双重获取路径:
- 横向扩展:通过爆破发现更多JS文件
- 纵向深入:从已知JS中挖掘深层信息
- 典型应用场景:
- 源码泄露(如.git目录暴露)
- 敏感数据硬编码(测试账号密码)
- 接口未授权访问漏洞
3. JS应用识别方法
- 判定特征:
- 使用Chrome插件检测JS框架特征
- 分析不同路径的JS加载差异(如博客系统与后台系统)
- 检查页面元素生成方式(动态渲染比例)
4. 测试技术体系
1)人工分析方法
- 操作流程:
- 筛选固定JS文件(如main.js、app.js)
- 全局搜索关键词(API、token、password等)
- 分析加密函数实现(如
CryptoJS.AESCryptoJS.AESCryptoJS.AES
)
- 搜索关键词:
- 敏感配置:
configconfigconfig
,
secretsecretsecret - 接口端点:
api/v1api/v1api/v1
,
endpointendpointendpoint - 调试信息:
console.logconsole.logconsole.log
,
debuggerdebuggerdebugger
- 敏感配置:
2)工具自动化方案
- 推荐工具组合:
- JSFinder(标签信息提取)
- URLFuzzer(未知JS发现)
- Webpack逆向工具
- 特殊要求:
- 需要加载专用字典(如百词斩字典)
- 注意浏览器插件与独立工具的配合使用
5. 框架安全特性
- 常见风险点:
- 源码映射文件(.map)泄露
- 开发模式未关闭(
NODEENV=developmentNODE_ENV=developmentNODEENV=development
) - 依赖组件已知漏洞(如旧版jQuery)
- 前后端差异:
- 前端加密可能被逆向(如AES密钥硬编码)
- 动态加载内容需追踪网络请求
- XSS漏洞更易发生在JS渲染环节
6. 实战注意事项
- 测试伦理:
- 对真实站点测试需打码敏感路径
- 禁止未授权测试生产环境
- 效率技巧:
- 优先使用浏览器插件快速筛查
- 对webpack打包应用使用专用解包工具
- 建立关键词字典提高搜索效率
十二、知识小结
| 知识点 | 核心内容 | 重点/易混淆点 | 难度系数 |
| JS打点概念 | 从前端JS代码中提取敏感信息、接口地址和逻辑漏洞 | 与后端源码的区别:JS代码浏览器可见/后端代码服务器运行 | ⭐⭐ |
| JS框架识别 | 使用插件识别Vue/jQuery等框架 | CMS可能混合使用前后端技术 | ⭐ |
| 人工分析方法 | 1. 筛选关键JS文件; 2. 全局搜索敏感关键字(src/api/login等) | 需具备基础JS代码阅读能力 | ⭐⭐⭐ |
| 半自动工具(BurpSuite) | 1. 自带脚本分析功能; 2. 官方插件(JS Link Finder); 3. 第三方插件(HAE/U-LEE) | 插件规则配置与颜色标记解读 | ⭐⭐ |
| 全自动工具 | 1. JSFinder/URLFinder(路径提取); 2. ffuf(爆破JS路径); 3. Webpack打包分析 | URLFinder支持深度关联分析 | ⭐⭐ |
| 安全漏洞类型 | 1. 未授权访问; 2. 敏感配置泄露(AccessKey等); 3. 接口逻辑缺陷 | 信息泄露类漏洞在SRC中权重较高 | ⭐⭐⭐ |
| 实战价值 | 1. 发现隐藏接口; 2. 分析加密逻辑; 3. 获取测试凭证 | 需结合fuzz技术扩大攻击面 | ⭐⭐⭐⭐ |
| 工具链配置 | 1. 指纹字典(45.1M专业字典); 2. 规则库更新(config.yml) | 爆破时注意线程控制(200并发) | ⭐⭐ |