# Exploit Title: PHP-Fusion 9.03.50 - 'Edit Profile' Arbitrary File Upload# Date: 2020-04-24# Author: Besim ALTINOK# Vendor Homepage: https://www.php-fusion.co.uk/home.php# Software Link: https://sourceforge.net/projects/php-fusion/files/PHP-Fusion%20Archives/9.x/PHP-Fusion%209.03.50.zip/download# Version: v9.03.50# Tested on: Xampp# Credit: İsmail BOZKURT and AkkuS-------------------------------------------------------------------------------------------------
Description
---- This system does not check the file extension when user upload photo for
avatar :). So you can upload PHP file like:
Content of the file--
Sample PHP code:<? phpinfo(); ?>
Name of the file:---
Sample PHP File name: tester.php
- When you want to try to upload the image to the avatar, just,try to
change the file name and content.----------------------------------------------------------------------------------------
Vulnerable code section in the UserFieldsInput.inc
----------------------------------------------------------
private function _setUserAvatar(){if(isset($_POST['delAvatar'])){if($this->userData['user_avatar']!=""&&
file_exists(IMAGES."avatars/".$this->userData['user_avatar'])&&
is_file(IMAGES."avatars/".$this->userData['user_avatar'])){
unlink(IMAGES."avatars/".$this->userData['user_avatar']);}
$this->data['user_avatar']='';}if(isset($_FILES['user_avatar'])&&
$_FILES['user_avatar']['name']){// uploaded avatar
if(!empty($_FILES['user_avatar'])&&
is_uploaded_file($_FILES['user_avatar']['tmp_name'])){
$upload = form_sanitizer($_FILES['user_avatar'],'','user_avatar');if(isset($upload['error'])&& !$upload['error']){//^ maybe use empty($upload['error']) also can but
maybe low end php version has problem on empty.
$this->data['user_avatar']= $upload['image_name'];}}}}