尝试访问

http://mdsec.net/updates/97/

http://mdsec.net/updates/99/

10.4.2 HTTP参数注入

如果用户提交的参数被用作后端HTTP请求中的参数,这时就会导致HTTP参数注入(HPI)。以下面的之前易于受SOAP注入的银行转账功能(稍作修改)为例:

img310a

这个前端请求由用户的浏览器提出,将导致应用程序向银行基础架构中的另一台Web服务器提出其他HTTP请求。在以下后端请求中,应用程序从前端请求中复制了一些参数值:

img310b

这个请求要求后端服务器检查是否有清算资金可以转账,如果有,则进行转账。但是,前端服务器可以通过提供以下参数,指定存在清算资金,从而避开上述检查:

img310c

如果攻击者发现这种行为,他就可以尝试实施HPI攻击,在后端请求中注入clearedfunds参数。要注入该参数,他将所需参数附加到现有参数值的后面,并将分隔名称和值的&和=字符进行URL编码,如下所示:

img310d

当应用程序服务器处理这个请求时,它会以正常方式对参数值进行URL解码。因此,前端应用程序收到的ToAccount参数的值为:

img310e

如果前端应用程序没有确认这个值并将它按原样传递给后端请求,应用程序将提出以下后端请求,使攻击者能够成功避开清算资金检查:

img310f