Web tools, или с чего начать пентестеру?

    Продолжаем рассказывать о полезных инструментах для пентестера. В новой статье мы рассмотрим инструменты для анализа защищенности веб-приложений.

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


    Отметим, что сюда же относится и Burp Suite, но про него и его полезные плагины будет отдельная публикация.

    Содержание:



    Amass


    Amass — инструмент на Go для поиска и перебора поддоменов DNS и составления карты внешней сети. Amass — проект OWASP, созданный, чтобы показать, как для стороннего наблюдателя выглядят организации в Интернете. Имена поддоменов Amass получает различными способами, в инструменте используется как рекурсивный перебор поддоменов, так и поиск по открытым источникам.

    Для обнаружения связанных между собой сетевых сегментов и номеров автономных систем Amass использует IP-адреса, полученные во время работы. Вся найденная информация используется для построения карты сети.

    Плюсы:


    • Техники по сбору информации включают в себя:
      * DNS — перебор поддоменов по словарю, bruteforce поддоменов, “умный” перебор с использованием мутаций на основе найденных поддоменов, обратные DNS-запросы и поиск DNS-серверов, на которых возможно сделать запрос на трансфер зоны (AXFR);

      * Поиск по открытым источникам — Ask, Baidu, Bing, CommonCrawl, DNSDB, DNSDumpster, DNSTable, Dogpile, Exalead, FindSubdomains, Google, IPv4Info, Netcraft, PTRArchive, Riddler, SiteDossier, ThreatCrowd, VirusTotal, Yahoo;

      * Поиск по базам данных TLS-сертификатов — Censys, CertDB, CertSpotter, Crtsh, Entrust;

      * Использование API поисковых систем — BinaryEdge, BufferOver, CIRCL, HackerTarget, PassiveTotal, Robtex, SecurityTrails, Shodan, Twitter, Umbrella, URLScan;

      * Поиск по веб-архивам Интернета: ArchiveIt, ArchiveToday, Arquivo, LoCArchive, OpenUKArchive, UKGovArchive, Wayback;
    • Интеграция с Maltego;
    • Обеспечивает наиболее полное покрытие задачи по поиску DNS-поддоменов.

    Минусы:


    • Аккуратнее с amass.netdomains — он попытается обратиться к каждому IP-адресу в идентифицированной инфраструктуре и получить имена доменов из обратных DNS-запросов и сертификатов TLS. Это «громкая» техника, она может раскрыть ваши разведывательные действия в исследуемой организации.
    • Высокое потребление памяти, может потреблять до 2 ГБ RAM в разных настройках, что не позволит запустить этот инструмент в облаке на дешевой VDS.



    Altdns


    Altdns — инструмент на Python для составления словарей для перебора DNS-поддоменов. Позволяет генерировать множество вариантов поддоменов с помощью мутаций и перестановок. Для этого используются слова, которые часто встречаются в поддоменах (например: test, dev, staging), все мутации и перестановки применяются к уже известным поддоменам, которые можно подать на вход Altdns. На выходе получается список вариаций поддоменов, которые могут существовать, и этот список в дальнейшем можно использовать при DNS-брутфорсе.

    Плюсы:


    • Хорошо работает с большими наборами данных.

    aquatone


    aquatone — ранее был больше известен как еще один инструмент для поиска поддоменов, но сам автор отказался от этого в пользу вышеупомянутого Amass. Сейчас aquatone переписан на Go и больше заточен для предварительной разведки по веб-сайтам. Для этого aquatone проходит по указанным доменам и ищет на них веб-сайты на разных портах, после чего собирает всю информацию о сайте и делает скриншот. Удобен для быстрой предварительной разведки по веб-сайтам, после которой можно выбрать приоритетные цели для атак.

    Плюсы:


    • На выходе создает группу файлов и папок, которые удобно использовать при дальнейшей работе с другими инструментами:
      * HTML-отчет с собранными снимками экрана и сгруппированными по сходству заголовками ответов;

      * Файл со всеми URL, на которых были найдены веб-сайты;

      * Файл со статистикой и данными страницы;

      * Папка с файлами, содержащими заголовки ответа от найденных целей;

      * Папка с файлами, содержащими тело ответа от найденных целей;

      * Скриншоты найденных веб-сайтов;
    • Поддерживает работу с XML-отчетами от Nmap и Masscan;
    • Использует headless Chrome/Chromium для рендера скриншотов.

    Минусы:


    • Может обратить на себя внимание систем обнаружения вторжений, поэтому требует настройки.

    Скриншот сделан для одной из старых версий aquatone (v0.5.0), в которой был реализован поиск DNS-поддоменов. Старые версии можно найти на странице релизов.

    Скриншот aquatone v0.5.0

    MassDNS


    MassDNS — еще один инструмент для поиска DNS-поддоменов. Главное его отличие в том, что он делает DNS-запросы напрямую к множеству разных DNS-резолверов и делает это со значительной скоростью.

    Плюсы:


    • Быстрый — способен разрешать более 350 тысяч имён в секунду.

    Минусы:


    • MassDNS может вызвать значительную нагрузку на используемые DNS-резолверы, что может привести к бану на этих серверах или жалобам к вашему провайдеру. Помимо этого, вызовет большую нагрузку на DNS-сервера компании, если они у них есть и если они отвечают за домены, которые вы пытаетесь резолвить.
    • Список резолверов в настоящее время устарел, однако если отобрать неработающие DNS-резолверы и добавить новые известные — всё будет хорошо.



    nsec3map


    nsec3map — инструмент на Python для получения полного списка доменов, защищённых DNSSEC.

    Плюсы:


    • Быстро обнаруживает хосты в DNS-зонах с минимальным количеством запросов, если в зоне включена поддержка DNSSEC;
    • В составе плагин для John the Ripper, который можно использовать для взлома полученных хэшей NSEC3.

    Минусы:


    • Многие DNS-ошибки обрабатываются некорректно;
    • Нет автоматического распараллеливания обработки NSEC-записей — приходится разделять пространство имён вручную;
    • Высокое потребление памяти.

    Acunetix


    Acunetix — сканер веб-уязвимостей, автоматизирующий процесс проверки безопасности веб-приложений. Тестирует приложение на наличие SQL-инъекций, XSS, XXE, SSRF и многих других веб-уязвимостей. Однако, как и любой другой сканер множества веб-уязвимостей не заменяет пентестера, поскольку сложные цепочки уязвимостей или уязвимости в логике не сможет найти. Зато он покрывает очень много различных уязвимостей, в том числе разных CVE, о которых пентестер мог и забыть, поэтому очень удобен для освобождения от рутинных проверок.

    Плюсы:


    • Низкий уровень ложных срабатываний;
    • Результаты можно экспортировать в виде отчетов;
    • Осуществляет большое количество проверок на разные уязвимости;
    • Параллельное сканирование нескольких хостов.

    Минусы:


    • Нет алгоритма дедубликации (одинаковые по функциональности страницы Acunetix сочтет разными, т.к. на них ведут разные URL), но разработчики над этим работают;
    • Требует установки на отдельный веб-сервер, что усложняет тестирование клиентских систем с подключением по VPN и использованию сканера в изолированном сегменте локальной клиентской сети;
    • Может “зашумить” исследуемый сервис, к примеру, послать в форму связи на сайте слишком много атакующих векторов, тем самым сильно усложнив бизнес-процессы;
    • Является проприетарным и, соответственно, небесплатным решением.



    Dirsearch


    Dirsearch — инструмент на Python для брутфорса директорий и файлов на веб-сайтах.

    Плюсы:


    • Может отличать настоящие “200 ОК” страницы от страниц “200 ОК”, но с текстом “страница не найдена”;
    • Поставляется вместе с удобным словарем, имеющим хороший баланс между размером и эффективностью поиска. Содержит стандартные пути, характерные для многих CMS и стеков технологий;
    • Свой формат словаря, который позволяет достичь хорошей эффективности и гибкости перебора файлов и директорий;
    • Удобный вывод — простой текст, JSON;
    • Умеет делать throttling — паузу между запросами, что жизненно необходимо для любого слабого сервиса.

    Минусы:


    • Расширения нужно передавать в виде строки, что неудобно, если нужно передать много расширений сразу;
    • Для того, чтобы использовать свой словарь, его нужно будет немного доработать до формата словарей Dirsearch для максимальной эффективности.



    wfuzz


    wfuzz — Python-фаззер веб-приложений. Наверное, один из самых известных веб-фазеров. Принцип прост: wfuzz позволяет фазить любое место в HTTP-запросе, что дает возможность фазить GET/POST-параметры, HTTP-заголовки, включая Cookie и иные аутентификационные заголовки. В тоже время удобен и для простого брутфорса директорий и файлов, для чего нужен хороший словарь. Также имеет гибкую систему фильтров, с помощью которой можно фильтровать ответы от веб-сайта по разным параметрам, что позволяет добиться эффективных результатов.

    Плюсы:


    • Многофункциональный — модульная структура, сборка занимает несколько минут;
    • Удобный механизм фильтрации и фаззинга;
    • Можно фазить любой HTTP-метод, а также любое место в HTTP-запросе.

    Минусы:


    • В состоянии разработки.



    ffuf


    ffuf — веб фаззер на Go, созданный по “образу и подобию” wfuzz, позволяет брутить файлы, директории, URL-пути, названия и значения GET/POST-параметров, HTTP-заголовки, включая заголовок Host для брутфорса виртуальных хостов. От своего собрата wfuzz отличается более высокой скоростью и некоторыми новыми фичами, например, поддерживаются словари формата Dirsearch.

    Плюсы:


    • Фильтры похожи на фильтры wfuzz, позволяют гибко настроить брутфорс;
    • Позволяет фаззить значения HTTP-заголовков, данные POST-запросов и различные части URL, включая имена и значения GET-параметров;
    • Можно указать любой HTTP-метод.

    Минусы:


    • В состоянии разработки.



    gobuster


    gobuster — инструмент на Go для разведки, имеет два режима работы. Первый используется для брутфорса файлов и директорий на веб-сайте, второй — для перебора DNS-поддоменов. Инструмент изначально не поддерживает рекурсивный перебор файлов и директорий, что, конечно, экономит время, но с другой стороны брутфорс каждого нового эндпоинта на веб-сайте нужно запускать отдельно.

    Плюсы:


    • Высокая скорость работы как для перебора DNS-поддоменов, так и для брутфорса файлов и директорий.

    Минусы:


    • В текущей версии не поддерживает установку HTTP-заголовков;
    • По умолчанию считает валидными только некоторые из HTTP-статус кодов (200,204,301,302,307).



    Arjun


    Arjun — инструмент для брутфорса скрытых HTTP-параметров в GET/POST-параметрах, а также в JSON. Встроенный словарь имеет 25 980 слов, которые Ajrun проверяет почти за 30 секунд. Фокус в том, что Ajrun не проверяет каждый параметр отдельно, а проверяет сразу ~1000 параметров за раз и смотрит, изменился ли ответ. Если ответ изменился, то делит эту 1000 параметров на две части и проверяет, какая из этих частей влияет на ответ. Таким образом, с помощью нехитрого бинарного поиска находится параметр или несколько скрытых параметров, которые влияли на ответ и, следовательно, могут существовать.

    Плюсы:


    • Высокая скорость работы за счет бинарного поиска;
    • Поддержка GET/POST-параметров, а также параметров в виде JSON;

    По схожему принципу работает и плагин для Burp Suite — param-miner, который тоже очень хорош в поиске скрытых HTTP-параметров. Подробнее мы о нём расскажем в грядущей статье про Burp и его плагины.


    LinkFinder


    LinkFinder — скрипт на Python для поиска ссылок в JavaScript-файлах. Полезен для поиска скрытых или забытых эндпоинтов/URL в веб-приложении.

    Плюсы:


    • Быстрый;
    • Есть специальный плагин для Chrome на основе LinkFinder-а.
    .

    Минусы:


    • Неудобный итоговый вывод;
    • Не анализирует JavaScript в динамике;
    • Довольно простая логика поиска ссылок — если JavaScript каким-либо образом обфусцирован, или ссылки изначально отсутствуют и генерируются динамически, то не сможет ничего найти.



    JSParser


    JSParser — скрипт на Python, который использует Tornado и JSBeautifier для анализа относительных URL-адресов из JavaScript-файлов. Очень полезен для обнаружения AJAX-запросов и составления списка API-методов, с которыми взаимодействует приложение. Эффективно работает в паре с LinkFinder.

    Плюсы:


    • Быстрый парсинг JavaScript-файлов.



    sqlmap


    sqlmap — наверное, один из самых известных инструментов для анализа веб-приложений. Sqlmap автоматизирует поиск и эксплуатацию SQL-инъекций, работает с несколькими диалектами SQL, имеет в своем арсенале огромное количество различных техник, начиная от кавычки “в лоб” и заканчивая сложными векторами для time-based SQL-инъекций. Кроме того, имеет множество техник дальнейшей эксплуатации для различных СУБД, поэтому полезен не просто как сканер для SQL-инъекций, а еще и как мощный инструмент для эксплуатации уже найденных SQL-инъекций.

    Плюсы:


    • Большое количество различных техник и векторов;
    • Низкое число ложных срабатываний;
    • Много возможностей по точной настройке, различные техники, целевая БД, тампер-скрипты для обхода WAF;
    • Возможность создания дампа выходных данных;
    • Много различных возможностей по эксплуатации, например, для некоторых БД — автоматическая загрузка/выгрузка файлов, получение возможности выполнения команд (RCE) и другие;
    • Поддержка прямого подключения к БД с использованием полученных в ходе атаки данных;
    • На вход можно подать текстовый файл с результатами работы Burp — не нужно вручную составлять все атрибуты командной строки.

    Минусы:


    • Сложно кастомизировать, например, написать какие-нибудь свои проверки из-за скудной документации для этого;
    • Без соответствующих настроек проводит неполный набор проверок, что может вводить в заблуждение.



    NoSQLMap


    NoSQLMap — инструмент на Python для автоматизации поиска и эксплуатации NoSQL-инъекций. Удобно использовать не только в базах данных NoSQL, но и непосредственно при аудите веб-приложений, использующих NoSQL.

    Плюсы:


    • Как и sqlmap, позволяет не только находит потенциальную уязвимость, но и проверяет возможность её эксплуатации для MongoDB и CouchDB.

    Минусы:


    • Не поддерживает NoSQL для Redis, Cassandra, в этом направлении ведётся разработка.


    oxml_xxe


    oxml_xxe — инструмент для встраивания XXE XML-эксплойтов в различные типы файлов, в которых в каком-либо виде используется XML-формат.

    Плюсы:


    • Поддерживает многие распространенные форматы, такие как DOCX, ODT, SVG, XML.

    Минусы:


    • Не до конца реализована поддержка PDF, JPEG, GIF;
    • Создает только один файл. Для решения этой проблемы можно использовать инструмент docem, который может создать большое количество файлов с пейлодами в разных местах.

    Вышеупомянутые утилиты отлично справляются с тестированием XXE в случае загрузки документов, содержащих XML. Но также не забывайте, что обработчики XML-форматов могут встречаться во множестве других случаев, например, XML может использоваться как формат данных вместо JSON.

    Поэтому рекомендуем обратить внимание на следующий репозиторий, содержащий большое количество разнообразных пейлоадов: PayloadsAllTheThings.

    tplmap


    tplmap — инструмент на Python для автоматического выявления и эксплуатации уязвимостей Server-Side Template Injection, имеет схожие с sqlmap настройки и флаги. Использует несколько различных техник и векторов, включая blind-инъекции, а также имеет техники для выполнения кода и загрузки/выгрузки произвольных файлов. Кроме того, имеет в своем арсенале техники для десятка разных движков для шаблонов и некоторые техники для поиска eval()-подобных инъекций кода в Python, Ruby, PHP, JavaScript. В случае успешной эксплуатации открывает интерактивную консоль.

    Плюсы:


    • Большое количество различных техник и векторов;
    • Поддерживает множество движков для рендера шаблонов;
    • Много техник эксплуатации.

    CeWL


    CeWL — генератор словарей на Ruby, создан для извлечения уникальных слов с указанного веб-сайта, проходит по ссылкам на сайте на указанную глубину. Составленный словарь из уникальных слов в дальнейшем можно использовать для брутфорса паролей на сервисах или брутфорса файлов и директорий на том же веб-сайте, либо для атаки на полученные хэши с помощью hashcat или John the Ripper. Полезен при составлении “целевого” списка потенциальных паролей.

    Плюсы:


    • Прост в использовании.

    Минусы:


    • Нужно быть осторожнее с глубиной поиска, чтобы не захватить лишний домен.

    Weakpass


    Weakpass — сервис, содержащий множество словарей с уникальными паролями. Крайне полезен для различных задач, связанных с взломом паролей, начиная от простого онлайн брутфорса учетных записей на целевых сервисах, заканчивая офф-лайн брутфорсом полученных хэшей с помощью hashcat или John The Ripper. В составе около 8 миллиардов паролей длиной от 4 до 25 символов.

    Плюсы:


    • Содержит как специфичные словари, так и словари с наиболее часто встречающимися паролями — можно подобрать конкретный словарь под собственные нужды;
    • Словари обновляются и пополняются новыми паролями;
    • Словари отсортированы по эффективности. Можно выбрать вариант как для быстрого он-лайн брута, так и для обстоятельного подбора паролей из объемного словаря с последними утечками;
    • Есть калькулятор, показывающий время брута паролей на вашем оборудовании.



    В отдельную группу мы хотели бы вынести инструменты для CMS-проверок: WPScan, JoomScan и AEM hacker.

    AEM_hacker


    AEM hacker — инструмент для выявления уязвимостей в приложениях Adobe Experience Manager (AEM).

    Плюсы:


    • Может выявлять AEM-приложения из списка URL, поданных ему на вход;
    • Содержит в себе сценарии для получения RCE путем загрузки JSP-шелла или эксплуатацией SSRF.

    JoomScan


    JoomScan — инструмент на Perl для автоматизации обнаружения уязвимостей при развертывании Joomla CMS.

    Плюсы:


    • Способен отыскивать недостатки конфигурации и проблемы администраторских настроек;
    • Перечисляет версии Joomla и связанные с ними уязвимости, аналогично для отдельных компонентов;
    • Содержит больше 1000 эксплойтов под компоненты Joomla;
    • Вывод итоговых отчетов в текстовом и HTML-форматах.



    WPScan


    WPScan — инструмент для сканирования сайтов на WordPress, имеет в своем арсенале уязвимости как для самого движка WordPress, так и для некоторых плагинов.

    Плюсы:


    • Способен перечислять не только небезопасные WordPress-плагины и темы, но и получать список пользователей и TimThumb-файлы;
    • Может проводить брутфорс-атаки на WordPress-сайты.

    Минусы:


    • Без соответствующих настроек проводит неполный набор проверок, что может вводить в заблуждение.



    В целом разные люди предпочитают для работы разные инструменты: все они по-своему хороши, и то, что понравилось одному человеку, может совершенно не подойти другому. Если вы считаете, что мы незаслуженно обошли внимание какую-то хорошую утилиту — пишите о ней в комментариях!
    • +46
    • 22,7k
    • 8
    Digital Security
    157,76
    Безопасность как искусство
    Поделиться публикацией

    Комментарии 8

      0

      Спасибо большое за подборку! Эти инструменты уже входят в состав Kali или требуют установки извне?
      P S. Приятно видеть, что Go стал одним из любимчиков у создателей инструментов для пентеста.

        0
        80% данных инструментов, не входит в кали. Нужно ставить самостоятельно.

        Автору:
        Наш коллега BeLove
        Сергей разве еще работает в Вашей фирме?
        acunetix устанавливать все игры
        — что это значит? и насколько он хорош в боевых условиях? (на своих тестовых страницах он хорош).
        Относительно API. Что можете посоветовать для тестирования данного интерфейса/службы?
        Советую делать по больше таких изображений. Их можно использовать как шпаргалки. (такие вещи часто ретвитят и рекомендуют. — Реклама)

        Подборка хорошая!
        Много новых инструментов, относительно тех, с которыми раньше работали. — Спасибо.

          +4
          «хочу устанавливать все игры» — тут имеется в виду «хочу получить всё и разом» :)

          Acunetix и правда хорош. В них команде есть свои ресерчеры, следят за современными уязвимостями, актуализируют списки проверок. В первую очередь Акунетикс решает вопрос «покрытия кода» — в ручную можно случайно пропустить формочку, URL или забыть что-то прочекать. А сканер будет методично долбить часами или сутками пока весь веб ресурс не обойдет. Главное следить за сессией, чтобы не протухла :) Впрочем, можно настроить перелогин.

          Кстати он и апишки проверяет, серверсайд инъекции им находились порой. Также можно посоветовать активный сканер встроенный в Burp+плагины для него, но про это отдельная статья будет.

          А BeLove действительно уже не работает в DSec, но все еще занимается безопасностью, поэтому «коллега» :)
            +2
            Что-то готовое для тестирования API найти сложно. Есть хороший фреймворк, но придется повозиться с найстройкой: github.com/openstack/syntribos
          +1
          Не плохой инструмент:
          DNS:
          Theharvester — Это больше комбаин. который собирает все что найдет о домене. айпишки. домены / поддомены / почты. (последние обновления включают поддержку шодана и других поисковых систем. — Большой выбор)

          В данную подборку не вошли инструменты по социалке. Тоже не плохо было бы почитать про них, возможно что то новое увидим.
            0
            Про тулзы для социальной инженерии хотим подробнее попозже отдельной статьей.
            –1
            Спасибо за статью!
              0

              Почему то забыли про netsparker. Вполне достойная акунетиксу тулза. В отличие от него в спаркере дофига настроек и крутилок (почти как было в акунетиксу до 11-й версии), что позволяет настроить скан более гибко.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое