前言
本篇将围绕HTTP Host展开,讲解了HTTP Host的前世今生以及HTTP Host 注入的大致原理,为之后的HTTP Host注入打下基础。
HTTP Host
什么是HTTP Host
从HTTP1.1版本开始,Host成为了HTTP请求的必要部分,它指定了客户端要访问的域名。接下来抓个包来具体看看Host的模样究竟如何,访问www.baidu.com时抓包如下:
可以看到Host标示的为我们访问的域名。
两种实际场景
那为什么要加入Host呢?Host的作用又是什么呢?在讲这些之前,我们先来看看两种具体的情况。
虚拟主机
所谓的虚拟主机,就是一台Web服务器上托管了多个网站。由于这些网站托管在同一台服务器上,因此尽管这些网站域名不同,但IP地址却是共用的。
通过中介路由进行通讯
所谓的中介路由,就是扮演着客户端和服务器中介人的路由器,起到中转请求或响应流量的作用。使用中介路由后,客户端与服务器之间的流量将通过中介路由器进行路由。
HTTP Host的作用
可以发现,在上面两种实际场景都有一个共同点:在客户端访问某一具体的网站时,在访问请求流量到达最终目的地前,都会经过一个指向目标粗略模糊的点。而Host起到的作用就是在流量到达这个地点后为流量指向一个更加详细明确地点,让流量可以顺利抵达目的地。
利用Host进行的HTTP头部注入原理
原理大致与SQL注入类似,均是没有对外部可控参数进行处理或处理不到位。通过刚才的抓包我们也看到了,在HTTP头部中含有许多的参数,如果对这些提交的参数处理不当就会形成注入漏洞,我们只需要在抓包后对这些参数进行修改即可。
而在HTTP头部参数中利用得最多的则是Host参数。当参数Host可利用时,我们可以通过Host实现Web缓存中毒、SQL注入、身份绕过等攻击。
总结
在HTTP中,Host起到地是一种标志的作用,能够让访问请求流量顺利到达服务器。而利用Host进行的攻击往往多种多样,应熟练掌握。
以上就是本篇的全部内容,我们下篇见。