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

Discussion in 'Вопросы безопасности' started by revisium, Jul 20, 2015.

  1. revisium
    Offline

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

    Joined:
    Jul 20, 2015
    Messages:
    26
    Likes Received:
    11
    В компоненте Joomla ADSmanager обнаружена критическая уязвимость, позволяющая хакеру загрузить на сайт веб-шеллы (бэкдоры или другие произвольные php скрипты).

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

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

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

    OlegK Russian Joomla! Team Staff Member ⇒ Профи ⇐

    Joined:
    Jan 17, 2011
    Messages:
    7,812
    Likes Received:
    771
    Gender:
    Male
    Так как точно по ману апача- запрет доступа или запрет на выполнение скриптов ? ADSmanager создает папку plupload в папке /tmp , в корне сайта или папке компонента ?
     
  4. revisium
    Offline

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

    Joined:
    Jul 20, 2015
    Messages:
    26
    Likes Received:
    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 Staff Member ⇒ Профи ⇐

    Joined:
    Jan 17, 2011
    Messages:
    7,812
    Likes Received:
    771
    Gender:
    Male
    Тогда предлагаю,чтобы ты добавил в свой материал на твоем сайте,файл .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 likes this.
  6. revisium
    Offline

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

    Joined:
    Jul 20, 2015
    Messages:
    26
    Likes Received:
    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 Staff Member ⇒ Профи ⇐

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

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

    Joined:
    Sep 9, 2011
    Messages:
    324
    Likes Received:
    4
    Gender:
    Male
    У меня при наборе адреса http://вашсайт/index.php?option=com_adsmanager&task=upload&tmpl=component белая страница, почему?
    Может из за того что перенаправление с без www на c www ?
    Что значит гостей по этому запросу не ждать?
     
    Last edited: Jul 22, 2015
  9. revisium
    Offline

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

    Joined:
    Jul 20, 2015
    Messages:
    26
    Likes Received:
    11
    Спасибо за предложение. Сегодня сделаю. Буду рад помочь.

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

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

    OlegK Russian Joomla! Team Staff Member ⇒ Профи ⇐

    Joined:
    Jan 17, 2011
    Messages:
    7,812
    Likes Received:
    771
    Gender:
    Male
    У тебя же условие при отключении движка 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 Недавно здесь

    Joined:
    Jul 20, 2015
    Messages:
    26
    Likes Received:
    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).
     

Share This Page

Loading...