CVE-2011-10004 (published 2023-10-17T00:15Z)

A vulnerability was found in reciply Plugin up to 1.1.7 on WordPress. It has been rated as critical. This issue affects some unknown processing of the file uploadImage.php. The manipulation leads to unrestricted upload. The attack may be initiated remotely. Upgrading to version 1.1.8 is able to address this issue. The identifier of the patch is e3ff616dc08d3aadff9253f1085e13f677d0c676. It is recommended to upgrade the affected component. The identifier VDB-242189 was assigned to this vulnerability.

CVSS v3 base score: 9.8, CRITICAL (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)

Weakness information:
cwe_id: CWE-434
cwe_name: Unrestricted Upload of File with Dangerous Type
description: The product allows the upload or transfer of dangerous file types that are automatically processed within its environment.
extended_description: 
            
            
            
            
            
         
         

Fix information:
repo_url: https://github.com/wp-plugins/reciply
commit_details: repo_url: https://github.com/wp-plugins/reciply
author: craig@techcle.com
author_date: 2011-08-24 19:21:32+00:00
msg: Fixed upload vulnerability

git-svn-id: https://plugins.svn.wordpress.org/reciply/trunk@428303 b8457f37-d9ea-0310-8a92-e5e31aec5664
repository: repo_url: https://github.com/wp-plugins/reciply
repo_name: wp-plugins/reciply
description: WordPress.org Plugin Mirror
repo_language: PHP
owner: wp-plugins
file_changes: filename: editor_plugin.js
change_type: ModificationType.MODIFY
diff: @@ -37,7 +37,7 @@ function reciply() {
                 author : 'The Recip.ly Integration team',
                 authorurl : 'http://integration.recip.ly',
                 infourl : '',
-                version : "1.1.7"
+                version : "1.1.8"
             };
         }
     });

programming_language: JavaScript
filename: index.php
change_type: ModificationType.MODIFY
diff: @@ -4,7 +4,7 @@ Plugin Name: Recip.ly Plugin
 Plugin URI: 
 Description: The recip.ly plugin allows you to easily add the recip.ly checkout process to your recipes.
 Author: The Recip.ly Integration team
-Version: 1.1.7
+Version: 1.1.8
 Author URI: http://integration.recip.ly
 */
 

programming_language: PHP
filename: uploadImage.php
change_type: ModificationType.MODIFY
diff: @@ -1,41 +1,58 @@
 <?php
+//add_action('plugins_loaded','pluginInit');
 
-// File version 1.1.7
-$ref = $_SERVER['HTTP_REFERER'];
-
-// Taille maximum 
-$MAX_FILE_SIZE = 400000;
-
-// Dossier de destination du fichier
-$serverpath = "images/";// Path to where images should be uploaded to on the server.
-
-foreach ($_FILES as $file) {
-$allowed_types = array("image/bmp", "image/gif", "image/pjpeg", "image/jpeg", "image/jpg", "image/png");
-$fname = $file['name'];
-$ftype = $file['type'];
-$fsize = $file['size'];
-$ftmp =$file['tmp_name'];
-$path = "$serverpath$fname";
+if ( !function_exists( 'add_action' ) ) {
+	echo "<strong>404.1 Error</strong>";
+	exit;
 }
-
-// Diverses test afin de savoir si :
-// Le format de fichier correspond  notre tableau array
-if(!in_array($ftype, $allowed_types)){$error = 1;}
-
-// La taille du fichier n'est pas dpasse
-if($fize > $MAX_FILE_SIZE){$error = 2;}
-
-// Le fichier n'existe pas dj
-if(file_exists($serverpath."m_".$fname)){$error = 3;}
-
-// Si tout va bien, c'est bien droul
-if(move_uploaded_file($ftmp,''.$serverpath.''.$fname.'')) {$error = 0;}
-
-if($fname!="") {
-				header('refresh: 0; url='.$ref.'&img='.$path.'&f='.$fname.'&target="_blank"');
-				}
-else {
-		header('refresh: 0; url='.$ref);
+pluginInit();
+function pluginInit()
+{
+	// File version 1.1.7
+	$ref = $_SERVER['HTTP_REFERER'];
+	
+	// Taille maximum 
+	$MAX_FILE_SIZE = 400000;
+	$error = 0;
+	
+	// Dossier de destination du fichier
+	$serverpath = ABSPATH . 'wp-content/plugins/reciply/images/';
+	//$serverpath = "images/";// Path to where images should be uploaded to on the server.
+	
+	foreach ($_FILES as $file) {
+	$allowed_types = array("image/bmp", "image/gif", "image/pjpeg", "image/jpeg", "image/jpg", "image/png");
+	$fname = $file['name'];
+	$ftype = $file['type'];
+	$fsize = $file['size'];
+	$ftmp =$file['tmp_name'];
+	$path = "$serverpath$fname";
 	}
+	
+	// Diverses test afin de savoir si :
+	// Le format de fichier correspond  notre tableau array
+	if(!in_array($ftype, $allowed_types)){$error = 1;}
+	
+	// La taille du fichier n'est pas dpasse
+	if($fize > $MAX_FILE_SIZE){$error = 2;}
+	
+	
+	// Le fichier n'existe pas dj
+	if(file_exists($serverpath."m_".$fname)){$error = 3;}
+	if ( $error != 0 ) {
+		echo "<strong>404.2 Error Code = ".$error."</strong>";
+		exit(0);
+	}
+	
+	
+	// Si tout va bien, c'est bien droul
+	if(move_uploaded_file($ftmp,''.$serverpath.''.$fname.'')) {$error = 4;}
+	
+	if($fname!="") {
+					header('refresh: 0; url='.$ref.'&img='.$path.'&f='.$fname.'&target="_blank"');
+					}
+	else {
+			header('refresh: 0; url='.$ref);
+		}
+}
 
 ?>
\ No newline at end of file

programming_language: PHP