漏洞详情

披露状态:

2014-02-09: 细节已通知厂商并且等待厂商处理中
2014-02-09: 厂商已经确认,细节仅向厂商公开
2014-02-12: 细节向第三方安全合作伙伴开放
2014-02-19: 细节向核心白帽子及相关领域专家公开
2014-03-01: 细节向普通白帽子公开
2014-03-21: 细节向实习白帽子公开
2014-05-10: 细节向公众公开

简要描述:

过滤不严。

详细说明:

注入6:

在apiaction.class.php中



public function userpreview() {
$username=trim(rawurldecode($this->_post('username')));
if ($username) {
parent::init();
$user = M('Users')->where("user_name='$username'")->find();
if ($user) {
if ($user['cityid']) {//用户所在地
$dtModel=M('District');
$pdata = $dtModel->where("id='$user[cityid]'")->find();
$pdata2 = $dtModel->where("id='$pdata[upid]'")->find();
$user['live_city']=$pdata2['name'].' '.$pdata['name'];
}
$isfriend=D('Friend')->followstatus($user['user_id'],$this->my['user_id']);





$username

无过滤 且解码。



然后带入查询



$user = M('Users')->where("user_name='$username'")->find();



where user_name='username'



SELECT * FROM `et_users` WHERE user_name='admin' LIMIT 1



执行的语句 构造一下

X}U8~O{{FKOY@JC0OY3MEKB.jpg





注入成功 有图 有真相。

注入7:

在appaction.class.php中



public function myapps() {
parent::tologin();
import("@.ORG.Page");
C('PAGE_NUMBERS',10);
$pvmodel=D('MyappsView');
$keyword=htmlspecialchars(trim($_REQUEST['keyword']));

if (!$keyword) {
$count=M('Myapps')->where("user_id='".$this->my['user_id']."'")->count();
$p= new Page($count,20);
$page = $p->show("?m=app&a=myapps&p=");
$myapp=$pvmodel->where("user_id='".$this->my['user_id']."'")->order("installs DESC")->limit($p->firstRow.','.$p->listRows)->select();
} else {
$count=$pvmodel->where("name LIKE '%$keyword%' AND user_id='".$this->my['user_id']."'")->count();
$p= new Page($count,20);
$page = $p->show("?m=app&a=myapps&keyword=$keyword&p=");
$myapp=$pvmodel->where("name LIKE '%$keyword%' AND user_id='".$this->my['user_id']."'")->order("installs DESC")->limit($p->firstRow.','.$p->listRows)->select();
}





$keyword=htmlspecialchars(trim($_REQUEST['keyword']));



实体化 对注入影响不大。



然后带入

$count=$pvmodel->where("name LIKE '%$keyword%' AND user_id='".$this->my['user_id']."'")->count();



SELECT COUNT(*) AS tp_count FROM et_myapps Myapps LEFT JOIN et_plugins Plugins ON Myapps.appid=Plugins.id WHERE name LIKE '%yu%' AND user_id='2' LIMIT 1



执行的语句 构造一下

%[RU[BANFF82D$~[CZ3~X(R.jpg





注入成功 有图有真相。

注入8:

在appmanageraction.class.php 中



public function init() {
$hookids=$_POST['hookids'];
if ($hookids) {
$mid=$_POST['mid'];
$_myapps=M('Myapps')->where("user_id='$mid'")->select();
if ($_myapps) {
foreach ($_myapps as $val) {
$myapps[$val['appid']]=1;
}
}





$mid=$_POST['mid'];

where user_id='$mid'

无过滤。 带入查询

$_myapps=M('Myapps')->where("user_id='$mid'")->select();



看执行的语句。SELECT * FROM `et_myapps` WHERE user_id='123'

构造一下。

mid=yu' union select sleep(10),2,3,4%23



1.jpg





执行的语句



2.jpg





成功延时

注入9:

在commentaction.class.php中



public function delmsg() {
$cmid=$_POST['cmid'];
if (is_array($cmid)) {
$cids=implode(',',$cmid);
M('Comments')->where("comment_id IN ($cids) AND (user_id='".$this->my['user_id']."' OR comment_uid='".$this->my['user_id']."')")->delete();
} else if (is_numeric($cmid)) {
M('Comments')->where("comment_id='$cmid' AND (user_id='".$this->my['user_id']."' OR comment_uid='".$this->my['user_id']."')")->delete();
}
echo json_encode(array("ret"=>'success',"tip"=>L('del_comment_success')));
}





$cmid=$_POST['cmid']; 无过滤



M('Comments')->where("comment_id IN ($cids) AND (user_id='".$this->my['user_id']."' OR comment_uid='".$this->my['user_id']."')")->delete();



带入



交给sqlmap把。

6E97S_EA)}KCN%2R_2MZFQR.jpg





注入成功 有图有真相 。

注入10:

在appaction.class.php 中



public function index() {



parent::tologin();

$appname=trim($this->_get('appname'));

$action=$this->_get('action');//直接调用方法

$app=M('Plugins')->where("directory='$appname' AND available=1")->find();

$this->assign('app',$app);





$appname 无过滤 且直接带入查询。



where directory='$appname'

1.jpg





所执行的语句

2.jpg

<





成功延时

3.jpg

漏洞证明:

修复方案:

加强过滤。

版权声明:转载请注明来源 ′ 雨。@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-02-09 16:34

厂商回复:

正在修复中

最新状态:

暂无


漏洞评价: