Содержание статьи
Охотимся на скрытые поддомены
Aquatone — это удобный Ruby-гем для поиска поддоменов из открытых источников. Он содержит в себе целых четыре полезных утилиты:
Ищем информацию о доменах
Aquatone-discover проверяет базы Wayback Machine, Netcraft, HackerTarget и многих других на наличие записей о поддоменах нашей цели. Кроме открытых баз, она может обращаться к базам сервисов вроде Shodan, но нужно предварительно указать API-ключ. И вишенка на торте — те самые словарные домены.
Ищем поддомены по всем базам и пытаемся резолвить по словарю
Сканируем живые сервисы на обнаруженных поддоменах
Второй этап — проверить полученные живые домены на предмет открытых портов. В этом нам поможет aquatone-scan: считай его простой альтернативой Nmap. Он проверит собранные поддомены и выведет список обнаруженных открытых портов. Через ключи --ports и --threads ты сможешь указать порты для скана (или один из шаблонов) и количество потоков.

Список открытых портов, обнаруженных aquatone-scan на исследуемых поддоменах
Собираем ответы сервера и скриншоты
На следующем шаге мы можем собрать дефолтные заголовки и содержимое ответов обнаруженных хостов, а также сделать скриншоты. В этом нам поможет утилита aquatone-gather. Обрати внимание, что она требует наличия «иксов» и Node.js, поэтому запускать стоит или на хосте с Linux, или в виртуалке.
Результат работы утилиты будет сохранен в четыре директории с говорящими названиями:
Проверяем возможность захвата домена
Ну и в конце посмотрим на забытые домены, которые можно перехватить. Такая ситуация возможна, когда один из поддоменов указывает на хостинг, на котором когда-то располагался легитимный сервис компании, но затем был удален, а записи в DNS остались. В этом случае поможет aquatone-takeover.

Отчет о работе aquatone-takeover
Исследуем WordPress на уязвимости
WPSeku — это удобный скрипт на Python 3, который позволяет тебе просканить основные дыры и утечки чувствительной информации в «Вордпрессе». Из особенностей выделю:
Работает и устанавливается просто:
## Окружение на третьем питоне
➜ virtualenv --no-site-packages ~/venv/wpseku
## Ставим зависимости
(wpseku) ➜ pip install -r requirements.txt
## Запускаем полный скан
(wpseku) ➜ python wpseku.py --url http://target.com:8080/ --verbose
----------------------------------------
[ + ] Target: http://target.com/
[ + ] Server: nginx (Debian)
[ + ] Uncommon header "X-Nginx-Cache" found, with contents: HIT
[ i ] Checking Full Path Disclosure...
[ + ] Full Path Disclosure: /var/www/html/wp-includes/rss-functions.php
[ i ] Checking wp-config backup file...
[ + ] wp-config.php available at: http://target.com/wp-config.php
[ i ] Checking common files...
[ + ] robots.txt file was found at: http://target.com/robots.txt
[ + ] sitemap.xml file was found at: http://target.com/sitemap.xml
[ + ] sitemap.xml.gz file was found at: http://target.com/sitemap.xml.gz
[ + ] readme.html file was found at: http://target.com/readme.html
[ i ] Checking directory listing...
[ i ] Checking wp-loging protection...
[ i ] Checking robots paths...
[ + ] Robots was found at: http://target.com/robots.txt
----------------------------------------
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: http://target.com/sitemap.xml
[ i ] Passive enumeration themes...
[ + ] Name: woohoo
[ i ] Enumerating users...
| ID | Username | Login |
|:---|:---------|:------|
| 0 | admin | admin |
| 1 | user | user |
...
Перебор учетных записей выполняется так же.

Брутфорс логина и пароля через WPSeku
Если при пентесте тебе часто попадаются сайты на WordPress, попробуй WPSeku. Возможно, в твоем арсенале найдется место и для него.
Ищем скрытые параметры HTTP-запросов

Ищем скрытые параметры GET-запросов у главной страницы
Обрати внимание, что скрипт требует requests и наличия второй ветки Python.
Изучаем популярные пароли из сливов
Автор Probable Wordlists долгое время собирал различные утечки паролей, сортировал, вычищал дубликаты и артефакты сливов. В результате Бен получил почти 13 миллиардов паролей. Затем он выбрал из них те, что встречались минимум пять раз, и в результате мы имеем перед глазами 2 миллиарда самых популярных в мире паролей, отсортированных по частоте использования.

Таковы, по словам автора, самые частые пароли пользователей. Хорошая основа для словарных атак
Действительно фундаментальная работа, и я предлагаю взглянуть как минимум на архив Real-Passwords, даже если не занимаешься восстановлением паролей: это просто интересно.
Собираем и эксплуатируем баги Drupal

Собираем информацию об атакуемом хосте
Второй режим — exploit — интерактивный. В нем drupwn проанализирует сайт и покажет подходящие эксплоиты. Их можно тут же проверить на эксплуатабельность и запустить. Для части понадобятся куки, так что не забудь указать авторизационные заголовки.

Drupwn позволяет протестировать и применить подходящие сплоиты
Программа требует Python 3, использует минимум зависимостей. Также в комплекте есть подготовленный Docker-образ, если не хочется возиться с venv:
$ docker pull immunit/drupwn
$ docker run --rm -it immunit/drupwn enum <target>
...
А если хочется посмотреть вживую, команда разработчиков не поленилась записать asciinemaдля тебя.
Выявляем уязвимости Magento
Mage Scan — это тулза для сбора информации об инстансе Magento. Умеет работать как с первой веткой, так и со второй. Ищет плагины, собирает информацию об установленном софте и версии ядра. Также Mage Scan пытается при возможности получить количество категорий и продуктов исследуемого магазина.

Mage Scan дисклозит версию ядра и список установленных модулей
Программа написана на PHP и распространяется в виде .phar-файла.
Ищем уязвимые API-эндпойнты
Искать ошибки в них, конечно же, можно привычными инструментами вроде больших комбайнов — все-таки это веб, — но чаще это удобнее делать более специализированными инструментами. Гем Fuzzer (https://github.com/Fuzzapi/API-fuzz...m_medium=inline&_utm_content=lnk4548814824960) — это библиотека на Ruby, которая помогает автоматизировать поиск различных типов багов из OWASP 10. Она удобна, проста в эксплуатации и умеет искать традиционные XSS, SQLi, XXE, опенредиректы и многое другое. К сожалению, не всегда удобно тыкаться к irb или писать на каждый чих свой наколеночный скрипт.
К счастью, команда Fuzzapi развивает GUI для API-fuzzer (https://github.com/Fuzzapi/fuzzapi?...m_medium=inline&_utm_content=lnk1819525929984) . Технически это простое приложение на Rails, которое имеет в зависимостях API-fuzzer и позволяет через рельсовый сервер запускать сканы в удобном интерфейсе, а потом строить отчеты и просматривать историю сканов.

Fuzzapi в процессе тестирования эндпойнта http://app:9091/api/v1/posts/search
Кстати, чтобы не возиться с зависимостями и ИС для приложения, разработчики предоставляют docker-compose-файл со всем необходимым.
- Охотимся на скрытые поддомены
- Ищем информацию о доменах
- Сканируем живые сервисы на обнаруженных поддоменах
- Собираем ответы сервера и скриншоты
- Проверяем возможность захвата домена
- Исследуем WordPress на уязвимости
- Ищем скрытые параметры HTTP-запросов
- Изучаем популярные пароли из сливов
- Собираем и эксплуатируем баги Drupal
- Выявляем уязвимости Magento
- Ищем уязвимые API-эндпойнты
Охотимся на скрытые поддомены
- Автор: Michael Henriksen
- Ссылка: https://github.com/michenriksen/aqu...m_medium=inline&_utm_content=lnk5458577789952
Aquatone — это удобный Ruby-гем для поиска поддоменов из открытых источников. Он содержит в себе целых четыре полезных утилиты:
- aquatone-discover;
- aquatone-scan;
- aquatone-gather;
- aquatone-takeover.
Ищем информацию о доменах
Aquatone-discover проверяет базы Wayback Machine, Netcraft, HackerTarget и многих других на наличие записей о поддоменах нашей цели. Кроме открытых баз, она может обращаться к базам сервисов вроде Shodan, но нужно предварительно указать API-ключ. И вишенка на торте — те самые словарные домены.
Ищем поддомены по всем базам и пытаемся резолвить по словарю
Сканируем живые сервисы на обнаруженных поддоменах
Второй этап — проверить полученные живые домены на предмет открытых портов. В этом нам поможет aquatone-scan: считай его простой альтернативой Nmap. Он проверит собранные поддомены и выведет список обнаруженных открытых портов. Через ключи --ports и --threads ты сможешь указать порты для скана (или один из шаблонов) и количество потоков.

Список открытых портов, обнаруженных aquatone-scan на исследуемых поддоменах
Собираем ответы сервера и скриншоты
На следующем шаге мы можем собрать дефолтные заголовки и содержимое ответов обнаруженных хостов, а также сделать скриншоты. В этом нам поможет утилита aquatone-gather. Обрати внимание, что она требует наличия «иксов» и Node.js, поэтому запускать стоит или на хосте с Linux, или в виртуалке.
Результат работы утилиты будет сохранен в четыре директории с говорящими названиями:
- headers;
- html;
- screenshots;
- report.
Проверяем возможность захвата домена
Ну и в конце посмотрим на забытые домены, которые можно перехватить. Такая ситуация возможна, когда один из поддоменов указывает на хостинг, на котором когда-то располагался легитимный сервис компании, но затем был удален, а записи в DNS остались. В этом случае поможет aquatone-takeover.

Отчет о работе aquatone-takeover
Исследуем WordPress на уязвимости
- Автор: m4ll0k
- Ссылка: https://github.com/m4ll0k/WPSeku?_g...m_medium=inline&_utm_content=lnk3639051859968
WPSeku — это удобный скрипт на Python 3, который позволяет тебе просканить основные дыры и утечки чувствительной информации в «Вордпрессе». Из особенностей выделю:
- анализ заголовков;
- дисклоз реальных путей на сервере;
- поиск уязвимых версий движка, плагинов и тем;
- сбор информации о версиях софта и обнаружение карт сайта (sitemap);
- перечисление пользователей (в том числе и админов, если они не скрыты).
Работает и устанавливается просто:
## Окружение на третьем питоне
➜ virtualenv --no-site-packages ~/venv/wpseku
## Ставим зависимости
(wpseku) ➜ pip install -r requirements.txt
## Запускаем полный скан
(wpseku) ➜ python wpseku.py --url http://target.com:8080/ --verbose
----------------------------------------
[ + ] Target: http://target.com/
[ + ] Server: nginx (Debian)
[ + ] Uncommon header "X-Nginx-Cache" found, with contents: HIT
[ i ] Checking Full Path Disclosure...
[ + ] Full Path Disclosure: /var/www/html/wp-includes/rss-functions.php
[ i ] Checking wp-config backup file...
[ + ] wp-config.php available at: http://target.com/wp-config.php
[ i ] Checking common files...
[ + ] robots.txt file was found at: http://target.com/robots.txt
[ + ] sitemap.xml file was found at: http://target.com/sitemap.xml
[ + ] sitemap.xml.gz file was found at: http://target.com/sitemap.xml.gz
[ + ] readme.html file was found at: http://target.com/readme.html
[ i ] Checking directory listing...
[ i ] Checking wp-loging protection...
[ i ] Checking robots paths...
[ + ] Robots was found at: http://target.com/robots.txt
----------------------------------------
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: http://target.com/sitemap.xml
[ i ] Passive enumeration themes...
[ + ] Name: woohoo
[ i ] Enumerating users...
| ID | Username | Login |
|:---|:---------|:------|
| 0 | admin | admin |
| 1 | user | user |
...
Перебор учетных записей выполняется так же.

Брутфорс логина и пароля через WPSeku
Если при пентесте тебе часто попадаются сайты на WordPress, попробуй WPSeku. Возможно, в твоем арсенале найдется место и для него.
Ищем скрытые параметры HTTP-запросов
- Автор: Somdev Sangwan
- Ссылка: https://github.com/s0md3v/Arjun?_gc...m_medium=inline&_utm_content=lnk3184170377472
- ты не добрался до запросов с ними;
- с текущими правами они не подставляются, но обрабатываются;
- забытый API;
- отладочные аргументы.
- Имеем вордлист со списком большого количества всех возможных query-параметров.
- Последовательно идем по нему.
- Проверяем ответы. Если параметр отражается, значит, он потенциально уязвим.

Ищем скрытые параметры GET-запросов у главной страницы
Обрати внимание, что скрипт требует requests и наличия второй ветки Python.
Изучаем популярные пароли из сливов
- Автор: Ben «berzerk0»
- Ссылка: https://github.com/berzerk0/Probabl...m_medium=inline&_utm_content=lnk2274407412480
Автор Probable Wordlists долгое время собирал различные утечки паролей, сортировал, вычищал дубликаты и артефакты сливов. В результате Бен получил почти 13 миллиардов паролей. Затем он выбрал из них те, что встречались минимум пять раз, и в результате мы имеем перед глазами 2 миллиарда самых популярных в мире паролей, отсортированных по частоте использования.

Таковы, по словам автора, самые частые пароли пользователей. Хорошая основа для словарных атак
Действительно фундаментальная работа, и я предлагаю взглянуть как минимум на архив Real-Passwords, даже если не занимаешься восстановлением паролей: это просто интересно.
Собираем и эксплуатируем баги Drupal
- Автор: immunIT
- Ссылка: https://github.com/immunIT/drupwn?_...tm_medium=inline&_utm_content=lnk454881482496

Собираем информацию об атакуемом хосте
Второй режим — exploit — интерактивный. В нем drupwn проанализирует сайт и покажет подходящие эксплоиты. Их можно тут же проверить на эксплуатабельность и запустить. Для части понадобятся куки, так что не забудь указать авторизационные заголовки.

Drupwn позволяет протестировать и применить подходящие сплоиты
Программа требует Python 3, использует минимум зависимостей. Также в комплекте есть подготовленный Docker-образ, если не хочется возиться с venv:
$ docker pull immunit/drupwn
$ docker run --rm -it immunit/drupwn enum <target>
...
А если хочется посмотреть вживую, команда разработчиков не поленилась записать asciinemaдля тебя.
Выявляем уязвимости Magento
- Автор: Steve Robbins
- Ссылка: https://github.com/steverobbins/mag...m_medium=inline&_utm_content=lnk5458577789952
Mage Scan — это тулза для сбора информации об инстансе Magento. Умеет работать как с первой веткой, так и со второй. Ищет плагины, собирает информацию об установленном софте и версии ядра. Также Mage Scan пытается при возможности получить количество категорий и продуктов исследуемого магазина.

Mage Scan дисклозит версию ядра и список установленных модулей
Программа написана на PHP и распространяется в виде .phar-файла.
Ищем уязвимые API-эндпойнты
- Автор: Lalith Rallabhandi
- Ссылка: https://github.com/Fuzzapi/fuzzapi?...m_medium=inline&_utm_content=lnk1819525929984
Искать ошибки в них, конечно же, можно привычными инструментами вроде больших комбайнов — все-таки это веб, — но чаще это удобнее делать более специализированными инструментами. Гем Fuzzer (https://github.com/Fuzzapi/API-fuzz...m_medium=inline&_utm_content=lnk4548814824960) — это библиотека на Ruby, которая помогает автоматизировать поиск различных типов багов из OWASP 10. Она удобна, проста в эксплуатации и умеет искать традиционные XSS, SQLi, XXE, опенредиректы и многое другое. К сожалению, не всегда удобно тыкаться к irb или писать на каждый чих свой наколеночный скрипт.
К счастью, команда Fuzzapi развивает GUI для API-fuzzer (https://github.com/Fuzzapi/fuzzapi?...m_medium=inline&_utm_content=lnk1819525929984) . Технически это простое приложение на Rails, которое имеет в зависимостях API-fuzzer и позволяет через рельсовый сервер запускать сканы в удобном интерфейсе, а потом строить отчеты и просматривать историю сканов.

Fuzzapi в процессе тестирования эндпойнта http://app:9091/api/v1/posts/search
Кстати, чтобы не возиться с зависимостями и ИС для приложения, разработчики предоставляют docker-compose-файл со всем необходимым.