介绍
这个房间向用户介绍了一些常用的协议,例如:
- HTTP协议
- 文件传输协议
- POP3
- 邮件传输协议
- IMAP
每个协议的每个任务都旨在帮助我们了解底层发生的情况,并且通常被优雅的GUI(图形用户界面)隐藏。我们将使用简单的 Telnet 客户端来使用上述协议进行“对话”,以充分了解GUI客户端在后台执行的操作。我们的目的不是记住协议命令,而是在协议工作时更仔细地了解它。
我们还讨论了一些不安全因素。我们特别关注以明文发送的密码。
Telnet远程登录
Telnet协议是一种应用层协议,用于连接到另一台计算机的虚拟终端。使用 Telnet,用户可以登录另一台计算机并访问其终端(控制台)来运行程序、启动批处理以及远程执行系统管理任务。
Telnet协议比较简单。当用户连接时,系统会要求他们输入用户名和密码。通过正确的身份验证后,用户将访问远程系统的终端。不幸的是,Telnet 客户端和 Telnet 服务器之间的所有通信都未加密,这使其很容易成为攻击者的目标。
Telnet 服务器使用 Telnet 协议侦听端口 23 上的传入连接。(请注意,Telnet 端口在目标VM上未打开。)让我们考虑下面所示的示例。用户正在连接到telnetd
Telnet 服务器。步骤如下:
- 首先,他被要求提供他的登录名(用户名)。我们可以看到用户输入了
frank
。 - 然后,系统会要求他输入密码
D2xc9CgD
。密码不显示在屏幕上;但是,出于演示目的,我们将其显示在下面。 - 一旦系统检查了他的登录凭据,他就会收到一条欢迎消息。
- 远程服务器授予他一个命令提示符,
frank@bento:~$
.表示$
这不是根终端。
pentester@TryHackMe$ telnet 10.10.194.203
Trying 10.10.194.203...
Connected to 10.10.194.203.
Escape character is '^]'.
Ubuntu 20.04.3 LTS
bento login: frank
Password: D2xc9CgD
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-84-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Fri 01 Oct 2021 12:24:56 PM UTC
System load: 0.05 Processes: 243
Usage of /: 45.7% of 6.53GB Users logged in: 1
Memory usage: 15% IPv4 address for ens33: 10.10.194.203
Swap usage: 0%
* Super-optimized for small spaces - read how we shrank the memory
footprint of MicroK8s to make it the smallest full K8s around.
https://ubuntu.com/blog/microk8s-memory-optimisation
0 updates can be applied immediately.
*** System restart required ***
Last login: Fri Oct 1 12:17:25 UTC 2021 from meiyo on pts/3
You have mail.
frank@bento:~$
尽管 Telnet 使我们能够立即访问远程系统的终端,但它并不是一个可靠的远程管理协议,因为所有数据都以明文形式发送。下图中,我们捕获了Telnet产生的流量,很容易找到密码。下图显示了我们的计算机和远程系统之间交换的 ASCII 数据。红色文本是我们发送到远程系统的文本,而蓝色文本是远程系统发送的文本。请注意用户名是如何发回的(向我们回显以将其显示在我们的终端中);然而,密码却不是。换句话说,如果有人看着我们打字,他们将无法看到屏幕上的密码字符。
Telnet 不再被视为安全选项,尤其是任何捕获您的网络流量的人都将能够发现您的用户名和密码,这将授予他们访问远程系统的权限。安全的替代方案是SSH,我们将在隔壁房间介绍它。
2.1telnet
使用默认参数的命令将尝试连接到哪个端口? 23
超文本传输协议(HTTP)
超文本传输协议(HTTP)是用于传输网页的协议。您的网络浏览器连接到网络服务器,并使用HTTP请求 HTML 页面和图像以及其他文件,并提交表单和上传各种文件。每当您浏览万维网 (WWW) 时,您肯定会使用HTTP协议。
下图显示了客户端请求index.html
网络服务器提供的 HTML 页面。然后客户端请求图像,logo.jpg
然后 Web 服务器发送它。
HTTP以明文形式发送和接收数据(未加密);因此,您可以使用简单的工具,例如 Telnet(或 Netcat),与 Web 服务器通信并充当“Web 浏览器”。主要区别在于您需要输入HTTP相关命令,而不是 Web 浏览器为您执行此操作。
在下面的示例中,我们将了解如何从 Web 服务器请求页面;此外,我们还将发现网络服务器版本。为此,我们将使用 Telnet 客户端。我们选择它是因为 Telnet 是一个简单的协议;此外,它使用明文进行通信。我们将使用telnet
而不是网络浏览器来从网络服务器请求文件。步骤如下:
- 首先,我们使用 来连接到端口 80
telnet 10.10.194.203 80
。 - 接下来,我们需要键入
GET /index.html HTTP/1.1
以检索页面index.html或检索默认页面
GET /HTTP/1.1 - 最后,您需要为主机提供一些值,例如
host: telnet
按 Enter/Return 键两次。
在下面的控制台输出中,我们可以恢复请求的页面以及 Web 浏览器通常不显示的大量信息。如果找不到我们请求的页面,我们会收到错误 404。
pentester@TryHackMe$ telnet 10.10.194.203 80
Trying 10.10.194.203...
Connected to 10.10.194.203.
Escape character is '^]'.
GET /index.html HTTP/1.1
host: telnet
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Wed, 15 Sep 2021 08:56:20 GMT