Translated ['src/pentesting-web/rsql-injection.md'] to sr

This commit is contained in:
Translator 2025-04-15 00:02:14 +00:00
parent 133a4b0826
commit c89dac741b

View File

@ -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