本文主旨总结:使用request.getServerName()的请注意 这个方法的数据来源是不可信的可能被操纵 容易产生跨站漏洞
作为一个快乐的补锅匠,这次补锅是真的快乐,因为解除了一个拿到手一脸懵逼,然后慢慢了解的一块内容:安全漏洞。当然是绿盟扫描出来的了。废话不多话,讲重点。
首先绿盟扫描出来的漏洞是这样的:检测到目标URL存在http host头攻击漏洞
如下图:
大概意思就是如果人家改了下host,就可以调到人家指定的网址了(浅入理解,大神看到一定要指点我下。)
比如这样:curl -H 'Host:www.zujuge.com' http://127.0.0.1:8080/import
得到的就是一个跳转页面,因为这个import不存在啊。而跳转页面包含如下代码
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+p