Арсенал багхантера
Не всегда самые дорогие баги, обнаруженные в рамках баг-баунти, — это классика типа 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
Комбайн авторства небезызвестного 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
Автоматизация — это хорошо, но голову тоже необходимо включать. Максимальную отдачу даст вдумчивое использование утилит, кастомизированная подборка словарей и фазз-листов для поиска, а также систематизированный подход к поиску багов. И результат не заставит себя ждать.
Удачной охоты и богатых трофеев!