Вступление
Автор — новичок, только начинающих изучать пентест, приведённые ниже материалы являются моими заметками, сделанными по ходу практики. Они не полны, прошу опытных специалистов указать на ошибки.
I. Сбор базовой информации
(I) Сбор доменов
-
Сбор доменов: Помимо стандартных методов, используйте такие инструменты, как DomainTools, SpyOnWeb для получения исторических Whois-записей домена, просмотра изменений прав собственности и истории DNS-разрешений, чтобы выявить потенциальную информацию.
-
Поддомены
-
Синтаксис Google Search: Умейте использовать специальные синтаксические конструкции, например, «site: целевой_домен -www» для поиска некоторых поддоменов.
-
Погонопространственные поисковые системы: Например, ZoomEye, Shodan и другие, для обнаружения поддоменов с точки зрения поиска в киберпространстве.
-
OneForAll: Поддерживает множество источников данных, позволяет гибко настраивать параметры для эффективного сбора поддоменов.
-
Subdomainsbrute: Многопоточное сканирование, оптимизация словаря и количества потоков для повышения эффективности сканирования.
-
Subdomain3: Повышение обнаружения поддоменов за счёт постоянного обновления словаря и корректировки стратегии сканирования.
-
SubFinder + KSubdomain + HttpX: Комбинирование преимуществ инструментов. SubFinder быстро обнаруживает поддомены, KSubdomain углублённо исследует их, а HttpX проверяет их доступность.
-
(II) IP и CDN
-
Обход реального IP и CDN
-
Получение реального IP
-
Метод ping: Первоначальное определение типа операционной системы на основе значения TTL, что помогает в локализации, но имеет ограничения. Не позволяет обойти CDN.
-
Метод nslookup: Запрос DNS-записей для получения IP-адреса. В некоторых случаях подвержен влиянию CDN. Не позволяет обойти CDN.
-
Онлайн-инструменты: Инструменты для вебмастеров удобны и быстры, но точность результатов требует дополнительного подтверждения.
-
Инструмент traceroute: В системах Linux и macOS отслеживание маршрута пакетов позволяет попытаться обойти CDN и найти реальный IP.
-
Заголовки электронной почты: Если у цели есть почтовый сервис, анализ заголовков писем может помочь получить IP-адрес почтового сервера, который может быть реальным IP или связанным IP.
-
Обход CDN:
- Использование
-
-
Инструменты обнаружения CDN: Сравнение CloudFlare Radar, специализирующегося на обнаружении CDN CloudFlare, и CDNView, охватывающего многих основных поставщиков CDN, повышает надёжность обнаружения при сочетании нескольких инструментов.
-
II. Информация о сетевой и системной архитектуре
(I) Порты и сетевые службы
-
Порты и сетевые службы
-
Сканирование портов: Использование nmap, выбор метода сканирования в зависимости от цели, например, TCP SYN-сканирование (-sS) обладает хорошей скрытностью; комбинация со скриптами сканирования (-sC) и определением версий (-sV) для получения подробной информации о службе.
-
Сетевая топология: Использование SolarWinds Network Topology Mapper для автоматического обнаружения устройств и построения карты топологии; Netdiscover специализируется на обнаружении устройств локальной сети для помощи в построении.
-
(II) Система и промежуточное ПО
-
Операционная система
-
Определение через ping: Значение TTL у Windows обычно равно 128, у Linux — 64. Значение TTL больше 100 обычно указывает на Windows, а значение в несколько десятков — на Linux. При пинге IPv6 значение TTL отсутствует, можно пинговать только IPv4. Обычно не очень точно.
-
nmap: Получение информации об операционной системе путём сканирования.
Команда: nmap -o IP
Может быть заблокирован некоторыми механизмами защиты при сканировании. -
Чувствительность к регистру: Windows нечувствителен к регистру, Linux чувствителен. При попытке доступа к файлам или каталогам на целевой системе, если наблюдается нечувствительность к регистру, скорее всего, это Windows; наоборот, скорее всего, это Linux.
-
Инструмент p0f: Пассивный перехват сетевого трафика, анализ характеристик пакетов для определения типа, версии операционной системы и сетевых настроек.
-
-
Промежуточное ПО и контейнеры
-
Просмотр поля Server в заголовках ответа через F12: Переключение на вкладку сети, обновление страницы для поиска начального запроса и просмотра поля «server» для определения. Например, если отображается «Apache», возможно, используется веб-сервер Apache HTTP.
-
Онлайн-инструменты: WhatWeb, Wappalyzer могут идентифицировать различные технологические компоненты.
-
Анализ страниц ошибок: Различное промежуточное ПО и контейнеры имеют характерные страницы ошибок с определённой информацией и макетом. Например, страница ошибки Tomcat содержит информацию о версии.
-
(III) Тип веб-сервиса, тип контейнера, тип скрипта
-
В разделе «Сеть» в F12 наблюдайте за расширениями загружаемых файлов: Например, .js — это файл JavaScript, .php — файл скрипта PHP.
-
Анализ содержимого ответа и поведения запроса: Определённые признаки синтаксиса скриптов или меток в содержимом ответа веб-страницы позволяют сделать вывод. Например, появление тега «» на HTML-странице.
-
Определение типа контейнера:
- Просмотр поля Server в заголовках ответа:
Если отображается «Apache», возможно, используется контейнер на базе Apache.
Если отображается «Nginx», возможно, используется контейнер на базе Nginx.
Использование whatweb.
- Просмотр поля Server в заголовках ответа:
-
Определение типа скрипта:
-
По расширениям файлов:
.jsp, .asp, .aspx, .php -
По информации об ответе сервера:
Можно посмотреть значение cookie.
Можно проанализировать значение Server. -
Онлайн-инструменты: whatweb.
-
По типу сервера:
IIS: обычно связан с .asp или .aspx.
Tomcat, Resin, JBoss: обычно связаны с .jsp.
Nginx: может работать с различными языками скриптов, такими как PHP, Python и др. Nginx — это высокопроизводительный веб-сервер, часто используемый в связке с PHP-FPM для запуска PHP-скриптов; также может выступать в качестве обратного прокси-сервера для приложений на других языках (например, фреймворках Flask и Django на Python).
-
(IV) Тип базы данных
-
Распространённые типы баз данных: Oracle, MySQL, SQL Server, PostgreSQL и др.
-
Типы баз данных на стороне клиента: ASP соответствует SQL Server, Access; .NET — SQL Server; PHP — MySQL, PostgreSQL; Java — Oracle, MySQL.
-
Распространённые порты баз данных: Oracle — 1521, MySQL — 3306, SQL Server — 1433, PostgreSQL — 5432, MongoDB — 27017.
-
Методы определения:
-
Использование инструмента: whatweb.
-
Определение SQL-инъекций.
-
(V) Идентификация CMS
-
CMS: Система управления контентом используется для управления статьями и контентом сайта. Распространённые: WordPress, Joomla, Drupal, DedeCMS (Ткацкий станок), Discuz, phpcms и др.
-
Инструменты обнаружения и идентификации CMS: CMSeeK, joomscan, wpscan, TPscan и др.
III. Информация о бизнесе и приложениях
(I) Конфиденциальные каталоги и файлы
-
Распространённые конфиденциальные файлы или каталоги: robots.txt, crossdomain.xml, sitemap.xml, каталог административной панели, каталог установки сайта и др.
-
Утечка исходного кода
-
Утечка через GitHub: Разработчики загружают код, не удалив важную информацию.
-
Утечка .git
-
Причины и опасность: Неправильная конфигурация при автоматическом развертывании с использованием git для контроля версий приводит к развёртыванию файлов .git на production-сервере, что вызывает утечку исходного кода. Атакующий может провести аудит кода и выявить уязвимости.
-
Методы защиты: Удаление папки .git при развертывании, блокировка доступа к каталогу .git в конфигурации nginx, регулярная проверка и очистка конфиденциальных файлов и каталогов, защита резервных файлов сайта надёжными паролями и их безопасное хранение.
-
-
-
Сканирование каталогов: Инструменты включают feroxbuster, dirb, dirsearch, dirmap, dirBuster, Yujian и др. Выберите подходящий словарь в зависимости от цели, настройте количество потоков сканирования и время ожидания.
-
Google Hacking: Использование специального синтаксиса поиска для выявления конфиденциальной информации, например, «inurl:admin login» для поиска URL, содержащих определённые ключевые слова.
(II) Уязвимости и меры защиты
-
Сканирование уязвимостей: OpenVAS — открытый инструмент, активное сообщество, быстрое обновление базы правил. Настройте стратегию сканирования в зависимости от цели.
-
Идентификация WAF
-
wafw00f: Адрес инструмента https://github.com/EnableSecurity/wafw00f, https://www.kali.org/tools/wafw00f/.
-
Скрипты Nmap: Использование nmap -sV --script=http-waf-detect <целевой_IP> для обнаружения.
-
Ручное тестирование: Отправка атакующих запросов и наблюдение за ответом цели для определения WAF и уровня защиты.
-
IV. Информация о предприятии и социальной инженерии
(I) Архитектура предприятия и данные о персонале
-
Профиль организации: Запрос информации о дочерних компаниях, партнёрах, поставщиках, внимание к отраслевым тенденциям, слияниям и поглощениям, проектам и сотрудничеству для выявления потенциальных точек атаки.
-
Информация о персонале: Сбор через социальные сети, утечки кода на GitHub или исторические базы паролей; использование Maltego для интеграции и связывания информации, построения сети отношений.
V. Конфиденциальная информация и эксплуатация уязвимостей
(I) Бизнес-логика и права доступа
-
Точки входа в систему: Исследование адресов административной панели, API-интерфейсов и учётных данных по умолчанию; анализ структуры URL и ресурсных файлов для поиска скрытых точек входа.
-
Пути повышения привилегий: Анализ ролей пользователей, использование Burp Suite для перехвата пакетов и изменения параметров для тестирования уязвимостей несанкционированного доступа; поиск возможностей повышения привилегий в сочетании с бизнес-логикой.
(II) Связь с историческими уязвимостями
-
Уязвимости аналогичных систем: Использование баз данных CVE Details, SecurityFocus и других для поиска уязвимостей аналогичных систем; внимание к предупреждениям и рекомендациям по исправлению от производителей безопасности и сообществ.
-
Несколько приёмов для уязвимостей EDU (образовательных учреждений)
-
Проводите обычный сбор доменов, IP, портов, каталогов и др., обращайте внимание на публикации студентов в социальных сетях для поиска утечек информации.
-
На сайте университета выполняйте поиск по официальным объявлениям, в публикациях официальных аккаунтов ищите номера студенческих билетов, находите инструкции по эксплуатации и адреса электронной почты. Используйте синтаксис поиска site:example.com login | admin | номер_студента | стипендия | номер_идентификации | аккаунт | пароль | admin | login. body=“login”
-
Публикация объявлений о подработке для получения персональных данных (данный метод сопряжён с юридическими рисками, приводится только в целях технического обсуждения).
-
Попробуйте войти в систему, собрав информацию; проверьте параметры на периферийных активах на использование паролей по умолчанию.
-