重新连接工作坊签到客户端

NmapBeginner
立即练习

介绍

Willow Workshop 需要 CLAY-OPEN 场次的报名名单,但名单客户端仍指向一个已经关闭的旧端口。同一训练环境还运行着有用的参考服务和必须保留的归档。你的任务是找到当前服务,重新连接客户端,并保存完整的当前名单。

你将使用 Nmap 区分开放端口、已识别协议和真正需要的业务。只需基本终端与路径知识,本实验会解释所用选项。所有人物和记录均为合成数据。这些是同一训练容器内的真实 HTTP 服务,不是独立机器。全程使用 Terminal 标签页。仅扫描 127.0.0.2 的 TCP 8100-8199 端口;保持服务和平台设置不变。

读取正常工作的名单

本步骤先体验成功的业务查询,再调查失效入口。从 Terminal 开始。cd 改变当前 shell 的工作目录。下文相对路径均以此目录为准,若打开另一个终端,请重新执行:

cd /home/labex/project/workshop

准备好的 workshop-client 是一个小型 HTTP 客户端。./ 选择当前目录内的程序。它从入口文件读取一个基础 URL,请求 /roster.tsv,显示记录,并保存原样响应,不会搜索其他服务器或修复配置。--endpoint 选择入口文件,--save 指定输出文件。先用显示文本文件的 cat 读取参考地址:

cat reference.txt

预期为 http://127.0.0.2:8120。地址标识目标,冒号后的端口选择监听服务。HTTP 是此客户端使用的请求/响应协议。

./workshop-client --endpoint reference.txt --save reference-roster.tsv

找到 Session: ORIENTATION、两条记录和 Saved 2 records to reference-roster.tsv。文件使用 TSV 格式:一行表头和若干记录,列之间由制表符分隔。session_id 标识场次,其余列描述参与者和物品。这是正常参考示例,不是 CLAY-OPEN 结果。

不指定 --endpoint 时,客户端读取 endpoint.txt。查看该文件:

cat endpoint.txt

再尝试当前配置:

./workshop-client --save roster.tsv

此命令预期失败,显示 Client error 和连接被拒绝的说明。旧端口没有监听程序。这是连接失败,不是 HTTP 权限拒绝或名单格式错误。失败时不会保存名单。保持 reference.txt、客户端程序和所有服务不变。你可以修改 endpoint.txt,并在此工作区创建证据和下载文件。

发现范围内的服务端口

本步骤寻找候选端口,而不猜测其应用。留在 Terminal 的 /home/labex/project/workshop 目录。TCP 端口显示 open 表示它接受了连接,但不能由此确定它提供哪个场次。

Nmap 默认扫描常用端口集合,而非所有端口。交接范围明确允许完整的 8100-8199。-sT 选择 TCP connect 扫描,此处无需原始数据包权限。-n 跳过反向名称查询,-p 设置端口范围。-oX 保存结构化 XML,同时 Nmap 仍显示可读结果。XML 将目标、协议、端口和状态保存在一起,便于随后核对。

nmap -sT -n -p 8100-8199 -oX ports.xml 127.0.0.2

应找到开放 TCP 端口 8120、8142 和 8187;范围内其余端口关闭。SERVICE 列可能显示惯用名称或 unknown。未经主动识别时,它只是端口数据库提示,不能证明实际应用。不要仅因为端口开放或惯用名称熟悉就选择服务。

目标或范围拼写错误可能造成误导结果。用正确命令重跑,替换 ports.xml。若随后提示文件缺失,用 pwd 显示当前目录,再用步骤 1 的 cd 命令返回。不要把扫描扩展到平台地址或端口。

识别候选服务

本步骤识别候选并比较业务说明。留在 Terminal。-sV 发送应用探针,--version-light 使用较小的探针集合,减少不必要的工作。产品版本缺失不表示服务已经损坏。

Nmap 脚本引擎 NSE 可以发出有针对性的应用请求。先阅读唯一需要的脚本帮助:

nmap --script-help http-title

http-title 获取 HTML 页面标题。交接信息明确这三个候选是工作坊 HTTP 入口。前导 + 会显式运行这个选定脚本,即使旧版协议数据库无法识别异常端口或响应头。此处已知的 HTTP 范围适用这种做法,不应据此向无关服务强制运行任意脚本。--script-args 传递具名参数,http-title.url=/about 请求说明页面,而不是默认路径。

nmap -sT -n -sV --version-light --script=+http-title --script-args=http-title.url=/about -p 8120,8142,8187 -oX services.xml 127.0.0.2

等待 Nmap done。比较 http-title 行:Orientation 是参考,Clay Archive 是旧场次,Clay Open Studio 是 CLAY-OPEN 的候选。当前入口使用端口 8187。VERSION 列可能不同,即使显式 HTTP 脚本正常,也可能出现 unknown。应阅读实际脚本响应,而不是编造软件版本。

标题可以缩小选择范围,但不能证明名单身份或完整性。下一步通过客户端确认。不要修改服务器标题或记录,让错误服务冒充当前服务。若中断了扫描,请重新运行并等待完成;不完整 XML 不能作为有效证据。

重新连接并保存当前名单

本步骤将扫描发现转化为可用客户端配置。留在 Terminal。入口文件只包含一个 HTTP 基础 URL,不带 /about 或 /roster.tsv,资源路径由客户端添加。

printf 写入格式化文本。这里 '%s\n' 表示一个字符串加换行;单引号让其中内容保持字面含义。> 用输出替换指定文件,因此目标只能使用可编辑的 endpoint.txt:

printf '%s\n' 'http://127.0.0.2:8187' > endpoint.txt
cat endpoint.txt

现在查询配置的服务,并保存完整原始响应:

./workshop-client --save roster.tsv

预期看到 Session: CLAY-OPEN、三条参与者记录和 Saved 3 records to roster.tsv。查看真实保存的文件:

cat roster.tsv

表头后应包含 W01/Ana/Clay kit、W02/Sam/Glaze kit、W03/Lee/Clay kit,均属于 CLAY-OPEN。归档也可能返回 HTTP 200 和有效名单,但仍不是正确业务结果。若取得其他场次,修正入口并重新运行客户端。基础 URL 格式错误会产生有说明的 Client error;应替换那一个 URL,而不是修改提供的程序。

最后再次读取参考,确保原有有用功能依然可用:

./workshop-client --endpoint reference.txt --save reference-roster.tsv

此查询仍应返回 ORIENTATION。当前名单留在 roster.tsv 中。归档也应保留原有用途。无需重启服务器、修复服务器配置或删除服务。

总结

你发现了允许范围内的 TCP 端口,收集了主动服务与 HTTP 证据,并将真实客户端重新连接到正确场次。完整名单、正确入口以及保留的参考和归档服务共同证明结果;仅有开放端口、熟悉名称、产品版本或 HTTP 200 都不足以证明它。