首页 > 编程语言 >【Node.js渗透】提取和分析 .asar 文件

【Node.js渗透】提取和分析 .asar 文件

时间:2025-01-16 13:43:58浏览次数:1  
标签:Node 文件 asar 关键词 js 搜索 NPX 使用

#Electron

免责声明

⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!

书接上回以及上上回,在了解了操作系统上基于 Electron 的应用程序的安装和识别过程后,我们将探讨提取 Electron 应用程序以收集有用信息进行测试的常见步骤概述。

一、.asar 文件提取工具

在上一章节中提到,.asar 文件是一种归档文件,包含了基于 Electron 的应用程序中使用的所有 JavaScript、HTML、CSS 以及其他资源。因此可能会产生一个问题:“我们是否可以提取这个 .asar 文件?” 答案是:“可以”。

那么,如何做到这一点?从技术上讲,有多种方式可以实现,其中一种方式是使用名为 asar[1] 的工具(与其文件扩展名一致)以及 NPX (https://docs.npmjs.com/cli/v7/commands/npx)。不过,我们个人更推荐使用 NPX。

1.1 为什么选择 NPX?

本质上,NPX(Node Package eXecute 的缩写)是一个 NPM 包执行工具,允许我们无需全局或本地安装 NPM 包即可直接执行其命令。

许多用户选择使用 NPX,主要是出于以下高效的原因:避免在操作系统中安装可能仅临时使用的包,从而保持系统的整洁。此外,这还可以避免“包污染”问题,即未使用的包可能占用存储空间,甚至与其他包产生冲突。

因此,当我们偶尔需要运行 asar 命令时,使用 NPX 会更好。通过 NPX,asar 包会被临时下载并执行,这使我们能够在无需显式安装的情况下使用命令,非常适合一次性或偶尔使用的场景。

二、 提取过程

假设我们已经成功识别出操作系统中存在的基于 Electron 的应用程序(例如我们在第 2 章中创建的 Electron 应用程序),并找到了该应用程序的 .asar 文件(名为 app.asar)。

接下来需要执行 NPX,可以使用以下命令完成:

npx asar extract app.asar app-extract

简单说明:

app-extract 是用于存放 app.asar 文件解压结果的目录。

此 NPX 命令可以在安装 Node.js 后执行——就像我们在第 2 章中所做的一样。

在解压过程成功完成后,我们就可以访问之前在构建过程中被打包的资源了。

三、提取 .asar 文件的重要性

众所周知,软件开发中一个常见问题是将敏感信息(如凭据)硬编码到代码中,无论是有意还是无意为之。根据 GitGuardian 2024 年秘密扩散状况报告(https://www.gitguardian.com/state-of-secrets-sprawl-report-2024) 的数据,超过 1/10 的代码作者曾暴露过秘密,每 1,000 次提交中有 7 次至少暴露了一个秘密。

在 Electron 应用程序中嵌入凭据是否存在特定问题?答案是“是”。在 2021 年,一位名为 augustozanellato 的研究员(hackone 报告:https://hackerone.com/reports/1087489) 在 .asar 文件中发现了一个 GitHub 个人访问令牌(Personal Access Token),该令牌属于 Shopify 的一名员工。简而言之,经过分析,Shopify 发现该令牌几乎拥有对敏感数据的完全访问权限,可能被用于修改数据,甚至导致重大停机问题。

根据这些数据和事实,提取 .asar 文件并分析其内容的过程无疑是一种明智的做法。我们永远无法预知其中嵌入了哪些敏感信息,以及这些信息可能被如何利用。

3.1 关键词

也许有读者会问,在搜索过程中应该关注哪些具体方面,以及可以使用哪些关键词。

实际上,在这种情况下,我们寻找的内容与在源代码中搜索敏感信息类似,例如凭据、令牌、密钥、URL 和路径(包括端点)、IP 地址等。

关于关键词,我们可以使用 EdOverflow 编写的综合列表[2](尽管这份列表可能已有一段时间,但其中的关键词至今仍然有效)。

等等,你不是提到过 URL 吗?难道我们不能通过子域名枚举工具找到 URL 的存在吗?是的,这没错。然而,我们不能忽视某些可能性,例如:

通过 URL 进行的身份验证过程的存在,这通常无法在没有特定访问权限的情况下获得。

存在与主域名不同的测试环境(staging)URL。请注意,测试区域中存在的漏洞可能导致访问生产数据的风险是非常可能的。

3.2 执行关键词搜索

有多种方法可以在源代码中搜索敏感信息。然而,为了简单起见,我们将专注于两种常用工具:命令行工具(具体是使用 grep)和图形界面工具(例如 Visual Studio Code)。
1、 使用命令行工具“grep”进行关键词搜索

grep 是 Linux 和 Unix 环境中的一条重要命令。其主要目的是在指定文件中搜索文本和字符串。本质上,grep 命令会查看所提供的文件,寻找与指定字符串或单词匹配的行。作为一种基础命令,它为测试人员识别文件中的敏感信息提供了极大的便利。

要使用 grep 进行关键词搜索,我们可以导航到包含提取的 .asar 文件的目录,并使用以下命令:

grep -r keyword /path/to/extracted/asar

此命令将在目录中递归地搜索指定的关键词,并显示所有匹配的行,帮助测试人员快速识别潜在的关注点。

2、 使用GUI工具进行关键词搜索 —例如 “Visual Studio Code”

对于那些更喜欢使用可视化方式进行关键词搜索的用户,像Visual Studio Code(VS Code)这样的GUI工具也提供了强大的搜索功能。通过在VS Code中打开项目目录并使用内置的搜索功能,我们可以对整个代码库进行全面的搜索。

注意:无论我们使用哪种工具,都需要仔细监控每个输入关键词产生的输出结果。

ok,在下一篇文章中,我们将探讨一个独特的案例研究。

References

[1] asar: https://github.com/electron/asar
[2] EdOverflow 编写的综合列表: https://gist.github.com/EdOverflow/8bd2faad513626c413b8fc6e9d955669

原创 白帽子左一

标签:Node,文件,asar,关键词,js,搜索,NPX,使用
From: https://www.cnblogs.com/o-O-oO/p/18674819

相关文章

  • node.js酒店客房管理程序+论文 可用于毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于酒店客房管理的研究,现有研究多集中于酒店整体运营管理,专门针对酒店客房管理这一细分领域的深度研究较少。在国内外酒店行业迅速发展的背景下,酒店客......
  • node.js基于Web的课前问题导入系统程序+论文 可用于毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于Web课前问题导入系统的研究,现有研究主要集中在Web教育系统的整体构建方面,如教学资源管理、在线学习平台等。专门针对课前问题导入系统的研究较少。......
  • 深入浅出Node.js-4(详解网络通信)
    这篇文文章我们将详细讲解网络通信的整个流程当我们在浏览器中输入地址到浏览器返回页面给我们这中间究竟发生了什么?总的来说有以下六个点网络模型浏览器与服务器建立连接(三次握手)浏览器发送请求报文(HTTP协议)服务器返回响应报文(HTTP协议)浏览器渲染页面(看我之前的浏......
  • 深入浅出Node.js-5(Webpack模块打包工具)
    Webpack模块打包工具webpack_demo工程化从0-1配置完整版.rar本章节通过从0到1的方式来配置出一个【工程化】项目结构,让大家了解Node+Webpack是如何做工程化配置的。学完本章节后,你能知道工程化的基本原理,为将来使用vue的工程化开发打下基础Webpack基本概念Webpack 是一......
  • 【Html.js——功能实现】新年贺卡(蓝桥杯真题-1768)【合集】
    目录......
  • 用js写一个事件侦听器的方法
    在JavaScript中,你可以使用addEventListener()方法来添加一个事件监听器。这个方法接受两个参数:要监听的事件名称和事件处理函数。以下是一个简单的示例,演示如何使用addEventListener()方法监听一个按钮的点击事件:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF......
  • 不依赖第三方库,说下如何使用js读取pdf?
    在不依赖第三方库的情况下,使用原生JavaScript来读取PDF文件内容是一项相对复杂的任务,因为PDF是一种二进制文件格式,其解析需要处理很多底层细节。通常,我们会使用像pdf.js这样的库来简化这个过程。但如果你确实想要尝试不使用任何第三方库,以下是一个大致的步骤指南:获取PDF文件:......
  • 进程与线程有什么区别?JS的单线程带来哪些好处?
    进程与线程的区别:资源拥有与管理:进程是操作系统资源分配的基本单位,它拥有独立的代码和数据空间(程序上下文),以及独立的内存、I/O、CPU等资源。而线程是处理器任务调度和执行的基本单位,它共享进程的资源,包括地址空间和内存等。因此,进程间的资源是独立的,而同一进程的线程间资源是共......
  • 【Html.js——页面布局】水果摆盘(蓝桥杯真题-1767)【合集】
    目录......
  • JAVA开源毕业设计 中药实验管理系统 Vue.JS+SpringBoot+MySQL
    本文项目编号T130,文末自助获取源码\color{red}{T130,文末自助获取源码}......