Уязвимость exchanger1
В этой статье, я опишу весьма интересную с точки зрения логики находку.
Я дал людям на фикс 30 дней. Увы, благодарить администрация не умеет )
Часть 1
Я говорю о безопасности пользователей в общем.
Часть полученного вознаграждения я вывел используя ваш обменник.
Мне стало забавно почитать о вашем проекте подробнее и я наткнулся на "https://exchanger1.com/page/about" .
Пункт 4 вкладки "Безопасность работы с нами", говорит нам о защите любых данных пользователей. (Все это гарантирует сохранность любых данных пользователей на нашем сайте.)
Весьма громкое заявление !
Учитывая все факторы, я обнаружил весьма серьезную уязвимость в системе помощи пользователям.
Злоумышленник может получать доступ к тикетам и писать в них от имени администрации!
также можно просто закрыть тикет.
Неправильное разграничение привилегий может нести за собой большие последствия...
Часть 2
В результате исследования модуля помощи клиентам, также была найдена уязвимость в реализации api.
Злоумышленник может Деанонимизировать транзакции пользователя.
Рабочий пример:
Я перебрал транзакции пользователей по номеру тикета.
https://pix.my/o/8a9Tvk?1513363007=
Получился достаточно большой результат.
транзакция на обмен 300$ пренадлежит автору тикета N-320014. (
23:00 21.11.2017 )
По номеру тикета, api выдает нам информацию кодированную в Unicode.
Полученная транзакция в свою очередь содержит суммы переводов.
Пример расшифровки ответа api на транзакцию 320014:
{"error":false,"_content":{"#trx-status":"<h5>
<small>Статус:</small> Завершена</h5>
<div class="description">
<a href="/exchange/status/8661199">Заявка № 8 661 199</a>
</div>
<div class="exchange-error">
<div class="money-error">
<span class="first-currency">300,00</span>
<div class="image-wrapper">
<img class="currency_logo"
src="/bundles/x2face/images/currency/advcash.png"
height="27" width="27" alt="#">
</div>
<span class="money">USD</span>
</div>
<div class="money-error">
<span class="second-currency">7 800,00</span>
<div class="image-wrapper">
<img class="currency_logo"
src="/bundles/x2face/images/currency/visamaster.png"
height="24" width="24" alt="#">
</div>
<span class="money">UAH</span>
</div>
</div>
<div class="time-money">
<a class="btn small status" href="#" data-exec="jQuery(this).closest('form').trigger('submit');">Проверить статус</a>
</div>exchanger_pm"}}
Техническая и детальная информация:
1) для получения доступа к чужому тикету, злоумышленнику достаточно заменить идентификатор.
Злоумышленник может от имени администрации попросить пользователя выслать ту или иную информацию.
2) для получения транзакции по id тикета, злоумышленику достаточно совершить GET запрос на:
https://exchanger1.com/profile/tickets/history/{$ID}/status
позже декодировать полученную информацию.
Простой вектор атаки:
найти транзакцию и получить ее сумму.(используя баг в api)
Располагая этой информацией, попросить пользователя подтвердить свои документы.
Статистика:
Перебрав диапазон в 160 тикетов, я получил доступ к 31 транзакции.