Выполнение кода из загруженных файлов - PullRequest
4 голосов
/ 27 апреля 2011

Я провожу аудит безопасности на сайте моего друга.Одна часть функциональности позволяет пользователям загружать файлы из HTML.Единственная проверка - переименование файла в текущую отметку времени.

Мне было интересно, есть ли способ загрузить вредоносный файл, чтобы при переходе пользователя по URL-адресу этого файла он выполнял код (включенна стороне сервера)?

Я попытался загрузить php-скрипт hello-world, но он просто отображает код, а не выполняет его.Если бы расширение файла было .php, оно было бы выполнено, однако расширение файла отсутствовало (поскольку файл был переименован).

РЕДАКТИРОВАТЬ: у меня есть доступ к полному исходному коду в рамках аудита безопасности,Было бы лучше, если бы я мог решить эту проблему, не используя ее, но я могу ответить на любые вопросы об исходном коде, если это необходимо.

Ответы [ 5 ]

1 голос
/ 01 мая 2011

Сканер безопасности Chorizo! может представлять интерес:

https://chorizo -scanner.com /

Решение было внедрено компанией, которая занимается PHP-консультированием и кодированием в дневное время.

Это платная услуга. Одно сканирование бесплатно.

1 голос
/ 27 апреля 2011

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

Вы можете прочитать немного о включении файлов здесь: Wiki по RFI (почти тоже самое) и здесь Документ на LFI и как его можно использовать

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

Единственное, что вы можете сделать в файле без расширения, как вы упомянули о себе, XSS, но только в старых браузерах (IE8 и ниже уязвимы, большинство других браузеров нет.)

0 голосов
/ 13 октября 2017

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

Во-первых, необходимо проверить, разрешены ли загружаемые типы файлов.Если вы загружаете только изображения - вам не нужен скрипт .php.Но это не мешает мне создавать bad.php и загружать его как bad.jpg.

Например, я (на моем компьютере с Ubuntu) загрузил php-файл с разрешениями 777 и мог запустить его, набрав php hello.php,Обычно вы не выполняете include () для файла, который кто-то загрузил, поэтому я считаю, что большая часть кода относится к читабельности.

Страница Wikipedias по включению файлов - хорошее начало и включает пример PHP: https://en.wikipedia.org/wiki/File_inclusion_vulnerability

0 голосов
/ 30 апреля 2011

Что ж, одна вещь, ради которой вы всегда будете подвергаться риску, - это возможность доставки вредоносного кода на сервер - смогут ли они выполнить его, просто просмотрев URL-адрес определенного файла, не всевам нужно подумать.

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

Это всего лишь мысль - я бы не стал сильно беспокоиться или паниковать по этому поводу, ноЯ бы не стал полностью исключать это.

0 голосов
/ 27 апреля 2011

Загрузить файл с помощью JavaScript.Существует множество уязвимостей в js.

http://en.wikipedia.org/wiki/Cross-site_scripting

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