From 9408c26047e94787a0d8f3dca975c50cd231f9af Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 15 Apr 2025 00:02:32 +0000 Subject: [PATCH] Translated ['src/pentesting-web/rsql-injection.md'] to uk --- src/pentesting-web/rsql-injection.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/pentesting-web/rsql-injection.md b/src/pentesting-web/rsql-injection.md index 3256173d0..7e6920640 100644 --- a/src/pentesting-web/rsql-injection.md +++ b/src/pentesting-web/rsql-injection.md @@ -7,7 +7,7 @@ ## RSQL Injection ## Що таке RSQL? -RSQL - це мова запитів, розроблена для параметризованого фільтрування вхідних даних у RESTful API. Заснована на FIQL (Feed Item Query Language), спочатку визначеній Марком Ноттінгемом для запитів до Atom-каналів, RSQL вирізняється своєю простотою та здатністю виражати складні запити компактним і сумісним з URI способом через HTTP. Це робить її відмінним вибором як загальної мови запитів для пошуку REST-інтерфейсів. +RSQL - це мова запитів, розроблена для параметризованого фільтрування вхідних даних у RESTful API. Заснована на FIQL (Feed Item Query Language), спочатку визначеній Марком Ноттінгемом для запитів до Atom-каналів, RSQL вирізняється своєю простотою та здатністю виражати складні запити компактно та відповідно до URI через HTTP. Це робить її відмінним вибором як загальної мови запитів для пошуку REST-інтерфейсів. ## Огляд RSQL Injection - це вразливість у веб-додатках, які використовують RSQL як мову запитів у RESTful API. Подібно до [SQL Injection](https://owasp.org/www-community/attacks/SQL_Injection) та [LDAP Injection](https://owasp.org/www-community/attacks/LDAP_Injection), ця вразливість виникає, коли фільтри RSQL не очищуються належним чином, що дозволяє зловмиснику впроваджувати шкідливі запити для доступу, зміни або видалення даних без авторизації. @@ -17,7 +17,7 @@ RSQL дозволяє вам створювати розширені запит ```bash /products?filter=price>100;category==electronics ``` -Це перетворюється на структурований запит, який фільтрує продукти з ціною більше 100 та категорією "електроніка". +Це перетворюється на структурований запит, який фільтрує продукти з ціною більше 100 і категорією "електроніка". Якщо додаток не правильно перевіряє введення користувача, зловмисник може маніпулювати фільтром для виконання несподіваних запитів, таких як: ```bash @@ -30,13 +30,13 @@ RSQL дозволяє вам створювати розширені запит - **Модифікація або видалення даних:** Впровадження фільтрів, які змінюють записи в базі даних. - **Ескалація привілеїв:** Маніпуляція ідентифікаторами, які надають ролі через фільтри, щоб обманути додаток, отримуючи доступ з привілеями інших користувачів. - **Уникнення контролю доступу:** Маніпуляція фільтрами для доступу до обмежених даних. -- **Персоніфікація або IDOR:** Модифікація ідентифікаторів між користувачами через фільтри, які дозволяють доступ до інформації та ресурсів інших користувачів без належної аутентифікації. +- **Видавання себе за іншого або IDOR:** Модифікація ідентифікаторів між користувачами через фільтри, які дозволяють доступ до інформації та ресурсів інших користувачів без належної аутентифікації. ## Підтримувані оператори RSQL | Оператор | Опис | Приклад | |:----: |:----: |:------------------:| -| `;` / `and` | Логічний **AND** оператор. Фільтрує рядки, де *обидві* умови *істинні* | `/api/v2/myTable?q=columnA==valueA;columnB==valueB` | -| `,` / `or` | Логічний **OR** оператор. Фільтрує рядки, де *принаймні одна* умова *істинна*| `/api/v2/myTable?q=columnA==valueA,columnB==valueB` | +| `;` / `and` | Логічний **AND** оператор. Фільтрує рядки, де *обидва* умови є *істинними* | `/api/v2/myTable?q=columnA==valueA;columnB==valueB` | +| `,` / `or` | Логічний **OR** оператор. Фільтрує рядки, де *принаймні одна* умова є *істинною*| `/api/v2/myTable?q=columnA==valueA,columnB==valueB` | | `==` | Виконує запит **дорівнює**. Повертає всі рядки з *myTable*, де значення в *columnA* точно дорівнюють *queryValue* | `/api/v2/myTable?q=columnA==queryValue` | | `=q=` | Виконує запит **пошук**. Повертає всі рядки з *myTable*, де значення в *columnA* містять *queryValue* | `/api/v2/myTable?q=columnA=q=queryValue` | | `=like=` | Виконує запит **подібно**. Повертає всі рядки з *myTable*, де значення в *columnA* подібні до *queryValue* | `/api/v2/myTable?q=columnA=like=queryValue` | @@ -162,7 +162,7 @@ Access-Control-Allow-Origin: * } } ``` -У випадку, якщо знайдено дійсний обліковий запис електронної пошти, програма поверне інформацію про користувача замість класичного *“true”*, *"1"* або чогось подібного у відповіді серверу: +У випадку, якщо знайдено дійсний обліковий запис електронної пошти, програма поверне інформацію про користувача замість класичного *“true”*, *"1"* або чогось подібного у відповіді на сервер: ### Request ``` GET /api/registrations?filter[userAccounts]=email=='manuel**********@domain.local' HTTP/1.1 @@ -209,7 +209,7 @@ Access-Control-Allow-Origin: * } ``` ## Уникнення авторизації -У цьому сценарії ми починаємо з користувача з базовою роллю і в якого немає привілейованих дозволів (наприклад, адміністратора) для доступу до списку всіх користувачів, зареєстрованих у базі даних: +У цьому сценарії ми починаємо з користувача з базовою роллю, у якого немає привілейованих дозволів (наприклад, адміністратора) для доступу до списку всіх користувачів, зареєстрованих у базі даних: ### Запит ``` GET /api/users HTTP/1.1 @@ -347,7 +347,7 @@ Access-Control-Allow-Origin: * "data": [] } ``` -Використовуючи певні оператори, ми можемо перерахувати адміністративних користувачів: +Використовуючи певні оператори, ми можемо перерахувати адміністраторів: ### Запит ``` GET /api/companyUsers?include=role&filter[companyUsers]=user.id=='94****************************' HTTP/1.1 @@ -395,7 +395,7 @@ Access-Control-Allow-Origin: * }] } ``` -Після того, як відомий ідентифікатор адміністратора, можна експлуатувати підвищення привілеїв, замінивши або додавши відповідний фільтр з ідентифікатором адміністратора та отримавши ті ж привілеї: +Після того, як відомий ідентифікатор адміністратора, можна експлуатувати ескалацію привілеїв, замінивши або додавши відповідний фільтр з ідентифікатором адміністратора та отримавши ті ж привілеї: ### Request ``` GET /api/functionalities/allPermissionsFunctionalities?filter[companyUsers]=user.id=='94****************************' HTTP/1.1 @@ -515,7 +515,7 @@ Access-Control-Allow-Origin: * }] } ``` -Комбінація фільтрів може бути використана для ухилення від контролю авторизації та отримання доступу до профілів інших користувачів: +Комбінація фільтрів може бути використана для обходу контролю авторизації та отримання доступу до профілів інших користувачів: ### Request ``` GET /api/users?include=language,country&filter[users]=id=='94***************' HTTP/1.1