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

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

缺陷编号:wooyun-2012-015371

漏洞标题:躺在床上读代码之 phpwind后台SQL注射

相关厂商:phpwind

漏洞作者: 快点啊!!

提交时间:2012-11-28 14:50

修复时间:2012-12-03 14:50

公开时间:2012-12-03 14:50

漏洞类型:SQL注射漏洞

危害等级:低

自评Rank:3

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-11-28: 细节已通知厂商并且等待厂商处理中
2012-12-03: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

这个漏洞是一个后台注射,影响不大,本身我是不想发的,漏洞本身可能造成影响不大,但是整个漏洞分析的过程应该在自己还有兴趣的时候记录下来,因为以后我会知道当时还有兴趣分析了它。
PHPWIND是我一直以来觉得为了实现安全无所不用其极的一款产品,我是喜欢这样小聪明解决问题的产品的。
该产品使用checkVar函数全局将GP(GET,POST)中的.. ) < = 都替换成了HTML实体,所以即使你找到了一个SQL注射,你也会被限制在不允许使用函数及子查询中,即使你找到了一个代码执行漏洞,也被限制在函数和php标签的开始中。
以上这一段也是为什么我还是写了这个漏洞的原因之一,我觉得一个产品做的这样的事情应当被人所知。

详细说明:

首先,我找到了一个函数。
deleteMessagesByMessageIds
在lib/message/db/ms_messagesdb.class.php中

function deleteMessagesByMessageIds($messageIds){
$messageIds = is_array($messageIds) ? S::sqlImplode($messageIds) : $messageIds;
$query = $this->_db->query ( "DELETE FROM " . $this->_tableName. " WHERE mid in (".$messageIds.") " );
return $this->_db->affected_rows ();
}


所以我知道如果没有什么东西限制messageIds必须是数组的话,它如果是一个字符串的话,将会导致SQL注射,而接下来我就需要找到到底在哪里它不被要求是一个数组。
然后我找到了manageMessageWithMessageIds函数,在lib/message/message/search.ms.php。
接下来我就发现它在后台被调用了。
在admin/superdel.php中

S::gp(array('delid'),'P');
empty($delid) && adminmsg("请选择要删除的消息");
$messageServer->manageMessageWithMessageIds($delid);
adminmsg('operate_success',"$url");


前面我提到了checkVar,对做这个事情的人我发自内心的钦佩。
之所以在这里我们能注入是因为这个函数对后台放了一马。

function checkVar(&$var) {
if (is_array($var)) {
foreach ($var as $key => $value) {
S::checkVar($var[$key]);
}
} elseif (P_W != 'admincp') {
$var = str_replace(array('..',')','<','='), array('&#46;&#46;','&#41;','&#60;','&#61;'), $var);
} elseif (str_replace(array('<iframe','<meta','<script'), '', $var) != $var) {
global $basename;
$basename = 'javascript:history.go(-1);';
adminmsg('word_error');
}
}


中的

} elseif (P_W != 'admincp') {


漏洞证明:

phpwind.jpg


修复方案:

S::gp(array('delid'),'P',2);
: )

版权声明:转载请注明来源 快点啊!!@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2012-12-03 14:50

厂商回复:

最新状态:

暂无


漏洞评价:

评论

  1. 2012-11-28 16:00 | 风萧萧 认证白帽子 ( 核心白帽子 | Rank:1020 漏洞数:76 | 人这一辈子总要动真格的爱上什么人)

    V5了!

  2. 2012-11-28 16:31 | ╰ァBy﹎刑天 ( 实习白帽子 | Rank:54 漏洞数:21 | http://t.qq.com/mybudui)

    躺在床上读代码我看你是躺也中枪

  3. 2012-11-28 16:53 | c4rp3nt3r ( 实习白帽子 | Rank:70 漏洞数:10 | 人生的意义就在于从一个圈子跳到另一个更大...)

    躺床上用什么代码呢? pad ? 手机 ?

  4. 2012-11-28 17:07 | c4bbage ( 路人 | Rank:15 漏洞数:7 | var_dump($me);)

    @c4rp3nt3r 目测,应该是专门买了个躺椅,之后前方弄了一个桌板。比如 鲜血时的 献血椅。(楼主如有雷同 莫怪,只是YY)

  5. 2012-11-28 17:22 | 快点啊!! ( 路人 | Rank:10 漏洞数:4 | 开源产品在走下坡路,能干点啥就干点啥吧。)

    名字是纪念以前的一个前辈啊,当时他是打印了代码躺在床上看,现在我是没地方就蜷在沙发上。

  6. 2012-11-29 10:25 | c4rp3nt3r ( 实习白帽子 | Rank:70 漏洞数:10 | 人生的意义就在于从一个圈子跳到另一个更大...)

    @c4bbage 觉得比较奇怪啊,要速度快的话得搜索啊,要手工打字吧.要是挨着一个个文件的看还可以.本屌丝手机屏幕小,没法看.

  7. 2012-11-29 22:53 | 快点啊!! ( 路人 | Rank:10 漏洞数:4 | 开源产品在走下坡路,能干点啥就干点啥吧。)

    我本将心向明月,奈何明月照沟渠啊,两天了,确认一下漏洞会屎吗?