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

Вирус в 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 библиотеки

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


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

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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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

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

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