CVE:CVE-2009-1468
CNNVD:CNNVD-200905-050
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">
    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请求中的两个元素。
solution:Upgrade icewarp email_server to a higher version than 9.3.0,2.10.105,2.10.110,2.10.115,2.10.140,2.10.150,2.10.165,2.10.170,2.10.190,2.10.200,2.10.210,2.10.220,2.10.240,2.10.250,2.10.260,2.10.280,2.10.290,2.10.310,2.10.320,2.10.330,2.10.331,2.10.340,2.10.350,2.10.360,3.00.100,3.00.110,3.00.120,3.00.130,3.00.140,3.10.011,3.10.110,4.00.30,4.2.1,4.2.2,4.2.3,4.4.1,4.4.2,4.10.040,4.10.050,5.1.2,5.1.3,5.1.5,5.3.0,5.3.2,5.4.1,5.4.2,5.4.3,5.4.4,5.5.3,5.5.4,5.5.5,5.5.6,5.5.7,5.7.3,5.8.2,5.8.3,5.8.4,5.8.5,5.8.6,5.9.4,6.0.2,6.0.3,6.0.5,6.0.7,6.1.0,6.2.1,7.0.1,7.1.4,7.1.6,7.2.0,7.4.0,7.4.2,7.4.5,7.5.2,7.6.0,7.6.4,8.0.1,8.0.2,8.0.3,8.2.0,8.2.2,8.3.5,8.3.8,8.5.0,8.9.1,9.0.0,9.1.0,9.2.0,and avoid the version (,9.3.0],2.10.105,2.10.110,2.10.115,2.10.140,2.10.150,2.10.165,2.10.170,2.10.190,2.10.200,2.10.210,2.10.220,2.10.240,2.10.250,2.10.260,2.10.280,2.10.290,2.10.310,2.10.320,2.10.330,2.10.331,2.10.340,2.10.350,2.10.360,3.00.100,3.00.110,3.00.120,3.00.130,3.00.140,3.10.011,3.10.110,4.00.30,4.2.1,4.2.2,4.2.3,4.4.1,4.4.2,4.10.040,4.10.050,5.1.2,5.1.3,5.1.5,5.3.0,5.3.2,5.4.1,5.4.2,5.4.3,5.4.4,5.5.3,5.5.4,5.5.5,5.5.6,5.5.7,5.7.3,5.8.2,5.8.3,5.8.4,5.8.5,5.8.6,5.9.4,6.0.2,6.0.3,6.0.5,6.0.7,6.1.0,6.2.1,7.0.1,7.1.4,7.1.6,7.2.0,7.4.0,7.4.2,7.4.5,7.5.2,7.6.0,7.6.4,8.0.1,8.0.2,8.0.3,8.2.0,8.2.2,8.3.5,8.3.8,8.5.0,8.9.1,9.0.0,9.1.0,9.2.0; Upgrade icewarp webmail_server to a higher version than 9.3.0,2.10.105,2.10.110,2.10.115,2.10.140,2.10.150,2.10.165,2.10.170,2.10.190,2.10.200,2.10.210,2.10.220,2.10.240,2.10.250,2.10.260,2.10.280,2.10.290,2.10.310,2.10.320,2.10.330,2.10.331,2.10.340,2.10.350,2.10.360,3.00.100,3.00.110,3.00.120,3.00.130,3.00.140,3.10.011,3.10.110,4.00.30,4.2.1,4.2.2,4.2.3,4.4.1,4.4.2,4.10.040,4.10.050,5.1.2,5.1.3,5.1.5,5.3.0,5.3.2,5.4.1,5.4.2,5.4.3,5.4.4,5.5.3,5.5.4,5.5.5,5.5.6,5.5.7,5.7.3,5.8.2,5.8.3,5.8.4,5.8.5,5.8.6,5.9.4,6.0.2,6.0.3,6.0.5,6.0.7,6.1.0,6.2.1,7.0.1,7.1.4,7.1.6,7.2.0,7.4.0,7.4.2,7.4.5,7.5.2,7.6.0,7.6.4,8.0.1,8.0.2,8.0.3,8.2.0,8.2.2,8.3.5,8.3.8,8.5.0,8.9.1,9.0.0,9.1.0,9.2.0,and avoid the version (,9.3.0],2.10.105,2.10.110,2.10.115,2.10.140,2.10.150,2.10.165,2.10.170,2.10.190,2.10.200,2.10.210,2.10.220,2.10.240,2.10.250,2.10.260,2.10.280,2.10.290,2.10.310,2.10.320,2.10.330,2.10.331,2.10.340,2.10.350,2.10.360,3.00.100,3.00.110,3.00.120,3.00.130,3.00.140,3.10.011,3.10.110,4.00.30,4.2.1,4.2.2,4.2.3,4.4.1,4.4.2,4.10.040,4.10.050,5.1.2,5.1.3,5.1.5,5.3.0,5.3.2,5.4.1,5.4.2,5.4.3,5.4.4,5.5.3,5.5.4,5.5.5,5.5.6,5.5.7,5.7.3,5.8.2,5.8.3,5.8.4,5.8.5,5.8.6,5.9.4,6.0.2,6.0.3,6.0.5,6.0.7,6.1.0,6.2.1,7.0.1,7.1.4,7.1.6,7.2.0,7.4.0,7.4.2,7.4.5,7.5.2,7.6.0,7.6.4,8.0.1,8.0.2,8.0.3,8.2.0,8.2.2,8.3.5,8.3.8,8.5.0,8.9.1,9.0.0,9.1.0,9.2.0