![如何判断端口是否为 HTTP 代理](https://linux22.com/image/731285/%E5%A6%82%E4%BD%95%E5%88%A4%E6%96%AD%E7%AB%AF%E5%8F%A3%E6%98%AF%E5%90%A6%E4%B8%BA%20HTTP%20%E4%BB%A3%E7%90%86.png)
Nmap 结果显示端口 8080 上有一个 HTTP 代理。如果不尝试代理,怎么知道它是不是代理呢?
8080/tcp open http-proxy
答案1
这取决于你用于端口扫描的具体选项nmap
最基本的 nmap 将简单地确定端口是否打开并正在监听,然后根据
/etc/services
或类似的表将该端口号转换为服务名称。特定端口上的实际服务8080
可能完全不同,您确实需要进行更多的连接和测试才能获得实际服务当你使用一些更全面的选项时服务和版本检测例如
-sV
—version-all
Nmap 已经为你做了很多指纹识别和测试,因此服务 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
当然,服务器管理员可以通过删除识别标头来加强安全性,但使用这种方法仍然很容易检测到。