AWS - DynamoDB Enum
DynamoDB
Podstawowe informacje
Amazon DynamoDB jest prezentowany przez AWS jako w pełni zarządzana, serwerowa, bazodanowa NoSQL typu klucz-wartość, dostosowana do zasilania aplikacji o wysokiej wydajności bez względu na ich rozmiar. Usługa zapewnia solidne funkcje, w tym środki bezpieczeństwa, nieprzerwane kopie zapasowe, zautomatyzowaną replikację w różnych regionach, zintegrowane pamięci podręczne oraz wygodne narzędzia eksportu danych.
W kontekście DynamoDB, zamiast tworzyć tradycyjną bazę danych, tworzone są tabele. Każda tabela wymaga określenia klucza partycjonowania jako integralnej części klucza głównego tabeli. Ten klucz partycjonowania, będący w zasadzie wartością skrótu, odgrywa kluczową rolę zarówno w pobieraniu elementów, jak i w dystrybucji danych między różnymi hostami. Ta dystrybucja jest kluczowa dla utrzymania skalowalności i dostępności bazy danych. Dodatkowo istnieje opcja dodania klucza sortowania, aby dalszo doprecyzować organizację danych.
Szyfrowanie
Domyślnie DynamoDB używa klucza KMS, który **należy do Amazon DynamoDB,**nawet nie zarządzanego przez AWS, który przynajmniej należy do twojego konta.
Kopie zapasowe i eksport do S3
Możliwe jest zaplanowanie generowania kopii zapasowych tabeli lub ich tworzenie na żądanie. Ponadto można włączyć odbudowę w punkcie czasowym (PITR) dla tabeli. Odbudowa w punkcie czasowym zapewnia ciągłe kopie zapasowe danych DynamoDB przez 35 dni, aby pomóc w ochronie przed przypadkowymi operacjami zapisu lub usuwania.
Możliwe jest również wyeksportowanie danych tabeli do S3, ale tabela musi mieć włączoną odbudowę w punkcie czasowym (PITR).
GUI
Istnieje interfejs graficzny dla lokalnych usług Dynamo, takich jak DynamoDB Local, dynalite, localstack, itp., który może być przydatny: https://github.com/aaronshaf/dynamodb-admin
Wyliczenie
Nieuwierzytelniony dostęp
AWS - DynamoDB Unauthenticated AccessEskalacja uprawnień
AWS - DynamoDB PrivescPo eksploatacji
AWS - DynamoDB Post ExploitationTrwałość
AWS - DynamoDB PersistenceWstrzykiwanie do DynamoDB
Wstrzykiwanie SQL
Istnieją sposoby dostępu do danych DynamoDB za pomocą składni SQL, dlatego też typowe wstrzykiwania SQL są również możliwe.
Wstrzykiwanie NoSQL
W DynamoDB można używać różnych warunków do pobierania danych, podobnie jak w przypadku typowego wstrzykiwania NoSQL, jeśli można łączyć więcej warunków do pobierania danych, można uzyskać ukryte dane (lub wydobyć całą tabelę). Tutaj znajdziesz warunki obsługiwane przez DynamoDB: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html
Zauważ, że różne warunki są obsługiwane, jeśli dane są uzyskiwane za pomocą query
lub za pomocą scan
.
Faktycznie, akcje Query muszą określić warunek "EQ" (równa się) w kluczu głównym, aby działały, co sprawia, że są one znacznie mniej podatne na wstrzykiwania NoSQL (a także sprawia, że operacja jest bardzo ograniczona).
Jeśli możesz zmienić porównanie wykonywane lub dodać nowe, możesz odzyskać więcej danych.
Wstrzykiwanie surowego Jsona
DynamoDB akceptuje obiekty Json do wyszukiwania danych w bazie danych. Jeśli odkryjesz, że możesz pisać w obiekcie json wysłanym do wyszukiwania, możesz spowodować wyciek całej zawartości bazy danych.
Na przykład, wstrzykując żądanie takie jak:
atakujący mógłby wstrzyknąć coś w rodzaju:
1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0
zmienić warunek "EQ" wyszukując ID 1000, a następnie szukając wszystkich danych z ciągiem Id większym niż 0, co oznacza wszystkie.
Wstrzykiwanie :property
Niektóre SDK pozwalają użyć ciągu znaków wskazującego na filtrowanie do wykonania, na przykład:
Musisz wiedzieć, że podczas wyszukiwania w DynamoDB w celu podstawienia wartości atrybutu w wyrażeniach filtrujących podczas skanowania elementów, tokeny powinny zaczynać się od znaku :
. Takie tokeny zostaną zamienione na rzeczywistą wartość atrybutu w czasie wykonania.
Dlatego logowanie podobne do poprzedniego może zostać obejścione w ten sposób:
Last updated