February 16, 2019

Арсенал багхантера

Не всегда самые дорогие баги, обнаруженные в рамках баг-баунти, — это классика типа XSS/SQL или ошибки логики работы приложения. Утечка логов, доступ к критичным файлам и сервисам без авторизации, сессионные и авторизационные токены, исходные коды и репозитории — все это может быть использовано злоумышленниками для успешных атак, поэтому и платят за такие штуки тоже неплохо. Я расскажу о полезных утилитах, которые помогут в выявлении уязвимостей.

У нас было два мощных веб-краулера, 1 174 991 домен баг-баунти, семь хедеров для обхода WAF, свой сервер в Digital Ocean на случай блокировки IP, список из 50 системных директорий для поиска и куча дополнительных мелких проверок на XSS, CRLF, open redirect и админки с простыми паролями… Не то чтобы все это было нужно в багхантинге, но если уж взялся автоматизировать поиск багов, то надо идти до конца.
— В. Поляков (JohnDoe1492)

Например, недавно была обнародована утечка авторизационного токена Snapchat для обращения к API. Уязвимость была оценена в 15 000 долларов США, при этом сам багхантер ожидал лишь статуса informative и более скромной награды.

Из своего опыта и опыта коллег могу сказать, что даже за server-status, phpinfo или лог-файлы выплата может достигать 1000 долларов. Хорошо, скажешь ты, но ведь искать все это вручную довольно утомительно и малопродуктивно, да и наверняка кто-то другой уже нашел все баги. Представь себе, далеко не так! Баги встречаются повсеместно, компании обновляют или выкатывают новые сервисы, разработчики забывают отключить журналы отладки или удалить репозитории.

Правила

В первую очередь советую внимательно ознакомиться с правилами программы, в которой ты хочешь принять участие: чем больше скоуп, тем шире attack surface и выше возможность что-нибудь найти. Тем не менее стоит обращать внимание на принадлежность сервисов к тем или иным доменам. Например, программы баг-баунти обычно не охватывают домены, принадлежащие третьей стороне. Впрочем, если есть шанс, что это повлияет на основные сервисы, можешь рассчитывать на повышение рейтинга на Hacker1 и денежную компенсацию.

Из российских компаний я бы отметил Mail.Ru Group. Это лояльная команда, которая быстро отвечает и принимает баги. Хотя поставили мне несколько n/a.

WARNING

Важное напоминание! Когда ты найдешь баг, не докручивай его до финала, если тебя не попросят об этом специально. Не нужно дампить базу, дефейсить сайт или каким-то образом влиять на пользователей. Тот, кто принимает у тебя баг, обычно и сам в состоянии довести дело до логического конца.

Еще один совет начинающим: не стоит выпрашивать деньги у компаний. Объективные баги они оценят по достоинству, опыта у них, скорее всего, гораздо больше, чем у тебя.

Готовим плацдарм

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

Serpico

https://github.com/SerpicoProject/Serpico

Первое, что нам понадобится, — система хранения и описания багов. В свое время я использовал Dradis, но сейчас предпочитаю Serpico. Эта программа позволяет заносить баги по классификациям и сразу подтягивает их описание. Все это прекрасно кастомизируется и масштабируется для командной работы.

Фреймворк работает в Linux/Win-среде, есть контейнер Docker для развертывания.

Nmap-bootstrap-xsl

https://github.com/honze-net/nmap-bootstrap-xsl/

Нет, читатель, я не считаю тебя мамкиным хакером, который не знает про Nmap. Но мы будем использовать еще и отличный аддон для работы с журналами сканирований nmap-bootstrap-xsl. Он позволяет конвертировать результаты сканирований в HTML с удобным интерфейсом и возможностью выборки. Это бывает очень удобно при сравнении результатов сканирования.

Скачиваем nmap-bootstrap.xsl и запускаем сканирование:

$ nmap -sS -T4 -A -sC -oA scanme --stylesheet https://raw.githubusercontent.com/honze-net/nmap-bootstrap-xsl/master/nmap-bootstrap.xsl scanme.nmap.org 
$ scanme2.nmap.org

Далее преобразовываем выхлоп скана в HTML:

$ xsltproc -o scanme.html nmap-bootstrap.xsl scanme.xml

Sparta

https://github.com/SECFORCE/sparta

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

Эта утилита — обертка для Nmap, Hydra и других популярных инструментов. С помощью Sparta удобно проводить поверхностную разведку периметра:

  • собирать «живые» хосты;
  • брутить популярные сервисы, обнаруженные на периметре (SSH, FTP и так далее);
  • собирать веб-приложения и скриншоты.

badKarma

https://github.com/r3vn/badKarma

Еще один комбайн для «обстрела» сетевого периметра. Этот инструмент более продвинутый, чем Sparta, и позволяет объединить несколько действий в одном интерфейсе. Хотя badKarma еще «сырой» продукт, тем не менее он активно развивается и есть надежда, что в скором времени мы получим еще один фреймворк. Имей в виду, автоматической установки нет и некоторых утилит для работы badKarma в Kali Linux не хватает.

Сбор информации

Aquatone

https://github.com/michenriksen/aquatone

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

Assetnote

https://github.com/tdr130/assetnote

Кто первый встал — того и тапки. Это правило особенно актуально в багхантинге. Утилита Assetnote помогает уведомлять багхантера о появлении новых поддоменов у отслеживаемой цели. Для этого необходимо добавить API-ключ сервиса Pushover.

При нахождении нового поддомена ты получишь уведомление на мобильный телефон. После этого нужно со всех ног бежать к компьютеру и искать баги.

Meg, MegPlus и Smith

https://github.com/tomnomnom/meg

https://github.com/EdOverflow/megplus

https://github.com/EdOverflow/smith

Meg — один из лучших инструментов для поиска ценной информации. Он содержит целый набор для поиска. С Meg за небольшой промежуток времени ты сможешь исследовать множество доменов и поддоменов в поисках чего-то определенного (например, server-status). Meg к тому же умеет работать со списком баг-баунти-программ с h1. Советую ознакомиться с видеопрезентацией автора этого замечательного инструмента.

MegPlus & Smith за авторством EdOverflow — это обертки для оригинального Meg.

Meg+ (к сожалению, deprecated) к основному набору функций Meg добавляет следующие возможности поиска и выявления уязвимостей:

  • поддомены (с использованием Sublist3r);
  • конфиги;
  • интересные строки;
  • open redirect;
  • инъекции CRLF;
  • мисконфиги CORS;
  • path-based XSS;
  • захват доменов и поддоменов.

Утилита Smith позволяет парсить результаты Meg для поиска иголок в стогах разных находок.

Расхищаем гробницы

Зачастую на публичных репозиториях компаний можно найти полезную информацию для получения доступа к тому или иному приложению даже без анализа выложенного кода. Например, выявленный auth-token принес багхантеру 15 000 долларов! Также хорошей практикой, уже давшей свои плоды, можно назвать парсинг аккаунтов GitHub из профилей LinkedIn сотрудников компаний.

Итак, наша цель — github.com. Если у тебя нет учетной записи — заведи. Она поможет как минимум искать по содержимому, а как максимум начнешь писать код. Ну или хотя бы форкать.

MegPlus & Smith за авторством EdOverflow — это обертки для оригинального Meg.

Meg+ (к сожалению, deprecated) к основному набору функций Meg добавляет следующие возможности поиска и выявления уязвимостей:

  • поддомены (с использованием Sublist3r);
  • конфиги;
  • интересные строки;
  • open redirect;
  • инъекции CRLF;
  • мисконфиги CORS;
  • path-based XSS;
  • захват доменов и поддоменов.

Утилита Smith позволяет парсить результаты Meg для поиска иголок в стогах разных находок.

Github-Hunter

https://github.com/Hell0W0rld0/Github-Hunter

Этот инструмент позволяет автоматизировать поиск по репозиториям GitHub: забиваешь ключевики и пейлоады для поиска, почтовый аккаунт и адрес, по которому нужно направить результат. После продолжительного поиска получаешь .db с найденными репозиториями, файлами и строками кода, в которых нашлись ключевые слова.

gitleaks

https://github.com/zricethezav/gitleaks

Эта утилита позволяет выявлять критичные данные в конкретном репозитории или у конкретного пользователя. Must have на случай, если знаешь, где искать, но не знаешь что.

Жарим хлеб веб

Иногда на поверхности можно найти банальные веб-уязвимости, которые по тем или иным причинам просочились в прод. Это могут быть XSS, разного рода утечки или раскрытие данных. Кажется, что это фантастика, но в жизни бывает всё. Вот, например, типичная история: нашелся Heartbleed на одном из продакшен-серверов Mail.Ru: приехал необновленный сервер из ремонта и встал в прод. Все это можно обнаружить с помощью простейших сканеров веб-уязвимостей, поэтому добавим эти инструменты в наш багхантерский сервачок.

Input Scanner

https://github.com/zseano/InputScanner

Этот написанный на PHP фреймворк c веб-интерфейсом позволяет выявлять input-формы и JS-библиотеки в тестируемом веб-приложении. Например, можно выгрузить из Burp или ZAP список урлов из proxy-history/logger+/etc и прогнать через этот инструмент, предварительно добавив пейлоады. На выходе получаем список URI, которые можем при помощи intruder профаззить для поиска векторов атаки.

Parameth

https://github.com/maK-/parameth

Эта утилита поможет забрутить GET- и POST-запросы к веб-приложению для поиска чего-то скрытого от обычных пауков/краулеров, парсящих явные ссылки в исследуемом приложении.

XSStrike

https://github.com/s0md3v/XSStrike

Лютая тулза для поиска разных XSS. Умеет выявлять DOM-based/reflected XSS, краулить веб-приложение, фаззить параметры для байпаса WAF, брутфорсить из файла с пейлоадами, выявлять скрытые параметры и манипулировать значениями HEADER.

XSStrike автоматизирует множество рутинной работы. При грамотной настройке обеспечен отличный результат.

Тяжелая артиллерия

Напоследок — два убер-комбайна, в которые входит множество инструментов для автоматизированного выявления и атаки целей, начиная от DNS-рекона, скана поддоменов и заканчивая выявлением веб-уязвимостей, обходом WAF и брутфорсом всего, что только возможно. Но хочу сразу предупредить, что бездумное использование таких монстров — это как обезьяна с пулеметом.

Sn1per

https://github.com/1N3/Sn1per

Комбайн авторства небезызвестного 1N3 — автора BruteX, BlackWidow, Findsploit и собирателя огромного количества пейлоадов для Intruder Burp Suite. Существует в виде Community Edition (free) и версии Pro.

Что умеет:

  • автоматический базовый сбор информации (например, whois, ping, DNS);
  • автоматический запуск Google hacking запросов против заданного домена;
  • автоматическое перечисление открытых портов;
  • автоматический перебор поддоменов и информации о DNS;
  • автоматический запуск скриптов Nmap на определенные открытые порты;
  • автоматическое сканирование веб-приложений на базовые уязвимости;
  • автоматический перебор всех открытых сервисов.

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

Sn1per может работать в нескольких режимах — от OSSINT/RECON до ковровых бомбардировок целей в режиме Airstrike/Nuke (наподобие HailMary в Armitage).

TIDoS Framework

https://github.com/theInfectedDrake/TIDoS-Framework

TIDoS Framework — это комплексная среда аудита веб-приложений. Очень гибкий фреймворк, где тебе достаточно выбрать и использовать модули типа Metasploit. Имеет на борту множество модулей — от разведки и сбора информации до эксплуатации веб-уязвимостей.

TIDoS имеет пять основных фаз, разделенных на 14 подфаз, которые, в свою очередь, состоят из 108 модулей.

Инструмент очень навороченный, требует тюнинга перед использованием.

Outro

Автоматизация — это хорошо, но голову тоже необходимо включать. Максимальную отдачу даст вдумчивое использование утилит, кастомизированная подборка словарей и фазз-листов для поиска, а также систематизированный подход к поиску багов. И результат не заставит себя ждать.

Удачной охоты и богатых трофеев!