Перейти к контенту

Вирус в jpg файлах


Рекомендуемые сообщения

Есть такая статья http://php.webtutor....n-a-jpeg-image/

В статье есть картинка, которая проходит проверку функцией getimagesize

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

Чтобы избежать такой участи, надо изменить функцию загрузки

в 2.х.х это ./ips_kernel/class_upload.php

там есть фрагмент, отвечающий за getimagesize

туда же надо допилить код, чтобы получилось вот так (2.1.7):

		   	 $img_attributes = @getimagesize( $this->saved_upload_name );

			if ( ! is_array( $img_attributes ) or ! count( $img_attributes ) )
			{
				// Unlink the file first
				@unlink( $this->saved_upload_name );
				$this->error_no = 5;
				return;
			}
			else if ( ! $img_attributes[2] )
			{
				// Unlink the file first
				@unlink( $this->saved_upload_name );
				$this->error_no = 5;
				return;
			}
			else if ( $img_attributes[2] == 1 AND ( $this->file_extension == 'jpg' OR $this->file_extension == 'jpeg' ) )
			{
				// Potential XSS attack with a fake GIF header in a JPEG
				@unlink( $this->saved_upload_name );
				$this->error_no = 5;
				return;
			}
		    if($FILE_TYPE != $img_attributes['mime'])
			{
				@unlink( $this->saved_upload_name );
				$this->error_no = 5;
				return;
			}
			if(in_array($FILE_TYPE,array('image/jpeg','image/jpg')))
			{
				$im=imagecreatefromjpeg($this->saved_upload_name);
				imagejpeg($im,$this->saved_upload_name);
				imagedestroy($im);
			}
			else if($FILE_TYPE=='image/gif')
			{
				$im=imagecreatefromgif($this->saved_upload_name);
				imagegif($im,$this->saved_upload_name);
				imagedestroy($im);
			}
			else if($FILE_TYPE=='image/png')
			{
				$im=imagecreatefrompng($this->saved_upload_name);
				imagepng($im,$this->saved_upload_name);
				imagedestroy($im);
			}
			else
			{
				@unlink( $this->saved_upload_name );
				$this->error_no = 5;
				return;
			}

мой код начинается с if($FILE_TYPE != $img_attributes['mime'])

Изменено пользователем Arhar
еще один фикс
Ссылка на комментарий
Поделиться на других сайтах

  • 5 месяцев спустя...
А если формат файла "jpe"? :) И хотелось бы понять, что делает прибавка к пенсии коду. Изменено пользователем Wartys
Ссылка на комментарий
Поделиться на других сайтах

  • 3 недели спустя...

пересоздает файл картинку средствами gd библиотеки

код вируса отрезается в таком случае по любому


формат файла не имеет значения, имеет его миме-тип

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.