谈js静态文件在漏洞挖掘中的利用
字数 1145 2025-08-26 22:11:29

JavaScript静态文件在漏洞挖掘中的利用

一、前期准备:域名收集

在开始JS静态文件分析前,首先需要进行全面的域名收集工作:

常用工具

  • wydomain:猪猪侠开发的域名收集工具
  • subsomain:子域名枚举工具
  • sublist3r:基于搜索引擎的子域名收集工具
  • subdomainsBurte:暴力枚举子域名工具
  • DiscoverSubdomain:子域名发现工具
  • layer子域名挖掘机:综合性子域名挖掘工具

在线资源

  • securitytrails.com:DNS历史记录查询
  • virustotal.com:威胁情报平台,可用于子域名发现

二、URL收集方法

Burp Suite专业版使用

  1. 访问目标网站
  2. 在Burp Suite的Target -> Site Map中找到目标地址
  3. 右键点击目标地址,选择Engagement tools -> Find scripts
  4. 可选操作:
    • 先主动爬取网站以增加内容
    • Export Script导出所有脚本内容
    • 全选后提取URL或Response中的src/href

三、JS文件分析工具

LinkFinder

用于提取JavaScript中的URL节点

基本用法

python linkfinder.py -i https://example.com/static/js/main.js

局限性

  • 不支持批量URL处理
  • 需要自行编写脚本实现批量处理

四、自动化工具jsspider

功能概述

  1. 动态加载挖掘网站域名涉及的URL和包含的域名
  2. 对收集到的URL(特别是JS文件)通过正则提取隐藏接口和域名
  3. 可配置的爬取深度设置

深度设置

  • 深度0:仅分析指定JS文件中的接口
    python3 main.py -u https://example.com/static/js/common.js -d 0
    
  • 深度1:爬取当前网站所有URL并分析其中的JS文件(默认推荐)
    python3 main.py -u https://example.com -d 1
    
  • 深度2:对发现的URL进行递归爬取和分析(性能消耗较大)

核心正则表达式

regex_str = r"""
    (?:https?://|//)                # Match a scheme
    (?:[a-zA-Z0-9-]+\.)+           # Match a domainname (any character + dot)
    [a-zA-Z]{2,}                    # The domain extension
    [^"']{0,}                      # Rest of the characters can't be
    |                               # OR
    (/[a-zA-Z0-9_\-/]{1,}/         # Relative endpoint with /
     [a-zA-Z0-9_\-/]{1,}           # Resource name
     \.(?:[a-zA-Z]{1,4}|action)    # Rest + extension (length 1-4 or action)
     [^"']{0,})                    # Maybe with parameters
    |                               # OR
    ([a-zA-Z0-9_\-]{1,}            # filename
     \.(?:php|asp|aspx|jsp|json|action|html|js|txt|xml)  # . + extension
     [^"']{0,})                    # Maybe with parameters
"""

该正则主要匹配三类URL特征:

  1. 完整的HTTP/HTTPS URL
  2. 相对路径端点
  3. 常见扩展名的文件

五、漏洞挖掘价值

通过JS静态文件分析可以发现:

  1. 未公开的敏感接口:可能导致未授权访问
  2. 老域名/测试域名:扩大攻击面
  3. 测试接口:可能存在未修复的漏洞
  4. 隐藏功能:可能包含未受保护的管理功能

六、实际案例

以opposhop.cn为例:

python3 main.py -u https://www.opposhop.cn -d 1

结果:

  • 提取200+个URL链接
  • 发现多个隐藏API接口
  • 识别出测试子域名

七、注意事项

  1. 性能考虑:深度设置不宜过大,一般深度1足够
  2. 合法性:确保有授权进行测试
  3. 误报处理:正则匹配结果需要人工验证
  4. 动态内容:现代网站大量使用异步加载,静态分析需配合动态爬取

八、后续改进

  1. 优化正则表达式提高准确率
  2. 增加对WebSocket端点的识别
  3. 集成更多JS解析引擎
  4. 添加API指纹识别功能

通过系统性地分析JS静态文件,安全研究人员可以显著提高漏洞发现的效率和成功率。

JavaScript静态文件在漏洞挖掘中的利用 一、前期准备:域名收集 在开始JS静态文件分析前,首先需要进行全面的域名收集工作: 常用工具 wydomain :猪猪侠开发的域名收集工具 subsomain :子域名枚举工具 sublist3r :基于搜索引擎的子域名收集工具 subdomainsBurte :暴力枚举子域名工具 DiscoverSubdomain :子域名发现工具 layer子域名挖掘机 :综合性子域名挖掘工具 在线资源 securitytrails.com :DNS历史记录查询 virustotal.com :威胁情报平台,可用于子域名发现 二、URL收集方法 Burp Suite专业版使用 访问目标网站 在Burp Suite的 Target -> Site Map 中找到目标地址 右键点击目标地址,选择 Engagement tools -> Find scripts 可选操作: 先主动爬取网站以增加内容 Export Script 导出所有脚本内容 全选后提取URL或Response中的src/href 三、JS文件分析工具 LinkFinder 用于提取JavaScript中的URL节点 基本用法 : 局限性 : 不支持批量URL处理 需要自行编写脚本实现批量处理 四、自动化工具jsspider 功能概述 动态加载挖掘网站域名涉及的URL和包含的域名 对收集到的URL(特别是JS文件)通过正则提取隐藏接口和域名 可配置的爬取深度设置 深度设置 深度0 :仅分析指定JS文件中的接口 深度1 :爬取当前网站所有URL并分析其中的JS文件(默认推荐) 深度2 :对发现的URL进行递归爬取和分析(性能消耗较大) 核心正则表达式 该正则主要匹配三类URL特征: 完整的HTTP/HTTPS URL 相对路径端点 常见扩展名的文件 五、漏洞挖掘价值 通过JS静态文件分析可以发现: 未公开的敏感接口 :可能导致未授权访问 老域名/测试域名 :扩大攻击面 测试接口 :可能存在未修复的漏洞 隐藏功能 :可能包含未受保护的管理功能 六、实际案例 以opposhop.cn为例: 结果: 提取200+个URL链接 发现多个隐藏API接口 识别出测试子域名 七、注意事项 性能考虑 :深度设置不宜过大,一般深度1足够 合法性 :确保有授权进行测试 误报处理 :正则匹配结果需要人工验证 动态内容 :现代网站大量使用异步加载,静态分析需配合动态爬取 八、后续改进 优化正则表达式提高准确率 增加对WebSocket端点的识别 集成更多JS解析引擎 添加API指纹识别功能 通过系统性地分析JS静态文件,安全研究人员可以显著提高漏洞发现的效率和成功率。