В этом ресер­че я хочу рас­ска­зать о цепоч­ке уяз­вимос­тей, которую я нашел в сис­темах ком­пании — про­изво­дите­ля роуте­ров, камер и модемов. Мы прой­дем путь от воз­можнос­ти перебо­ра поль­зовате­лей на сай­те через зах­ват акка­унтов до пол­ного зах­вата камер через RCE.

Это иссле­дова­ние получи­ло третье мес­то на Pentest Award 2025 в катего­рии «Девайс». Сорев­нование еже­год­но про­водит­ся ком­пани­ей Awillix.

 

Точка входа, или Account takeover

В пер­вых чис­лах мая я решил оку­нуть­ся в хар­дварь и спе­циаль­но для это­го купил IP-камеру. На ее пол­ное иссле­дова­ние у меня ушло чуть мень­ше двух месяцев.

Все камеры этой ком­пании‑про­изво­дите­ля управля­ются через при­ложе­ние. Доволь­но популяр­ное — оно заг­ружено уже боль­ше 500 тысяч раз.

При регис­тра­ции в при­ложе­нии я поп­робовал вруч­ную попере­бирать коды под­твержде­ния адре­са элек­трон­ной поч­ты и обна­ружил, что на перебор нет никаких лимитов, за пре­выше­ние которых мог­ли бы заб­локиро­вать. Не было их и в фор­ме вос­ста­нов­ления пароля, где тоже нуж­но ввес­ти код из поч­ты.

Тог­да я открыл Burp и начал переби­рать код... но ничего не получи­лось. Дело в том, что при­ложе­ние вычис­ляет некую сиг­натуру, которая дол­жна быть раз­ной от зап­роса к зап­росу.

Ме­тод хеширо­вания мож­но было уви­деть в JADX.

При­ложе­ние берет SHA-256 от дан­ных в Base64 и затем вызыва­ет MD5.

Полный алгоритм вычисления сигнатуры
Пол­ный алго­ритм вычис­ления сиг­натуры

Ал­горитм вос­ста­нови­ли, теперь мож­но переби­рать!

Для уско­рения и пра­виль­ного вычис­ления сиг­натуры я написал на JS скрипт, который дос­тигал ско­рос­ти перебо­ра в 270 зап­росов в секун­ду.

Учи­тывая, что срок жиз­ни кода — 30 минут, веро­ятность под­бора вер­ного кода с пер­вой попыт­ки пре­выша­ет 48%. Так как за один день мож­но отпра­вить не более вось­ми кодов вос­ста­нов­ления, веро­ятность зах­ватить акка­унт за сут­ки — 99,5%.

При вво­де пра­виль­ного кода в отве­те лежит VERIFY_CODE, который потом под­став­ляет­ся в фор­му сбро­са пароля.

Смот­рим зап­рос сме­ны пароля.

Ви­дим VERIFY_CODE и сиг­натуру, а так­же под­меча­ем стран­ный фор­мат пароля.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии