gpt4 book ai didi

java主机头攻击

转载 作者:搜寻专家 更新时间:2023-11-01 03:37:40 27 4
gpt4 key购买 nike

我正在为我的一位客户进行“主机 header 注入(inject)”攻击。问题是,他们使用 Burp Suite 捕获请求并修改 Host header ,如下所示。该应用程序是 Java Servlet,托管在 apache(网络服务器)+ 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

在服务器端,即使修改了“Host Header”,请求也会提交到“beta.testinglab.com”,当我在服务器上使用 request.getRequestUrl() 时,它会给我“www .google.com”。无论如何要找出所请求的原始主机是什么。请求将主机改正为内部重定向问题。

我无法维护预定义的主机条目列表,因为此应用程序是由很 Multi-Tenancy 自定义的。

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

最佳答案

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

正如您所提到的,您可以在配置中保留预期的主机名,并编写一个 servlet 过滤器来验证所有传入的请求是否与该主机名匹配。否则,在 apache 网络服务器中,您可以自行测试是否正确的主机名值存在于 header 。无论哪种方式,都可能需要配置正确的主机名。

http://httpd.apache.org/docs/trunk/vhosts/name-based.html

关于java主机头攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25720520/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com