Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/

This commit is contained in:
Translator
2025-01-02 01:25:02 +00:00
parent c0ee8b41f2
commit ff7e659f3f
209 changed files with 1994 additions and 1989 deletions

View File

@@ -6,7 +6,7 @@
### Grundinformationen
Amazon DynamoDB wird von AWS als eine **vollständig verwaltete, serverlose, Schlüssel-Wert NoSQL-Datenbank** präsentiert, die für leistungsstarke Anwendungen jeder Größe konzipiert ist. Der Dienst bietet robuste Funktionen, einschließlich integrierter Sicherheitsmaßnahmen, unterbrechungsfreier Backups, automatisierter Replikation über mehrere Regionen, integrierter In-Memory-Caching und praktischer Datenexport-Utilities.
Amazon DynamoDB wird von AWS als eine **vollständig verwaltete, serverlose, Schlüssel-Wert NoSQL-Datenbank** präsentiert, die für die Unterstützung von leistungsstarken Anwendungen unabhängig von ihrer Größe konzipiert ist. Der Dienst bietet robuste Funktionen, einschließlich integrierter Sicherheitsmaßnahmen, unterbrechungsfreier Backups, automatisierter Replikation über mehrere Regionen, integrierter In-Memory-Caching und praktischer Datenexport-Utilities.
Im Kontext von DynamoDB werden anstelle einer traditionellen Datenbank **Tabellen erstellt**. Jede Tabelle erfordert die Angabe eines **Partitionierungsschlüssels** als integralen Bestandteil des **Primärschlüssels der Tabelle**. Dieser Partitionierungsschlüssel, im Wesentlichen ein **Hash-Wert**, spielt eine entscheidende Rolle sowohl bei der Abfrage von Elementen als auch bei der Verteilung von Daten über verschiedene Hosts. Diese Verteilung ist entscheidend für die Aufrechterhaltung sowohl der Skalierbarkeit als auch der Verfügbarkeit der Datenbank. Darüber hinaus gibt es die Möglichkeit, einen **Sortierschlüssel** hinzuzufügen, um die Datenorganisation weiter zu verfeinern.
@@ -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 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 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 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)
### Enumeration
### Aufzählung
```bash
# Tables
aws dynamodb list-tables
@@ -89,13 +89,13 @@ https://book.hacktricks.xyz/pentesting-web/sql-injection
### 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).\
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.\
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, damit sie 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, um zu 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
@@ -108,22 +108,22 @@ Wenn Sie die **Vergleichsoperation** ändern oder neue hinzufügen können, kön
https://book.hacktricks.xyz/pentesting-web/nosql-injection
{{#endref}}
### Raw Json injection
### Rohes Json-Injection
> [!CAUTION]
> **Diese Schwachstelle basiert auf dem dynamodb Scan Filter, der jetzt veraltet ist!**
**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.
**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.
Zum Beispiel, injizieren in eine Anfrage wie:
```bash
'{"Id": {"ComparisonOperator": "EQ","AttributeValueList": [{"N": "' + user_input + '"}]}}'
```
ein Angreifer könnte etwas injizieren wie:
Ein Angreifer könnte etwas injizieren wie:
`1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0`
behebe die "EQ"-Bedingung, indem du nach der ID 1000 suchst und dann nach allen Daten mit einer Id-Zeichenfolge, die größer als 0 ist, was alles ist.
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.
Ein weiteres **anfälliges Beispiel mit einem Login** könnte sein:
```python
@@ -152,7 +152,7 @@ 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 beim Suchen in DynamoDB für **das 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**.
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**.
Daher kann ein Login wie das vorherige mit etwas wie folgt umgangen werden:
```bash