安全研究

安全漏洞
Merak邮件服务器Groupware组件多个SQL注入漏洞

发布日期:2009-05-05
更新日期:2009-05-06

受影响系统:
Icewarp WebMail Server 9.4.1
不受影响系统:
Icewarp WebMail Server 9.4.2
描述:
BUGTRAQ  ID: 34820
CVE(CAN) ID: CVE-2009-1468

Merak Email Server是一个全面的办公室局域网或Internet通讯邮件解决方案。

Merak邮件服务器使用的基于Web的groupware组件允许用户存储联系人信息、标注、文件等。可使用搜索表单搜索所存储的项。当用户使用所提供的表单搜索某些文件时,会从浏览器向以下PHP脚本发送包含有XML搜索查询的HTTP POST请求:
https://example.com/webmail/server/webmail.php:

----- HTTP POST request ------------------------------------------------
<iq sid="73aaafec4a8db27af49c4c43bca4ac13"
    uid="1239870305230" type="get" format="json">
  <query xmlns="webmail:iq:items">
    <account uid="user@example.com">
      <folder uid="Files">
        <item>
          <values>
            <evntitle> </evntitle>
            <evnnote> </evnnote>
            [..]
          </values>
          <filter>
            <offset>0</offset>
            <limit>60</limit>
            <order_by>EVNTYPE asc</order_by>
            <sql>(EVNTITLE LIKE '%SQL INJECTION TEST%' OR
                  EVNNOTE LIKE '%SQL INJECTION TEST%')
            </sql>
          </filter>
        </item>
      </folder>
    </account>
  </query>
</iq>
----- /HTTP POST request -----------------------------------------------

很明显这里使用了SQL表达式来查找匹配项并对结果排序,其中使用POST请求中所提供的信息创建了两个SQL查询并在数据库中执行(“>”标记为用户可控部分):

----- Query 1 ----------------------------------------------------------
Select EVN_ID, EVNRCR_ID, evntitle, evnnote, evnlocation, evnstartdate,
        evnstarttime, evntype, evncolor, evncomplete
   From Event Where
     (EVNGRP_ID = '3a7e072a3002') And
     (
       (
>        (EVNTITLE LIKE '%SQL INJECTION TEST%' OR
>         EVNNOTE LIKE '%SQL INJECTION TEST%')
       ) AND
       evnclass <> 'O'
     ) And
     (EvnFolder='Files')
     Order By
>       EVNLOCATION asc
     LIMIT 0,45
----- /Query 1 ---------------------------------------------------------

----- Query 2 ----------------------------------------------------------
Select Count(EVN_ID) As Count_ From Event Where
   (EVNGRP_ID = '3a7e072a3002') And
   (
>    (EVNTITLE LIKE '%SQL INJECTION TEST%' OR
>     EVNNOTE LIKE '%SQL INJECTION TEST%')
   ) And
   (EvnFolder='Files')
----- /Query 2 ---------------------------------------------------------

仅在两个查询句法都正确的时候数据库才会向web应用返回数据。由于对SQL查询用户可控部分不同的括号嵌套级别,成功的SQL注入要求使用原始HTTP POST请求中的两个元素。

<*来源:RedTeam Pentesting
  
  链接:http://marc.info/?l=bugtraq&m=124153431204191&w=2
*>

测试方法:

警 告

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

http://www.redteam-pentesting.de/advisories/rt-sa-2009-003

建议:
厂商补丁:

Icewarp
-------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.icewarp.com/

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