Kernel : Linux vmw02p.internet-indee.net 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Tue Nov 16 14:42:35 UTC 2021 x86_64
Disable function : NONE
Safe mode : OFF
Host : firofichi.it | Server ip : 5.196.164.15 | Your ip : 3.147.74.27 | Time @ Server : 19 Oct 2024 05:34:19
MySQL : OFF | MSSQL : OFF | cURL : ON | Oracle : OFF | wget : ON | Perl : ON

/home/webmaster/firofichi/www/vendor/magento/framework/Api/

HOME about upload exec mass file domain root vuln newfile newfolder kill me

File Path : /home/webmaster/firofichi/www/vendor/magento/framework/Api/ImageProcessor.php

<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Framework\Api; use Magento\Framework\Api\Data\ImageContentInterface; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Exception\InputException; use Magento\Framework\Filesystem; use Magento\Framework\Phrase; /** * Class ImageProcessor * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class ImageProcessor implements ImageProcessorInterface { /** * MIME type/extension map * * @var array */ protected $mimeTypeExtensionMap = [ 'image/jpg' => 'jpg', 'image/jpeg' => 'jpg', 'image/gif' => 'gif', 'image/png' => 'png', ]; /** * @var Filesystem */ private $filesystem; /** * @var Filesystem */ private $contentValidator; /** * @var DataObjectHelper */ private $dataObjectHelper; /** * @var \Psr\Log\LoggerInterface */ protected $logger; /** * @var Uploader */ private $uploader; /** * @var \Magento\Framework\Filesystem\Directory\WriteInterface */ private $mediaDirectory; /** * @param Filesystem $fileSystem * @param ImageContentValidatorInterface $contentValidator * @param DataObjectHelper $dataObjectHelper * @param \Psr\Log\LoggerInterface $logger * @param Uploader $uploader */ public function __construct( Filesystem $fileSystem, ImageContentValidatorInterface $contentValidator, DataObjectHelper $dataObjectHelper, \Psr\Log\LoggerInterface $logger, Uploader $uploader ) { $this->filesystem = $fileSystem; $this->contentValidator = $contentValidator; $this->dataObjectHelper = $dataObjectHelper; $this->logger = $logger; $this->uploader = $uploader; $this->mediaDirectory = $this->filesystem->getDirectoryWrite(DirectoryList::MEDIA); } /** * {@inheritdoc} */ public function save( CustomAttributesDataInterface $dataObjectWithCustomAttributes, $entityType, CustomAttributesDataInterface $previousCustomerData = null ) { //Get all Image related custom attributes $imageDataObjects = $this->dataObjectHelper->getCustomAttributeValueByType( $dataObjectWithCustomAttributes->getCustomAttributes(), \Magento\Framework\Api\Data\ImageContentInterface::class ); // Return if no images to process if (empty($imageDataObjects)) { return $dataObjectWithCustomAttributes; } // For every image, save it and replace it with corresponding Eav data object /** @var $imageDataObject \Magento\Framework\Api\AttributeValue */ foreach ($imageDataObjects as $imageDataObject) { /** @var $imageContent \Magento\Framework\Api\Data\ImageContentInterface */ $imageContent = $imageDataObject->getValue(); $filename = $this->processImageContent($entityType, $imageContent); //Set filename from static media location into data object $dataObjectWithCustomAttributes->setCustomAttribute( $imageDataObject->getAttributeCode(), $filename ); //Delete previously saved image if it exists if ($previousCustomerData) { $previousImageAttribute = $previousCustomerData->getCustomAttribute( $imageDataObject->getAttributeCode() ); if ($previousImageAttribute) { $previousImagePath = $previousImageAttribute->getValue(); if (!empty($previousImagePath) && ($previousImagePath != $filename)) { @unlink($this->mediaDirectory->getAbsolutePath() . $entityType . $previousImagePath); } } } } return $dataObjectWithCustomAttributes; } /** * {@inheritdoc} */ public function processImageContent($entityType, $imageContent) { if (!$this->contentValidator->isValid($imageContent)) { throw new InputException(new Phrase('The image content is invalid. Verify the content and try again.')); } $fileContent = @base64_decode($imageContent->getBase64EncodedData(), true); $tmpDirectory = $this->filesystem->getDirectoryWrite(DirectoryList::SYS_TMP); $fileName = $this->getFileName($imageContent); $tmpFileName = substr(md5(rand()), 0, 7) . '.' . $fileName; $tmpDirectory->writeFile($tmpFileName, $fileContent); $fileAttributes = [ 'tmp_name' => $tmpDirectory->getAbsolutePath() . $tmpFileName, 'name' => $imageContent->getName() ]; try { $this->uploader->processFileAttributes($fileAttributes); $this->uploader->setFilesDispersion(true); $this->uploader->setFilenamesCaseSensitivity(false); $this->uploader->setAllowRenameFiles(true); $destinationFolder = $entityType; $this->uploader->save($this->mediaDirectory->getAbsolutePath($destinationFolder), $fileName); } catch (\Exception $e) { $this->logger->critical($e); } return $this->uploader->getUploadedFileName(); } /** * @param string $mimeType * @return string */ protected function getMimeTypeExtension($mimeType) { return $this->mimeTypeExtensionMap[$mimeType] ?? ''; } /** * @param ImageContentInterface $imageContent * @return string * @throws \Magento\Framework\Exception\LocalizedException */ private function getFileName($imageContent) { $fileName = $imageContent->getName(); if (!pathinfo($fileName, PATHINFO_EXTENSION)) { if (!$imageContent->getType() || !$this->getMimeTypeExtension($imageContent->getType())) { throw new InputException(new Phrase('Cannot recognize image extension.')); } $fileName .= '.' . $this->getMimeTypeExtension($imageContent->getType()); } return $fileName; } }