Инструкция по использованию HTTrack: создание зеркал сайтов, клонирование страницы входа

С программой HTTrack вы можете создать копию сайта у себя на диске. Программа доступна для всех популярных платформ, посмотреть подробности об установке на разные системы, о графическом интерфейсе и ознакомиться со всеми опциями вы можете на странице https://kali.tools/?p=1198.

Далее я рассмотрю несколько примеров использования HTTrack с уклоном на пентестинг.

В плане пентестинга HTTrack может быть полезна для:

  • исследования структуры сайта (подкаталоги, страницы сайта)
  • поиск файлов на сайте (документы, изображения)
  • поиск по документам и метаданным файлов с сайта
  • клонирование страниц входа с целью последующего использования для фишинга

Создадим директорию, где мы будем сохранять скаченные зеркала сайтов:

mkdir websitesmirrors

Посмотрим абсолютный путь до только что созданной директории:

readlink -f websitesmirrors

В моём случае это /home/mial/websitesmirrors, у вас будет какой-то другой адрес – учитывайте это и заменяйте пути в приведённых мною командах на свои.

Простейщий запуск HTTrack выглядит так:

httrack адрес_сайта -O "путь/до/папки/зеркала"

Здесь:

  • адрес_сайта – сайт, зеркало которого нужно сохранить на диск
  • путь/до/папки/зеркала – папка, куда будет сохранён скаченный сайт

Я бы рекомендовал с каждым запуском программы использовать опцию -F, после которой указывать пользовательский агент:

httrack адрес_сайта -F "User Agent" -O "путь/до/папки/зеркала"

Списки строк User Agent я смотрю здесь.

Пример запуска:

httrack http://z-oleg.com/ -F "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36" -O "/home/mial/websitesmirrors/z-oleg.com"

Этой командой будет сделано локальное зеркало сайта с сохранением его оригинальной структуры папок и файлов.

Если вы хотите сосредоточится на файлах (документы, изображения), а не на структуре сайта, то обратите внимание на опцию -N4: все HTML страницы будут помещены в web/, изображения/другое в web/xxx, где xxx это расширения файлов (все gif будут помещены в web/gif, а .doc в web/doc)

Пример запуска с опцией -N4:

httrack http://thailandcer.ru/ -N4 -F "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36" -O "/home/mial/websitesmirrors/thailandcer.ru/"

По умолчанию HTTrack учитывает содержимое файла robots.txt, т.е. если он запрещает доступ к папкам, документам и файлам, то HTTrack не пытается туда зайти. Для игнорирования содержимого robots.txt используется опция -s0

Пример запуска с опцией -s0:

httrack http://spryt.ru/ -s0 -N4 -F "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36" -O "/home/mial/websitesmirrors/spryt.ru/"

Для обновления уже созданного зеркала можно использовать сокращённую опцию --update, которая означает обновить зеркало, без подтверждения и которая равнозначна двум опциям -iC2.

Для продолжения создания зеркала, если процесс был прерван, можно использовать сокращённую опцию --continue (означает продолжить зеркало, без подтверждения), либо эквивалентные опции -iC1.

Создание клона страницы входа на сайт

Думаю, нет нужды объяснять, зачем пентестеру может понадобиться клон страницы входа, например, сайта vk.com, mail.ru и т.д.

Нужно учитывать следующее:

  • у сайта могут быть разные страницы для входа с мобильного устройства и для входа с компьютера
  • адрес страниц для входа с мобильного устройства и с компьютера может быть одинаковым или разным
  • нам не нужно клонировать весь сайт – достаточно только одной страницы

Чтобы притвориться мобильным браузером нужно использовать соответствующую строку User Agent, я буду использовать эту (рекомендую вам выбрать свою собственную строку!):

Mozilla/5.0 (Linux; U; Android 2.3; ru-ru) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9

Чтобы узнать, какой адрес используется для входа с мобильных устройств, я воспользуюсь программой cURL. Опция -i означает показывать не только полученные данные, но и заголовки. После опции -A можно указать Пользовательский Агент:

curl -i -A "Mozilla/5.0 (Linux; U; Android 4.0.3; ru-ru; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30" https://vk.com

Получаем:

HTTP/2 302 
server: nginx
date: Tue, 04 Jul 2017 09:46:47 GMT
content-type: text/html; charset=windows-1251
content-length: 0
location: https://m.vk.com/
x-powered-by: PHP/3.13127
set-cookie: remixlang=0; expires=Sun, 01 Jul 2018 18:09:12 GMT; path=/; domain=.vk.com
strict-transport-security: max-age=0

Интересующей нас строкой является location: https://m.vk.com/. Она означает, что вход для мобильных клиентов размещён по адресу https://m.vk.com/

Проблема с адресом решена. Также нам нужно менять User Agent в программе HTTrack (опция -F).

Кроме этого, нам нужно использовать опцию -r2, которая ограничит HTTrack получением одной страницы, без попытки клонировать сайт.

Примечание: сайт может выдавать различное содержимое на уровне скриптов веб-приложения, основываясь на полученной строке Пользовательского Агента), а не в зависимости от адреса. Также возможен вариант, когда сайт использует универсальный шаблон, подстраивающийся под любое разрешение экрана – в этом случае адрес входа на сайт будет одинаковым для всех типов устройств, и HTML код также будет одинаковым.

Примечание 2: даже перейдя на адрес мобильной версии, веб-приложение, основываясь на строке User Agent может перенаправить вас на полную версию сайта. Поэтому при создании клона страницы важно и вводить правильный адрес, и подменять строку Пользовательского Агента.

Итак, делаем клон страницы входа vk.com для компьютеров:

httrack https://vk.com -r2 -F "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36" -O "/home/mial/websitesmirrors/vk.com/"

Результат:

Получение мобильной версии сайта:

httrack https://m.vk.com -r2 -F "Mozilla/5.0 (Linux; U; Android 2.3; ru-ru) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9" -O "/home/mial/websitesmirrors/vk.com.mob/"

При попытке просмотреть полученную страницу, имеется бесконечный редирект. Судя по всему, встроена какая-то проверка на путь страницы. Она не может быть реализована иначе, чем через JavaScript, поэтому ищем и удаляем лишний код. В данном случае «лишним» является подсвеченный блок (второй блок JavaScript кода):

После этого удаления, клонированная страница прекрасно открывается в веб-браузере:

Как можно убедиться по скриншотам, нам показаны англоязычные версии сайта. Чтобы этого избежать, нужно отправлять дополнительные заголовки (опция --headers) с языковыми настройками ("Accept-Language: ru-RU,ru;q=0.5"). Т.е. к нашим командам нужно добавить строку --headers "Accept-Language: ru-RU,ru;q=0.5"

Получится:

httrack https://vk.com --headers "Accept-Language: ru-RU,ru;q=0.5" -r2 -F "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36" -O "/home/mial/websitesmirrors/vk.com/"

И:

httrack https://m.vk.com --headers "Accept-Language: ru-RU,ru;q=0.5" -r2 -F "Mozilla/5.0 (Linux; U; Android 2.3; ru-ru) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9" -O "/home/mial/websitesmirrors/vk.com.mob/"

Результат:

И:

Рассмотрим ещё один пример для yandex.ru

curl -i -A "Mozilla/5.0 (Linux; U; Android 2.3; ru-ru) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9" https://yandex.ru

Редиректа не происходит! Это означает, что нам нужно поменять только User Agent, адрес менять не нужно.

Получение полной версии сайта:

httrack https://yandex.ru -r2 -F "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36" -O "/home/mial/websitesmirrors/yandex.ru/"

Получение мобильной версии сайта:

httrack https://yandex.ru -r2 -F "Mozilla/5.0 (Linux; U; Android 2.3; ru-ru) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9" -O "/home/mial/websitesmirrors/yandex.ru.mob/"

Немного сбила с толку ситуация с mail.ru – редиректа при попытке притвориться мобильным устройством не происходило и для моего любого User Agent’а в любом случае показывалась полная версия (думаю, дело в неудачной строке User Agent). Зато набрав в браузере m.mail.ru, я сразу получил адрес мобильной версии https://mail.ru/?from=m, тогда:

Получение полной версии сайта:

httrack https://mail.ru -r2 -F "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36" -O "/home/mial/websitesmirrors/mail.ru/"

Получение мобильной версии сайта:

httrack "https://mail.ru/?from=m" -r2 -F "Mozilla/5.0 (Linux; U; Android 2.3; ru-ru) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9" -O "/home/mial/websitesmirrors/mail.ru.mob/"

Соответствующие результаты:

и

Клонирование сайта требующего входа (ввод логина и пароля)

Если вам нужно клонировать сайт, требующий входа (например, форум), то настройте Burp Suite для работы с вашим веб-браузером. Перейдите на сайт и посмотрите, какие кукиз передаются на него. После этого запустите HTTrack с опцией --headers, после которой укажите передаваемые кукиз.

Заключение

В данной статье было показано, как создать зеркало сайта на своём компьютере, как полностью клонировать его структуру, либо распределить файлы в зависимости от их типа по соответствующим папкам. Также был показан примерный алгоритм создания клонов страниц входа на сайты, причём как для полной версии, так и для мобильной.

Если у вас есть свои интересные способы использования HTTrack или вопросы по функционалу программы, то пишите ваши идеи в комментариях.

Рекомендуемые статьи:

Добавить комментарий

Ваш e-mail не будет опубликован.