来自不熟悉的 HTTP 服务器的奇怪响应

信息安全 http tcp 枚举 主机发现 远程登录
2021-08-27 23:36:52

扫描本地无线网络时,我注意到一个不熟悉的设备。它有两个开放的(监听?)TCP 端口;TCP/80( http?) & TCP/443( https?)。

努力识别不熟悉的设备;我练习了一些基本的横幅抓取技术,这些技术提供了一些奇怪的反馈:

root@localhost:~# telnet 10.1.1.28 80
Trying 10.1.1.28...
Connected to 10.1.1.28.
Escape character is '^]'.
HEAD / HTTP/1.1
@Q�0�njs-k��`Y���s��N��E2R�S������d���aw��
s�Y�/u"�`QN���I�eRA~W

Connection closed by foreign host.

- - -

root@localhost:~# telnet 10.1.1.28 80
Trying 10.1.1.28...
Connected to 10.1.1.28.
Escape character is '^]'.
GET / HTTP/1.1

HTTP/1.0 404 Not Found

Connection closed by foreign host.

- - -

root@localhost:~# telnet 10.1.1.28 80
Trying 10.1.1.28...
Connected to 10.1.1.28.
Escape character is '^]'.
HEAD / HTTP/1.1
"�))!���]D�7�ב�����┴�IL&�┬��#�-�zp�,o�������c��D����ל]�h����
                                                                @�.GLMC��2{���

Connection closed by foreign host.

这些奇怪的反应是什么?
他们的意思是什么?

1个回答

如果您坚持通过 telnet 使用 HTTP,那么在您收到两个连续的换行符之前,适当的 HTTP 服务器不会回答您,从而有效地结束您的请求:

GET / HTTP/1.0
<empty line>

如果服务在发送空行之前开始回答您,则说明它不是正确的 HTTP,并且可能完全是另外一回事。我建议使用像 cURL 这样的工具来确保正确使用协议。这是一个例子:

[root@vostok ~]# curl --dump-header - --silent http://127.0.0.1/
HTTP/1.1 404
Server: nginx
Date: Wed, 11 May 2016 07:16:15 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Last-Modified: Wed, 11 May 2016 07:16:15 GMT
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache

它也可能是在非标准端口(如端口 80,标准 HTTP 端口)上侦听的 HTTPS 服务。尝试使用在 URL 中明确指定的协议和端口的上述 cURL 命令,如下所示:https ://127.0.0.1:80/

它可能根本不是 HTTP 或 HTTPS,而是其他一些启用 SSL 的服务。如果你想探测它,你可以使用 OpenSSL 打开一个启用 SSL 的类似 telnet 的连接:

openssl s_client -host 127.0.0.1 -port 443

如果它确实启用了 SSL,您将获得各种信息,包括有关所使用证书的详细信息。

好狩猎!:-)