Выполнение произвольного кода в Rails

от автора

Вкратце: Rails 2,3 и 4 приложения подвержены выполнению произвольного кода(RCE) без исключения. Шел, чтение и очистка базы данных, все что душе угодно.

Чуть подробнее. Не так давно многие обратили внимание на то что рельсы по умолчанию принимают не только x-www-form-urlencoded параметры, но и XML/JSON. А XML внутри себя принимает также такой тип данных как YAML:

<foo type="yaml"> ... </foo>  

А YAML в свою очередь очень гибкий формат и позволяет создавать инстансы произвольных классов с последующей задачей через [] метод произвольных параметров — например.
А в свою очередь в огромной классовой архитектуре Rails и сопутствующих джемов можно найти такой класс чтобы во время его инициализации(initialize) или назначения аттрибутов через [] был выполнен произвольный код из этого самого YAML текста.
Умельцы нашли несколько способов — например через класс ActionDispatch::Routing::RouteSet::NamedRouteCollection
Статья с описанием на официальном блоге и рекомендации по обновлению.

P.S. эксплоит в сети вот уже часов 12. эпично

ссылка на оригинал статьи http://habrahabr.ru/post/165343/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *