Как я нашел:(IDOR+XSS) = захват аккантов всех юзеров

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Приветствую достопочтенную публику!
Меня зовут spizdil. В сегодняшней статье спешу поделиться находкой: IDOR в связке с self-XSS, потенциально приводящей к захвату всех аккаунтов сервиса.​

Ну что ж, приступим:
Я тестировал эту прилку некоторое время, это сервис организации ивентов, где менеджеры могут регистрировать события и управлять регистрантами.
Моей целью было понять как приложение обрабатывает авторизацию и аутентификацию реквестов.

Процесс атаки:
  1. Создание аккаунта: я создал два аккаунта со случайными данными для каждого.
  2. Попытка доступа к данным: Я попробовал получить данные аккаунта 2 из аккаунта 1 (атакующего аккаунта)
  3. Вкладка клиенты: Я сходил на вкладку "Customers" на моем аккаунте, где я мог увидеть всех моих клиентов.
  4. Перехват и модифицирование запросов:
Я перехватил запрос и модифицировал его из:

Код: Скопировать в буфер обмена
Код:
    {
  "eventID": 23423423
    }

на

Код: Скопировать в буфер обмена
Код:
    {
  "eventID": victimID
    }

К сожалению, я получил в лицо 403 Unauthorized response from the server

5. Новая идея
Потому как они юзают числовые ID'шки для доступа к данным, я использовал авторепитер Burp'а для того чтобы сопоставить каждый запрос моего “eventID” с айди таргета - “victimEventID”



image.png



6. Тестируем каждую функцию
Я протестил каждую функцию прилки, в то время как запросы модифицировались в бекграунде, но, к сожалению ничего это не принесло:(
Сдаваться? Мы не умеем!

После шаурмы и нескольких бутылок пива у меня появилось желание вернутся в игру xD

7. Функция email template:
- Я протестировал каждую функцию отдельно и нашел функцию редактирования email template.
- Я обнаружил, что могу добавить новый блок в email template. Я добавил тектовый блок с "this is test123".
- Вскрытые Перехват запроса показал что блок был сохранен как то так:

Код: Скопировать в буфер обмена
Код:
    {
  "json": "%7b%0a%22%64%61%74%61%22%3a%22%7b%74%65%78%74%3a%74%68%69%73%20%69%73%20%74%65%73%74%31%32%33%7d%22%2c%0a%65%76%65%6e%74%49%44%3a%32%33%34%32%33%0a%7d",
  "eventID": 43534
    }

Параметр json содержит URL-encoded версию добавленного нами текста.
8. Разшифровка и иньекция:

Я разшифровал результат, и :

Код: Скопировать в буфер обмена
Код:
    {
  "data": "{text:this is test123}",
  "eventID": 23423
    }

Делаем укольчик в текстовый параметр: <img/src=x onload=confirm(1)>

Код: Скопировать в буфер обмена
Код:
    {
  "data": "{text:<img/src=x onload=confirm(1)>}",
  "eventID": 23423
    }

Закодируем в Base46

Код: Скопировать в буфер обмена
Код:
    {
  "json": "%7b%0a%20%20%22%64%61%74%61%22%3a%20%22%7b%74%65%78%74%3a%3c%69%6d%67%2f%73%72%63%3d%78%20%6f%6e%6c%6f%61%64%3d%63%6f%6e%66%69%72%6d%28%31%29%3e%7d%22%2c%0a%20%20%22%65%76%65%6e%74%49%44%22%3a%20%32%33%34%32%33%0a%7d",
  "eventID": 43534
    }

Обновляем страничку, и вуаля! пэйлоад выполнен:smile10:, но это все еще self-XSS.

9. Финальные шаги до успеха

Модифицируем Event ID:
- Я модифицировал eventID до victimID и получил 200 OK ответ с пустым телом.
- Я быстренько проверил аккаунт цели, чтобы посмотреть модифицировал ли я email template. И че вы думаете? Я выполнился

image.png


Так какой же профит спросите вы???
Я отвечу: мы можем легко сбрутить eventID, поскольку он является числовым ID, произвести иньекцию пейлоада в аккаунты юзеров приложения, и стащить их все.
⠀⠀⠀⠀⠀⠀



Cпижжено и переведено simplestop для достопочтенной публики форума XSS.IS
 
Сверху Снизу