Некоторое время назад, хорошенько поиграв во всевозможные CTF, я решил податься в пентест, а это значит то, что теперь я буду писать тематические статьи-заметки на избитые темы из этой области. И начну, пожалуй, с OSINT в применении к веб-ресурсам. А точнее, речь пойдет о том, как и откуда взять информацию, если в некотором bug bounty или заказе на тестирование цель описана как:
1 |
*.domain.com |
В принципе, эта информация в том или ином виде изложена в многочисленных методологиях, так что вы вряд ли узнаете что-то новое, если проводили пентесты сколько-нибудь продолжительное время.
Итак, наша цель - найти возможные поддомены и IP-адреса (особенно актуально в случае использования Cloudflare и подобного), относящиеся к цели. В качестве ОС (чтобы не заморачиваться с установкой/сборкой утилит) можно использовать: Kali Linux, Parrot Security, BlackArch или какую-либо еще сборку под аудит. Также можно взять Debian или Ubuntu и подключить репозитории Kali (самостоятельно или с помощью katoolin). Начнем с поиска поддоменов.
Основные способы поиска - это:
1. Перебор поддоменов
По сути - обращение к DNS-серверу с именем поддомена в попытке получить его IP-адрес. Перебор обычно осуществляется по словарю. Можно проделать с помощью следующих утилит:
dnsmap
1 |
dnsmap domain.com |
1 |
subbrute domain.com |
1 |
dnsrecon -d domain.com -D dictionary.txt -t brt |
1 2 3 |
use recon/domains-hosts/brute_hosts set SOURCE domain.com run |
1 |
nmap --script dns-brute domain.com |
Вышеперечисленные утилиты в общем и целом похожи, с точки зрения выполнения данной задачи, результаты могут отличаться в зависимости от состава идущих в комплекте словарей, обработки wildcard DNS-записей и некоторых других аспектов. Лучше всего самостоятельно собрать комбинированный список, отфильтровать дубликаты и пользоваться им. Для формирования могут пригодиться коллекции словарей отсюда: https://github.com/danielmiessler/SecLists.
2. Поисковые системы
Если ресурсы не закрыты для индексации поисковиками, то поиск в Yandex, Google, Bing (не забываем про DuckDuckGo, если у вас паранойя, а также про специализированные поисковики: Shodan и Сensys) по доменному имени может помочь в обнаружении поддоменов, а также административных панелей, резервных копий, документов и прочей полезной информации.
Искать можно вручную или используя recon-ng, помогут следующие модули:
1 2 3 4 5 |
recon/domains-hosts/bing_domain_api recon/domains-hosts/bing_domain_web recon/domains-hosts/google_site_api recon/domains-hosts/google_site_web recon/domains-hosts/shodan_hostname |
3. SSL-сертификаты, WHOIS, DNS
SSL-сертификаты, используемые сервером, могут содержать информацию о других доменных именах, для которых действителен данный сертификат. Например, посмотрим информацию о сертификате для домена www.hackerone.com:
Мы видим, что сертификат действителен для следующих доменов:
1 2 3 |
hackerone.com www.hackerone.com api.hackerone.com |
Может быть полезно посмотреть историю выдачи сертификатов для искомого домена, например, здесь: crt.sh.
Перейдем к WHOIS. Основное применение, как мы видим в Wikipedia, - "...получение регистрационных данных о владельцах доменных имён, IP-адресов и автономных систем.". Это дает возможность получить информацию о принадлежности IP-адреса и его подсети к конкретному владельцу (некоторые компании выкупают диапазоны IP-адресов и об этом явно указано в информации, получаемой через WHOIS). Например, вот информация из WHOIS об одном из IP-адресов, относящихся к Ebay:
Мы видим, что диапазоном 66.211.160.0/21 владеет Ebay.
1 2 3 4 5 6 7 8 9 10 |
NetRange: 66.211.160.0 - 66.211.167.255 CIDR: 66.211.160.0/21 NetName: EBAY-2 NetHandle: NET-66-211-160-0-1 Parent: NET66 (NET-66-0-0-0-0) NetType: Direct Assignment OriginAS: Organization: eBay, Inc (EBAY) RegDate: 2006-01-25 Updated: 2015-03-12 |
А использовав WHOIS для доменного имени, можно получить информацию о DNS-сервере для данного домена (на примере Hackerone):
1 |
whois hackerone.com |
1 2 3 4 |
... Name Server: A.NS.HACKERONE.COM Name Server: B.NS.HACKERONE.COM ... |
Существует множество сервисов, которые позволяют искать по истории WHOIS, например: www.whoishistory.ru, www.domainhistory.net.
Перейдем к DNS. В DNS содержится множество записей различного вида, поэтому за полным описанием лучше обратиться к Wikipedia. Что же полезного в применении к нашей ситуации там содержится?
Во-первых, A и AAAA записи, содержащие IP-адреса для данного доменного имени, во-вторых, MX, SOA, SRV, NS записи, которые могут содержать информацию о дополнительных доменах, а также TXT, которая содержит произвольные данные, например, там размещаются так называемые SPF-записи. Пример SPF-записи для kaimi.io:
Получить содержимое какой-либо из записей можно с помощью стандартных утилит Linux:
1 |
dig -t AAAA kaimi.io |
1 |
host -t AAAA kaimi.io |
AAAA - тип записи. Особых отличий в результате использования данных утилит не наблюдается. Не стоит забывать о таком типе запросов к DNS, как AXFR:
1 |
dig axfr domain.com @ns.domain.com |
Это реальная возможность получить кучу полезной информации о доменах, которая редко работает, а если работает, то чаще в какой-то внутренней сети компании. Почему? Это довольно грубая ошибка при конфигурировании DNS-сервера.
Если у вас нет под рукой Linux, то можно воспользоваться онлайн сервисом: mxtoolbox.com. Как и в случае с WHOIS, существует множество сервисов, которые отслеживают изменения в DNS, например: whatmyip.co, viewdns.info, ptrarchive.com, dnstrails.com, dnshistory.org.
4. Всякое разное
Какие еще существуют варианты обнаружения доменов, IP-адресов? В случае с Cloudflare может пригодиться этот ресурс - www.crimeflare.com, также на форуме exploit.in мелькала услуга определения реального IP, которая выполняется каким-то альтернативными методами. Если веб-сайт обладает формой, где предполагается указать свой e-mail адрес, чтобы впоследствии получить на него письмо, то это тоже может помочь в виду возможного раскрытия IP в служебных заголовках. Ниже приведен пример письма, отправляемого при регистрации на forum.kaimi.io.
1 2 3 4 |
Received: from kaimi.io (kaimi.io [188.226.181.78]) by harakamonstr.temp-mail.org (Haraka/2.8.10) with ESMTP id 7302E56B-344B-4B5E-A1F1-FC85FACFC64F.1 envelope-from <info@kaimi.io>; Tue, 25 Jul 2017 13:14:19 -0400 |
Самая первая строчка выдает реальный IP-адрес веб-сервера, на котором размещены блог и форум.
Иногда сайт содержит некоторую логику, которая предполагает совершение HTTP/DNS/каких-либо еще запросов к заданным сайтам (например, если требуется подтвердить владение сайтом путем размещения на нем файла или путем создания дополнительной записи в DNS, что впоследствии проверяется). Может помочь публично доступный скрипт, содержащий phpinfo или страница server-status, но это уже можно отнести к уязвимостям. И, наконец, не стоит забывать о банальном анализе HTML-кода, JS-скриптов и CSS-стилей, которые используются на ресурсе, вдруг где-то что-то полезное обнаружится. Вот и все на сегодня. Конечно, как и везде, существуют нюансы, ситуации, которые в данной статье не рассматриваются, но я надеюсь, что и эта информация окажется для кого-то полезной.
Не знаю, читал ты или нет, но прочтение этих статей позволило мне создать тул, который находит больше поддоменов автоматически, чем я руками за то же время.
https://forum.bugcrowd.com/t/subdomain-discovery/1186
https://shubs.io/high-frequency-security-bug-hunting-120-days-120-bugs/ | grep -i "Assetnote\|Altdns"
Наконец-то обновление в блоге ;-)
В начале статьи ты сказал, что успел поучаствовать в CTF. Расскажи, пожалуйста, в каких именно соревнованиях принимал участие: в оффлайне посещал какие-то ивенты или на онлайн ресурсах?
Ты скорее всего уже её прочёл, но весьма в тему будет книжка "Web Hacking 101: How to make money hacking ethically".
В основном онлайн. Принимал участие где-то в 70-80% соревнований отсюда https://ctftime.org/team/826 (за 2016 год).
Книгу не читал, но посмотрю, спасибо)
Это какая то скрытая реклама блога того задрота который начитавшись лурка начал тупо косить под Kaimi и Dx?
Что такое ctf, пентест, нахрена это все?
Это когда весь день сидишь и http://coub.com/view/c1c5j
Давно на .io переехал? Я уж испугался, что сайт был уничтожен, когда из закладок http://kaimi.ru/ не открылся. Нашёл через гугл на домене .io
kaimi.ru у меня открывается и редиректит на kaimi.io.
А можете подсказать с чего начать, чтобы шарить в пентестах, да и даже элементарно на CTF уметь что-то сделать. Кодить умею, но наткнувшись на этот сайт - я понял что я полное дно. Теперь надо наверстать упущенное.
Попробовать попроходить
http://training.hackerdom.ru/board/
http://overthewire.org/wargames/bandit/
https://ringzer0team.com/challenges
потом
https://lab.pentestit.ru/
для прошлых версий лабораторий есть райтапы, которые имеет смысл просмотреть
Спасибо !
Sublist3r забыли.
Спасибо, давно тут не был, помнишь меня может по айпишке)
Незнаю почему но эта йоба %% часто помогает посмотреть какой вебсервер стоит + версию apache или nginx http://dnstrails.com/%%
Под старые nginx есть много эксплойтов, в том числе и ddos и магическое проникновение
Пиши еще
ps: Beautifull
Привет. Продолжение по пентесту планируете писать ?
Привет. Планирую, но через некоторое время
https://h-xtech.com/ru/scan
Автоматическое сканирование сайта на проникновение