- •1.Описание практической работы 3
- •Описание практической работы
- •Типичные уязвимости дбо
- •Проблема № 1 – Идентификаторы
- •Проблема № 2 – Парольная политика
- •Проблема № 3 –Brute Force
- •Проблема № 4 – Восстановление пароля
- •Проблема № 5 – Разграничение привелегий
- •Проблема № 6 –One-Time Password
- •Проблема № 7 – Изменение шаблона платежа
- •Проблема № 8 – Обход аутентификации
- •Проблема № 9 –Race condition
- •Как это было на phDays
- •Примеры практической эксплуатации уязвимостей
- •Уязвимость через helpdesk
- •Уязвимость в восстановлении пароля
- •Слабые сессии
Проблема № 4 – Восстановление пароля
Восстановление пароля. Возможность восстановления забытого пароля присутствует почти в каждом веб-приложении, и PHDays I-Bank — не исключение. Для некоторых пользователей I-Bank предусмотрена возможность восстановления пароля через веб-форму. Остальные пользователи, по замыслу, могут восстановить пароль, только обратившись в отделение банка.
Если для восстановления пароля нужно ввести идентификатор, а не адрес электронной почты, то злоумышленник способен узнать существующие в системе идентификаторы.
В PHDays I-Bank идентификаторы ключевых клиентов генерируются по специальному алгоритму.
Как видно, идентификатор сессии состоит всего из 4 символов. Все они цифровые, что значительно уменьшает энтропию. Кроме того, идентификатор сессии статичный: он изменяется только в том случае, если пользователь обновляет пароль.
Ключ, который необходимо ввести для восстановления пароля, генерируется с недостаточной энтропией. Чтобы подобрать ключ, необходимо перебрать не более 250 значений! После этого будет установлен новый пароль. В тех случаях, когда используются собственные механизмы сессии, надежность идентификатора играет важную роль.
Проблема № 5 – Разграничение привелегий
Проблемы разграничения привилегий. Если возможность переводить деньги с чужих счетов — совсем редкое явление, то открытые лазейки для доступа к другим пользовательским данным в системах ДБО еще встречаются. Эксперты сталкивались с ошибками, позволяющими отправлять сообщения в техподдержку от лица любого пользователя ДБО, а также редактировать шаблоны платежей других пользователей. Такие уязвимости в PHDays I-Bank включены не были.
Проблема № 6 –One-Time Password
One-time password (OTP). Одноразовые пароли используются для защиты от не санкционированных пользователем действий — выполнения транзакций, изменения пароля, редактирования личных данных. OTP может запрашиваться как после первичной аутентификации (логин и пароль), так и перед выполнением каждой транзакции (или другого действия).
Во-первых, OTP не запрашивается при переводе небольших сумм (например, до 100 долл.), во-вторых, не исключена повторная отправка одного и того же OTP, в-третьих, OTP часто легко предугадать, в-четвертых, некоторые пользователи отключают OTP, а в-пятых — можно обойти шаг проверки OTP и сразу выполнить транзакцию.
В PHDays I-Bank были реализованы два типа одноразовых паролей: эмуляция использования внешнего устройства (в коде это было осуществлено в классе TransactionA) и одноразовые пароли на скретч-картах (в классе TransactionB).
Предугадать OTP невозможно. Но при этом можно обойти шаг проверки и выполнить транзакцию напрямую! Заменяем step3 на step4 (One-time password, TransactionA)
Алгоритм генерации OTP ненадежен (One-time password, TransactionB)
OTP может принимать только два значения (One-time password, TransactionB)
Бывает так, что OTP запрашивается только при проведении транзакций, но другие действия можно сделать без ввода одноразового пароля (отправить сообщение в техподдержку, изменить пароль, изменить или создать шаблон платежа, открыть новый счет).