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

This commit is contained in:
Translator 2025-04-15 00:02:26 +00:00
parent f75066b7e6
commit 01b946a01c

View File

@ -7,10 +7,10 @@
## RSQL Injection ## RSQL Injection
## Cos'è RSQL? ## Cos'è RSQL?
RSQL è un linguaggio di query progettato per il filtraggio parametrizzato degli input nelle API RESTful. Basato su FIQL (Feed Item Query Language), originariamente specificato da Mark Nottingham per interrogare i feed Atom, RSQL si distingue per la sua semplicità e la capacità di esprimere query complesse in modo compatto e conforme agli URI su HTTP. Questo lo rende un'ottima scelta come linguaggio di query generale per la ricerca degli endpoint REST. RSQL è un linguaggio di query progettato per il filtraggio parametrizzato degli input nelle API RESTful. Basato su FIQL (Feed Item Query Language), specificato originariamente da Mark Nottingham per interrogare i feed Atom, RSQL si distingue per la sua semplicità e la capacità di esprimere query complesse in modo compatto e conforme agli URI su HTTP. Questo lo rende un'ottima scelta come linguaggio di query generale per la ricerca degli endpoint REST.
## Panoramica ## Panoramica
L'RSQL Injection è una vulnerabilità nelle applicazioni web che utilizzano RSQL come linguaggio di query nelle API RESTful. Simile a [SQL Injection](https://owasp.org/www-community/attacks/SQL_Injection) e [LDAP Injection](https://owasp.org/www-community/attacks/LDAP_Injection), questa vulnerabilità si verifica quando i filtri RSQL non sono adeguatamente sanitizzati, consentendo a un attaccante di iniettare query dannose per accedere, modificare o eliminare dati senza autorizzazione. L'iniezione RSQL è una vulnerabilità nelle applicazioni web che utilizzano RSQL come linguaggio di query nelle API RESTful. Simile a [SQL Injection](https://owasp.org/www-community/attacks/SQL_Injection) e [LDAP Injection](https://owasp.org/www-community/attacks/LDAP_Injection), questa vulnerabilità si verifica quando i filtri RSQL non sono adeguatamente sanitizzati, consentendo a un attaccante di iniettare query dannose per accedere, modificare o eliminare dati senza autorizzazione.
## Come funziona? ## Come funziona?
RSQL consente di costruire query avanzate nelle API RESTful, ad esempio: RSQL consente di costruire query avanzate nelle API RESTful, ad esempio:
@ -125,7 +125,7 @@ Content-Length: 85
}] }]
} }
``` ```
Sebbene ci si aspetti un `/api/registrations?email=<emailAccount>`, è possibile utilizzare i filtri RSQL per tentare di enumerare e/o estrarre informazioni sugli utenti attraverso l'uso di operatori speciali: Sebbene ci si aspetti un `/api/registrations?email=<emailAccount>`, è possibile utilizzare filtri RSQL per tentare di enumerare e/o estrarre informazioni sugli utenti attraverso l'uso di operatori speciali:
### Request ### Request
``` ```
GET /api/registrations?filter[userAccounts]=email=='test@test.com' HTTP/1.1 GET /api/registrations?filter[userAccounts]=email=='test@test.com' HTTP/1.1
@ -209,7 +209,7 @@ Access-Control-Allow-Origin: *
} }
``` ```
## Evasione dell'autorizzazione ## Evasione dell'autorizzazione
In questo scenario, partiamo da un utente con un ruolo base e nel quale non abbiamo permessi privilegiati (ad es. amministratore) per accedere all'elenco di tutti gli utenti registrati nel database: In questo scenario, partiamo da un utente con un ruolo di base e nel quale non abbiamo permessi privilegiati (ad es. amministratore) per accedere all'elenco di tutti gli utenti registrati nel database:
### Richiesta ### Richiesta
``` ```
GET /api/users HTTP/1.1 GET /api/users HTTP/1.1
@ -348,7 +348,7 @@ Access-Control-Allow-Origin: *
"data": [] "data": []
} }
``` ```
Utilizzando determinati operatori, potremmo enumerare gli utenti amministratori: Utilizzando determinati operatori potremmo enumerare gli utenti amministratori:
### Richiesta ### Richiesta
``` ```
GET /api/companyUsers?include=role&filter[companyUsers]=user.id=='94****************************' HTTP/1.1 GET /api/companyUsers?include=role&filter[companyUsers]=user.id=='94****************************' HTTP/1.1