Основы этичного веб-хакинга (перевод)

7. Обхождение двухфакторной аутентифиации GitLab

Сложность: Средняя 
Url: Недоступен 
Ссылка на отчет: https://hackerone.com/reports/128085²⁴ 
Дата отчет: 3 апреля 2016

Выплаченное вознаграждение: Недоступно 
Описание: 
3 апреля Джоберт Абма (сооснователь HackerOne) сообщил 
GitLab, что при включенной двухфакторной аутентификации 
хакер смог войти в аккаунт жертвы, не зная её пароля. 
Для тех, кто не знает, что это такое, скажу, что двухфакторная 
аутентификация - двухступенчатый процесс входа, обычно 
пользователь вводит свой логин и пароль и затем сайт отправ- 
ляет ему код авторизации, обычно через email или SMS, ко- 
торый пользователь должен ввести, чтобы завершить процесс 
аутентификации. 
В этом случае Джоберт заметил, что в процессе входа, после 
ввода хакером его логина и пароля, отправлялся токен для 
завершения входа. При отправке токена POST-запрос выглядел 
так: 
1 POST /users/sign_in HTTP/1.1 
2 Host: 159.xxx.xxx.xxx 
3 ... 

5 ----------1881604860 
6 Content-Disposition: form-data; name=”user[otp_attempt\ 
7 ]” 

9 212421 
10 ----------1881604860-- 
Если атакующий перехватывал его и добавлял имя пользова- 
теля к запросу, например:1 POST /users/sign_in HTTP/1.1 
2 Host: 159.xxx.xxx.xxx 
3 ... 

5 ----------1881604860 
6 Content-Disposition: form-data; name=”user[otp_attempt\ 
7 ]” 

9 212421 
10 ----------1881604860 
11 Content-Disposition: form-data; name=”user[login]” 
12 
13 john 
14 ----------1881604860-- 
то атакующий мог войти в аккаунт Джона, если токен otp_- 
attempt был валидным для Джона. Другими словами, в процес- 
се двухфакторной аутентификации, если атакующий добав- 
лял параметр user[login], он мог изменить аккаунт, в который 
совершалась попытка входа. 
Единственным недостатком здесь было то, что атакующий 
должен был иметь валидный OTP-токен жертвы. Но это как 
раз подходящий случай для брутфорса. Если администрато- 
ры сайта не реализовали ограничение на количество запро- 
сов, Джоберт мог бы осуществлять повторяющиеся запросы 
к серверу в попытках угадать валидный токен. Вероятность 
успешной атаки зависела бы от транзитного времени отправ- 
ки запроса к серверу и от срока валидности токена, но вне 
зависимости от этих параметров, уязвимость здесь довольно 
явная.

Выводы 
Двухфакторную аутентификацию непросто реа- 
лизовать корректно. Когда вы замечаете, что сайт 
использует её, вы можете захотеть провести пол- 
ное тестирование всей функциональности, вклю- 
чая длительность жизни токена, максимальное 
количество запросов, повторное использование 
истекших токенов, вероятность угадать токен, и 
так далее,



Отредактировано: 08.03.2019





Понравилась книга?
Отложите ее в библиотеку, чтобы не потерять