- •Отзывы и пожелания
- •Список опечаток
- •Нарушение авторских прав
- •Предисловие
- •Кому адресована эта книга
- •О чем идет речь в книге
- •Как извлечь максимум из книги?
- •Загрузка примеров
- •Загрузка цветных изображений
- •Условные обозначения
- •Атаки на веб-приложения. Введение
- •Правила применения оружия
- •Вопросы конфиденциальности данных
- •Очистка
- •Инструментарий тестировщика
- •Kali Linux
- •Альтернативы Kali Linux
- •Прокси-сервер
- •Burp Suite
- •Zed Attack Proxy
- •Облачная инфраструктура
- •Дополнительные источники
- •Упражнения
- •Резюме
- •Глава 2
- •Эффективное обнаружение
- •Типы тестирования
- •Построение карты сети
- •Masscan
- •hatWeb
- •Nikto
- •CMS-сканеры
- •Эффективная атака методом полного перебора
- •Средства сканирования
- •Постоянное картирование контента
- •Обработка полезной нагрузки
- •«Полиглот»
- •Запутывание (обфускация) кода
- •Дополнительные источники
- •Упражнения
- •Резюме
- •Глава 3
- •Легкая добыча
- •Анализ сети
- •Ищем вход
- •Определение учетных данных
- •Есть способ получше
- •Очистка
- •Дополнительные ресурсы
- •Резюме
- •Глава 4
- •Продвинутые способы атаки с использованием метода полного перебора
- •Распыление подбора пароля
- •Спросим LinkedIn
- •Метаданные
- •Кассетная бомба
- •За семью прокси-серверами
- •ProxyCannon
- •Резюме
- •Глава 5
- •Внедрение файлов
- •Удаленное внедрение файлов
- •Локальное внедрение файлов
- •Внедрение файла для удаленного выполнения кода
- •Резюме
- •Обнаружение и эксплуатация уязвимостей в приложениях с помощью внешних сервисов
- •Распространенный сценарий
- •Командно-контрольный сервер
- •Центр сертификации Let’s Encrypt
- •INetSim
- •Подтверждение
- •Асинхронное извлечение данных
- •Построение выводов на основе анализа данных
- •Резюме
- •Расширение функциональных возможностей Burp Suite
- •Нелегальная аутентификация и злоупотребление учетными записями
- •Швейцарский нож
- •Запутывание кода
- •Collaborator
- •Открытый сервер
- •Выделенный сервер Collaborator
- •Резюме
- •Глава 8
- •Вредоносная сериализация
- •Использование десериализации
- •Атака на пользовательские протоколы
- •Анализ протокола
- •Эксплойт для осуществления атаки
- •Резюме
- •Практические атаки на стороне клиента
- •Правила ограничения домена
- •Совместное использование ресурсов разными источниками
- •Межсайтовый скриптинг
- •Постоянный XSS
- •DOM-модели
- •Межсайтовая подделка запроса
- •BeEF
- •Перехват
- •Атаки с применением методов социальной инженерии
- •Кейлоггер
- •Закрепление в системе
- •Автоматическая эксплуатация
- •Туннелирование трафика
- •Резюме
- •Практические атаки на стороне сервера
- •Внутренние и внешние ссылки
- •Атаки XXE
- •Атака billion laughs
- •Подделка запроса
- •Сканер портов
- •Утечка информации
- •«Слепой» XXE
- •Удаленное выполнение кода
- •Резюме
- •Глава 11
- •Атака на API
- •Протоколы передачи данных
- •SOAP
- •REST
- •Аутентификация с помощью API
- •Базовая аутентификация
- •Ключи API
- •Токены на предъявителя
- •Postman
- •Установка
- •Вышестоящий прокси-сервер
- •Среда выполнения
- •Коллекции
- •Запуск коллекции
- •Факторы атаки
- •Резюме
- •Глава 12
- •Атака на CMS
- •Оценка приложения
- •WPScan
- •sqlmap
- •Droopescan
- •Arachni
- •Взлом кода с помощью бэкдора
- •Закрепление в системе
- •Утечка учетных данных
- •Резюме
- •Глава 13
- •Взлом контейнеров
- •Сценарий уязвимости в Docker
- •Осведомленность о ситуации
- •Взлом контейнера
- •Резюме
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
Построение карты сети |
||||
|
|
|
|
|
|
g |
|
|
||
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
Построение карты сети 33 BUY |
|
|
|||||||
|
|
|
|
|
|||||
w Click |
to |
|
|
|
|
m |
|||
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Традиционный nmap всего диапазона портов с обнаружением служб всегда является неплохой отправной точкой для сбора информации о жертве. Nmap – этосредствосканированиясетей,котороеиспользуетсянапротяжениимногих лет. Это по-прежнему очень мощная и очень актуальная утилита, доступная большинству платформ, в том числе Kali, BlackArch и даже Windows.
Metasploit Framework (MSF)–это фреймворк длятестирования на проникновение,обычно используемый специалистами по информационной безопасности. Помимо того что он представляет собой фантастическую коллекцию простых в использовании эксплойтов,он также поможет при организации наших заданий. При построении карты сети можно использовать функцию рабочего пространства и аккуратно сохранять результаты сканирования Nmap в базе данных.
Если экземпляр Kali Linux является свежим или Metasploit был установлен недавно, базу данных может понадобиться подтолкнуть,чтобы запустить.
В командной строке Kali запустите службу PostgreSQL с помощью команды service. В случае успеха не должно возвращаться никакое сообщение.
root@kali:~# service postgresql start root@kali:~#
Затем можно запустить Metasploit с помощью команды msfconsole, которая выведет нас в подприглашение с префиксом msf вместо традиционного приглашения bash.
root@kali:~# msfconsole [...]
msf > db_status
[*] postgresql selected, no connection msf >
Предыдущая серия команд запустила службу базы данных PostgreSQL, которую Metasploit использует как хранилище. Консоль Metasploit запущена, и мы можем проверить состояние базы данных с помощью команды db_status.
Можно использовать команду exit для возврата в терминал bash:
msf > exit root@kali:~#
ТеперьможноиспользоватькомандуMetasploitmsfdb,котораяпоможетнам инициализировать (init) базу данных.
root@kali:~# msfdb init Creating database user 'msf'
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
||||
w Click |
to |
BUY 34 Глава 2.Эффективное обнаружение |
||||||||
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
|
|
e |
|
|
|
|
|
|
Enter password for new role: |
||||||
|
|
|
|
|
n |
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
Enter it |
again: |
Creating |
databases 'msf' and 'msf_test' |
Creating |
configuration file in |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
/usr/share/metasploit-framework/config/database.yml
Creating initial database schema root@kali:~#
Команда msfdb создает все необходимые файлы конфигурации, чтобы Metasploit могподключаться к базеданных.Подчеркнем: мы можем запустить консоль Metasploit, используя команду msfconsole в командной строке Linux.
root@kali:~# msfconsole [...]
msf >
Файл конфигурации базы данных формата YML, созданный с помощью команды msfdb init, можно передать в консольную команду db_connect как ключ –y.
msf > db_connect -y
/usr/share/metasploit-framework/config/database.yml
[*]Rebuilding the module cache in the background...
msf > db_status
[*]postgresql connected to msf
msf >
Теперь можем создать рабочее пространство для целевого приложения, которое поможет собрать результаты из различных модулей MSF, сканирования или эксплойтов.
msf > workspace -a target1 [*] Added workspace: target1 msf > workspace
default
* target1
Команда workspace без каких-либо параметров выведет список доступных рабочих областей, помечая активную звездочкой. На этом этапе можем начать сканирование Nmap из MSF. Команда db_nmap является оболочкой для инструментасканированияNmap.Разницавтом,чторезультатысканирования анализируются и хранятся в базе данных Metasploit для удобного просмотра.
Команда db_nmap отMSF используетте же параметры,что и обычная команда nmap.В приведенном ниже примере сканируем общие порты и опрашиваем запущенные службы.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
C |
E |
|
|
|
|||||||
|
|
X |
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
F |
|
|
|
|
|
|
|
t |
|
|||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
|
NOW! |
|
o |
P |
|
|
|
|
|
NOW! |
o |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
BUY |
|
|
|
Построение карты сети 35 BUY |
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
w Click |
to |
|
|
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
m |
w Click |
|
|
|
|
|
|
|
m |
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
|||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
e |
Целью сканирования является внутренний хост10.0.5.198.Мы приказыва- |
|
|
e |
|
|||||||||||
|
|
|
df |
|
|
n |
|
|
|
|
|
|
|
|
df |
|
|
n |
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
ем Nmap выполнить сканирование службы (-sV) без проверки связи с хостами (-Pn) и использования подробного вывода (-v).
msf > db_nmap -sV -Pn -v 10.0.5.198
[...]
[*]Nmap: Scanning 10.0.5.198 [1000 ports]
[*]Nmap: Discovered open port 3389/tcp on 10.0.5.198
[*]Nmap: Discovered open port 5357/tcp on 10.0.5.198
[*]Nmap: Completed SYN Stealth Scan at 19:50, 12.05s elapsed (1000 total ports)
[*]Nmap: Initiating Service scan at 19:50
[...]
После завершения сканирования можно запросить и отфильтровать результаты с помощью команды services. Например, можно найти все HTTPслужбы,обнаруженные с помощью ключа –s.
msf > services -s http Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
10.0.5.198 5357 tcp http open Microsoft HTTPAPI httpd 2.0
SSDP/UPnP
Обратите внимание на область действия, предоставляемую клиентом. Некоторые будут конкретно ограничивать тестирование приложения одним портом, а иногда даже только одним поддоменом или URL-адресом. Часто используемый термин scoping call – это то место, где клиента следует убедить не ограничивать поверхность атаки,доступную для тестировщика.
Masscan
Nmap – полнофункциональный инструмент с кучей опций и возможностей, ноунегоестьоднапроблема:небольшаяскорость.Приработесозначительными сегментами сети Nmap может быть очень медлительным, а иногда вообще отказывается работать. Клиенты нередко просят провести тест на проникновение для огромного IP-пространства за небольшое количество времени, выделенное для фазы картирования и сканирования.
masscan может просканировать все интернет-пространство IP за шесть минут.Это впечатляет,и,masscan,безусловно,является одним из самых быстрых сканеров портов.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
F |
|
|
|
|
|
|
|
t |
|
|||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
NOW! |
|
o |
P |
|
|
|
|
|
NOW! |
o |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
BUY |
|
|
|||||||||
w Click |
to |
BUY 36 Глава 2.Эффективное обнаружение |
w Click |
to |
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
m |
||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
|||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
e |
Во время выполнения задания сначала мы, возможно, нацелимся на веб- |
|
|
|
e |
|
||||||||||
|
|
|
df |
|
|
n |
|
|
|
|
|
|
|
|
df |
|
|
n |
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
приложения, и masscan быстро вернет все открытые веб-порты с помощью всего пары ключей.
С помощью знакомого ключа -p можно указать серию или диапазон портов, которые нужно искать. Ключ --banners попытается получить информацию обо всех открытых портах, которые были обнаружены. Для больших IPпространств, где время имеет существенное значение, можно использовать ключ --rate, чтобы указать большое число пакетов в секунду, например миллион или больше.
Рис.2.1. Сканирование сети 10.0.0.0/8 с использованием masscan
Видно, что предыдущее сканирование было отменено досрочно с помощью прерывания Ctrl+C, и masscan сохранил свою работу в файле paused.conf, чтобы мы могли возобновить сканирование позже.Чтобы узнать,где мы остановились, можно использовать ключ --resume, передав в качестве параметра
файл paused.conf.
Рис.2.2. Возобновление сеанса masscan