http://mdsec.net/bank/48/
注解
与SOAP注入不同,在后端请求中注入任意异常参数不会导致任何错误。因此,要想成功实施攻击,需要清楚了解应用程序具体使用了哪些后端参数。在黑盒环境下,很难确定这些信息;但是,如果应用程序使用任何可以获取或搜索其代码的第三方组件,那么就可以轻易获得这些信息。
1.HTTP参数污染
HPP是一种可用于各种环境下的攻击技巧(请参阅第12章和第13章了解其他示例),这种技巧常用在HPI攻击中。
如果请求中包含多个同名请求,这时Web服务器该如何处理?对于这一问题,HTTP规范并未提供任何指导。实际上,各种Web服务器的处理方式各不相同,以下是一些常见的处理方式。
使用参数的第一个实例。
使用参数的最后一个实例。
串联参数值,可能在参数之间添加分隔符。
构建一个包含所有请求值的数组。
在前面的HPI示例中,攻击者可以在后端请求中添加一个新参数。实际上,攻击者可以对其实施注入攻击的请求很可能已经包含一个与攻击者所针对的参数同名的参数。在这种情况下,攻击者可以使用HPI条件注入另一个同名参数。随后,应用程序将表现出何种行为,将取决于后端HTTP服务器如何处理重复的参数。这样,攻击者或许可以用他注入的参数值“覆盖”原始参数值。
例如,如果原始的后端请求为:
并且后端服务器使用任何重复的参数的第一个实例,则攻击者可以对前端请求中的FromAccount参数实施攻击,如下所示:
相反,在这个示例中,如果后端服务器使用任何重复的参数的最后一个实例,则攻击者可以对前端请求中的ToAccount参数实施攻击。