20.07.26
4
Penetration Tester, SOC Analyst, Dark Web Analyst
0
привет, чуваки, сегодня решил написать для вас статью про whatweb, один из самых популярных инструментов для разведки, статья получилась большой, если что то непонятно, перечитайте определенные разделы. начинаем
установка
если у тебя кали линукс - она уже стоит. если нет - вводишь в терминале:
sudo apt install whatweb
если вдруг не ставится - добавь репозитории или скачай с гитхаба, но в кали проблем не будет.
первый запуск
открываешь терминал, пишешь:
whatweb example.com
нажимаешь энтер. через пару секунд видишь строку типа:
это значит что сайт на апаче, версия 2.4.41, пхп 7.3.33, движок вордпресс 5.4.2. уже полезно.
режимы сканирования
тут есть три уровня агрессивности. они задаются параметром -a (от слова агрессив)
a 1 легкий. отправляет один запрос на главную страницу. быстро, но мало инфы. используй когда нужно проверить много сайтов за короткое время.
пример: whatweb -a 1 example.com
-a 2 - средний. добавляет проверку robots.txt, favicon, sitemap. чуть дольше, инфы больше.
a 3 агрессивный. вот это уже серьезно. отправляет кучу запросов на разные пути: /wp-admin/, /administrator/, /phpmyadmin/, /backup/, /tmp/ и еще много где. ищет скрытые файлы, проверяет хеши, определяет версии библиотек. для одного сайта всегда используй этот режим.
пример: whatweb -a 3 example.com
разница между режимами большая. на -a 1 ты увидишь только апач и пхп. на -a 3 увидишь еще jquery, bootstrap, конкретную тему вордпресса, иногда даже путь к админке и емейл разработчика.
сохранение результата
если хочешь сохранить вывод в файл, используй перенаправление:
whatweb -a 3 example.com > result.txt
теперь весь вывод лежит в текстовом файле. можно открыть его в любом редакторе.
еще есть красивый вывод в json:
whatweb -a 3 --log-json=result.json example.com
json удобно парсить скриптами. например чтобы вытащить только версию пхп из многих сайтов.
работа с прокси
если не хочешь светить свой айпи, используй прокси. параметр -p для порта и -U для адреса прокси.
пример для http прокси:
whatweb -a 3 -p 8080 -U "
для сокс5:
whatweb -a 3 -p 1080 -U "socks5://127.0.0.1:1080" example.com
прокси может требовать логин и пароль:
whatweb -a 3 -U
подмена юзер-агента
некоторые сайты блокируют стандартные юзер-агенты сканеров. поэтому подменяй его на браузерный. параметр -U.
пример:
whatweb -a 3 -U "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" example.com
можно подставить любой юзер-агент. даже мобильный:
whatweb -a 3 -U "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X)" example.com
иногда сайт отдает разный контент для мобилок, так что полезно.
отключение ошибок
по умолчанию whatweb показывает ошибки подключения, таймауты, 404. это засоряет вывод. параметр --no-errors убирает их.
пример:
whatweb -a 3 --no-errors example.com
теперь в выводе только найденные технологии, ничего лишнего.
сканирование списка сайтов
создай файл sites.txt. в каждой строке один урл:
example.com
test.com
site.org
потом запускаешь:
whatweb -a 1 -i sites.txt
он пройдется по всем и выдаст результат для каждого. если используешь -a 3, то жди долго, особенно если сайтов много.
отфильтровать только нужные технологии
допустим ты ищешь только вордпресс сайты. делаешь так:
whatweb -a 1 -i sites.txt | grep WordPress > wordpress_sites.txt
потом открываешь этот файл и видишь только те сайты где есть вордпресс.
еще можно искать по версии. например пхп 5.6:
whatweb -a 1 -i sites.txt | grep "PHP\[5.6"
это полезно тк старые версии часто имеют уязвимости.
посмотреть все доступные плагины
whatweb внутри имеет около 500 плагинов для разных технологий. чтобы увидеть их список:
whatweb -l
там будут названия типа wordpress, joomla, drupal, apache, nginx, php, jquery, bootstrap, и много редких.
настройка таймаута
если сайт медленно отвечает, whatweb может подвиснуть. параметр -t задает время ожидания в секундах. по умолчанию 10.
пример с таймаутом 30 секунд:
whatweb -a 3 -t 30 example.com
если сайт быстрый, можно уменьшить до 3 секунд.
скрытый режим тишины
если запускаешь в скрипте и не хочешь видеть баннер с версией программы, используй -q (quiet):
whatweb -q -a 3 example.com
режим verbose
наоборот, если хочешь видеть каждый запрос и ответ - используй -v (verbose):
whatweb -a 3 -v example.com
он выведет все заголовки которые отправляет и получает. полезно для отладки.
обработка редиректов
по умолчанию whatweb не переходит по редиректам. он показывает код 301 или 302 и локацию. если хочешь чтобы он пошел дальше и просканировал конечную страницу, используй --follow-redirect:
whatweb -a 3 --follow-redirect example.com
подмена заголовка host
бывает что сайт виртуальный и по ip не открывается. тогда используй -H чтобы подменить host заголовок:
whatweb -a 3 -H "example.com" 192.168.1.100
это отправит запрос на ip но с хостом example.com
практический пример для реальной работы
допустим у тебя есть список поддоменов из 500 штук. ты хочешь быстро найти живые сайты с вордпрессом и их версии.
делаешь так:
1. быстрый прогон:
whatweb -a 1 -i subdomains.txt --no-errors > scan1.txt
2. отбираешь вордпресс:
cat scan1.txt | grep WordPress > wp.txt
3. вытаскиваешь только урлы:
cat wp.txt | awk '{print $1}' > wp_urls.txt
4. теперь по этим урлам делаешь детальный скач:
whatweb -a 3 -i wp_urls.txt --log-json=wp_detailed.json
5. парсишь json чтобы получить версии:
jq '.[] | {url: .url, wp: .plugins.WordPress.version}' wp_detailed.json
все. теперь у тебя список вордпресс сайтов с точными версиями.
как понять что выдал whatweb
допустим вывод такой:
что это значит:
· апач версия 2.4.41
· пхп версия 7.3.33
· вордпресс версия 5.4.2 с уверенностью 100%
· jquery версия 3.5.1
· бутстрап версия 4.3.1
· заголовок страницы - My Site
· установлены куки wordpress
если видишь CloudFlare в выводе - значит сайт защищен. реальный сервер не виден.
если видишь что-то типа "Uninitialized value" - это не ошибка. иногда так бывает когда сервер криво обрабатывает запросы. это может указывать на потенциальные уязвимости, но надо проверять руками.
что можно сделать с этой инфой
если ты нашел старый вордпресс 4.9 - иди на exploit-db и ищи эксплоиты. если старый пхп 5.6 - там куча уязвимостей типа remote code execution. если джумла 3.4 - аналогично.
whatweb не взламывает, он только собирает инфу. но эта инфа дает направление для дальнейших действий.
ошибки и их причины
если whatweb ничего не нашел - возможно сайт закрыт за waf или использует нестандартные заголовки. попробуй подменить юзер-агент или использовать прокси.
если выдает таймаут - сайт медленный или недоступен. увеличь таймаут -t 30.
если выдает 403 - сайт блокирует запросы. попробуй другой юзер-агент или прокси.
если выдает 404 - путь не найден. но это не страшно, главное что корень доступен.
заключение
whatweb - базовая вещь для любого кто работает с веб-безопасностью. он простой, быстрый, дает много инфы. его нельзя заменить одним wpscan или nmap, тк он специализируется именно на определении технологий. используй его в начале каждого пентеста, чтобы понять с чем имеешь дело.
установка
если у тебя кали линукс - она уже стоит. если нет - вводишь в терминале:
sudo apt install whatweb
если вдруг не ставится - добавь репозитории или скачай с гитхаба, но в кали проблем не будет.
первый запуск
открываешь терминал, пишешь:
whatweb example.com
нажимаешь энтер. через пару секунд видишь строку типа:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки или изображения.
[200 OK] Apache[2.4.41], PHP[7.3.33], WordPress[5.4.2] и тдэто значит что сайт на апаче, версия 2.4.41, пхп 7.3.33, движок вордпресс 5.4.2. уже полезно.
режимы сканирования
тут есть три уровня агрессивности. они задаются параметром -a (от слова агрессив)
a 1 легкий. отправляет один запрос на главную страницу. быстро, но мало инфы. используй когда нужно проверить много сайтов за короткое время.
пример: whatweb -a 1 example.com
-a 2 - средний. добавляет проверку robots.txt, favicon, sitemap. чуть дольше, инфы больше.
a 3 агрессивный. вот это уже серьезно. отправляет кучу запросов на разные пути: /wp-admin/, /administrator/, /phpmyadmin/, /backup/, /tmp/ и еще много где. ищет скрытые файлы, проверяет хеши, определяет версии библиотек. для одного сайта всегда используй этот режим.
пример: whatweb -a 3 example.com
разница между режимами большая. на -a 1 ты увидишь только апач и пхп. на -a 3 увидишь еще jquery, bootstrap, конкретную тему вордпресса, иногда даже путь к админке и емейл разработчика.
сохранение результата
если хочешь сохранить вывод в файл, используй перенаправление:
whatweb -a 3 example.com > result.txt
теперь весь вывод лежит в текстовом файле. можно открыть его в любом редакторе.
еще есть красивый вывод в json:
whatweb -a 3 --log-json=result.json example.com
json удобно парсить скриптами. например чтобы вытащить только версию пхп из многих сайтов.
работа с прокси
если не хочешь светить свой айпи, используй прокси. параметр -p для порта и -U для адреса прокси.
пример для http прокси:
whatweb -a 3 -p 8080 -U "
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки или изображения.
" example.comдля сокс5:
whatweb -a 3 -p 1080 -U "socks5://127.0.0.1:1080" example.com
прокси может требовать логин и пароль:
whatweb -a 3 -U
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки или изображения.
example.comподмена юзер-агента
некоторые сайты блокируют стандартные юзер-агенты сканеров. поэтому подменяй его на браузерный. параметр -U.
пример:
whatweb -a 3 -U "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" example.com
можно подставить любой юзер-агент. даже мобильный:
whatweb -a 3 -U "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X)" example.com
иногда сайт отдает разный контент для мобилок, так что полезно.
отключение ошибок
по умолчанию whatweb показывает ошибки подключения, таймауты, 404. это засоряет вывод. параметр --no-errors убирает их.
пример:
whatweb -a 3 --no-errors example.com
теперь в выводе только найденные технологии, ничего лишнего.
сканирование списка сайтов
создай файл sites.txt. в каждой строке один урл:
example.com
test.com
site.org
потом запускаешь:
whatweb -a 1 -i sites.txt
он пройдется по всем и выдаст результат для каждого. если используешь -a 3, то жди долго, особенно если сайтов много.
отфильтровать только нужные технологии
допустим ты ищешь только вордпресс сайты. делаешь так:
whatweb -a 1 -i sites.txt | grep WordPress > wordpress_sites.txt
потом открываешь этот файл и видишь только те сайты где есть вордпресс.
еще можно искать по версии. например пхп 5.6:
whatweb -a 1 -i sites.txt | grep "PHP\[5.6"
это полезно тк старые версии часто имеют уязвимости.
посмотреть все доступные плагины
whatweb внутри имеет около 500 плагинов для разных технологий. чтобы увидеть их список:
whatweb -l
там будут названия типа wordpress, joomla, drupal, apache, nginx, php, jquery, bootstrap, и много редких.
настройка таймаута
если сайт медленно отвечает, whatweb может подвиснуть. параметр -t задает время ожидания в секундах. по умолчанию 10.
пример с таймаутом 30 секунд:
whatweb -a 3 -t 30 example.com
если сайт быстрый, можно уменьшить до 3 секунд.
скрытый режим тишины
если запускаешь в скрипте и не хочешь видеть баннер с версией программы, используй -q (quiet):
whatweb -q -a 3 example.com
режим verbose
наоборот, если хочешь видеть каждый запрос и ответ - используй -v (verbose):
whatweb -a 3 -v example.com
он выведет все заголовки которые отправляет и получает. полезно для отладки.
обработка редиректов
по умолчанию whatweb не переходит по редиректам. он показывает код 301 или 302 и локацию. если хочешь чтобы он пошел дальше и просканировал конечную страницу, используй --follow-redirect:
whatweb -a 3 --follow-redirect example.com
подмена заголовка host
бывает что сайт виртуальный и по ip не открывается. тогда используй -H чтобы подменить host заголовок:
whatweb -a 3 -H "example.com" 192.168.1.100
это отправит запрос на ip но с хостом example.com
практический пример для реальной работы
допустим у тебя есть список поддоменов из 500 штук. ты хочешь быстро найти живые сайты с вордпрессом и их версии.
делаешь так:
1. быстрый прогон:
whatweb -a 1 -i subdomains.txt --no-errors > scan1.txt
2. отбираешь вордпресс:
cat scan1.txt | grep WordPress > wp.txt
3. вытаскиваешь только урлы:
cat wp.txt | awk '{print $1}' > wp_urls.txt
4. теперь по этим урлам делаешь детальный скач:
whatweb -a 3 -i wp_urls.txt --log-json=wp_detailed.json
5. парсишь json чтобы получить версии:
jq '.[] | {url: .url, wp: .plugins.WordPress.version}' wp_detailed.json
все. теперь у тебя список вордпресс сайтов с точными версиями.
как понять что выдал whatweb
допустим вывод такой:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки или изображения.
[200 OK] Apache[2.4.41], PHP[7.3.33], WordPress[5.4.2][100%], jQuery[3.5.1], Bootstrap[4.3.1], Title[My Site], Cookies[wp-settings, wordpress_logged_in]что это значит:
· апач версия 2.4.41
· пхп версия 7.3.33
· вордпресс версия 5.4.2 с уверенностью 100%
· jquery версия 3.5.1
· бутстрап версия 4.3.1
· заголовок страницы - My Site
· установлены куки wordpress
если видишь CloudFlare в выводе - значит сайт защищен. реальный сервер не виден.
если видишь что-то типа "Uninitialized value" - это не ошибка. иногда так бывает когда сервер криво обрабатывает запросы. это может указывать на потенциальные уязвимости, но надо проверять руками.
что можно сделать с этой инфой
если ты нашел старый вордпресс 4.9 - иди на exploit-db и ищи эксплоиты. если старый пхп 5.6 - там куча уязвимостей типа remote code execution. если джумла 3.4 - аналогично.
whatweb не взламывает, он только собирает инфу. но эта инфа дает направление для дальнейших действий.
ошибки и их причины
если whatweb ничего не нашел - возможно сайт закрыт за waf или использует нестандартные заголовки. попробуй подменить юзер-агент или использовать прокси.
если выдает таймаут - сайт медленный или недоступен. увеличь таймаут -t 30.
если выдает 403 - сайт блокирует запросы. попробуй другой юзер-агент или прокси.
если выдает 404 - путь не найден. но это не страшно, главное что корень доступен.
заключение
whatweb - базовая вещь для любого кто работает с веб-безопасностью. он простой, быстрый, дает много инфы. его нельзя заменить одним wpscan или nmap, тк он специализируется именно на определении технологий. используй его в начале каждого пентеста, чтобы понять с чем имеешь дело.