目前,我正在学习如何使用端口扫描、vhost强制执行和目录模糊来发现在机器上运行的web应用程序。当涉及到端口扫描时,有一件事我无法理解。
假设我已经扫描了主机上的所有端口,并发现了公开的HTTP服务。为了验证它确实是HTTP,我将向该端口发送一个GET请求并检查响应:
$ telnet <IP> 8080
Trying <IP>...
Connected to <IP>.
Escape character is '^]'.
GET / HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/html
<snip...>
但是,即使是HTTP,我是否可以确保没有任何虚拟主机配置需要header字段才能到达请求?
发布于 2022-09-24 11:27:15
..。我是否可以确保没有任何虚拟主机配置需要header字段来访问请求?
不行。为了访问特定的虚拟主机,您必须知道预期的主机头,即预期的域名。对于不匹配的标头,通常只获得默认配置。这个默认配置可能是一个虚拟设置页面,也可能是真正的内容-但在这两种情况下,可能都有其他具有不同主机头的内容。
除此之外,您在测试中提供的甚至不是有效的HTTP请求,因为HTTP/1.1需要主机头。
发布于 2022-09-24 12:31:05
尝试找出哪个域名(S)可以托管在该服务器上。然后您可以尝试区域传输(无论是普通的旧AXFR还是"DNSSEC区域遍历“)。大多数情况下,区域转移是不允许的,但并不总是如此,所以你应该尝试。否则,就会有用于这一目的的暴力工具。
通过IP地址访问when服务器时显示的默认页面可能会提供一些线索。还可以尝试端口443上的https并检查所提供的证书。
尝试触发服务器上的错误(4xx和5xx范围)。
仔细查看响应头。饼干也是。
查看HTML源代码-可能有嵌入式资源(图像等)暴露在URL中的域名。
https://security.stackexchange.com/questions/265028
复制相似问题