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 ## RSQL Injection
## Šta je RSQL? ## Š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 ## 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. 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. Ili čak iskoristiti za ekstrakciju osetljivih informacija pomoću Boolean upita ili ugnježdenih podupita.
## Rizici ## 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. - **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. - **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. - **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` | | `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` | | `search` | Izvodi fleksibilniju pretragu | `/api/v2/posts?search=technology` |
## Izdavanje informacija i enumeracija korisnika ## 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 email-om i vratio true ili false u zavisnosti od toga da li postoji u bazi podataka: 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 ### Zahtev
``` ```
GET /api/registrations HTTP/1.1 GET /api/registrations HTTP/1.1
@ -209,7 +209,7 @@ Access-Control-Allow-Origin: *
} }
``` ```
## Izbegavanje autorizacije ## 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 ### Zahtev
``` ```
GET /api/users HTTP/1.1 GET /api/users HTTP/1.1
@ -238,7 +238,7 @@ Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers Vary: Access-Control-Request-Headers
Access-Control-Allow-Origin: * 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 ### Request
``` ```
GET /api/users?filter[users]=id=in=(*a*) HTTP/1.1 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...). 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 ### Zahtev
``` ```
GET /api/users?include=language,country HTTP/1.1 GET /api/users?include=language,country HTTP/1.1