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

news/2025/1/16 13:39:29/文章来源:https://www.cnblogs.com/o-O-oO/p/18674819

#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

原创 白帽子左一

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/870095.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型微调基本概念指北

本文主要分享一下大模型微调相关的基本概念,包括大模型(GPT)训练流程、微调(SFT)方法&分类&框架&最佳实践、强化学习(RLHF),最后则是分享了如何训练垂直领域大模型。本文是参考网上博客、文章后进行总结而成,旨在让刚接触大模型的同学阅读后能对大模型训练的各个…

看了一个关于linux platform的好视频

视频地址: 《嵌入式Linux platform总线驱动与设备匹配的三种方式》 https://www.bilibili.com/video/BV134CFYqEki?buvid=YC4D5AC32B076A51424FACFDDBD3BD15822A&from_spmid=tm.recommend.0.0&is_story_h5=false&mid=PbeiH8sfJs5bwGp1257AQw%3D%3D&plat_id=1…

学习 - 人工智能- 大模型的演变和训练

大模型的演变和训练 大模型训练整体上分为三个阶段: 预训练、 SFT(监督微调)以及RLHF(基于人类反馈的强化学习)一、预训练 预训练的过程类似从婴儿成长成中学生的阶段,在这个阶段我们会学习各种各样的知识,我们的语言习惯、知识体系等重要部分都会形成;对于大模型来讲,在这…

RFID基础——概念与分类

RFID 的全称是射频识别技术(Radio Frequency Identification)。是一项利用射频信号通过空间耦合(交变磁场或电磁场)实现无接触信息传递并通过所传递的信息达到识别目的的技术。这项技术在日常生活中应用广泛,例如我国的第二代身份证、门禁卡、图书标签。 RFID与NFC的区别 …

(未完工)「学习笔记」二维数点问题

0.0 前言 看了一个晚上,加上同桌的讲解,大致了解了二维数点问题的基本思路。 0.1 前置知识可持久化线段树树状数组1.0 概述 二维数点问题的一般形式是形如“给定平面上 \(n\) 个点,每次询问给定一个矩形,求该位于矩形内的点的个数”一类问题,模板题为 P2163 [SHOI2007] 园…

CentOS扩容boot分区并升级内核

本文作者CVE-柠檬i:https://www.cnblogs.com/CVE-Lemon 前言 由于安装k8s需要升级内核,但我自己的的boot分区只有200M大小,无法安装新内核,所以干脆把swap分区分给boot了。在此期间关于grub的操作踩了好多坑,所以特此记录一下正确操作。 使用rpm安装新内核,下载链接:htt…

陨石的秘密

题目链接: https://www.acwing.com/problem/content/319/ 题目描述提取题目大意: 构造 L1对{},L2对[],L3对() 组成的深度为D的括号序列,求方案数。 并且中括号里不能有大括号,小括号里不能有中括号和大括号。 思路:考虑“第一段”括号序列(它作为一个整体,只能是{} []…

Xorto

给定一个长度为n的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为0。暴力,每次找一个中点,找左右两边异或值一样的区间 #include<bits/stdc++.h> #define int long long #define TEST #define TESTS int _; cin >> _; while(_--) using…

【OAuth2框架】理解和实战 OAuth2 认证授权

你知道互联网大厂最怕的是什么吗?但凡有点这样的风吹草动,我们就要花费大量的时间进行修复和上线。一点都不敢耽误,对于紧急类型的,基本当天发现,当天就要升级上线。那是什么问题呢?🤔 其实最怕的就是各类组件漏洞! 有这么一个东西,13scan - 安全漏洞扫描 它可以扫描…

2025.1.15——1200

2025.1.15——1200Q1. 1200 简单来说就是给定3个数组,每个数组选择一个数,三者下标不同,问三者和的最大值。 Winter holidays are coming up. They are going to last for \(n\) days. During the holidays, Monocarp wants to try all of these activities exactly once wi…

【附源码】JAVA大学生竞赛管理系统源码+SpringBoot+VUE+前后端分离

学弟,学妹好,我是爱学习的学姐,今天带来一款优秀的项目:大学生竞赛管理系统 。 本文介绍了系统功能与部署安装步骤,如果您有任何问题,也请联系学姐,偶现在是经验丰富的程序员! 一. 系统演示 系统测试截图系统视频演示https://githubs.xyz/show/343.mp4二. 系统概述【 系…