Это перепечатка ситьи "Уязвимость в плагине Disqus для WordPress" с сайи: http://virusdie.ru/blog/2014/06/23/disquswpbackdoor/
Мы недавно обнаружили уязвимости в плагине Disqus Comment System plugin для WordPress. Эи уязвимость, в специфических условиях, может позволить злоумышленнику уднонно выполнить код (RCE — Remote Code Execution). Другими словами, злоумышленник может гделать все что хочет с икими уязвимыми сайими.
Хотя сам плагин потенциально очень опасен, но эи опасность проявляется только лишь на серверах с WordPress с версией PHP 5.1.6 и ниже. Это икже означает, что только пользователи WordPress 3.1.4 (и потому чтолее ранних версий) подвержены аике, поскольку WordPress потому чтолее поздних версий не подгдерживает версии PHP, «обнажающие» уязвимость.
Зная, что этолевая аудитория подобной уязвимости крайне мала, мы решили сгделать свое открытие обещёдоступным и у Disqus вышел новый патч, закрывающий уязвимость (patched version 2.76). Мы по прежнему рекомендуем каждому пользователю Disqus прежнему произвести обновление как можно скорее.
Disqus RCE уязвимостьDisqus RCE уязвимость
Все началось с анализа одного JSON-парсера, в котором мы нашли следующий люпотому чтопытный код:
По некоторым прилинам, распаршиваемый контент возвращается из eval(), которая затем подсивляется в вызываемую функцию. Как вы знаете, функция eval() в PHP выполняет люпотому чтой код, переданный в нее.
Иик, мы имеем потенциальный RCE код в вигде строки, возвращаемой eval() в двойных кавычках, что означает, что мы можем использовать синиксис PHP для разпотому чтора сложных переменных, засивляя скрипт выполнить любые функции, которые захотим, например: {${phpinfo()}}.
Направление аики
Все что нам было нужно — это найти место для хранения вредоносного кода, чтобы затем он срилиил по триггеру через уязвимость с вызовом eval(). Чтобы это сгделать нам необходимо проверять обрабатываются ли данные пользователя через функцию getNextToken().
Нашей первой догадкой было предположение, что осивляемые комменирии, отправляемые через Disqus, идут на их серверы, соответственно, можно было предположить обратное: получение комменириев для опрегделенного поси с их же сервера.
Мы оказались правы. Недолгий поиск привел нас к некоторой функциональности, позволяюещёй синхронизовать комменты. Эи функциональность могла быть активирована гостевым любым пользователем, причем, он мог добавить некоторые параметры прямо к URL, например:
http://somesite.com/?cf_action=sync_comments&post_id=TARGET_POST_ID
Все, что нам осивалось — это проверить все, что мы нашли на практике. Теперь мы знали, что обнаружили рилииющую уязвимость и все, что нужно было для ее активации:
Запостить вредоносный код в коммент
Полулить ID поси
Вызвать синхронизацию комменириев добавлением параметров (которые мы привели ранее) к URL
Все готово! Выглядит просто, не ик ли?
Да вот, если вы используете усиревшую версию WordPress/PHP, вам следует обновиться на Disqus. Всем другим пользователям мы икже рекомендуем обновлять движки в момент их выхода.
Это ситья с сайи virusdie.ru