mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/rsql-injection.md'] to sr
This commit is contained in:
parent
133a4b0826
commit
c89dac741b
@ -7,7 +7,7 @@
|
||||
## RSQL Injection
|
||||
|
||||
## Šta je RSQL?
|
||||
RSQL je jezik upita dizajniran za parametarsko filtriranje ulaza u RESTful API-ima. Zasnovan na FIQL (Feed Item Query Language), koji je prvobitno definisao Mark Nottingham za upitivanje Atom feed-ova, RSQL se izdvaja svojom jednostavnošću i sposobnošću da izrazi složene upite na kompaktan i URI-kompatibilan način preko HTTP-a. Ovo ga čini odličnim izborom kao opšti jezik upita za pretraživanje REST krajnjih tačaka.
|
||||
RSQL je jezik upita dizajniran za parametarsko filtriranje unosa u RESTful API-ima. Zasnovan na FIQL (Feed Item Query Language), koji je prvobitno definisao Mark Nottingham za upitivanje Atom feed-ova, RSQL se izdvaja svojom jednostavnošću i sposobnošću da izrazi složene upite na kompaktan i URI-kompatibilan način preko HTTP-a. Ovo ga čini odličnim izborom kao opšti jezik upita za pretraživanje REST krajnjih tačaka.
|
||||
|
||||
## Pregled
|
||||
RSQL Injection je ranjivost u web aplikacijama koje koriste RSQL kao jezik upita u RESTful API-ima. Slično [SQL Injection](https://owasp.org/www-community/attacks/SQL_Injection) i [LDAP Injection](https://owasp.org/www-community/attacks/LDAP_Injection), ova ranjivost se javlja kada RSQL filteri nisu pravilno sanitizovani, omogućavajući napadaču da ubaci zlonamerne upite kako bi pristupio, izmenio ili obrisao podatke bez autorizacije.
|
||||
@ -26,7 +26,7 @@ Ako aplikacija ne validira ispravno korisnički unos, napadač bi mogao da manip
|
||||
Ili čak iskoristiti za ekstrakciju osetljivih informacija pomoću Boolean upita ili ugnježdenih podupita.
|
||||
|
||||
## Rizici
|
||||
- **Izlaganje osetljivih podataka:** Napadač može da dohvati informacije koje ne bi trebale biti dostupne.
|
||||
- **Izloženost osetljivih podataka:** Napadač može da dohvati informacije koje ne bi trebale biti dostupne.
|
||||
- **Modifikacija ili brisanje podataka:** Injekcija filtera koji menjaju zapise u bazi podataka.
|
||||
- **Povećanje privilegija:** Manipulacija identifikatorima koji dodeljuju uloge kroz filtere kako bi se prevarila aplikacija pristupom sa privilegijama drugih korisnika.
|
||||
- **Izbegavanje kontrola pristupa:** Manipulacija filterima za pristup ograničenim podacima.
|
||||
@ -87,8 +87,8 @@ Ovi parametri pomažu u optimizaciji API odgovora:
|
||||
| `fields[resource]` | Definiše koje polja da vrati u odgovoru | `/api/v2/users?fields[users]=id,name,email` |
|
||||
| `search` | Izvodi fleksibilniju pretragu | `/api/v2/posts?search=technology` |
|
||||
|
||||
## Izdavanje informacija i enumeracija korisnika
|
||||
Sledeći zahtev prikazuje endpoint za registraciju koji zahteva parametar email kako bi proverio da li postoji neki korisnik registrovan sa tim email-om i vratio true ili false u zavisnosti od toga da li postoji u bazi podataka:
|
||||
## Curjenje informacija i enumeracija korisnika
|
||||
Sledeći zahtev prikazuje endpoint za registraciju koji zahteva parametar email kako bi proverio da li postoji neki korisnik registrovan sa tim emailom i vratio true ili false u zavisnosti od toga da li postoji u bazi podataka:
|
||||
### Zahtev
|
||||
```
|
||||
GET /api/registrations HTTP/1.1
|
||||
@ -209,7 +209,7 @@ Access-Control-Allow-Origin: *
|
||||
}
|
||||
```
|
||||
## Izbegavanje autorizacije
|
||||
U ovom scenariju, počinjemo od korisnika sa osnovnom ulogom i u kojem nemamo privilegovane dozvole (npr. administrator) da pristupimo listi svih korisnika registrovanih u bazi podataka:
|
||||
U ovom scenariju, počinjemo od korisnika sa osnovnom ulogom i u kojem nemamo privilegovane dozvole (npr. administrator) za pristup listi svih korisnika registrovanih u bazi podataka:
|
||||
### Zahtev
|
||||
```
|
||||
GET /api/users HTTP/1.1
|
||||
@ -238,7 +238,7 @@ Vary: Access-Control-Request-Method
|
||||
Vary: Access-Control-Request-Headers
|
||||
Access-Control-Allow-Origin: *
|
||||
```
|
||||
Ponovo koristimo filtre i specijalne operatore koji će nam omogućiti alternativni način da dobijemo informacije o korisnicima i izbegnemo kontrolu pristupa. Na primer, filtriramo *korisnike* koji sadrže slovo “*a*” u svom korisničkom *ID*-u:
|
||||
Ponovo koristimo filtre i specijalne operatore koji će nam omogućiti alternativni način da dobijemo informacije o korisnicima i izbegnemo kontrolu pristupa. Na primer, filtriramo one *korisnike* koji sadrže slovo “*a*” u svom korisničkom *ID*-u:
|
||||
### Request
|
||||
```
|
||||
GET /api/users?filter[users]=id=in=(*a*) HTTP/1.1
|
||||
@ -458,10 +458,10 @@ Access-Control-Allow-Origin: *
|
||||
}, {
|
||||
.......
|
||||
```
|
||||
## Impersonacija ili Nepouzdane Direktne Reference na Objekte (IDOR)
|
||||
## Impersonacija ili Nesigurne Direktne Reference na Objekte (IDOR)
|
||||
Pored korišćenja `filter` parametra, moguće je koristiti i druge parametre kao što je `include` koji omogućava uključivanje određenih parametara u rezultat (npr. jezik, država, lozinka...).
|
||||
|
||||
U sledećem primeru, prikazane su informacije o našem korisničkom profilu:
|
||||
U sledećem primeru, informacije o našem korisničkom profilu su prikazane:
|
||||
### Zahtev
|
||||
```
|
||||
GET /api/users?include=language,country HTTP/1.1
|
||||
|
Loading…
x
Reference in New Issue
Block a user