7 новых утилит для пентестера

7 новых утилит для пентестера

Social Engineering

Охотимся на скрытые поддомены

Не надо рассказывать, зачем может понадобиться искать поддомены. Во время рекона могут обнаружиться dev-серверы, забытые инстансы, сервисы для внутреннего использования и многое другое. Важно, что, кроме технических способов поиска, есть и «архивные»: поддомены с легкостью могут засветиться в каких-нибудь базах, да и просто иметь благозвучные имена в духе billing.target.com и help.target.com. Этим и воспользуемся.

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 на уязвимости

Существует множество сканеров безопасности для WordPress. Интерес ресерчеров к этой платформе объясним: по разным оценкам, в мире до сих пор до четверти всех сайтов работают на WordPress. Из блог-платформы он давно превратился в полноценный (пусть и костыльный) фреймворк для создания полноценных сайтов. На WordPress делают порталы, магазины и даже социальные сети. И конечно же, было бы странно, если бы не существовало множество сканеров безопасности для WordPress. Самый известный из них — wpscan, написанный на Ruby. Однако есть и другие.

WPSeku — это удобный скрипт на Python 3, который позволяет тебе просканить основные дыры и утечки чувствительной информации в «Вордпрессе». Из особенностей выделю:

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

Из дополнительных опций можно выделить брут логинов/паролей по словарю и анализ исходного кода WP-сайтов.

Работает и устанавливается просто:

## Окружение на третьем питоне

➜ 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- и POST-запросов. Иногда руками, чтобы посмотреть, не вывалится ли приложение в ошибку, иногда автоматизированно при поиске инъекций тулзами типа sqlmap. Однако, чтобы что-то подставлять, нужно знать параметр, куда именно вставлять. Как правило, список принимаемых query-параметров можно подсмотреть, проксируя запросы в том же Burp. Однако на множестве сайтов существуют скрытые параметры, которые не видны. Причин может быть много:

  • ты не добрался до запросов с ними;
  • с текущими правами они не подставляются, но обрабатываются;
  • забытый API;
  • отладочные аргументы.

Утилита arjun может найти такие скрытые параметры. Алгоритм работы следующий:

  1. Имеем вордлист со списком большого количества всех возможных query-параметров.
  2. Последовательно идем по нему.
  3. Проверяем ответы. Если параметр отражается, значит, он потенциально уязвим.
Ищем скрытые параметры GET-запросов у главной страницы

Обрати внимание, что скрипт требует requests и наличия второй ветки Python.

Изучаем популярные пароли из сливов

Несмотря на то что сегодня доступны бесплатные и опенсорсные менеджеры паролей с хорошей репутацией вроде KeePassXC или минималистичного pass, множество даже продвинутых юзеров продолжают использовать пяток паролей, держа их в голове. Особенность памяти такова, что люди за редким исключением более склонны выбирать простые однотипные пароли. И статистика убедительно это доказывает.

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

Таковы, по словам автора, самые частые пароли пользователей. Хорошая основа для словарных атак

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

Собираем и эксплуатируем баги Drupal

Drupwn — довольно свежая тулза для анализа Drupal-сайтов. Она позволяет как собирать, так и эксплуатировать подходящие по версии уязвимости. В первом режиме — режиме рекона — программа собирает сведения об атакуемом хосте. Версии софта, юзеры, модули, темы — drupwn поможет вытянуть все это, используя предоставленные куки или basic auth. Вдобавок можно указать задержки между запросами и объемы вытаскиваемой информации, чтобы не вызывать сильных подозрений администратора.

Собираем информацию об атакуемом хосте

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

Drupwn позволяет протестировать и применить подходящие сплоиты

Программа требует Python 3, использует минимум зависимостей. Также в комплекте есть подготовленный Docker-образ, если не хочется возиться с venv:

$ docker pull immunit/drupwn
$ docker run --rm -it immunit/drupwn enum <target>
...

А если хочется посмотреть вживую, команда разработчиков не поленилась записать asciinema для тебя.

Выявляем уязвимости Magento

Magento — мощная CMS для онлайн-торговли. У нас она не так популярна, но в остальном мире ее юзают активно: от крупных брендов типа Nike и Burger King до локальных сторов ювелирки в Индии. Magento мощная, изученная и имеет огромное количество плагинов и сторонних интеграций. А это значит, что в многочисленных расширениях (да и в самом ядре) иногда всплывают довольно неприятные баги.

Mage Scan — это тулза для сбора информации об инстансе Magento. Умеет работать как с первой веткой, так и со второй. Ищет плагины, собирает информацию об установленном софте и версии ядра. Также Mage Scan пытается при возможности получить количество категорий и продуктов исследуемого магазина.

Mage Scan дисклозит версию ядра и список установленных модулей

Программа написана на PHP и распространяется в виде .phar-файла.

Ищем уязвимые API-эндпойнты

Уязвимости в 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-файл со всем необходимым.

Источник xakep.ru (premium article)


Report Page