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

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

缺陷编号:wooyun-2014-051068

漏洞标题:Thinksaas v2.1 2枚注入。

相关厂商:thinksaas.cn

漏洞作者: ′雨。

提交时间:2014-02-19 14:00

修复时间:2014-05-20 14:01

公开时间:2014-05-20 14:01

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

依旧过滤不严。

详细说明:

这次写两个把。。 - - 这两个同一文件的 哈哈。
依旧是越权。
\app\group\action\admin\group.php
无需管理 只需要一个前台注册账户就能访问。
真正的管理后台在\app\system\action\
但是为毛这admin目录下的文件都能做很多事?

1.jpg


注入第一枚。

case "add_do":
$userid = intval($_POST['userid']);
$strUser = $db->once_fetch_assoc("select * from ".dbprefix."user_info where userid='$userid'");
$arrData = array(
'userid' => $userid,
'groupname' => t($_POST['groupname']),
'groupdesc' => tsClean($_POST['groupdesc']),
'isrecommend' => intval($_POST['isrecommend']),
'addtime' => time(),
'ispost' => intval($_POST['ispost']),
);
$groupid = $db->insertArr($arrData,dbprefix.'group');
//更新group_user索引关系
$groupUserNum = $db->once_num_rows("select * from ".dbprefix."group_user where userid='$userid' and groupid='$groupid'");


'groupdesc' => tsClean($_POST['groupdesc']),
tsclean 就是又调用了 cleanJs函数

function cleanJs($text) {
$text = trim ( $text );
$text = stripslashes ( $text );
// 完全过滤注释
$text = preg_replace ( '/<!--?.*-->/', '', $text );
// 完全过滤动态代码
$text = preg_replace ( '/<\?|\?>/', '', $text );
// 完全过滤js
$text = preg_replace ( '/<script?.*\/script>/', '', $text );
// 过滤多余html
$text = preg_replace ( '/<\/?(html|head|meta|link|base|body|title|style|script|form|iframe|frame|frameset)[^><]*>/i', '', $text );
// 过滤on事件lang js
while ( preg_match ( '/(<[^><]+)(lang|data|onfinish|onmouse|onexit|onerror|onclick|onkey|onload|onchange|onfocus|onblur)[^><]+/i', $text, $mat ) ) {
$text = str_replace ( $mat [0], $mat [1], $text );
}
while ( preg_match ( '/(<[^><]+)(window\.|javascript:|js:|about:|file:|document\.|vbs:|cookie)([^><]*)/i', $text, $mat ) ) {
$text = str_replace ( $mat [0], $mat [1] . $mat [3], $text );
}
return $text;
}


cleanJs cleanJs 只过滤js。

1.jpg


看看所执行的语句

2.jpg


都懂的。
____________________________________________________________________
注入第二发

case "edit_do":
$groupid = intval($_POST['groupid']);

$new['group']->update('group',array(
'groupid'=>$groupid,
),array(
'groupname' => t($_POST['groupname']),
'groupdesc' => tsClean($_POST['groupdesc']),
'userid' => intval($_POST['userid']),
'ispost' => intval($_POST['ispost']),
));

qiMsg("小组信息修改成功!");
break;


tsclean 我就不再贴了嘛; 上面都有。 Update row未过滤。

漏洞证明:

3.jpg


然后再访问
http://127.0.0.1/thinksaas/index.php?app=group&ac=admin/group&ts=list

4.jpg


话说我的@咋不见了。

修复方案:

过滤

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2014-02-20 09:54

厂商回复:

感谢反馈。bug已经修复。

最新状态:

暂无