Старый 23.05.2014, 17:40   #1
d4d
 
Аватар для d4d
 
Регистрация: 23.05.2014
Сообщений: 2
Репутация: 2
По умолчанию PHDays 2014 - Большой ку$h

Привет!
Большой ку$h - соревнование на поиск уязвимостей в системе дистанционного банковского обслуживания.
В этом году система была доступна для скачивания за два дня до конкурса, что значительно упрощало жизнь. Исходные тексты и виртуальная машина на хабре.

Подробнее о сервисе:
Существовал десктопный и мобильный вариант сервиса.
Пользователи различались по способу отправки денег:
1 вид - Mobile bank - Отправка денег не требовала подтверждения;
2 вид - SMS-tokens - На наш номер "отправлялась" СМСка с кодом подтверждения;
3 вид - Transaction authentication numbers - 20 одноразовых паролей (otp), которые запрашивались для подтверждения транзакции.

Уязвимости
  • Обход Captcha: ничего не поменялось с прошлого раза - подробнее в статье HeartLESS.
  • Неавторизованные платежи. Отсутствие проверок идентификатора пользователя в параметре card_id позволяет переводить средства с одного аккаунта на другой зная только otp одного пользователя. Уязвимость была у третьего типа пользователей.
  • Ошибка округления. Позволяет накручивать деньги при совершении микротранзакций с рублевого счета на долларовый. У меня переводилось 2 рубля на 6 центов и обратно, прибыль была где-то 14 копеек.
  • Прямой доступ в панель оператора позволял получить доступ к информации о состоянии счета пользователя и его шаблонах http://(ip)/Operator/userInfo/id/1. Редактирование шаблона можно выполнить перейдя по url http://(ip)/Operator/editTemplate/id/1
  • Слабые пароли. Брут форс слабых паролей по словарю. У меня было 50 паролей.
  • XSS в панели оператора позволяла грабить награбленное. Я не эксплуатировал ее.

Эксплоит
был написан на python2.7 + использовались две библиотеки Requests и lxml
У меня было 3 основных модуля:
  • Редактирование пользовательских шаблонов. Скрипт узнавал состояние счета пользователя через панель оператора и в дальнейшем изменял шаблон таким образом чтобы были переведены все средства за один раз на мой счет. Скрипт работал в бесконечном цикле, чтобы защитится от редактирования шаблона другими игроками.
  • Брут в пять потоков пытался подобрать пароль к пользователю. В случае успеха пользовательский пароль заменялся на мой. Средства переводились на мой счет через вторую уязвимость.
  • Накрутка. 1000 раз с рублевого счета на долларовый скрипт переводил малые суммы. Валовый поток запросов на сервер пару раз выводил его из строя в течение конкурса.

Брут форс отработал быстро и позволил мне вывести средства со всех счетов кроме одного. Редактор шаблонов отработал только на половине пользователей, а округлении валют принесло очень мало средств. Этого было достаточно чтобы победить в конкурсе.


Спасибо за внимание!

Последний раз редактировалось d4d; 23.05.2014 в 17:59..
d4d вне форума   Ответить с цитированием
Ответ

Метки
$natch, phdays

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot