依赖混淆

概述

公司使用内部注册表来存放内部和公共依赖。换句话说,他们尝试创建一个包含所有依赖的单一注册表,其中依赖项由公司员工添加。这种方法的目的是最小化对公共注册表的依赖,从而减少在内部使用被篡改依赖的可能性。

然而,并不总是可能完全禁止到公共注册表的所有流量。因此,如果包管理器在解析时尝试在公共注册表中查找内部依赖,这可能导致依赖混淆。

攻击按照以下方式发展:

  • 公司有一个名为 internal-lib 的内部包。

  • internal-lib 没有放置在公共注册表中,如 pypi、npm、rubygems 等。

  • 攻击者制作一个在安装期间执行任意代码的包,并将其作为 internal-lib 上传到公共注册表。

  • 包管理器在安装过程中使用来自公共注册表的 internal-lib,导致代码执行。

如何在安装期间执行代码?

技巧

数据收集

为了在基于数据识别组织的能力和避免收集过多敏感信息的需求之间取得平衡,您可以收集以下数据:

  • 用户名

  • 主机名

  • 当前路径

连同外部IP一起,这些数据应该足够帮助安全团队识别潜在易受攻击的系统,并避免将测试误认为是真实攻击。

数据检索

由于大多数可能的目标位于保护良好的企业网络深处,DNS渗透是检索收集数据的最佳方式。将十六进制编码的数据作为DNS查询的一部分发送到自定义权威名称服务器。您可以使用以下资源来实现DNS渗透:

  • 1u.ms 是一个小型零配置DNS工具集,提供易于使用的DNS重绑定工具,以及获取任何给定内容的可解析资源记录的方法

  • Interactsh 是一个OOB交互收集服务器和客户端库

参考资料

最后更新于