Восстановите подключение клиента регистрации мастерской

NmapBeginner
Практиковаться сейчас

Введение

Мастерской Willow Workshop нужен список участников занятия CLAY-OPEN, но клиент списков всё ещё обращается к старому закрытому порту. В этой же учебной среде работают полезная справочная служба и архив, которые нужно сохранить. Ваша задача — найти текущую службу, восстановить подключение клиента и сохранить полный актуальный список.

С помощью Nmap вы научитесь различать открытый порт, определённый протокол и нужную бизнес-функцию. Достаточно базового знакомства с терминалом и путями: необходимые параметры будут объяснены. Все люди и записи вымышлены. Это настоящие HTTP-службы внутри одного учебного контейнера, а не отдельные машины. Всю работу выполняйте на вкладке Terminal. Сканируйте только TCP-порты 8100-8199 адреса 127.0.0.2. Не меняйте службы и настройки платформы.

Изучите работающий список участников

Сначала вы увидите успешный рабочий запрос, а затем исследуете неисправное подключение. Начните на вкладке Terminal. Команда cd меняет рабочий каталог текущей оболочки. Все последующие относительные пути отсчитываются от него; открыв другой терминал, выполните её снова.

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 и вернитесь командой cd из шага 1. Не расширяйте область на адреса и порты платформы.

Определите службы кандидатов

На этом шаге вы определите кандидатов и сравните описание их назначения. Продолжайте в Terminal. Параметр -sV отправляет прикладные пробы; --version-light использует меньший набор, сокращая лишнюю работу. Неизвестная версия продукта не доказывает неисправность службы.

Nmap Scripting Engine, сокращённо 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 может различаться и оставаться unknown, даже когда явно выбранный HTTP-скрипт работает. Читайте настоящий ответ скрипта, не выдумывайте версию.

Заголовок сужает выбор, но не доказывает принадлежность и полноту списка. Далее это проверит клиент. Не редактируйте заголовки и записи серверов, чтобы выдать неправильную службу за текущую. Если прервали сканирование, запустите его снова и дождитесь завершения: неполный 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 недостаточно.