Возможно ли выполнить PHP с расширением file.php.jpg?

image_upload.php файл сайта image_upload.php использовался для загрузки файла 89471928047.php.jpg Это была простая форма загрузки файла, которая копирует файл tmp в ту же папку изображений. Как им удалось выполнить его и загрузить в него другие файлы. Кто-то знает, как это возможно? PHP version was 5.1.6 , которая обновляется точно час назад или по расписанию с хостом до 5.3.8 … что такое совпадение?

Related of "Возможно ли выполнить PHP с расширением file.php.jpg?"

Проверьте файл .htaccess

Используя AddType в вашем файле .htaccess, вы можете добавить много других расширений, из которых можно запустить PHP. Как правило, как расширения .html можно использовать, используя PHP внутри себя. Итак, да, это возможно:

 AddType application/x-httpd-php .jpg 

Вы можете проверить это, если хотите.

  1. Создайте каталог с двумя файлами: .htaccess и test.php.jpg
  2. Установить содержимое .htaccess в AddType application-x-httpd-php .jpg
  3. Установите содержание test.php.jpg в <?php echo 'foo'; ?> <?php echo 'foo'; ?>
  4. Доступ test.php.jpg через localhost

Если все идет так, как планировалось, на экран выводится «foo». Вы можете расширить это, чтобы перемещать файлы /tmp если хотите.

Определенно, с чем вы хотите быть очень осторожным.

Проверьте выставленные вызовы, чтобы включить / потребовать

Другой способ, которым это могло быть сделано, – вызвать вызов require() или include() (или любой из методов _once() ), где хакеру удалось загрузить его файл badfile.php.jpg , который был загружен в образ невинного образа:

 <?php include $_GET["file"]; ?> 

В приведенном выше случае (упрощенный пример) хакер может пройти по пути к своему файлу .php.jpg и загрузить его содержимое и обработать его как PHP-код.

Другие (пугающие) идеи

Require, Include и связанные с ними методы – это не единственные способы обработки внешних скриптов – к сожалению, вы можете использовать eval() . Я бы надеялся, что вы ничего не сделаете. Если у вас были какие-либо скрипты на вашем сервере, которые использовали какую-либо одну из функций файла, чтобы прочитать содержимое другого скрипта, а затем eval() чтобы оценить этот контент как PHP, это также может обеспечить уязвимое отверстие безопасности на вашем веб-сайте.

Проблема вызвана вашим сервером с использованием по умолчанию /etc/httpd/conf.d/php.conf:

 rpm -ql php-5.1.6-39.el5_8 /etc/httpd/conf.d/php.conf /usr/lib64/httpd/modules/libphp5-zts.so /usr/lib64/httpd/modules/libphp5.so /var/lib/php/session /var/www/icons/php.gif 

Содержимое /etc/httpd/conf.d/php.conf:

 # # PHP is an HTML-embedded scripting language which attempts to make it # easy for developers to write dynamically generated webpages. # <IfModule prefork.c> LoadModule php5_module modules/libphp5.so </IfModule> <IfModule worker.c> # Use of the "ZTS" build with worker is experimental, and no shared # modules are supported. LoadModule php5_module modules/libphp5-zts.so </IfModule> # # Cause the PHP interpreter to handle files with a .php extension. # AddHandler php5-script .php AddType text/html .php 

Обратите внимание на последнюю строку AddHandler php5-script .php. Это вызывает эту проблему и нуждается в замене более безопасной конфигурации

Вы можете узнать больше об этом и о том, как применить исправление здесь (см. Последний ответ):

http://core.trac.wordpress.org/ticket/11122

также см. это:

https://bugzilla.redhat.com/show_bug.cgi?id=885839

Ваш image_upload.php небезопасен, проверьте следующее:

  1. разрешает ли только расширения изображений? В противном случае можно было бы напрямую загрузить файл PHP. (Я думаю, вы накрыты этим, но дважды проверяете).
  2. он проверяет, действительно ли загруженный файл является образом? Здесь ответ отрицательный, он не проверяет содержимое. Добавьте эту проверку! С помощью этого единственного шага вы должны закрыть начальное нарушение.

Чтобы проверить, является ли это образ, который вы можете запустить getimagesize в файле, он вернет FALSE, если это не изображение.

Как можно выполнить этот файл? Во-первых, как вы знаете, что он был выполнен? Вы видели побочные эффекты?

  1. Один из способов заключается в том, что они могли бы подделать другие файлы
  2. Второй способ, возможно, более вероятно, что они использовали неанитизированные входы из ваших скриптов, чтобы включать или анализировать код. В этом случае вы можете найти доказательства, только взглянув на журналы.

Как смотреть журналы?

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

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