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,...
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请求中的两个元素。