Изучение веб-служб с curl в Kali

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

Введение

Тестирование веб-служб начинается с понимания обычного поведения HTTP. Успешное соединение, код состояния, метаданные ответа и содержимое страницы дают разные части картины.

Эта работа предоставляет локальную веб-службу для изучения запросов GET и HEAD с curl. Вы прочитаете ответы и сохраните полезные заголовки и содержимое без угадывания каталогов, инъекций или обхода аутентификации.

Прочитайте HTTP-ресурс и его состояние

На этом шаге вы изучите локальный HTTP-ресурс с curl и отличите состояние приложения от успеха соединения.

Войдите в Kali и выберите общую рабочую папку:

kali
cd /home/labex/project

URL вроде http://127.0.0.1:8080/scope.txt определяет схему (http), хост (127.0.0.1), необязательный порт (8080) и путь (/scope.txt). Хост и порт выбирают службу; путь выбирает ресурс внутри неё.

Curl отправляет запросы к URL. Метод HTTP по умолчанию — GET, запрашивающий представление ресурса. Запросите учебную страницу:

curl http://127.0.0.1:8080/

Тело ответа — HTML-страница с заголовком Kali Training Welcome. Curl выводит тело текстом, а не отображает страницу как браузер.

Параметр -i включает заголовки ответа в показанный вывод. Изучите ресурс области работ:

curl -i http://127.0.0.1:8080/scope.txt

Строка состояния сообщает 200 OK, далее идут заголовки, пустая строка и тело Authorized local training only. Заголовки HTTP описывают ответ; тело несёт содержимое.

Запросите путь, которого нет на предоставленном сервере:

curl -i http://127.0.0.1:8080/missing

Он возвращает 404 Not Found с коротким телом. TCP-соединение и обмен HTTP всё же успешны; приложение сообщает, что запрошенный ресурс не существует. Curl без параметра ошибки по статусу может успешно завершиться при HTTP 404, поэтому читайте состояние ответа, не считая каждый завершённый запрос корректным ресурсом.

-o записывает тело в названный файл. -s скрывает индикатор хода, а -S всё равно показывает ошибку при неудачной передаче; они объединяются в -sS. Сохраните текст области работ:

curl -sS -o scope.txt http://127.0.0.1:8080/scope.txt
cat scope.txt

Ожидаемый вывод:

Authorized local training only.

Вы сохранили тело ответа вместо написанного вручную описания.

Сохраните заголовки ответа отдельно от тела

На этом шаге вы сравните GET и HEAD и сохраните заголовки сервера и страницу как отдельные материалы.

Параметр -I (заглавная I) просит curl отправить HEAD-запрос. HEAD запрашивает метаданные ответа без передачи тела ресурса:

curl -I http://127.0.0.1:8080/

Найдите 200 OK, Content-Type: text/html и заголовок учебного сайта. Ответ не включает тело HTML. Заголовок длины содержимого всё же может описывать размер соответствующего тела GET.

Используйте GET для фактического содержимого. Параметр curl -D записывает заголовки ответа в следующий файл, а -o — тело в другой файл:

curl -sS -D response-headers.txt -o page.html http://127.0.0.1:8080/

Прочитайте сохранённые метаданные:

cat response-headers.txt

Они должны включать успешное состояние, тип содержимого HTML и X-Training-Site: guided-web. Поля сервера и даты могут различаться.

Прочитайте тело отдельно:

cat page.html

Ожидаемое содержимое:

<html><title>Kali Training Welcome</title><body>Local practice site.</body></html>

Заголовки и тело отвечают на разные вопросы: первые описывают ответ сервера, второе содержит запрошенный ресурс. Раздельное хранение облегчает дальнейшие сравнения и обработку текста.

Резюме

Вы разобрали компоненты URL, отправили GET и HEAD, отличили состояние HTTP от успеха соединения и изучили заголовки и тело. Вы сохранили исходные метаданные ответа и содержимое страницы отдельно для дальнейшего анализа.