hacktricks/pentesting-web/dependency-confusion.md
2023-08-03 19:12:22 +00:00

64 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 依赖混淆
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 你在一家**网络安全公司**工作吗?想要在 HackTricks 中看到你的**公司广告**吗?或者想要**获取 PEASS 的最新版本或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **通过向[hacktricks 仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud)提交 PR 来分享你的黑客技巧**。
</details>
## 基本信息
简而言之,当一个项目使用一个**拼写错误的**、**不存在的**或者**未指定版本的**库,并且所使用的依赖库允许从**公共仓库中获取更新版本**时,就会发生依赖混淆漏洞。
* **拼写错误**:导入**`reqests`**而不是`requests`
* **不存在的**:导入一个**不再存在的**内部库`company-logging`
* **未指定版本**:导入一个**内部存在的**`company-requests`库,但是仓库检查**公共仓库**以查看是否有**更高版本**。
## 攻击利用
{% hint style="warning" %}
在所有情况下,攻击者只需要发布一个与受害公司使用的库的**名称相同的恶意包**。
{% endhint %}
### 拼写错误和不存在的库
如果你的公司试图**导入一个不是内部的库**,很可能库的仓库会在**公共仓库**中搜索它。如果攻击者已经创建了这个库,你的代码和运行的机器很可能会被入侵。
### 未指定版本
开发人员很常见地**不指定库的任何版本**,或者只指定一个**主要版本**。然后,解释器将尝试下载符合这些要求的**最新版本**。\
如果库是一个**已知的外部库**(比如 Python 的 `requests`**攻击者无法做太多事情**,因为他无法创建一个名为 `requests` 的库(除非他是原始作者)。\
然而,如果库是**内部的**,比如这个例子中的 `requests-company`,如果**库仓库**允许**外部检查新版本**,它将搜索公开可用的更新版本。\
因此,如果**攻击者知道**公司正在使用 `requests-company` 库的**1.0.1 版本**(允许次要更新),他可以**发布**库 `requests-company` 的**1.0.2 版本**,公司将使用这个库而不是内部的库。
## AWS 修复
这个漏洞在 AWS 的 **CodeArtifact** 中被发现(详细信息请阅读[**这篇博客文章**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d))。\
AWS 通过允许指定库是内部还是外部来修复了这个问题,以避免从外部仓库下载内部依赖。
## 查找受漏洞影响的库
在[**关于依赖混淆的原始文章**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)中,作者搜索了数千个包含 JavaScript 项目依赖的 package.json 文件。
## 参考资料
* [https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)
* [https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 你在一家**网络安全公司**工作吗?想要在 HackTricks 中看到你的**公司广告**吗?或者想要**获取 PEASS 的最新版本或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **通过向[hacktricks 仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud)提交 PR 来分享你的黑客技巧**。
</details>