Jump to content
Sign in to follow this  
Raino

Левые файлы в папке download ocstore 1.5.5.1.2

Recommended Posts

Недавно обнаружил пару подозрительных файлов в папке downloads вида "1024.php.jpg.рандомный набор", внутри оказался не зловред, а игрушка 1024, причем рядом валялся файл с лицензией на нее, такого-же формата :). Однако прецедент пугающий. Детальнее проблема описана здесь http://forum.opencart.com/viewtopic.php?f=179&t=135903 и судя по всему носит массовый характер. И если на чистом opencart проблема решается запретом загрузки файлов в магазин, то в ocstore эти настройки в админке я не нашел http://www.webhostinghub.com/help/images/stories/opencart/opencart15-options/opencart15-options-allowed-uploadextensions.gif и пришлось потанцевать с бубном. В общем, будьте внимательны граждане.

Share this post


Link to post
Share on other sites

Постоянно нахожу залитые шеллы в директории "downloads" на своих демо-сайтах. А отключить руки не доходят т.к. это относительно безопасно, хотя все решается достаточно просто.

 

Радикальное решение. Из файла "catalog/controller/product/product.php" удалите функцию upload это не позволит вообще загружать файлы на сервер со стороны витрины магазина. А вот код для заливки файла через эту уязвимость, так, на всякий случай:

 

 

<html>
    <body>
        <form action="http://1541.ocstore.im/index.php?route=product/product/upload" method="post" enctype="multipart/form-data">
            <input type="file" name="file">
            <input type="submit" value="Upload">
        </form>
    </body>
</html> 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

то что по вашему скрину находится во вкладке сервер

Share this post


Link to post
Share on other sites

Raino сказал(а) 24 Дек 2014 - 11:38 AM:

Недавно обнаружил пару подозрительных файлов в папке downloads вида "1024.php.jpg.рандомный набор", внутри оказался не зловред, а игрушка 1024, причем рядом валялся файл с лицензией на нее, такого-же формата :). Однако прецедент пугающий.

Файлы там появляются вполне легитимным путём. Есть магазины, которые работают с пользовательскими файлами. Если вам пришлют email с аттачем, пусть даже со зловредом - это будет пугающим прецендентом?

Опасность такие файлы могут представлять, когда злоумышленник может воспроизвести полное имя файла, с вон тем рандомным набором на конце. Рандомный набор можно подсчитать и воспроизвести, если знать ключ шифрования, указываемый в админке. Знать его можно было раньше, т.к. использовалось значение "12345". Пару вариантов фиксов предлагалось и уже довольно давно там генерится уникальная строка при каждой инсталляции.

Собственно, и всё по этой "угрозе". Ваш магазин просто проверяли в надежде, что ключ шифрования совпадёт.

Если магазин точно не работает с файлами покупателей, можно, конечно, и кардинально всё отрезать или сделать отключение этого аплоада через админку.

Share this post


Link to post
Share on other sites

rb2, старая уязвимость. еще есть через загрузку файлов под демо пользователем

с недавних пор добавили в .htaccess

RewriteRule ^download/(.*) /index.php?route=error/not_found [L]

должно спасать

Share this post


Link to post
Share on other sites

FAQ ОТВЕТ: ПОЧЕМУ МОДУЛЬ НЕ ДАЕТ СТОРОННИМ ПОЛЬЗОВАТЕЛЯМ ЗАГРУЖАТЬ ИЗОБРАЖЕНИЯ И ФАЙЛЫ НА СЕРВЕР

http://habrahabr.ru/post/224351/

Цитата:

    Здесь на помощь строителям демократии приходят и проблемы с настройкой try_files в nginx,
    и обрезание строки с помощью %00, и даже банальный обход проверки MIME и загрузки *.php напрямую
    (но это совсем тяжёлый случай, движки, грешащие этим, скорее всего имеют ещё пару десятков других дыр).


Т.е. иногда, защита зависит даже не от безопасного кода модуля, а от настроек хостера.

 

Т.е. это  "залет".

Share this post


Link to post
Share on other sites

rb2, старая уязвимость. еще есть через загрузку файлов под демо пользователем

с недавних пор добавили в .htaccess


RewriteRule ^download/(.*) /index.php?route=error/not_found [L]
должно спасать

Ошибка здесь, кстати. В OC2 действительно такое правило, но папки `^download/` в доступе у апача нет.

tratata.ru/system/download/index.html честно отдаёт белую страницу (пустой index.html, который там есть из коробки).

Надо `^system/download/......`

Даже не так. Вот правильная строчка (слэш перед индекспхп тоже лишний):

RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]
И аналогично на `system/upload` наверное. Не вижу причин, зачем посетителям отдавать апачем загруженные ими файлы. Хотя надо смотреть, как они админу отдаются при просмотре загруженных пользователями файлов.

UPD: А-а-а-а, понял. Я на OC2 смотрю, а в ocs15512 действительно папка `download` в корне. Ну тогда только слэш убрать перед index.php.

Edited by rb2
UPD OC2 vs ocs15512
  • +1 2

Share this post


Link to post
Share on other sites

я бы в 1.5.x из коробки запретил закачивать файлы в download, хотя бы потому что это слабо валидируется. злоумышленник может забить место на хостинге большими файлами

Share this post


Link to post
Share on other sites

Разве что переключателем.

Не торгуешь печатью на кружках, на футболках, --на лбу--, на биллбордах, кастомными фотообоями на стенках, надписями из... э-э-э... плёнки такой, забыл... не торгуешь фотокартинами, ретушью фотографий, восстановлением данных, --подделкой документов--, рецензией/публикацией, печатью по запросу -- вздыхаешь с облегчением и выключаешь загрузку.

А если что-то такое и надо принимать файлы - вздыхаешь, но уже по-другому, ставишь в крон какое-нибудь мелкое правило и скрипт проверяет наличие новых файлов в стрёмных папках раз в 10 минут и шлёт email-уведомления в случае чего.

Оно-то, конечно, можно всё перелопатить, там убрать, там добавить - но это же вечная проблема изменнного кода и совместимости с модулями.

Share this post


Link to post
Share on other sites

Разве что переключателем.

Не торгуешь печатью на кружках, на футболках, --на лбу--, на биллбордах, кастомными фотообоями на стенках, надписями из... э-э-э... плёнки такой, забыл... не торгуешь фотокартинами, ретушью фотографий, восстановлением данных, --подделкой документов--, рецензией/публикацией, печатью по запросу -- вздыхаешь с облегчением и выключаешь загрузку.

А если что-то такое и надо принимать файлы - вздыхаешь, но уже по-другому, ставишь в крон какое-нибудь мелкое правило и скрипт проверяет наличие новых файлов в стрёмных папках раз в 10 минут и шлёт email-уведомления в случае чего.

Оно-то, конечно, можно всё перелопатить, там убрать, там добавить - но это же вечная проблема изменнного кода и совместимости с модулями.

Вот-вот! И Я про то же. Нам нужно, чтоб клиент мог приложить свой фаил. Стоит ocstore 15512. Запретить загрузку фаила и напрягать клиента после заказа слать фаил на почту? Так на почту тоже вирусы присылают, мы их проверяем и открываем/или удаляем. Я не очень секу в данной теме, но верно ли я понимаю, что если фаил придет в корень в download, то могут каким то образом взломать? кстати, может это важно но у нас пароли космические и два пользователя со всеми правами, имена пользователей без admin...

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

 

И верно ли я поняла, что нужно добавить в htaccess:

RewriteRule ^download/(.*) index.php?route=error/not_found [L]               (без / перед index ? )

Share this post


Link to post
Share on other sites

Вот-вот! И Я про то же. Нам нужно, чтоб клиент мог приложить свой фаил. Стоит ocstore 15512. Запретить загрузку фаила и напрягать клиента после заказа слать фаил на почту? Так на почту тоже вирусы присылают, мы их проверяем и открываем/или удаляем. Я не очень секу в данной теме, но верно ли я понимаю, что если фаил придет в корень в download, то могут каким то образом взломать? кстати, может это важно но у нас пароли космические и два пользователя со всеми правами, имена пользователей без admin...

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

 

И верно ли я поняла, что нужно добавить в htaccess:

RewriteRule ^download/(.*) index.php?route=error/not_found [L]               (без / перед index ? )

 

Если у Вас стоит OpenCart версии выше 1.5.4.1, то в папке download создайте файл .htaccess со следующим содержимым:

SetHandler send-as-is

Этого будет достаточно. даже если на сервер загрузят исполняемый php файл, то он будет не выполнен, а скачан)

Share this post


Link to post
Share on other sites

Если у Вас стоит OpenCart версии выше 1.5.4.1, то в папке download создайте файл .htaccess со следующим содержимым:

SetHandler send-as-is

Этого будет достаточно. даже если на сервер загрузят исполняемый php файл, то он будет не выполнен, а скачан)

Огромное спасибо! Огроменное такое "спасибо") Сделаем, т.к. версия выше 1541

Share this post


Link to post
Share on other sites

Огромное спасибо! Огроменное такое "спасибо") Сделаем, т.к. версия выше 1541

 

Я ошибся, решение актуально для всех версий. Так же, если не планируется скачивать пользователями файлы, то можно добавить в .htaccess (тот что в корне) правило:

RewriteRule ^download/(.*) /index.php?route=error/not_found [L]

Тогда в раздел вообще не войти извне. Только из админки, по-моему, можно будет скачать. Кстати, если пользователи загружают фотографии, то могу сделать предпросмотр (превью) загружаемых изображений. 

Edited by halfhope

Share this post


Link to post
Share on other sites

Я ошибся, решение актуально для всех версий. Так же, если не планируется скачивать пользователями файлы, то можно добавить в .htaccess (тот что в корне) правило:

RewriteRule ^download/(.*) /index.php?route=error/not_found [L]

Тогда в раздел вообще не войти извне. Только из админки, по-моему, можно будет скачать. Кстати, если пользователи загружают фотографии, то могу сделать предпросмотр (превью) загружаемых изображений. 

Там и фото, и макеты для печати, Превью не нужно, мы их через сервер скачаем, проверим и откроем.

А вот фаилы для скачки будут, думаю. Рекомендации к продукции, хотя может мы их сделаем в виде картинки, пока еще не решила. Ваше решение, думаю, все таки пригодится. Спасибо еще раз, если что обращусь;)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.