Уязвимость загрузки файлов в компоненте AdsManager в папку plupload

В последнее время попадаются сайты с одной и той же уязвимостью в AdsManager, в этой статье я расскажу, как найти и закрыть уязвимость на сайте.

Первым мне попались в логах следующие строки:

"POST /index.php?option=com_adsmanager&task=upload&tmpl=component HTTP/1.0" 200
"GET /tmp/plupload/yzb.php?input HTTP/1.0" 200

Итак, к нам на сайт через эксплоит загрузили шелл в папку tmp/plupload, и теперь с нашим сайтом можно сделать всё, что угодно.

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

Открываем файл components/com_adsmanager/controller.php и видим, что это действительно так:

$filename = $directory."/".basename($file['name']); - нету никакой проверки расширения файлов.

Теперь перейдем к тому, как нам избавиться от проблемы. Самым простым методом будет обновить компонент до актуальной версии, где дыра немного прикрыта. Однако этот универсальный метод подходит не всем, так как у многих AdsManager прилично бывает модифицирован и обновление принесет проблемы с восстановлением функционала. Поэтому мы можем просто внести правки в код с новой версии касательно безопасности. Достаточно будет в файл контроллера добавить следующие строки после строки $filename = $directory."/".basename($file['name']);

$ext = strrpos($fileName, '.');

$fileName_b = strtolower(substr($fileName, $ext+1));

if (!in_array($fileName_b,array("jpg","jpeg","gif","png"))) {

exit();

}

Но мне не особо нравится это решение, по той причине, что здесь всё равно нету нормальной фильтрации типов файлов. Поэтому я рекомендую в папку tmp/plupload добавить защитный файл .htaccess с кодом:

# Здесь мы запрещаем доступ к файлам извне, можно заменить на запрет исполнения опасных файлов
Order Deny,Allow
Deny from All
# Чтобы предотвратить замену файла .htaccess (Спасибо решению с Revisium )
RewriteEngine On
RewriteRule ^tmp/ - [F]

--- # Андрей 07.05.2016 16:00 Установил AdsManeger пол года назад и недавно заметил, что мне в папку tmp заливают файлы. Сначала я их просто удалял, но потом случайно нашел статью про уязвимость в компоненте, сделал два варианта по защите сайта, через пару месяцев отпишусь.

--- 0 # Денис 11.11.2017 19:09 Добрый вечер, спасибо за статью! А не подскажите, как будет выглядеть код для htaccess и controller.php Если нужно ограничить все расширения кроме одного, например mp3, и ограничить размер загружаемого файла, например до 5 Mb Заранее спасибо!

--- 0 # Protect Your Site 12.11.2017 08:06 Добрый день, Денис! Вот в этой строке: Цитата: if (!in_array($fileName_b,array("jpg","jpeg","gif","png"))) { Как раз и указываются разрешенные расширения, а ограничения на рзамер загружаемого файла задаются у хостинга на сервере. Я бы советовал посмотреть, какая версия AdsManager используется, вполне возможно, что в новых версиях это можно отредактировать в админке в настройках, без правок ядра расширения. ---

За инфу спасибо: https://protectyoursite.ru/%D0%BF%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B/%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%B2-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%B5-adsmanager

Дайджест новых статей по интернет-маркетингу на ваш email

Уязвимость загрузки файлов в компоненте AdsManager в папку plupload | | 2018-03-21 00:08:57 | | Статьи Web-мастеру | | В последнее время попадаются сайты с одной и той же уязвимостью в AdsManager, в этой статье я расскажу, как найти и закрыть уязвимость на сайте. | Уязвимость загрузки файлов в компоненте AdsManager в папку plupload |
 
Поделиться статьей: