Добрый день друзья! Начну с того что с php и phpbb знаком по той необходимости, что на своем проекте мы используем этот форум, так как не нашли более достойной альтернативы. Помимо периодических обновлений с php я не сталкиваюсь и с особенностями работы этого форума знаком мало.

Недавно случилось страшное — наш сервер с аптаймом чуть меньше года(после последней миграции) перезагрузился. На сервере развернут собственно сайт и форум phpbb 3.0.12.

В /var/log/auth.log малоинформативное

Oct  6 09:36:21 fsr sudo: pam_unix(sudo:auth): auth could not identify password for [www-data]
Oct  6 09:36:21 fsr sudo: www-data : user NOT in sudoers ; TTY=unknown ; PWD=/ ; USER=root ; COMMAND=...

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

Oct  5 22:55:55 fsr su[18114]: pam_unix(su:auth): authentication failure; logname= uid=33 euid=0 tty=/dev/pts/21 ruser=www-data rhost=  user=admin
Oct  5 22:55:57 fsr su[18114]: FAILED su for admin by www-data
Oct  5 22:55:57 fsr su[18114]: - /dev/pts/21 www-data:admin
Oct  5 22:57:50 fsr su[18310]: pam_unix(su:auth): authentication failure; logname= uid=33 euid=0 tty=/dev/pts/21 ruser=www-data rhost=  user=admin
Oct  5 22:57:52 fsr su[18310]: FAILED su for admin by www-data
Oct  5 22:57:52 fsr su[18310]: - /dev/pts/21 www-data:admin
Oct  5 22:58:39 fsr su[18384]: Successful su for admin by www-data
Oct  5 22:58:39 fsr su[18384]: + /dev/pts/21 www-data:admin

То есть доступ таки был получен. На этот раз было найдено несколько интересных процессов запущенных от www-data.

ps aux|grep www-data

perl /tmp/bp.pl 31337
/bin/sh -i
import pty; pty.spawn( /bin/sh )

Первым делом обновляю форум до последней на данный момент версиии phpBB 3.1.9. После этого прибиваю процессы и жду новых записей в auth.log. Оказалось это совсем не обязательно — через некоторое время прибитые процессы снова появились.

Переходим в /var/www/forum, делаем:

ack-grep -l '\.pl'

Особенно нужно обратить внимание на файлы *.php, помеченные как исполняемые. Привлек мое внимание файл с именем members.php с включенным флагом на исполнение, в котором были встречены и bp.pl и небезызвестный порт 31337. Этого файла нет в списке файлов из архива phpBB. Удаляю файл, в логах nginx и apache были обнаружены постоянные запросы к этому файлу. Делаю grep повторно, о чудо — на этот раз найден исполняемый файл ucpi.php, с аналогичным содержанием. Кстати изначально код эксплоита был найден на github, это сильно помогло.

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

Сейчас кажется проблема решена, но периодически буду посматривать в auth.log, список процессов ну и исходники нужно проверять. Может моё мнение не объективно, но даже для нашего форума это не первое нашествие хакеров и это одна из причин моего прохладного отношения к php в целом и phpBB в частности.

Мне будет интересно узнать насколько эта информация актуальна и насколько сильно распространена данная уязвимость.

Спасибо за внимание.

UPD. Спасибо за теплый прием и поддержку. Ваши отзывы мне реально пригодились! Сервер был успешно отбит. Отдельная благодарность за помощь PaulAtreides.
Поделиться с друзьями
-->

Комментарии (18)


  1. Exabiche
    07.10.2016 16:59
    +3

    Полез проверять год в календаре. Слава богу, не 2005.


  1. ExplosiveZ
    07.10.2016 17:02
    +1

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


  1. Wedmer
    07.10.2016 18:45
    +4

    Тот кто не следит за обновлениями — тот ССЗБ.


  1. antage
    07.10.2016 21:18
    +4

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


    1. gmixo
      08.10.2016 19:55

      Я перемонтиролвал раздел /tmp с noexec. И если честно у меня есть сомнения что для 3.1.9 проблема решена, потому что до того как перемонтировал /tmp процессы так же появлялись. Насколько я понимаю критичен не шелл а то как он доставляется на сервер — как я понимаю это sql инъекция в большинстве случаев.


      1. PaulAtreides
        08.10.2016 20:26

        Не обязательно. Это бывает недостаточная проверка данных при аплоаде или при авторизации.


      1. antage
        08.10.2016 21:39

        Есть много способов. Можно, например, залить gif-картинку с php-кодом и через уязвимость вызвать этот код через include('имяфайла.gif').


  1. SerafimArts
    08.10.2016 01:21

    Git? Не, не слышал +)


    1. gmixo
      08.10.2016 19:51

      да про git хорошая мысль — просто фактически для форума никаких правок не делалось вот и не было необходимости.


      1. SerafimArts
        09.10.2016 03:49
        +1

        Да всё равно путь любого проекта в 2016ом году:
        1) Развернуть локально (опционально докер\вагрант)
        2) Протестить
        3) Залить в репу
        4) Задеполить на серваке (git checkout -f + git pull если по-минимуму)


        Я уж не помню когда последний раз заливал всё по ftp, даже совсем мелкие одноразовые проекты, гит уже привычнее как-то.


  1. nazarpc
    08.10.2016 01:27
    +3

    Статья о том, что вы не обновляете ПО, я всё правильно понял? А при чем здесь безопасность неактуальных версий PhpBB?


  1. KIBIs
    08.10.2016 09:17
    +1

    Было как то дело, обратились за помощью при проблеме с сайтами. Хостер часто блокировал сайты из за большого количества рассылок. Оказалось шелл спамбота буквально повсюду себя запихал. Десяток сайтов на modx 5 летней давности, хотя обновления и исправления безопасности выходили для него. Мораль, нужно следить за обновлениями и хотя бы раз в пол года обновляться. Таких проблем бы не случилось.


  1. PaulAtreides
    08.10.2016 19:56

    А к admin чего — пароль набрутфорсили?


    1. gmixo
      08.10.2016 19:59

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


      1. PaulAtreides
        08.10.2016 20:05

        Выглядит так, как будто доступ был получен.
        Ребут из под www-data, знаете ли, не самая тривиальная задача.
        Не хотелось бы вас расстраивать, но я боюсь, что ваш сервер с аптаймом почти в год скомпрометирован целиком.


  1. kamtec1
    08.10.2016 20:03

    Я бы не стал надеяться на чистку после апдета. Желательно прогнать греп на base64/shell_exec/eval… на весь форум и прогнать скан типо shelldetector.
    Я вас должны быть логи откуда был залит файл или хотя бы посмотреть с какого IP был залит и посмотреть кто заходил на форму с этого же IP ну и так дали…
    Апдет поможет если он закраивает дырки но все же есть проблема :( могут найти другие дырки.
    Я бы посоветовал закрыть опасные PHP функции .


    1. gmixo
      08.10.2016 20:05

      Спасибо попробую. По поводу файла повторюсь, имхо это sql инъекция скорее всего и врятли там можно зааплоадить файл в корень форума.


      1. KIBIs
        09.10.2016 11:52

        Кстати, есть же еще и Манул от Яндекс, попробуйте проверить и им тоже.