AWS - DynamoDB Enum
DynamoDB
Basic Information
Amazon DynamoDB को AWS द्वारा पूर्ण रूप से प्रबंधित, सर्वर रहित, की-मान NoSQL डेटाबेस के रूप में प्रस्तुत किया गया है, जो उच्च प्रदर्शन वाले अनुप्रयोगों को उनके आकार की परवाह किए बिना शक्ति प्रदान करने के लिए तैयार किया गया है। यह सेवा मजबूत सुविधाओं की गारंटी देती है, जिसमें अंतर्निहित सुरक्षा उपाय, निरंतर बैकअप, कई क्षेत्रों में स्वचालित प्रतिकृति, एकीकृत इन-मेमोरी कैशिंग, और सुविधाजनक डेटा निर्यात उपयोगिताएँ शामिल हैं।
DynamoDB के संदर्भ में, पारंपरिक डेटाबेस स्थापित करने के बजाय, तालिकाएँ बनाई जाती हैं। प्रत्येक तालिका को तालिका की प्राथमिक कुंजी के एक अभिन्न घटक के रूप में पार्टीशन कुंजी का निर्दिष्ट करना अनिवार्य है। यह पार्टीशन कुंजी, जो मूल रूप से एक हैश मान है, वस्तुओं की पुनर्प्राप्ति और विभिन्न होस्टों के बीच डेटा के वितरण में महत्वपूर्ण भूमिका निभाती है। यह वितरण डेटाबेस की स्केलेबिलिटी और उपलब्धता बनाए रखने के लिए महत्वपूर्ण है। इसके अतिरिक्त, डेटा संगठन को और अधिक परिष्कृत करने के लिए सॉर्ट कुंजी को शामिल करने का विकल्प भी है।
Encryption
डिफ़ॉल्ट रूप से, DynamoDB एक KMS कुंजी का उपयोग करता है जो Amazon DynamoDB की है, न कि AWS द्वारा प्रबंधित कुंजी जो कम से कम आपके खाते की है।
Backups & Export to S3
तालिका बैकअप के निर्माण को अनुसूचीबद्ध करना या मांग पर बनाना संभव है। इसके अलावा, तालिका के लिए समय-समय पर पुनर्प्राप्ति (PITR) सक्षम करना भी संभव है। समय-समय पर पुनर्प्राप्ति आपके DynamoDB डेटा के निरंतर बैकअप प्रदान करती है 35 दिनों के लिए ताकि आप आकस्मिक लेखन या हटाने के संचालन से सुरक्षा कर सकें।
तालिका के डेटा को S3 में निर्यात करना भी संभव है, लेकिन तालिका को PITR सक्षम होना चाहिए।
GUI
स्थानीय Dynamo सेवाओं के लिए एक GUI है जैसे DynamoDB Local, dynalite, localstack, आदि, जो उपयोगी हो सकते हैं: https://github.com/aaronshaf/dynamodb-admin
Enumeration
अनधिकृत पहुँच
AWS - DynamoDB Unauthenticated Accessप्रिवेस्क
AWS - DynamoDB Privescपोस्ट एक्सप्लोइटेशन
AWS - DynamoDB Post Exploitationस्थिरता
AWS - DynamoDB PersistenceDynamoDB इंजेक्शन
SQL इंजेक्शन
DynamoDB डेटा तक पहुँचने के लिए SQL सिंटैक्स के साथ तरीके हैं, इसलिए, सामान्य SQL इंजेक्शन भी संभव हैं।
NoSQL इंजेक्शन
DynamoDB में विभिन्न शर्तें डेटा प्राप्त करने के लिए उपयोग की जा सकती हैं, जैसे कि एक सामान्य NoSQL इंजेक्शन में यदि डेटा प्राप्त करने के लिए अधिक शर्तों को जोड़ना संभव है तो आप छिपा हुआ डेटा प्राप्त कर सकते हैं (या पूरी तालिका को डंप कर सकते हैं)। आप यहाँ DynamoDB द्वारा समर्थित शर्तें पा सकते हैं: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html
ध्यान दें कि विभिन्न शर्तें समर्थित हैं यदि डेटा query
के माध्यम से या scan
के माध्यम से पहुँचाया जा रहा है।
वास्तव में, Query क्रियाओं को काम करने के लिए प्राथमिक कुंजी में शर्त "EQ" (बराबर) निर्दिष्ट करने की आवश्यकता होती है, जिससे यह NoSQL इंजेक्शन के लिए कम संवेदनशील हो जाता है (और ऑपरेशन को बहुत सीमित भी बनाता है)।
यदि आप तुलना को बदल सकते हैं या नए जोड़ सकते हैं, तो आप अधिक डेटा प्राप्त कर सकते हैं।
कच्चा Json इंजेक्शन
यह भेद्यता dynamodb Scan Filter पर आधारित है जो अब अप्रचलित है!
DynamoDB Json ऑब्जेक्ट्स को DB के अंदर डेटा खोजने के लिए स्वीकार करता है। यदि आप पाते हैं कि आप खोज के लिए भेजे गए json ऑब्जेक्ट में लिख सकते हैं, तो आप DB का डंप बना सकते हैं, सभी सामग्री।
उदाहरण के लिए, एक अनुरोध में इंजेक्ट करना जैसे:
एक हमलावर कुछ इस तरह इंजेक्ट कर सकता है:
1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0
"EQ" स्थिति को ठीक करें जो ID 1000 के लिए खोज कर रहा है और फिर सभी डेटा के लिए देख रहा है जिनका Id स्ट्रिंग 0 से बड़ा है, जो कि सब है।
एक कमजोर उदाहरण लॉगिन का हो सकता है:
यह निम्नलिखित के प्रति संवेदनशील होगा:
:property Injection
कुछ SDKs एक स्ट्रिंग का उपयोग करने की अनुमति देते हैं जो प्रदर्शन किए जाने वाले फ़िल्टरिंग को इंगित करती है जैसे:
आपको यह जानना आवश्यक है कि DynamoDB में फिल्टर एक्सप्रेशंस में वस्तुओं को स्कैन करते समय एक विशेषता मान को बदलने के लिए, टोकन को :
वर्ण से शुरू होना चाहिए। ऐसे टोकन को वास्तविक विशेषता मान को रनटाइम में बदला जाएगा।
इसलिए, पिछले जैसे एक लॉगिन को इस तरह से बायपास किया जा सकता है:
Last updated