【问题标题】:AWS ELB redirect to https exposes internal hostnameAWS ELB 重定向到 https 公开内部主机名
【发布时间】:2019-09-28 20:20:13
【问题描述】:

我们在 AWS ELB 后面运行一个 Web 服务器。我们在 ELB 做了几件事:

  • SSL 终止。从 ELB 到 Web 服务器的请求是 http
  • 拦截http请求并重定向到https

在运行渗透测试时,我观察到从 ELB 返回的 Location 标头提供了我们 Web 服务器的内部 AWS 主机名,而不是面向公众的域名,如果我发送一个空的 Host: 标头。

例子:

$ curl http://my.site.net/ -v -I --http1.0 --Header 'Host:'
*   Trying 100.101.102.103...
* TCP_NODELAY set
* Connected to my.site.net (100.101.102.103) port 80 (#0)
> HEAD / HTTP/1.0
> User-Agent: curl/7.63.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Server: awselb/2.0
< Date: Fri, 10 May 2019 23:46:54 GMT
< Content-Type: text/html
< Content-Length: 150
< Connection: close
< Location: https://internal-mysite-1234567890.us-west-2.elb.amazonaws.com:443/

ELB 的内部 DNS 名称不应公开。如何正确配置它以使其不暴露?

【问题讨论】:

  • Host 对于 http1.0 无关紧要,因为它不知道 HOST 标头并且 curl 不会为 http1.0 发送主机,但我不确定您的规则配置是什么,我的。 site.net --> 这是公共 ELB 还是私有的,您是否在规则操作中传递自定义主机?顺便说一句,内部 DNS 解析为私有 IP,它不会暴露任何东西。
  • 我会看看 http->https 重定向逻辑。似乎 elb 本身正在执行重定向。你知道这是为什么吗?我希望重定向来自网络服务器。
  • ALB 仅在规则配置了操作重定向时才会重定向。

标签: amazon-web-services amazon-elb


【解决方案1】:

@JamesDean 是正确的。经过进一步调查,我发现 ELB 属于 Application Load Balancer 类型。重定向功能已启用并配置为重定向到自定义主机名。

将主机名更新为公共 URL 解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-22
    • 2017-09-30
    • 1970-01-01
    • 2018-04-15
    • 2018-03-07
    • 2019-01-23
    • 1970-01-01
    • 2018-09-23
    相关资源
    最近更新 更多