История одной НЕ уязвимости

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Некоторое время назад мне предоставилась возможность поэксперементировать с настройками одного заурядного роутера. Дело в том, что первое апреля обязывало меня разыграть своих товарищей с университета. В университеть была Wi-Fi сеть. Мною было решено поднять на своем роутере поддельную есть (задать имя, пароль и установить MAC-адрес одной из легитимных точек доступа), на ноутбуке запустить свой DNS, web сервер. Каждый случайно подключившийся к моей сети и попытавшийся зайти на какой либо сайт должен был перенапрявляться на мою страничку с первоапрельской картинкой. Но история не об этом. Когда я ковырялся в настройках роутера я нашел интересный баг, о нем я сегодня и расскажу.

image

На этапе настройки роутер был подключен к интернету. Но устройства, подключенные к Wi-Fi почему-то его не получали. Я полез разбираться. В панели роутера была вкладка с возможностью воспользоваться утилитой ping, поэтому telnet можно не включать (надеюсь все читатели понимают, чем опасен telnet, открытый наружу?). Выглядела форма вот так:



Реализована эта фича следующим образом. Программа роутера получает от пользователя строку, содержащую адрес, затем подставляет в строку вызова команды ping:

ping -c <число пакетов> <хост>

На сколько хорошо проверяет роутер строку, содержащую адрес? Именно этот вопрос возник у меня в голове. Тогда я подставил амперсанд и команду ls. Получил вот это:



Для тех, кто не в танке


В UNIX системах мы можем заставить bash выполнять команду в фоновом режиме, подставив после нее амперсанд. При этом, мы можем подставить после амперсанда команду, и она выполнится одновременно с первой. Чем я и воспользовался в данном случае. Подставив «8.8.8.8 & ls», я получил «ping -c 3 8.8.8.8 & ls». Роутер выполнил одновременно команду ping и ls. Затем вывел результат.

Будь этот баг допущен в любом другом месте, он стал бы очень серьезной угрозой. Ведь такая уязвимость помогла бы злоумышленнику получить полный контроль над устройством. Подобные уязвимости классифицируются как CWE-78 (OS Command Injection) .

Мне не сиделось на месте, и я поспешил написать производителю о найденном баге. Я подробно описал модель роутера, версию прошивки и сценарий воспроизведения бага. На что получил интересный ответ:

image
Перевод (дословно)

Не могли бы вы проверить версию аппаратного обеспечения на нижней этикетке продукта?
У нас нет Rev. Px. Вы знаете источник или место покупки этого устройства?
Как оказалось, они не учли, что я пишу из России. Данная модель роутера распространялась только в нашей стране. Переписка закончилась тем, что мне выслали новую прошивку, в которой устранены все недостатки предыдущей и добавлено много фич, но почему то она не оказалась в публичном доступе.

Источник: https://habr.com/ru/post/449376/


Интересные статьи

Интересные статьи

Разработчики из Alphabet построили в Кении экспериментальную беспроводную сеть, которая работает на основе света. Это не оптоволокно, основа системы — луч света, который фокусируют на у...
У нас в агрегации локальной сети было шесть пар коммутаторов Arista DCS-7050CX3-32S и одна пара коммутаторов Brocade VDX 6940-36Q. Не то, чтобы нас сильно напрягали коммутаторы Brocade в этой с...
Существует традиция, долго и дорого разрабатывать интернет-магазин. :-) Лакировать все детали, придумывать, внедрять и полировать «фишечки» и делать это все до открытия магазина.
13 августа компания Microsoft выпустила очередной апдейт безопасности (обзорная новость) для операционных систем Windows и офисных программ, и на этот раз патч оказался по-настоящему гигантским: ...
Эта статья посвящена одному из способов сделать в 1с-Битрикс форму в всплывающем окне. Достоинства метода: - можно использовать любые формы 1с-Битрикс, которые выводятся компонентом. Например, добавле...