响应头信息泄露
响应头允许服务器把不能放在状态行(Status-line)里的额外信息置于其中。
这些响应头字段传递服务器的信息,给黑客带来了方便。获取服务器类型和版本有助于黑客有针对性地利用已知的漏洞实施攻击。
响应头实例:
Server:WEB服务器软件,典型的值可能是 "Apache-Coyote/1.1", "Microsoft-IIS/7.5", "nginx/1.0.11" 和"Apache".
X-Powered-By:应用使用的框架。可以是多个。典型值如: "JBoss-5.0/JBossWeb-2.1", "ASP.NET", "PHP/5.2.17" 和"UrlRewriter.NET 2.0.0".
X-AspNet-Version:ASP.NET专有的header, 典型值包括:"2.0.50727", "4.0.30319" 和"1.1.4322".
X-AspNetMvc-Version:ASP.NET专有的header, 典型值包括:"3.0", "2.0" 和"1.0'.
易受攻击的响应头实例:
Microsoft IIS 7.5 Server – 已知漏洞 Remote Code Execution (CVE-2015-1635)
(http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-1635).
X-Powered-By能导致相当精准的攻击,比如X-Powered-By为JBoss-4.2.0时黑客可以利用(CVE-2010-0738)
(http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-0738).
防御
修改服务器头以防止信息泄露
删除包含服务器框架信息的头 (如 X-Powered-By).
用Fliter来伪造头信息以欺骗潜在的攻击者
比如把 Tomcat Server response header 从"Server:Apache-Coyote/1.1"(Tomcat 默认的server header) 改成"Server:Microsoft-IIS/7.5", 这样黑客就可能会用IIS 7.5 的已知漏洞实施攻击,当然他注定会失败,因为这对tomcat不管用。当你想耍一下黑客的时候要记得搞得真一点,比如 Microsoft-IIS/7.5 和 X-AspNet-Version 配套就比JBOSS5.0和X-AspNet-Version真实。
代码示例:
1.修改Tomcat server header:
$/server.xml:
Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443"
server="Apache/2.2.22 (Debian)"/>
这样 server header 看起来就会像是 运行在 debian系统上的apache 2.2.22
2.去除Tomcat中的X-Powered-By header :
$/server.xml:
Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443"
xpoweredBy="false"/>
3. 用filter造假的响应头
偷懒了,代码就不写了
领取专属 10元无门槛券
私享最新 技术干货