2023-08-03 19:12:22 +00:00
|
|
|
# 依赖混淆
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
{% hint style="success" %}
|
|
|
|
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
|
|
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
|
2022-11-29 16:54:14 +00:00
|
|
|
<details>
|
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
<summary>支持 HackTricks</summary>
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
|
|
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
|
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
2022-11-29 16:54:14 +00:00
|
|
|
|
|
|
|
</details>
|
2024-07-19 04:51:22 +00:00
|
|
|
{% endhint %}
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2024-05-02 15:03:25 +00:00
|
|
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
2024-04-07 22:57:42 +00:00
|
|
|
|
|
|
|
{% embed url="https://websec.nl/" %}
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
## 基本信息
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
总之,依赖混淆漏洞发生在项目使用一个 **拼写错误**、**不存在**或 **未指定版本** 的库时,而所使用的依赖库仓库允许从 **公共** 仓库 **获取更新版本**。
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
* **拼写错误**:导入 **`reqests`** 而不是 `requests`
|
|
|
|
* **不存在**:导入 `company-logging`,一个 **不再存在** 的内部库
|
|
|
|
* **未指定版本**:导入一个 **内部** **存在的** `company-requests` 库,但仓库检查 **公共仓库** 以查看是否有 **更高版本**。
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2024-02-07 04:49:09 +00:00
|
|
|
## 利用
|
2022-11-29 16:54:14 +00:00
|
|
|
|
|
|
|
{% hint style="warning" %}
|
2024-07-19 04:51:22 +00:00
|
|
|
在所有情况下,攻击者只需发布一个 **恶意包,名称与** 受害公司使用的库相同。
|
2022-11-29 16:54:14 +00:00
|
|
|
{% endhint %}
|
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
### 拼写错误与不存在
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
如果您的公司试图 **导入一个不是内部的库**,那么库的仓库很可能会在 **公共仓库** 中搜索它。如果攻击者创建了它,您的代码和运行的机器很可能会被攻陷。
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
### 未指定版本
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
开发者 **不指定任何版本** 的库,或仅指定一个 **主要版本** 是非常常见的。然后,解释器将尝试下载符合这些要求的 **最新版本**。\
|
|
|
|
如果库是一个 **已知的外部库**(如 Python 的 `requests`),攻击者 **无法做太多**,因为他无法创建一个名为 `requests` 的库(除非他是原作者)。\
|
|
|
|
然而,如果库是 **内部的**,如本例中的 `requests-company`,如果 **库仓库** 允许 **检查新版本也在外部**,它将搜索一个公开可用的更新版本。\
|
|
|
|
因此,如果一个 **攻击者知道** 公司正在使用 `requests-company` 库 **版本 1.0.1**(允许小版本更新)。他可以 **发布** 库 `requests-company` **版本 1.0.2**,而公司将 **使用该库而不是内部库**。
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
## AWS 修复
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
此漏洞在 AWS **CodeArtifact** 中被发现(阅读 [**此博客文章中的详细信息**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d))。\
|
|
|
|
AWS 通过允许指定库是内部还是外部来修复此问题,以避免从外部仓库下载内部依赖。
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2024-02-09 08:09:21 +00:00
|
|
|
## 查找易受攻击的库
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
在 [**关于依赖混淆的原始文章**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) 中,作者搜索了数千个暴露的 package.json 文件,包含 JavaScript 项目的依赖。
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
## 参考文献
|
2022-11-29 16:54:14 +00:00
|
|
|
|
|
|
|
* [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)
|
|
|
|
|
2024-05-02 15:03:25 +00:00
|
|
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
2024-04-07 22:57:42 +00:00
|
|
|
|
|
|
|
{% embed url="https://websec.nl/" %}
|
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
{% hint style="success" %}
|
|
|
|
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
|
|
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
|
2022-11-29 16:54:14 +00:00
|
|
|
<details>
|
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
<summary>支持 HackTricks</summary>
|
2022-11-29 16:54:14 +00:00
|
|
|
|
2024-07-19 04:51:22 +00:00
|
|
|
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
|
|
|
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
|
|
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
2022-11-29 16:54:14 +00:00
|
|
|
|
|
|
|
</details>
|
2024-07-19 04:51:22 +00:00
|
|
|
{% endhint %}
|