- •Отзывы и пожелания
- •Список опечаток
- •Нарушение авторских прав
- •Предисловие
- •Кому адресована эта книга
- •О чем идет речь в книге
- •Как извлечь максимум из книги?
- •Загрузка примеров
- •Загрузка цветных изображений
- •Условные обозначения
- •Атаки на веб-приложения. Введение
- •Правила применения оружия
- •Вопросы конфиденциальности данных
- •Очистка
- •Инструментарий тестировщика
- •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 |
|
|
|
Глава 3 |
||||
|
|
|
|
|
|
g |
|
|
||
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
Легкая добыча
|
|
|
|
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 |
|
|
|
|
Часто клиенты обращаются к специалистам по информационной безопасности с просьбой выполнить тест на проникновение для приложения. Во многих случаях тестировщику предоставляется мало информации, если таковая вообще имеется,и приходится использовать подход «черный ящик».Это может затруднить процесс тестирования, особенно когда разведка на основе открытых источников не особо помогает, или интерфейс не интуитивен либо не удобен для пользователя,что происходит, когда вы имеете дело с API.
Всценарии, представленном в этой главе, мы сталкиваемся именно с такой проблемой. Вместо того чтобы детально изучать внутреннее устройство API
ипытаться провести реверс-инжиниринг его функциональных возможностей, неимеяособыхпредварительныхзнаний,можноначатьспоискалегкойдобычи.Надеемся,чтоеслимыпойдемпопути,покоторомуврядлипойдутсотрудники службы информационной безопасности,в конечном итоге мыдоберемся дооткрытогозаднегоокнаиобойдемстальнуюдверьтолщинойвчетырефута, защищающую вход.
Вэтой главе рассмотрим следующие темы:
анализ состояния безопасности сервера приложений на предмет наличия альтернативных маршрутов для компрометации;
атаки на службы методом полного перебора;использование уязвимостей в смежных службах для компрометации
объекта атаки.
Анализ сети
Изпредыдущихглавмыузнали,чтофункциярабочегопространстваMetasploit может быть очень полезной. В следующем задании мы также будем использовать его. Сначала нам нужно запустить консоль из терминала с помощью команды msfconsole. Как только Metasploit завершит загрузку, появится привычное приглашение msf>.
root@kali:~# msfconsole
[*] StarTing the Metasploit Framework console...
msf >
|
|
|
|
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 |
|
|
|
Анализ сети 71 BUY |
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
w Click |
to |
|
|
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
m |
w Click |
|
|
|
|
|
|
|
m |
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
|||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
e |
Как и во всех проектах, связанных с Metasploit, начнем с создания рабочей |
|
|
e |
|
|||||||||||
|
|
|
df |
|
|
n |
|
|
|
|
|
|
|
|
df |
|
|
n |
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
области.
msf > workspace -a ecorp
[*]Added workspace: ecorp
Вэтом сценарии нашей целью будет API, предоставляемый E Corp. («Корпорация зла»), внутреннее устройство которого неизвестно, а api.ecorp.local будет хостом, выбранным нами в качестве цели атаки.
Прежде чем разбираться с веб-интерфейсом и пытаться эксплуатировать какую-либо скрытую уязвимость, сделаем шаг назад и посмотрим, какие другие сервисы доступны на сервере API. Надеемся, что хотя сам API мог быть тщательно изучен разработчиками, которые серьезно относятся к вопросам безопасности на протяжении жизненного цикла разработки, при развертывании самого сервера могли быть допущены ошибки. Существует множество аспектов усиления защиты системы, которые просто невозможно контролировать в репозитории исходного кода. Это особенно верно, когда сервер, содержащий целевое приложение, является общим ресурсом, что увеличивает вероятность того, что политика безопасности системы со временем ослабнет, так как с ней взаимодействуют разные группы с разными требованиями. Возможно,существуетнекийэкземплярразработкисменеестрогимиэлементами управления, работающими на нестандартном порту, или заброшенное и уязвимое приложение,которое предоставит нам (как злоумышленникам) требуемый доступ, и мы легко скомпрометируем жертву.
Как всегда, Nmap – наш любимый инструмент для построения карты сети, и в сочетании с рабочим пространством Metasploit он становится еще более мощным.Спомощьюкомандыdb_nmap можнопросканироватьхостнапрямую из консоли. Опции Nmap, которые мы будем использовать для обнаружения открытых портов и запроса служб для получения дополнительной информации, подробно описаны далее.
-sV будет велеть Nmap выполнять сканирование версий любых идентифицированных служб,а -A предоставитнам возможностьснятьотпечатки хоста в попытке обнаружить операционную систему. Опция -T4 используется для того,чтобызаставитьNmapбытьболееагрессивнымприсканированиисети.Это повышает скорость сканирования при угрозе обнаружения системами обнаружения вторжений. Та же опция с цифрой поменьше, например -T1, сделает сканирование в некоторой степени более параноидальным. Хотя на это уйдет больше времени, оно позволит нам оставаться незамеченными еще дольше. Опция -Pn не даст Nmap выполнить пинг целевого объекта.Пингование на самом деле не требуется, если мы не сканируем широкий диапазон адресов и не ищем только те хосты, которые находятся в сети. Наконец, -p1- – это сокращенная форма -p1-65535, приказывающая Nmap сканировать все возможные
порты. Безымянный параметр– это наша цель, api.ecorp.local.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
||
P |
|
|
|
|
NOW! |
o |
|
||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
||||
w Click |
to |
BUY 72 Глава 3.Легкая добыча |
|||||||||
|
|
|
|
|
|
m |
|
||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
|
|
e |
|
db_nmap -sV -A -T4 -Pn -p1- api.ecorp.local |
|
|
|
|
|
msf > |
|||||||
|
|
|
|
|
n |
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
[*]Nmap: Starting Nmap 7.40 ( https://nmap.org ) [...]
[*]Nmap: Nmap done: 1 IP address (1 host up) scanned in 206.07
seconds msf >
|
|
|
|
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 |
|
|
|
|
Поскольку мы используем команду Metasploit db_nmap, результаты автоматически анализируются и записываются в базу данных нашего рабочего пространства.После завершения сканирования можем просмотреть записи в базе данных, введя команду services.
msf > services |
|
|
Services |
|
|
======== |
|
|
host |
port proto name |
state info |
-------- ----- ---- ----- ----
10.0.5.198 |
80 |
tcp |
http |
open |
Apache httpd 2.4.26 |
(Win32) OpenSSL/1.0.2l PHP/5.6.31 |
|
|
|||
10.0.5.198 |
3306 |
tcp |
mysql |
open |
MariaDB unauthorized |
Похоже,чтодоинсталляцииMySQLможнодобраться,поэтомубылобыочень полезно получить к нему доступ. Nmap определил его как сервис MariaDB, который является разрабатываемым сообществом ответвлением от системы управления базами данных MySQL.Если нам очень повезет,то этот экземпляр окажется устаревшим и в нем, вполне вероятно, окажется какая-нибудь легко эксплуатируемая уязвимость, которая обеспечит нам мгновенный доступ. Чтобы выяснить это, используем номер версии базы данных и прогоним его по базе данных общеизвестных уязвимостей информационной безопасности (CVE) в надежде обнаружитьв открытомдоступе какой-нибудьпригодныйдля эксплуатации код.
Вместо того чтобы идти напрямую, через порт 80, атакуем приложение через открытые службы MySQL (MariaDB), как показано на рисунке.
Порт 3306
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MySQL |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
База |
|
|
|
|
|
|
|
|
данных |
|
|
Порт 80 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Злоумышленник |
|
|
|
|
|
|
||
|
|
|
API сервера |
|
|
|||
|
|
|
|
|
|
|||
|
|
|
|
приложений |
|
|
Рис.3.1. Альтернативный способ компрометации
|
|
|
|
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 |
|||
|
|
|
|
|
|
||||
Анализ сети 73 BUY |
|
|
|||||||
|
|
|
|
|
|||||
w Click |
to |
|
|
|
|
m |
|||
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Поскольку сканирование Nmap недало сведений о конкретной версии,можнобыстрозапуститьдетальныйтестверсиидляслужбыMySQL,используяпару команд Metasploit.
Сначала загружаем точно названный модуль вспомогательного сканера mysql_version. Команда use, за которой следует путь к модулю auxiliary/ scanner/mysql/mysql_version, загрузит модуль в текущем сеансе. Мы можем просмотреть дополнительную информацию о модуле mysql_version, выполнив команду show info, как показано на скриншоте.
Рис.3.2. Информация о модуле mysql_version
Basic options: здесь будут перечислены переменные, которые нам нужно обновить, чтобы модуль работал правильно. Параметры RHOSTS, RPORT и THREADS необходимы для данного конкретного сканера. RHOSTS, или удаленныехосты,иRPORT,илиудаленныйпорт,говорятсамизасебя.ВопцииTHREADS можноиспользоватьчислопобольше,чтобыувеличитьскоростьсканирования, но,таккакмынацеленытольконаодинудаленныйхост,api.ecorp.local,нам хватит одного потока сканирования.
После загрузки модуля можем установить требуемую переменную RHOSTS для соответствующей цели. Поскольку объект атаки уже просканирован с помощью команды db_nmap, а результаты находятся в рабочей области ecorp, используем команду services для автоматической установки переменной RHOSTS для всех найденных серверов MySQL.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
|
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
||
P |
|
|
|
|
NOW! |
o |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
Глава 3.Легкая добыча |
|
|
||||
w Click |
to |
BUY 74 |
|
|
|||||||||
|
|
|
|
|
|
m |
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
|
|
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
df |
|
|
|
|
e |
|
|
services -s mysql -R |
||
|
|
|
|
msf auxiliary(mysql_version) > |
|||||||||
|
|
|
|
|
n |
|
|
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
||
|
|
|
|
|
Services |
|
|
||||||
|
|
|
|
|
======== |
|
|
||||||
|
|
|
|
|
host |
port proto name |
state |
info |
-------- ----- ---- ----- ----
10.0.5.198 3306 tcp mysql open MariaDB unauthorized
RHOSTS => 10.0.5.198
msf auxiliary(mysql_version) >
|
|
|
|
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 |
|
|
|
|
Команда services принимает несколько опций для лучшей фильтрации и получения результатов.
Опция -R задает для переменной RHOSTS текущего модуля значения, возвращаемые запросом. В этом случае мы могли бы так же легко набрать хост вручную,но приболее широкомохватеданнаяконкретная опциябудетвесьма кстати.
Существуют и другие способы опроса служб в рабочей области. Например, в предыдущем вводе командной строки мы использовали опцию -s, которая фильтрует все хосты, на которых работает MySQL, в качестве идентифицированной службы.
Если мы знаем, что будем атаковать тот же хост, используя другие модули Metasploit, то неплохо бы установить для глобальной переменной RHOSTS то же значение. Это обеспечит автоматическое заполнение значения RHOSTS при переключении модулей. Можно сделать это с помощью команды setg.
msf auxiliary(mysql_version) > setg RHOSTS 10.0.5.198 RHOSTS => 10.0.5.198
msf auxiliary(mysql_version) >
Теперь осталось только запустить модуль mysql_version в надежде получить какую-нибудь полезную информацию, как показано на скриншоте.
Рис.3.3. Запуск модуля mysql_version