java主机头攻击

java主机头攻击,java,header,apache2,weblogic,host,Java,Header,Apache2,Weblogic,Host,我正在为我的一个客户端进行“主机头注入”攻击。问题是,他们使用Burp Suite捕获请求并修改主机头,如下所示。该应用程序是Javaservlet,托管在apache(web服务器)+weblogic(应用服务器)上 原始请求 GET /myContext/testServlet?rq=home&tenId=123456 HTTP/1.1 Host: beta.testinglab.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;

我正在为我的一个客户端进行“主机头注入”攻击。问题是,他们使用Burp Suite捕获请求并修改主机头,如下所示。该应用程序是Javaservlet,托管在apache(web服务器)+weblogic(应用服务器)上 原始请求

GET /myContext/testServlet?rq=home&tenId=123456 HTTP/1.1
Host: beta.testinglab.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
修改请求

GET /myContext/testServlet?rq=home&tenId=123456 HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
在服务器端,即使修改了“主机头”,请求也会提交到“beta.testinglab.com”,当我在服务器上使用
request.getRequestUrl()
时,它会给出“www.google.com”。 是否有任何方法可以找出请求的原始主机。请求正在更正主机的内部重定向问题

我无法维护主机条目的预定义列表,因为此应用程序由许多租户自定义


有没有其他方法可以通过更改服务器上的配置来修复此攻击?

据我所知,当web或应用程序服务器启动时,它会开始侦听机器的特定端口。哪个主机名被解析为该特定计算机是web/app服务器所不知道的。这取决于您的网络配置。因此,web/app服务器无法验证HTTP请求中的主机名是否正确

正如您所提到的,您可以在配置中保留预期的主机名,并编写一个servlet过滤器来验证所有传入的请求是否与该主机名匹配。无论哪种方式,都可能需要配置正确的主机名


您不能在apache中设置一个只回答已知域的vserver吗?我将重新表述这个问题。下面是两个域,一个是好的,另一个是坏的,abc.com=>good and configurated domain xyz.com=>mallicous domain我正在浏览器中点击“abc.com”,然后使用burp将主机切换到“xyz.com”。请求被提交到“abc.com”,但Request.getHeader(“主机”)重新运行“xyz.com”,因此无论如何都无法检索请求的原始主机。将重定向与此问题放在一边。另一件事是,如果主机在这段时间内发生了更改,为什么请求不会转到已更改的主机?如果是ServerFault,这不是更好吗?