挖洞经验 | 利用泄露的NPM_TOKEN访问项目私有仓库
字数 1360 2025-08-15 21:31:21

NPM_TOKEN泄露漏洞利用实战教学

漏洞概述

本教学文档详细讲解如何利用泄露的NPM_TOKEN访问项目私有仓库的安全漏洞。该漏洞类型属于敏感信息泄露,可能导致未授权访问私有代码仓库,危害性较高。

漏洞发现流程

1. 目标选择与初步测试

  • 选择处理效率和奖励较高的漏洞测试项目
  • 先尝试常见漏洞类型:模板注入(template injection)、IDOR(不安全的直接对象引用)
  • 当常规测试无果时,转向分析目标站点的JS文件

2. JS文件收集与分析

收集方法:

  • 使用Burp Suite Pro提取目标站点的JS文件
  • 或使用命令行工具批量下载:
    cat urls.txt | xargs -I{} wget "{}"
    
    若URL含参数需先处理:
    cat urls.txt | cut -d"?" -f1 | xargs -I{} wget "{}"
    

分析工具:

  • 使用Tomnomnom的gf工具进行模式匹配
  • 浏览器开发者工具(Firefox/Chrome)进行代码美化(格式化压缩代码)

3. 敏感信息发现

在JS文件中寻找:

  • 内部IP地址(如172.x.x.x
  • NPM_TOKEN值
  • 私有仓库链接(private registry link)
  • WebSocket连接信息
  • Nonce值等敏感数据

NPM_TOKEN利用详解

NPM_TOKEN基础知识

  1. 用途

    • 用于持续集成系统(CI/CD)如Jenkins、Travis CI等
    • 自动化部署时访问NPM私有仓库
  2. 权限类型

    • 读+发布(Read and publish only)
    • 只读(Readonly)
    • 带CIDR白名单限制的访问
  3. 使用格式
    .npmrc文件中配置:

    registry=https://registry_link_here/
    //registry_link_here/:_authToken=auth_token_here
    

利用步骤

  1. 验证NPM_TOKEN有效性

    • 创建.npmrc文件:
      registry=https://registry.npmjs.org/
      //registry.npmjs.org/:_authToken=auth_token_here
      
    • 执行命令测试:
      npm whoami
      
      若有响应则TOKEN有效
  2. 针对私有仓库的利用

    • 当发现私有仓库链接时,修改.npmrc
      registry=https://private_registry_link_here/
      //private_registry_link_here/:_authToken=auth_token_here
      
    • 再次执行npm whoami验证
  3. 获取私有包信息

    • 查看私有包详情:
      npm view private_repo
      npm get private_repo
      
    • 下载私有包进行分析

漏洞上报与奖励

  • 漏洞分类:敏感信息泄露导致未授权访问
  • 危害等级:高危
  • 奖励金额:$8000
  • 处理时效:当天分类,7天后发放奖励

防御措施

  1. 开发方

    • 避免在客户端代码中硬编码敏感信息
    • 对私有仓库实施严格的访问控制
    • 使用环境变量而非直接写入配置文件
    • 定期轮换NPM_TOKEN
  2. 安全测试方

    • 全面检查JS文件中的敏感信息
    • 使用代码美化工具分析压缩代码
    • 尝试所有发现的TOKEN与对应服务

经验总结

  1. 信息收集

    • JS文件是信息泄露的重灾区
    • 浏览器开发者工具功能强大,善用代码格式化
  2. 测试技巧

    • 保持测试工具更新
    • 多种漏洞类型交叉测试可能发现意外漏洞
    • 坚持不懈是关键,三天测试最终发现漏洞
  3. 知识储备

    • 了解现代开发工作流程(CI/CD)
    • 熟悉常见开发工具的使用方式(NPM等)

参考工具清单

  1. 信息收集

    • Burp Suite Pro
    • wget
    • cut
  2. 模式匹配

    • gf (Tomnomnom)
  3. 代码分析

    • Firefox/Chrome开发者工具
    • Webpack分析
  4. NPM相关

    • npm whoami
    • npm view
    • npm get
    • .npmrc配置

通过本教学,您应该掌握了从JS文件中发现NPM_TOKEN泄露到最终利用该TOKEN访问私有仓库的完整流程。这种漏洞在实际应用中较为常见,且危害性大,值得开发者和安全研究人员重点关注。

NPM_ TOKEN泄露漏洞利用实战教学 漏洞概述 本教学文档详细讲解如何利用泄露的NPM_ TOKEN访问项目私有仓库的安全漏洞。该漏洞类型属于敏感信息泄露,可能导致未授权访问私有代码仓库,危害性较高。 漏洞发现流程 1. 目标选择与初步测试 选择处理效率和奖励较高的漏洞测试项目 先尝试常见漏洞类型:模板注入(template injection)、IDOR(不安全的直接对象引用) 当常规测试无果时,转向分析目标站点的JS文件 2. JS文件收集与分析 收集方法: 使用Burp Suite Pro提取目标站点的JS文件 或使用命令行工具批量下载: 若URL含参数需先处理: 分析工具: 使用Tomnomnom的 gf 工具进行模式匹配 浏览器开发者工具(Firefox/Chrome)进行代码美化(格式化压缩代码) 3. 敏感信息发现 在JS文件中寻找: 内部IP地址(如 172.x.x.x ) NPM_ TOKEN值 私有仓库链接(private registry link) WebSocket连接信息 Nonce值等敏感数据 NPM_ TOKEN利用详解 NPM_ TOKEN基础知识 用途 : 用于持续集成系统(CI/CD)如Jenkins、Travis CI等 自动化部署时访问NPM私有仓库 权限类型 : 读+发布(Read and publish only) 只读(Readonly) 带CIDR白名单限制的访问 使用格式 : 在 .npmrc 文件中配置: 利用步骤 验证NPM_ TOKEN有效性 : 创建 .npmrc 文件: 执行命令测试: 若有响应则TOKEN有效 针对私有仓库的利用 : 当发现私有仓库链接时,修改 .npmrc : 再次执行 npm whoami 验证 获取私有包信息 : 查看私有包详情: 下载私有包进行分析 漏洞上报与奖励 漏洞分类:敏感信息泄露导致未授权访问 危害等级:高危 奖励金额:$8000 处理时效:当天分类,7天后发放奖励 防御措施 开发方 : 避免在客户端代码中硬编码敏感信息 对私有仓库实施严格的访问控制 使用环境变量而非直接写入配置文件 定期轮换NPM_ TOKEN 安全测试方 : 全面检查JS文件中的敏感信息 使用代码美化工具分析压缩代码 尝试所有发现的TOKEN与对应服务 经验总结 信息收集 : JS文件是信息泄露的重灾区 浏览器开发者工具功能强大,善用代码格式化 测试技巧 : 保持测试工具更新 多种漏洞类型交叉测试可能发现意外漏洞 坚持不懈是关键,三天测试最终发现漏洞 知识储备 : 了解现代开发工作流程(CI/CD) 熟悉常见开发工具的使用方式(NPM等) 参考工具清单 信息收集 : Burp Suite Pro wget cut 模式匹配 : gf (Tomnomnom) 代码分析 : Firefox/Chrome开发者工具 Webpack分析 NPM相关 : npm whoami npm view npm get .npmrc配置 通过本教学,您应该掌握了从JS文件中发现NPM_ TOKEN泄露到最终利用该TOKEN访问私有仓库的完整流程。这种漏洞在实际应用中较为常见,且危害性大,值得开发者和安全研究人员重点关注。