Наши продукты

Все продукты →
  • Подписка на «Хакер»

    Все статьи, архив, PDF выпуски и бонусы при покупке товаров

    6000₽ в год

    Подписаться
  • Предзаказ четвертого печатного выпуска «Хакера»

    лучшее август..ноябрь 2026

    2000₽

    Заказать
  • Третий печатный выпуск «Хакера»

    лучшие материалы мая..июля 2026

    2000₽

    Заказать
  • Печатный спецвыпуск №4.

    Лучшие материалы 2021-2022 годов

    2000₽

    Заказать
Ду­маю, каж­дый, кто инте­ресу­ется ИБ, встре­чал упо­мина­ния CVE в стать­ях или пос­тах. Воз­можно, кто‑то даже хотел най­ти уяз­вимость сво­ими руками. Сегод­ня мы с тобой рас­смот­рим поиск уяз­вимос­тей на при­мере роуте­ра GL.iNet GL-MT300N-V2 Mango.

Раз­берем CVE-2023-50920 — прис­воение одно­го и того же иден­тифика­тора сес­сии пос­ле перезаг­рузок. Даль­ше:

  • вос­про­изве­дем уяз­вимость на реаль­ном устрой­стве;
  • пов­торим про­цесс поис­ка уяз­вимос­ти;
  • изу­чим патч;
  • раз­веем миф, что для поис­ка уяз­вимос­тей в роуте­рах и устрой­ствах IoT обя­затель­но сидеть с паяль­ником, осциллог­рафом и «Нек­рономи­коном».
 

Зачем воспроизводить уже найденные CVE?

Впол­не логич­ный воп­рос. Что­бы искать что‑то свое, нуж­но раз­вить нас­мотрен­ность и выс­тро­ить собс­твен­ную методо­логию. Без это­го тебе будет слож­но прис­тупить к иссле­дова­нию: ты прос­то не пой­мешь, с чего начать.

Для каж­дой CVE есть опи­сание. Оно сухое и иног­да не слиш­ком полез­ное. Зато мы можем быть уве­рены, что уяз­вимость сущес­тву­ет. Иног­да для нее пуб­лику­ют proof of concept — его тоже мож­но исполь­зовать как под­сказ­ку. Вся эта информа­ция поможет разоб­рать­ся в уяз­вимос­ти: вос­про­извести ее, докопать­ся до при­чины и изу­чить патч. Это и есть луч­ший спо­соб учить­ся.

 

Подопытный

По­чему я выб­рал целью имен­но этот роутер?

  • Во‑пер­вых, он дешевый: на момент написа­ния статьи он сто­ил око­ло 3000 руб­лей.
  • Во‑вто­рых, боль­шинс­тво устрой­ств IoT и прос­тых роуте­ров работа­ют в Linux с про­шив­кой OpenWrt. Ее исходный код открыт, поэто­му мы без проб­лем най­дем исходни­ки.
  • В‑треть­их, веб‑интерфей­сы таких устрой­ств час­то написа­ны на скрип­товых язы­ках: Lua, PHP или Python. Поэто­му для ана­лиза нам не понадо­бят­ся ни IDA, ни Ghidra — подой­дет любой тек­сто­вый редак­тор. Ну или редак­тор кода, если хочешь под­свет­ку син­такси­са.
  • В‑чет­вертых, ман­го в наз­вании! Ну а что?
Наш красавец
Наш кра­савец

Я буду вскры­вать свой роутер, но про­шив­ку мож­но най­ти на офи­циаль­ном сай­те, рас­паковать с помощью binwalk и пов­торить иссле­дова­ние. Так­же ее мож­но поп­робовать запус­тить в QEMU, но сегод­ня не об этом. Для статьи я ска­чал вер­сию 4.3.7.

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

 

Читаем описание уязвимости

Най­дем на сай­те NVD опи­сание нуж­ной нам CVE-2023-50920:

An issue was discovered on GL.iNet devices before version 4.5.0. They assign the same session ID after each user reboot, allowing attackers to share session identifiers between different sessions and bypass authentication or access control measures. Attackers can impersonate legitimate users or perform unauthorized actions. This affects A1300 4.4.6, AX1800 4.4.6, AXT1800 4.4.6, MT3000 4.4.6, MT2500 4.4.6, MT6000 4.5.0, MT1300 4.3.7, MT300N-V2 4.3.7, AR750S 4.3.7, AR750 4.3.7, AR300M 4.3.7, and B1300 4.3.7.
Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N

Страш­но? Давай по‑челове­чес­ки: пос­ле каж­дой перезаг­рузки роутер выда­ет одни и те же иден­тифика­торы сес­сий. Если я один раз соберу набор дей­ству­ющих session id (sid), то пос­ле перезаг­рузки устрой­ства они сно­ва будут работать — и я смо­гу выдать себя за легитим­ного поль­зовате­ля.

Опи­сание дает важ­ную под­сказ­ку: нуж­но искать sid.

 

Воспроизведение

Преж­де чем искать уяз­вимость в коде, пред­лагаю поп­робовать ее вос­про­извести. Тем более что для это­го нам не нужен PoC.

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

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

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

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

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

    Подписаться

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