Уязвимост при качване на файлове в компонента AdsManager
Наскоро срещнахме сайтове със същата уязвимост в AdsManager, в тази статия ще ви кажа как да намерите и затворите уязвимостта на сайта.
Първите редове, които попаднах в дневниците, бяха:
„POST /index.php?option=com_adsmanager&task=upload&tmpl=component HTTP/1.0“ 200
„ВЗЕМЕТЕ /tmp/plupload/yzb.php?input HTTP/1.0“ 200
И така, на нашия сайт чрез експлойт, черупката беше качена в папката tmp/plupload и сега можете да правите всичко с нашия сайт.
Каква е уязвимостта? В следващата статия ще възпроизведа по-подробно атаката на сайта, тук само ще направя резервация, че няма филтриране при качване на файлове.
Отворете файловите компоненти/com_adsmanager/controller.php и вижте, че това наистина е така:
$ filename = $ directory. "/". basename ($ file ['name']); - няма проверка на разширението на файла.
Сега нека преминем към това как можем да се отървем от проблема. Най-лесният метод би бил да актуализирате компонента до текущата версия, където дупката е леко покрита. Този универсален метод обаче не е подходящ за всички, тъй като много AdsManager е прилично модифициран и актуализацията ще доведе до проблеми с възстановяването на функционалността. Следователно можем просто да направим промени в кода от новата версия по отношение на сигурността. Достатъчно е да добавите следните редове към файла на контролера след реда $ filename = $ directory. "/". Basename ($ file ['name']);
$ fileName_b = strtolower (substr ($ fileName, $ ext + 1));
Но това решение наистина не ми харесва, поради причината, че тук все още няма нормално филтриране на типовете файлове. Затова препоръчвам да добавите защитен .htaccess файл в папката tmp/plupload с кода:
# Тук забраняваме достъп до файлове отвън, може да бъде заменен със забрана за изпълнение на опасни файлове
Поръчай откажи, разреши
Отричане от всички
# За да се предотврати подмяната на .htaccess файла (Благодарение на решението Revisium)
RewriteEngine On
RewriteRule ^ tmp/- [F]
Сега не е нужно да се притеснявате за сигурността на уебсайта!