hacktricks/pentesting-web/dependency-confusion.md

79 lines
5.9 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.

# Bağımlılık Karışıklığı
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter**'da **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## Temel Bilgiler
Özetle, bir bağımlılık karışıklığıığı, bir projenin **yanlış yazılmış**, **mevcut olmayan** veya **belirtilmemiş bir versiyona** sahip bir kütüphane kullanması ve kullanılan bağımlılık deposunun **güncellenmiş versiyonları kamuya açık** depolardan **toplamasına** izin vermesi durumunda meydana gelir.
* **Yanlış yazılmış**: `requests` yerine **`reqests`** içe aktarımı
* **Mevcut olmayan**: **artık mevcut olmayan** bir iç kütüphane olan `company-logging` içe aktarımı
* **Belirtilmemiş versiyon**: **mevcut** bir `company-requests` kütüphanesini içe aktarmak, ancak repo **daha büyük versiyonlar** olup olmadığını görmek için **kamuya açık repos** kontrol eder.
## Sömürü
{% hint style="warning" %}
Tüm durumlarda, saldırganın sadece kurban şirketin kullandığı kütüphanelerin **adıyla kötü niyetli bir paket yayınlaması** yeterlidir.
{% endhint %}
### Yanlış Yazılmış & Mevcut Olmayan
Eğer şirketiniz **iç kütüphane olmayan bir kütüphaneyi içe aktarmaya çalışıyorsa**, kütüphaneler deposunun **kamuya açık depolarda** arama yapması muhtemeldir. Eğer bir saldırgan bunu oluşturmuşsa, kodunuz ve çalışan makinelerinizin büyük ihtimalle tehlikeye girecektir.
### Belirtilmemiş Versiyon
Geliştiricilerin kullandıkları kütüphanenin **herhangi bir versiyonunu belirtmemesi** veya sadece bir **ana versiyon** belirtmesi oldukça yaygındır. Sonra, yorumlayıcı bu gereksinimlere uyan **en son versiyonu** indirmeye çalışacaktır.\
Eğer kütüphane **bilinen bir dış kütüphane** ise (örneğin python `requests`), bir **saldırganın yapabileceği pek bir şey yoktur**, çünkü `requests` adında bir kütüphane oluşturamayacaktır (eğer orijinal yazar değilse).\
Ancak, eğer kütüphane **içsel** ise, bu örnekteki gibi `requests-company`, eğer **kütüphane reposu** **yeni versiyonları dışarıdan kontrol etmeye** izin veriyorsa, kamuya açık olarak mevcut daha yeni bir versiyonu arayacaktır.\
Yani eğer bir **saldırgan** şirketin `requests-company` kütüphanesinin **1.0.1** versiyonunu kullandığını biliyorsa (küçük güncellemeleri kabul eder). O, `requests-company` kütüphanesinin **1.0.2** versiyonunu **yayınlayabilir** ve şirket bu kütüphaneyi **iç kütüphanesi yerine kullanacaktır**.
## AWS Düzeltmesi
Bu açık AWS **CodeArtifact**'ta bulundu (bu blog yazısında [**detayları okuyun**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\
AWS, bir kütüphanenin içsel veya dışsal olup olmadığını belirtmeye izin vererek, iç bağımlılıkların dış reposlardan indirilmesini önleyerek bunu düzeltmiştir.
## Açık Kütüphaneleri Bulma
[**bağımlılık karışıklığı hakkında orijinal yazıda**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) yazar, javascript projelerinin bağımlılıklarını içeren binlerce ifşa edilmiş package.json dosyasını aradı.
## Referanslar
* [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)
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter**'da **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}