第一时间获取技术干货和业界资讯!
☞ 免费CSDN资料帮下服务 | 免费加群 ☜
很对微信群里的网友,我都称他们为老铁,从来不称兄道弟的,因为我觉得不真实。不向某东,说一套做一套。
其实你只要认真对待大家,大家都会看在心里,你们说是不是!
对于 Java 程序员来说,一个服务器上跑多个程序是非常常见的现象。
但是这样做后会有一个问题,那就是容易造成 Host 头***。这也是之前微信群里一个网友遇到的问题。今天我在这里给大家扯一扯。
host 头(host header或称主机头)***,非常常见。比如,在 jsp 中,我们通常可能存在类似下面的代码。
上面的几种加载路径,背后都是通过 host 取得 url 地址,再拼接上固定的内容。
这个时候,假如我把你的 host 头给改掉了,比如改成我的 www.xttblog.com。然后这时你在加载的 js 文件,可能就来源于我的网站中已做好陷阱的 js 文件了。
这样,就能拿到你的 cookie、用户名、密码等关键数据。这就是著名的 host 头。
更有甚者,在你的网站上放入病毒,挖矿等代码。而你还不知道你被利用了。
那么该怎么解决这类问题呢?很简单,下面我们以 Nginx 为例,只需要修改一下配置文件即可。Apache 我就不举例了。
添加一个默认 server,当 host 头被修改匹配不到 server 时会跳到该默认 server,该默认 server 直接返回 403 错误。
重启 nginx 即可。
除了这种做法,也可以在目标 server 添加检测规则。比如下面的 if 判断配置。
另外,在 Tomcat 的配置文件,我们也可以直接配置 Host 的 name 为具体的 ip 地址,不要配置 localhost。
说白了,这个漏洞是因为你使用了 Host 而没验证它。
目前,绿盟、burpsuite、360 等工具都可以对这一漏洞进行检测!