[Перевод] Превышение привилегий через манипуляцию с атрибутами аккаунта

Сегодня мы увидим, как параметры могут привести к большим финансовым потерям для компании.

bb3a5f59891d35fbce7aa62073a30ea9.png

Давайте начнем с аккаунтом обычного пользователя на сайте, который представляет собой платформу электронной коммерции, где происходит покупка и продажа товаров. Допустим, сайт называется Example.com.

Когда вы переходите в раздел покупки товаров и добавляете несколько позиций в корзину, вы видете примерно следующее…

b1f752653a9450611ce26ff1a867647c.png

Первая мысль, которая пришла мне в голову — есть ли на этом сайте пользователи с более высокими привилегиями? И если есть, как их определить? Это администраторы, сотрудники или кто-то еще?

Существует два вида повышения привилегий — вертикальное и горизонтальное.

  • Вертикальное повышение привилегий — это когда пользователь получает доступ к привилегиям более высокого уровня, чем ему положено. Например, обычный пользователь каким-то образом получает права администратора и может управлять всем сайтом.

  • Горизонтальное повышение привилегий — это когда пользователь получает доступ к привилегиям другого пользователя на том же уровне. Например, один обычный пользователь может получить доступ к аккаунту или данным другого обычного пользователя, не становясь администратором.

Хорошо, а как их искать? Когда я посмотрел JavaScript-файлы, я нашёл некоторые параметры и перешёл в Burp Suite, чтобы изучить их более детально. Да, я нашёл их в GET-запросе, а именно в GET /customer/{{ID}}. Я заметил эти две переменные:

  • isEmployee

  • isCorporate

24b25b24c4eb1d0ec29bfe6d4baab569.png

Окей, здесь используется GET-запрос. Как теперь отправить запрос, который изменяет false на true? Как вам идея воспользоваться функцией «Match and Replace» в Burp Suite?

Это не сработало. Теперь давай попробуем отправить OPTIONS-запрос на /customer/{{ID}}.

0eeabbccdea859c14c08d5a8539a241b.png

Вау, этот эндпоинт принимает PATCH-запрос!

576ebc2bfa6dcb57d648f1ce34f98983.png

Теперь мы отправим PATCH-запрос на /customer/{{ID}}

5e53c0c5fba38c1d7f68098dc97e1805.png

И вот что получилось!

190e99a7b3664e809cd6afa55c927f2a.png

Теперь давайте вернёмся на сайт и перейдём к эндпоинту «checkout»!!!

f22b6e8cb185ede4d440b1097fe2de1d.png

Супер! Когда я добавил больше товаров, чем нужно, мне дали скидку более 3 000 евро, потому что теперь я сотрудник, а не обычный пользователь!

a1cb2a86cc7a8958b7d0ffdf3dcd7e13.png

Ещё больше познавательного контента в Telegram-канале — Life-Hack — Хакер

Habrahabr.ru прочитано 29965 раз