HTTP 枚举与目录遍历

LinuxBeginner
立即练习

介绍

欢迎来到本关于 Web 服务器枚举和基本文件访问的实验。在本练习中,你将学习用于发现和交互 Web 服务的基础 Web 侦察技术。

在本实验中,你将模拟一个基础的 Web 侦察场景。你将首先对目标系统进行侦察,以确认其在线并识别正在运行的服务。使用 nmap 工具,你将发现一个 Web 服务器并枚举其版本。然后,你将使用 curl 命令访问已放置在 Web 服务器上的 flag 文件。

完成之后,你将了解如何:

  • 使用 ping 验证网络连接。
  • 使用 nmap 扫描 Web 服务并执行枚举。
  • 理解基础的 Web 侦察技术。
  • 使用 curl 访问 Web 服务器上的文件并检索 flag。

让我们开始吧。

使用 Ping 验证与目标的连通性

在此步骤中,你将首先确认目标系统可以从你的机器访问。ping 命令是测试网络连接的标准实用程序。它向主机发送 ICMP Echo Request 数据包并监听回复。这是任何网络侦察任务中的第一个也是最基础的步骤。

你的环境中包含一个可以通过主机名 target 访问的目标系统。

在终端中执行以下命令,向 target 发送四个数据包:

ping -c 4 target

你应该会看到输出确认发送了四个数据包并收到了四个数据包,这表明连接稳定。IP 地址可能不同,但结果应显示 0% 的丢包率。

PING target (172.17.0.2) 56(84) bytes of data.
64 bytes from target (172.17.0.2): icmp_seq=1 ttl=64 time=0.105 ms
64 bytes from target (172.17.0.2): icmp_seq=2 ttl=64 time=0.069 ms
64 bytes from target (172.17.0.2): icmp_seq=3 ttl=64 time=0.068 ms
64 bytes from target (172.17.0.2): icmp_seq=4 ttl=64 time=0.067 ms

--- target ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3075ms
rtt min/avg/max/mdev = 0.067/0.077/0.105/0.016 ms

在确认连接后,你就可以继续扫描目标了。

使用 Nmap 扫描开放端口

在此步骤中,你将使用 nmap 扫描目标开放的端口并识别其上运行的服务。Nmap 是一个强大的网络探索和安全审计工具。此扫描将帮助你找到潜在的入口点,例如 Web 服务器。

我们将对端口 80(HTTP 流量的标准端口)运行定向扫描。我们还将使用脚本来收集有关服务的更多信息。

在你的终端中执行以下 nmap 命令:

nmap -sV -p 80 --script http-enum target

让我们分解一下这个命令:

  • -sV: 启用版本检测,它会尝试确定端口上运行的服务的版本。
  • -p 80: 指定我们只想扫描端口 80。
  • --script http-enum: 运行一个脚本,该脚本会枚举 Web 服务器上的目录和文件。
  • target: 我们目标机器的主机名。

输出将与此类似:

Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-18 09:40 CST
Nmap scan report for target (172.17.0.2)
Host is up (0.00018s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.41 ((Unix))
|_http-server-header: Apache/2.4.41 (Unix)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.32 seconds

扫描结果确认端口 80/tcp 是开放的,并且运行着 Apache httpd 2.4.41。此 Web 服务器托管着我们可以在下一步访问的文件。

通过 HTTP 连接目标

在此步骤中,你将使用 curl 与 Web 服务器进行交互以访问文件。curl 是一个使用 URL 进行数据传输的命令行工具。

首先,让我们向 Web 服务器的主页发出一个标准请求,看看它是什么样子。

curl http://target

服务器应该会响应默认的 Apache 页面内容。

<html>
  <body>
    <h1>It works!</h1>
  </body>
</html>

现在,让我们访问放置在 Web 服务器根目录下的 flag 文件。虽然在此设置中该文件可以直接访问,但让我们演示一下你通常如何访问它:

curl http://target/flag.txt

此命令将直接从 Web 服务器的文档根目录检索 flag 文件。

探索目标系统并定位 Flag

在最后一步中,你将检索并查看 flag。之前 curl 命令的输出应该已直接在你的终端中显示了 flag。

命令的预期输出是 flag 文件的内容:

labex{p4th_tr4v3rs4l_w1zardry}

如果输出内容较长,或者你想将其保存以备后用,可以将 curl 命令的输出重定向到一个文件。在处理较大的文件时,这是一种常见的做法。

再次运行该命令,但这次将结果保存到名为 flag.txt 的文件中:

curl http://target/flag.txt > flag.txt

现在,你可以使用 cat 命令查看下载文件的内容:

cat flag.txt

终端将显示 flag:

labex{p4th_tr4v3rs4l_w1zardry}

恭喜!你已成功识别了一个 Web 服务器,访问了 flag 文件,并捕获了 flag。复制 flag 值以完成此实验。

总结

在此实验中,你成功完成了一项基础的 Web 侦察练习。你学习并实践了以下技能:

  • **侦察 (Reconnaissance)**:你使用 ping 来验证目标是否在线且可访问。
  • **枚举 (Enumeration)**:你使用 nmap 配合版本扫描 (-sV) 和脚本 (--script http-enum) 来识别开放的 HTTP 端口以及 Apache Web 服务器的具体版本。
  • **文件访问 (File Access)**:你使用 curl 来访问 Web 服务器上的文件。
  • **Flag 检索 (Flag Retrieval)**:你成功从 Web 服务器检索到了 flag 文件。

本次练习展示了基础的 Web 侦察技术,这些技术对于理解 Web 服务器的工作原理以及如何以编程方式与之交互至关重要。这些技能对于 Web 开发、系统管理和安全测试都是必不可少的。