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

Исходное сообщение
"Уязвимость в движке для создания форумов phpBB"

Отправлено opennews , 21-Ноя-18 09:51 
В популярном свободном движке для создания форумов phpBB (https://www.phpbb.com/) выявлена уязвимость (https://blog.ripstech.com/2018/phpbb3-phar-deserialization-t.../) (CVE-2018-19274 (https://security-tracker.debian.org/tracker/CVE-2018-19274)), позволяющая выполнить PHP-код на сервере и получить контроль за всей инфраструктурой форумов, имея полномочия  администратора одного из форумов. Проблема устранена в выпуске phpBB 3.2.4 (https://www.phpbb.com/community/viewtopic.php?f=14&t=2492206).


Уязвимость вызвана отсутствием проверки поступающих от пользователя данных, перед их использованием в функции file_exists(). Данная особенность позволяет применить для эксплуатации технику "Phar deserialization (https://blog.ripstech.com/2018/new-php-exploitation-technique/)", манипулирующую автоматической десериализацией метаданных при обработке файлов Phar (PHP Archive). Атакующий может задать в панели управления абсолютный путь к исполняемому файлу с редактором изображений (ImageMagic). Перед применением новой настройки данный путь без проверки будет обработан функцией file_exists(), которая в случае указания URI "phar://" обработает метаданные в указанном файле.


Указав вместо редактора изображений ссылку на загруженный атакующим phar-файл можно осуществить подстановку нового объекта, выполняемого в контексте всего приложения. Например можно указать "phar:///var/www/phpBB3/files/evil.jpg", где evil.jpg - загруженный под видом картинки файл в формате phar, который будет разобран невзирая на расширение jpg. Похожая проблема может присутствовать и в других PHP-приложениях, допускающих загрузку на сервер картинок и обработку передаваемых пользователем  файловых путей в таких функциях, как file_exists(), fopen(), file_get_contents() и file().

URL: https://blog.ripstech.com/2018/phpbb3-phar-deserialization-t.../
Новость: https://www.opennet.me/opennews/art.shtml?num=49641


Содержание

Сообщения в этом обсуждении
"Уязвимость в движке для создания форумов phpBB"
Отправлено Qwerty , 21-Ноя-18 09:51 
Помню, лет 10 назад создавал на нём форум, будучи ещё зелёным в вебе. Хороший движок. Был.

"Уязвимость в движке для создания форумов phpBB"
Отправлено нах , 21-Ноя-18 10:18 
ну, не считая того что у авторов был и остался очень странный подход к пониманию, что есть bulletin board (для нормального общения эти форумы непригодны абсолютно, вот для торрент-трекера, где каждая тема - отдельный торрент, а комментарии незачем и читать вообще - самое то, и примерно для этой цели всю жизнь подобные вещи и использовались) - не вижу почему "был". Движок как движок, авторы не виноваты в дырах php by design.

Пихание во все места, принимающие _файл_, вместо файлов дурацких псевдоурлов без отдельного апи для этого - именно дыра by design. Как бы ни старались аффтары всего на свете софта подстелить там соломки - изобретательные разработчики всегда их переплевывают - что, собственно, и случилось с phar://
Ты пытаешься выяснить, существует ли файлик вообще (какое там открыть, не говоря уже о исполнить)  - ан, нет, внезапно, он становится твоим кодом. Прекрасный язык, чо.



"Уязвимость в движке для создания форумов phpBB"
Отправлено Аноним , 21-Ноя-18 10:31 
> file_exists(), которая в случае указания URI "phar://" обработает метаданные в указанном файле

Тогда функция должна называться file_exists_and_maybe_handle_metadata_of_phar().


"Уязвимость в движке для создания форумов phpBB"
Отправлено нах , 21-Ноя-18 11:24 
> Тогда функция должна называться file_exists_and_maybe_handle_metadata_of_phar().

file_exists_or_may_be_we_just_exec_it_as_code()



"Уязвимость в движке для создания форумов phpBB"
Отправлено kai3341 , 22-Ноя-18 05:06 
php_real_escape_file же

https://dev.mysql.com/doc/refman/8.0/en/mysql-real-escape-st...


"Уязвимость в движке для создания форумов phpBB"
Отправлено Аноним , 21-Ноя-18 12:01 
Напоминает Glib с очень длинными функциями. Но там это более-менее оправдано: принести ООП в С довольно сложно.
Но это де похапэ "для всех"!

"Уязвимость в движке для создания форумов phpBB"
Отправлено vitalif , 21-Ноя-18 12:51 
Метаданные просто надо json хранить блин... догадались, serialize

"Уязвимость в движке для создания форумов phpBB"
Отправлено анан , 21-Ноя-18 10:38 
> вызвана отсутствием проверки поступающих от пользователя данных

диагноз php головного мозга


"Уязвимость в движке для создания форумов phpBB"
Отправлено Аноним , 21-Ноя-18 10:42 
Авторы пыха добавили свой новый нескучный протокол phar://, а виноваты конечные разрабы, которые не предусмотрели в своих проектах, существовавших до нескучного phar://, что пользователь может указать phar://. Логично, чо.

"Уязвимость в движке для создания форумов phpBB"
Отправлено нах , 21-Ноя-18 11:23 
> которые не предусмотрели в своих проектах, существовавших до нескучного phar://, что
> пользователь может указать phar://. Логично, чо.

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

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


"Уязвимость в движке для создания форумов phpBB"
Отправлено КО , 21-Ноя-18 12:07 
если быть точным, то неверно составлена фраза комментатором.
Ошибка именно в проверке поступающих до пользователя данных - они пытались выяснить а есть ли такой файл. И на тебе ...

"Уязвимость в движке для создания форумов phpBB"
Отправлено Аноним , 21-Ноя-18 12:06 
> будет обработан функцией file_exists(), которая в случае указания URI "phar://" обработает метаданные в указанном файле

Это настолько элегантный способ опустить всех пыхеров, что я просто ощущаю небывалое эстетическое наслаждение.


"Уязвимость в движке для создания форумов phpBB"
Отправлено Hgtuugt , 21-Ноя-18 17:57 
Не забудьте обсудить это с психологом.

"Уязвимость в движке для создания форумов phpBB"
Отправлено vitalif , 21-Ноя-18 12:20 
Блин, вот serialize в phar это реально идиотизм...

"Уязвимость в движке для создания форумов phpBB"
Отправлено th3m3 , 21-Ноя-18 13:04 
phpBB - наверное, один из самых дырявых php-поделий в мире. Ещё больше 10 лет назад, помню - столько дырок было. И вот спустя столько времени, ничего не меняется.

"Уязвимость в движке для создания форумов phpBB"
Отправлено Попугай Кеша , 21-Ноя-18 13:16 
Порекомендуйте что-то хорошее, пожалуйста

"Уязвимость в движке для создания форумов phpBB"
Отправлено th3m3 , 21-Ноя-18 14:55 
> Порекомендуйте что-то хорошее, пожалуйста

Если на php - то самый безопасный, всегда был и остаётся SMF.


"Уязвимость в движке для создания форумов phpBB"
Отправлено КГБ СССР , 22-Ноя-18 12:42 
Чтоб обойти стороной PHP, я бы попробовал YaBB [ https://ru.wikipedia.org/wiki/YaBB ].

"Уязвимость в движке для создания форумов phpBB"
Отправлено пох , 22-Ноя-18 20:12 
http://www.yabbforum.com/cgi-bin/community/YaBB.pl?board=rus...
- все что нужно знать об этом ненужно.

то есть оно a) тупило с минуту, прежде чем открыться b) потребовало вручную переключить кодировку в 1251. (это, если что, нормальный выбор кодировки - ненормально неумение авторов настроить собственный сервер так, чтобы русскоязычный кусок форума показывался правильно)

если хочется совсем без php - ищите в архивах пиратских сайтов 200х годов wwwthreads до-phpшной версии. Баг с sql code exec только не забудьте вручную исправить, а то его, по-моему, только в php поправили.

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



"Уязвимость в движке для создания форумов phpBB"
Отправлено КГБ СССР , 22-Ноя-18 22:32 
Это говорит лишь о том, что рукожопы, пишущие туда по-русски, не умеют выбирать браузеры, которые правильно определяют кодировки. (Привычка, знаете ли, ляп-ляп-ляп — и в продакшын.) Эта страничка сделана в ISO-8859-1. Да, внезапно, кто ж такого мог ждать от американцев. :)

Но внутри движка (я посмотрел) шаблоны сделаны для белых прогрессивных людей, везде обещают нам UTF-8. И даже HTML5.


"Уязвимость в движке для создания форумов phpBB"
Отправлено КГБ СССР , 22-Ноя-18 22:42 
Там ньюфагов подстерегает другая печаль: внутри лапша из перлового кода и разметки. Всё как в старые добрые времена. В таком вот стиле:


$yymain .= qq~

# А между тильдами разметка HTML с вкраплениями перловых же переменных.

~

Не, ну можно разобраться и даже поправить, если вдруг что.


"Уязвимость в движке для создания форумов phpBB"
Отправлено VEG , 21-Ноя-18 14:09 
Память вас подводит. В phpBB 3.0, который с 2007 года был актуален более 5 лет, действительно критичных уязвимостей найдено не было. А с правами администратора всегда можно было дел наделать.

Возмоно, вы вспоминаете времена phpBB 2.x, в котором действительно была найдена парочка опасных уязвимостей. Но при работе над 3.0 над этим неплохо поработали.


"Уязвимость в движке для создания форумов phpBB"
Отправлено VEG , 21-Ноя-18 14:01 
Слабенькая уязвимость. Как правило, если пользователь имеет доступ к форуму как администратор («founder» в терминах phpBB), то он будет и администратором сайта вообще, с доступом к серверу.

"Уязвимость в движке для создания форумов phpBB"
Отправлено Аноним , 21-Ноя-18 17:57 
Лучший двиг интернета из всех.

"Уязвимость в движке для создания форумов phpBB"
Отправлено Онаним , 22-Ноя-18 00:32 
Не совсем понял, в чём тут уязвимость. Для эксплуатации нужен доступ с правами администратора форума, а с таковыми можно и загрузку вообще чего попало разрешить.

"Уязвимость в движке для создания форумов phpBB"
Отправлено Anonimous , 22-Ноя-18 00:48 
Я надеюсь, что в свежем ПХП функция preg-match, проверяющая строку, содержащую "system('/bin/sh rm -Rf /*')" на наличие в ней двоеточия или двух слешей подряд, поймет, что ему надо эту строку выполнить как php код сразу, не дожидаясь чтобы дальше разработчики её пихнули в file_exists ? а то вждруг они не для того проверяли, и не пихнут её чами в, казалось бы безобидную функцию. Ну чтобы точно...

Это насколько надо быть больным на голову, чтобы функция file_exist выполнила тот файл? Это уже не просто глупость. Это уже к врачам надо.


"Уязвимость в движке для создания форумов phpBB"
Отправлено domov0y , 22-Ноя-18 15:36 
кто в теме, покажите как создать этот самый phar файл. и что ему надо дописать чтобы содержимое выполнилось именно в аргументе file_exists.