Критическая уязвимость в ADSmanager

Тема в разделе "Вопросы безопасности", создана пользователем revisium, 20.07.2015.

  1. revisium
    Offline

    revisium Недавно здесь

    Регистрация:
    20.07.2015
    Сообщения:
    26
    Симпатии:
    11
    В компоненте Joomla ADSmanager обнаружена критическая уязвимость, позволяющая хакеру загрузить на сайт веб-шеллы (бэкдоры или другие произвольные php скрипты).

    Файлы загружаются в каталог /tmp/plupload.

    Достаточно выполнить один POST запрос, чтобы взломать сайт и получить над ним полный контроль, а на большинстве виртуальных хостингов и над всеми сайтами аккаунта.

    https://revisium.com/ru/blog/adsmanager_afu.html
     
  2.  
  3. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    Так как точно по ману апача- запрет доступа или запрет на выполнение скриптов ? ADSmanager создает папку plupload в папке /tmp , в корне сайта или папке компонента ?
     
  4. revisium
    Offline

    revisium Недавно здесь

    Регистрация:
    20.07.2015
    Сообщения:
    26
    Симпатии:
    11
    1.
    Код в файле .htaccess

    Код (ini):
    1. Order Deny, Allow
    2. Deny from All


    это запрет доступа ко всем файлам в директории для всех и при любых условиях (если сервер на Apache и внутри подкаталогов нет другого разрешающего .htaccess).

    2. ADSmanager создает папку {DOCUMENT ROOT}/tmp/plupload/ (там, куда указывает $tmp_path Joomla)

    3. Поскольку теоретически можно загрузить кроме вредоносов и .htaccess с Allow from All, то более надежно - ограничить доступ к /tmp/ через ModRewrite в корневом .htaccess

    Код (ini):
    1. RewriteEngine On
    2. RewriteRule ^tmp/ - [F]
     
  5. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    Тогда предлагаю,чтобы ты добавил в свой материал на твоем сайте,файл .htaccess с запретом на выполнение скриптов
    Код (PHP):
    1. RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
    2. AddType application/x-httpd-php-source .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
     
    OlegM нравится это.
  6. revisium
    Offline

    revisium Недавно здесь

    Регистрация:
    20.07.2015
    Сообщения:
    26
    Симпатии:
    11
    Правильный вариант указанного файла .htaccess выглядит так

    Код (ini):
    1. <IfModule mod_php5.c>
    2. php_flag engine 0
    3. </IfModule>
    4. RemoveType  .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl
    5. RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .wml
    6. AddType text/plain .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .wml


    Но добавлять его в /tmp/ смысла нет. Оттуда ничего не должно загружаться пользователями, поэтому Deny from All.
    А если (вдруг) по какой-то причине должно, то это делается через разрешение конкретных файлов или расширений директивой <Files ...></Files>.

    А вот во всякие /images/, /cache/ в большинстве случаев как раз нужно положить приведенный выше .htaccess.
     
  7. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    Ну скорее избыточный вариант.А вдруг хакер подключить свой модуль с использованием php.
    Ну тебе решать, что написано в статье.
    Второй вопрос- может откроешь тему о айболите в Собственных разработках?
    И народу проще будет обмениваться и задавать вопросы. Или у тебя строго на почту на твоем сайте ?
    п.с.
    Еще вариант
    Код (PHP):
    1. <Files ~ "\.(php[2-5]?|cgi|pl|fcgi|fpl|phtml|shtml|asp|jsp)$">
    2. Deny from all
    3. </Files>
     
  8. Offline

    stendapuss Пользователь

    Регистрация:
    09.09.2011
    Сообщения:
    324
    Симпатии:
    4
    Пол:
    Мужской
    У меня при наборе адреса http://вашсайт/index.php?option=com_adsmanager&task=upload&tmpl=component белая страница, почему?
    Может из за того что перенаправление с без www на c www ?
    Что значит гостей по этому запросу не ждать?
     
    Последнее редактирование: 22.07.2015
  9. revisium
    Offline

    revisium Недавно здесь

    Регистрация:
    20.07.2015
    Сообщения:
    26
    Симпатии:
    11
    Спасибо за предложение. Сегодня сделаю. Буду рад помочь.

    Нет, на разных сайтах, включая группу в ВК, на "Сёрче", vB-support.org и других сайтах поддержки различных CMS.

    Да, все верно. Вариаций можно придумать множество, но тот вариант, который написан у меня - отключает полностью двиг php engine, поэтому любые попытки (включая подгрузку дополнительного модуля в PHP через dl и т.п.) уже не будут работать, так как для директории отключается поддержка PHP. То есть речь не в избыточности, а в эффективности. Что касается виртуального хостинга - вероятность подключения своего обработчика PHP - маловероятна. Разве что perl/python cgi. То есть я все-таки исхожу из реальных условий.
    --- добавлено: 22.07.2015, первое сообщение размещено: 22.07.2015 ---
    Белая страница не гарантирует отсутствие уязвимости (нужно смотреть в лог ошибок, может возникает ошибка?).
    Вряд ли это из-за перенаправления на www. Как бы то ни было выполните рекомендации из статьи по защите от взлома через эксплуатацию дыры в ADSmanager.
     
  10. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    У тебя же условие при отключении движка php, а именно при включенном модуле php
    Код (PHP):
    1. <IfModule mod_php5.c> #Если включен модуль пхп
    2. #отключаем пхп
    3. php_flag engine 0
    4.  
    5. </IfModule>

    Убираем условие на подключение модуля пхп,и тогда будет как ты пишешь.
    Код (PHP):
    1. php_flag engine 0
     
  11. revisium
    Offline

    revisium Недавно здесь

    Регистрация:
    20.07.2015
    Сообщения:
    26
    Симпатии:
    11
    Все не так :)

    Условие <IfModule mod_php5.c> проверяет, что PHP работает в mod_php. В этом случае можно менять настройки через директиву php_flag в файле .htaccess.
    Если php работает как FastCGI или PHP-CGI или suPHP, то добавление php_flag в .htaccess вызовет 500 Internal Server Error.

    Так что убирать это условие я не рекомендую. Это ничто иное как Good Practice (сама матчасть кратко описана во втором посте на http://stackoverflow.com/questions/...er-error-when-using-htaccess-for-php-settings).
     

Поделиться этой страницей

Загрузка...