The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

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

21.11.2018 09:36

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

Уязвимость вызвана отсутствием проверки поступающих от пользователя данных, перед их использованием в функции file_exists(). Данная особенность позволяет применить для эксплуатации технику "Phar deserialization", манипулирующую автоматической десериализацией метаданных при обработке файлов 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().

  1. Главная ссылка к новости (https://blog.ripstech.com/2018...)
  2. OpenNews: Инфраструктура свободного проекта phpBB подверглась взлому
  3. OpenNews: Встроенные сервисы SourceForge будут заменены на phpBB, MediaWiki, Trac и WordPress
  4. OpenNews: Взломан сайт проекта phpBB, захвачено 400 тыс. аккаунтов пользователей
  5. OpenNews: Релиз форума phpBB 3.0, теперь с элементами социальной сети.
  6. OpenNews: Зафиксированы атаки на форумы vBulletin с использованием 0-day уязвимости
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/49641-phpbb
Ключевые слова: phpbb
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (27) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Qwerty (??), 09:51, 21/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Помню, лет 10 назад создавал на нём форум, будучи ещё зелёным в вебе. Хороший движок. Был.
     
     
  • 2.2, нах (?), 10:18, 21/11/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    ну, не считая того что у авторов был и остался очень странный подход к пониманию, что есть bulletin board (для нормального общения эти форумы непригодны абсолютно, вот для торрент-трекера, где каждая тема - отдельный торрент, а комментарии незачем и читать вообще - самое то, и примерно для этой цели всю жизнь подобные вещи и использовались) - не вижу почему "был". Движок как движок, авторы не виноваты в дырах php by design.

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


     

  • 1.3, Аноним (3), 10:31, 21/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    > file_exists(), которая в случае указания URI "phar://" обработает метаданные в указанном файле

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

     
     
  • 2.7, нах (?), 11:24, 21/11/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Тогда функция должна называться file_exists_and_maybe_handle_metadata_of_phar().

    file_exists_or_may_be_we_just_exec_it_as_code()


     
     
  • 3.25, kai3341 (ok), 05:06, 22/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    php_real_escape_file же

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

     
  • 2.9, Аноним (9), 12:01, 21/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Напоминает Glib с очень длинными функциями. Но там это более-менее оправдано: принести ООП в С довольно сложно.
    Но это де похапэ "для всех"!
     
  • 2.14, vitalif (ok), 12:51, 21/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Метаданные просто надо json хранить блин... догадались, serialize
     

  • 1.4, анан (?), 10:38, 21/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > вызвана отсутствием проверки поступающих от пользователя данных

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

     
     
  • 2.5, Аноним (3), 10:42, 21/11/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Авторы пыха добавили свой новый нескучный протокол phar://, а виноваты конечные разрабы, которые не предусмотрели в своих проектах, существовавших до нескучного phar://, что пользователь может указать phar://. Логично, чо.
     
     
  • 3.6, нах (?), 11:23, 21/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > которые не предусмотрели в своих проектах, существовавших до нескучного phar://, что
    > пользователь может указать phar://. Логично, чо.

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

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

     
  • 2.11, КО (?), 12:07, 21/11/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    если быть точным, то неверно составлена фраза комментатором.
    Ошибка именно в проверке поступающих до пользователя данных - они пытались выяснить а есть ли такой файл. И на тебе ...
     

  • 1.10, Аноним (10), 12:06, 21/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > будет обработан функцией file_exists(), которая в случае указания URI "phar://" обработает метаданные в указанном файле

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

     
     
  • 2.22, Hgtuugt (?), 17:57, 21/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Не забудьте обсудить это с психологом.
     

  • 1.12, vitalif (ok), 12:20, 21/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Блин, вот serialize в phar это реально идиотизм...
     
  • 1.15, th3m3 (ok), 13:04, 21/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    phpBB - наверное, один из самых дырявых php-поделий в мире. Ещё больше 10 лет назад, помню - столько дырок было. И вот спустя столько времени, ничего не меняется.
     
     
  • 2.16, Попугай Кеша (?), 13:16, 21/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Порекомендуйте что-то хорошее, пожалуйста
     
     
  • 3.19, th3m3 (ok), 14:55, 21/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Порекомендуйте что-то хорошее, пожалуйста

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

     
  • 3.26, КГБ СССР (?), 12:42, 22/11/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Чтоб обойти стороной PHP, я бы попробовал YaBB [ https://ru.wikipedia.org/wiki/YaBB ].
     
     
  • 4.28, пох (?), 20:12, 22/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    http://www.yabbforum.com/cgi-bin/community/YaBB.pl?board=russian
    - все что нужно знать об этом ненужно.

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

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

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


     
     
  • 5.30, КГБ СССР (?), 22:32, 22/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Это говорит лишь о том, что рукожопы, пишущие туда по-русски, не умеют выбирать браузеры, которые правильно определяют кодировки. (Привычка, знаете ли, ляп-ляп-ляп — и в продакшын.) Эта страничка сделана в ISO-8859-1. Да, внезапно, кто ж такого мог ждать от американцев. :)

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

     
  • 5.31, КГБ СССР (?), 22:42, 22/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Там ньюфагов подстерегает другая печаль: внутри лапша из перлового кода и разметки. Всё как в старые добрые времена. В таком вот стиле:

    [CODE]
    $yymain .= qq~

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

    ~
    [/CODE]

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

     
  • 2.18, VEG (ok), 14:09, 21/11/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Память вас подводит. В phpBB 3.0, который с 2007 года был актуален более 5 лет, действительно критичных уязвимостей найдено не было. А с правами администратора всегда можно было дел наделать.

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

     

  • 1.17, VEG (ok), 14:01, 21/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Слабенькая уязвимость. Как правило, если пользователь имеет доступ к форуму как администратор («founder» в терминах phpBB), то он будет и администратором сайта вообще, с доступом к серверу.
     
  • 1.21, Аноним (21), 17:57, 21/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Лучший двиг интернета из всех.
     
  • 1.23, Онаним (?), 00:32, 22/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не совсем понял, в чём тут уязвимость. Для эксплуатации нужен доступ с правами администратора форума, а с таковыми можно и загрузку вообще чего попало разрешить.
     
  • 1.24, Anonimous (?), 00:48, 22/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Я надеюсь, что в свежем ПХП функция preg-match, проверяющая строку, содержащую "system('/bin/sh rm -Rf /*')" на наличие в ней двоеточия или двух слешей подряд, поймет, что ему надо эту строку выполнить как php код сразу, не дожидаясь чтобы дальше разработчики её пихнули в file_exists ? а то вждруг они не для того проверяли, и не пихнут её чами в, казалось бы безобидную функцию. Ну чтобы точно...

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

     
  • 1.27, domov0y (?), 15:36, 22/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    кто в теме, покажите как создать этот самый phar файл. и что ему надо дописать чтобы содержимое выполнилось именно в аргументе file_exists.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру