如何判断端口是否为 HTTP 代理

如何判断端口是否为 HTTP 代理

Nmap 结果显示端口 8080 上有一个 HTTP 代理。如果不尝试代理,怎么知道它是不是代理呢?

8080/tcp open http-proxy

答案1

这取决于你用于端口扫描的具体选项nmap

  • 最基本的 nmap 将简单地确定端口是否打开并正在监听,然后根据/etc/services或类似的表将该端口号转换为服务名称。特定端口上的实际服务8080可能完全不同,您确实需要进行更多的连接和测试才能获得实际服务

  • 当你使用一些更全面的选项时服务和版本检测例如-sV —version-allNmap 已经为你做了很多指纹识别和测试,因此服务 nmap 报告会非常准确

答案2

你不知道。

任何人都可以在端口 8080 上运行任何服务:常规 HTTP 代理、HTTP CONNECT 代理、常规 HTTP 服务器,甚至 SSH 服务器(如果您真的愿意)!

HTTP 是一种协议,客户端在服务器发送问候之前发送请求。因此,如果您连接到该端口,您将看不到任何内容。虽然这可能表明协议是 HTTP,但您无法判断它是服务器还是代理,也不能 100% 确定协议是 HTTP。

许多协议都要求服务器在客户端之前发送问候语,例如邮件协议、SSH、TLS(在 SSH 和 TLS 中,客户端和服务器都会发送问候语)。因此,您可以通过连接到端口并观察是否有问候语来排除某些协议。但您无法排除所有协议,即使这样,如果您怀疑协议是 HTTP,您也不知道它是代理还是服务器。

更正:实际上,在 TLS 中,服务器问候语(ServerHello)依赖于客户端问候语,因此服务器在发送 ServerHello 消息之前会先检查客户端问候语。

答案3

如果您的端口不是默认的 3128,nmap 似乎无法检测到 http 代理。

但是,我能够向端口发出恶意请求,这将导致代理发出响应,该响应包含有助于识别服务的标识符。

% echo foo | nc <proxy_ip> <proxy_port> | grep Server

当然,服务器管理员可以通过删除识别标头来加强安全性,但使用这种方法仍然很容易检测到。

相关内容