到现在为止,我们介绍的许多攻击主要与利用某种应用程序功能向应用程序响应中注入专门设计的内容有关。这其中最主要的攻击为XSS攻击。我们还介绍了通过注入的HTML和CSS代码跨域捕获数据的技巧。在这一节中,我们将介绍其他一些客户端注入攻击。
如果用户控制的数据以不安全的方式插入到应用程序返回的HTTP消息头中,这时就会出现HTTP消息头注入漏洞。如果攻击者能够在他控制的消息头中注入换行符,他就能在响应中插入其他HTTP消息头、并在响应主体中写入任意内容。
这种漏洞最常见于Location与Set-Cookie消息头中,但也会出现在其他HTTP消息头中。前文已经讲到,应用程序提取用户提交的输入,并将它插入到响应码为3xx的Location消息头中。同样,一些应用程序提取用户提交的输入,并将其插入cookie值中。例如:
在上述任何一种情况下,攻击者都可以使用回车符(0x0d)或换行符(0x0a)构造一个专门 设计的请求,在他们控制的消息头中注入一个换行符,从而在下面的行中注入其他数据。例如:
1.利用消息头注入漏洞
查找消息头注入漏洞的方法与查找XSS漏洞的方法类似,同样需要寻找用户控制的输入重复出现在应用程序返回的HTTP消息头中的情况。因此,在探查应用程序是否存在XSS漏洞的过程中,还应当确定应用程序可能易于受到消息头注入的全部位置。