JustPaste.it

Спутник и Погром - X-Tools. Подборка полезных хактулз для сбора и анализа данных

nopaywall

1cf9a86dbcfd7b32dcc6d2166ef45ec3.jpg

https://t.me/nopaywall

Сегодняшний X-Tools посвящен сбору и анализу открытых данных. Другими словами — этапу рекона. Очередные 7 тулз, которые помогут найти, просканировать уязвимые хосты, а также облегчить этап эксплуатации, обогащая ресерчера новыми знаниями о целевой машине.
 

Ищем интересные строки в Git-репозиториях

Боевые логины и пароли в Git-репозитории — это уже притча во языцех и настоящий security-фольклор. Казалось бы, сегодня уже все знают, что чувствительные данные должны быть как минимум заигнорены в .gitignore, но в паблике регулярно всплывают креды и другие ценные строчки в открытом виде. Причин масса: или репозиторий изначально был приватным, или вкоммитили тестовые данные, забыли и перенесли на продакшен — всякое бывает. Ощутить весь масштаб трагедии поможет интересная тулза — GitMiner.

GitMiner — это поисковик по открытым репозиториям на GitHub. Ты указываешь ему, что искать (логины, пароли), в каких файлах (название, расширение), что должно быть внутри (чтобы исключить фалсы по максимуму), а также правила для парсинга. И запускаешь поиск. В ответ тебе в удобном виде будут сыпаться запрошенные данные, а также URL, где это безобразие было обнаружено. Для работы понадобится авторизационная кука с Гитхаба, которую можешь взять в Chrome Dev Tools.

 

git_miner.py -q 'filename:wp-config extension:php FTP_HOST in:file ' -m wordpress -c <твоя_кука> -o result.txt

В ответ тебе будут приходить вот такие веселые картинки. И разумеется, далеко не везде данные тестовые.

Кроме логинов и паролей, искать можно еще много чего. Загляни в config/parsers.json. Там найдешь описание модулей — шаблонов для парсинга в GitMiner. Если хочешь парсить что-то иное, просто добавь еще один узел в JSON c нужными параметрами.

cat config/parsers.json { "wordpress":{ "contains":"root", "parameters":{ "param1":"'FTP_USER',", "param2":"'FTP_PASS',", "param3":"'FTP_HOST',", "param4":"'DB_USER',", "param5":"'DB_PASSWORD'," }, "splitparam":"'", "splitorder":{ "order1":"1", "order2":"3" } }, "senhas":{ "contains":"senha", "parameters":{ ...

GitMiner отлично работает с третьим Питоном и минимумом зависимостей, а значит, запустится в обычном virtualenv. Но на случай, если запускать чужой код на хосте не хочется совсем, в репе ты найдешь еще и Dockerfile.

2d983cb9f04aeae7463a89ea2f017266.jpg

INFO

Если тулза будет падать с TypeError: write() argument must be str, not bytes, попробуй убрать из 78-й строки энкод в UTF-8 (.encode("utf-8")): write() тут ждет str.

 

Вспоминаем дефолтные пароли роутеров

Дефолтные пароли на сетевых устройствах встречаются чаще, чем может показаться на первый взгляд. В интернете открытыми портами наружу торчат сотни роутеров не только частных пользователей, но и корпоративных сетей. Если, судя по фингерпринтам, ты набрел на такую железку, попробуй дефолтные пароли — вдруг подойдет? А сами заводские креды поможет найти Passhunt.

Passhunt — это простенький скрипт на Python, который позволяет быстро вывести дефолтные логины и пароли для наиболее популярных устройств: как преимущественно консьюмерских типа Zyxel, D-Link, так и промышленных — Cisco, Check Point и так далее. В базе тулзы 523 вендора, и она действительно может выручить, когда ты в очередной раз соберешься писать в Гугле mikrotik default login password.

В доке к Passhunt указано, что она работает с Python 3.0+, однако в ее зависимости ssl-1.16есть

print 'looking for', f

что недвусмысленно говорит об обратном и валит pip при установке. Можно долго мучать Python 2.6 (а она работает именно с ним!) для работы модуля ssl, пока не поймешь, что разработчик… просто забыл удалить ssl из requirements.txt при переходе на третью ветку. Просто удали зависимость, сделай pip install -r requirements.txt, и оно заработает.

А вообще, сам Passhunt написан в «лучших» традициях хактулз, так что проще юзать curl ;). В конце концов, Passhunt — это просто обертка, которая парсит https://cirt.net/ с помощью BeautifulSoup.

 

Сканируем уязвимые сервисы

Nmap — это дефолтная тулза для всех, кто хоть как-то относится к network security. Возможности культового сканера, разумеется, не ограничиваются простым сканированием портов.

eb4b8e945ecbfc709244dfb159bd786d.jpg

WWW

Если хочешь разобраться подробнее в теме, обязательно прочти материалы по трюкам с nmap и по NSE-скриптингу.

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

Проект vulscan — это NSE-скрипт, который превратит твой Nmap в сканер уязвимостей. В комплекте со скриптом идет несколько баз уязвимостей. Установка проста — просто клонируй репу в /scripts (для Nmap из macOS, например, это будет /usr/local/Cellar/nmap/7.60/share/nmap/scripts) и запускай, передав в аргументе NSE-скрипт:

nmap -sV --script=vulscan/vulscan.nse target.com

Пользуясь случаем, не могу не респектануть дружественному проекту Vulners, решающему схожую задачу: у парней есть плагин для Burp, а также расширение для Chrome, которое во время серфинга анализирует заголовки серверов, сверяет по своей базе и, если видит уязвимый софт, репортит тебе об этом. Удобно!

 

Выходим за пределы web root

Несмотря на засилье модных веб-аппов и то, что Path Traversal нет в OWASP Top 10, в реальном мире эта уязвимость по-прежнему встречается. Неправильно сконфигурированные серверы, увы, не редкость, и «погулять» вне web root по-прежнему можно с завидной регулярностью. Утилита dotdotslash — твой верный помощник в дебрях неизвестных файловых систем.

Скрипт на Питоне принимает пару обязательных аргументов:

  • --url — что ресерчить;
  • --string — параметр, через который будем выходить из рутовой директории.

Через параметр --depth можно задавать глубину сканирования, чтобы ограничить скоуп.

В своей работе тулза опирается на небольшую базу обычных файлов для дирбастинга.

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

В общем, Python 3, зависимостей нет. Брат жив. 🙂

 

Дирбастим хосты на словарные директории

  • Разработчик: Abay
  • Страница: GitHub

Раз уж речь зашла о Path Traversal, куда же без дирбастинга. Порою перебор наиболее популярных директорий в веб-приложении вскрывает множество тайников. И хотя оригинальный dirbuster от OWASP чуть менее чем мертв, у нас есть множество схожих по назначению утилит. Одна из них — CrawlBox.

python crawlbox.py -u https://vk.com $$$$$$\ $$\ $$$$$$$\ $$ __$$\ $$ | $$ __$$\ $$ / \__| $$$$$$\ $$$$$$\ $$\ $$\ $$\ $$ | $$ | $$ | $$$$$$\ $$\ $$\ $$ | $$ __$$\ \____$$\ $$ | $$ | $$ |$$ | $$$$$$$\ |$$ __$$\ \$$\ $$ | $$ | $$ | \__|$$$$$$$ |$$ | $$ | $$ |$$ | $$ __$$\ $$ / $$ | \$$$$ / $$ | $$\ $$ | $$ __$$ |$$ | $$ | $$ |$$ | $$ | $$ |$$ | $$ | $$ $$< \$$$$$$ |$$ | \$$$$$$$ |\$$$$$\$$$$ |$$ | $$$$$$$ |\$$$$$$ |$$ /\$$\ \______/ \__| \_______| \_____\____/ \__| \_______/ \______/ \__/ \__| [-] https://vk.com//!.gitignore - 408B : HTTP 404 : Not Found [-] https://vk.com//!.htaccess - 408B : HTTP 404 : Not Found [-] https://vk.com//!.htpasswd - 408B : HTTP 404 : Not Found [-] https://vk.com//%20../ - 408B : HTTP 404 : Not Found [-] https://vk.com//%2e%2e//google.com - 189B : HTTP 500 : Unknown response [-] https://vk.com//.cc-ban.txt.bak - 165B : HTTP 403 : Needs authorization [-] https://vk.com//.DS_Store - 165B : HTTP 403 : Needs authorization ...

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

eb4b8e945ecbfc709244dfb159bd786d.jpg

WWW

В качестве базы также советую подключить fuzz.txt от моего друга и коллеги Bo0oM.

Для работы CrawlBox требует Python 2. Права root, вопреки заверению автора, не потребуются — ты же не систему ставишь, в отличие от некоторых? 🙂

 

Ищем SAN в SSL-сертификатах

Ты наверняка видел, что некоторые SSL-сертификаты позволяют защищать не одно, а несколько доменных имен. Именно несколько, а не все поддомены, как это происходит в случае с дорогущими wildcard-сертификатами. Разумеется, при пентесте приложений бывает полезно посмотреть не только основной хост, но и Subject Alternative Name (SAN) — алиасы, которые разрешены в SSL-сертификате. Узнать их можно и вручную, но зачем, когда у нас есть тулза GetAltName?

GetAltName просканит для тебя представленный URL и покажет добытые SAN в удобном формате. Из удачных фич есть возможность не только сканить по инпуту, но и предоставить скрипту XML-ный файл от Nmap’а. Ну и задать формат вывода.

В моем случае работает на Python 3.6, зависимости через pip, ничего особого не требуется.

 

Эксплуатируем тайпсквоттинг для социотехнического пентеста

Тайпсквоттинг — это очень крутая штука! Это когда вместо xakep.ru ты написал cakep.ruили xakkep.ru. Другими словами, тайпсквоттинг эксплуатирует опечатки в написании доменных имен. Ошибки могут быть как механические (например, рядом стоящие клавиши на клавиатуре), так и орфографические (cisko.com, mikrosoft.com). Думаю, ты и без меня можешь придумать множество забавных трюков с тайпсквоченными доменами, где фишинг формы логина — самое безобидное.

Urlcrazy — ужжжасно полезная тулза для социотехнического пентеста! С ее помощью ты не только сгенерируешь множество фейковых доменных имен по предоставленному оригинальному домену, но и проверишь часть из них на занятость. Битфлип, тайпсквоттинг, ошибки произношения, записи по телефону, опечатки — все это генератор urlcrazy учитывает и выдает тебе целый список доменов, которые можно использовать в тестировании на проникновение. Каждая мутация снабжена отдельным пояснением, а также инфой о занятости доменного имени.

Для работы потребуется Ruby, в моем случае работает без ошибок на ruby 2.5.0p0.

А на сегодня все. Ресерчи, пробуй и отписывайся в комментах о новых и удобных хактулзах!

Читайте ещё больше платных статей бесплатно: https://t.me/nopaywall