+ All Categories
Home > Documents > Уязвимости веб-сервисов

Уязвимости веб-сервисов

Date post: 16-Jun-2015
Category:
Upload: positive-hack-days
View: 2,362 times
Download: 0 times
Share this document with a friend
Popular Tags:
32
Сергей Щербель, Сергей Дроздов Positive Technologies
Transcript
Page 1: Уязвимости веб-сервисов

Сергей Щербель, Сергей ДроздовPositive Technologies

Page 2: Уязвимости веб-сервисов

Future NowЦарь Горы

Основная задача – удержание сервера

Всего 3 сервера:

Попасть на второй уровень, можно только после

захвата любого сервера первого уровня

Active Directory

Web Services

Level 2

Level 180/8080/22

8% 8%

20%

Page 3: Уязвимости веб-сервисов

Future NowЦарь Горы

Что бы получить контроль над сервером нужно:

Найти уязвимости

Получить учетную запись

Ввести учетную запись по адресу IP:8080

Получить учетную запись к SSH и флаг

Page 4: Уязвимости веб-сервисов

Future NowЦарь Горы

После того, как над сервером был получен контроль,

состояние сервера изменяется.

Новое состояние – новая цепочка уязвимостей!

Кто не успел - тот опоздал..

Придется искать уязвимости заново!

Но! Новая цепочка уязвимостей может быть

значительно проще!

Page 5: Уязвимости веб-сервисов

Future NowЦарь Горы: сюжет

Первый день - кантина

Второй день - медиа-холдинг

Page 6: Уязвимости веб-сервисов

Future NowЦарь Горы: Web

За основу был взят форум PunBB

Все лишнее было убрано

Все нужное было добавлено (аттачи, смена стиля и

языка)

Page 7: Уязвимости веб-сервисов

Future NowЦарь Горы: Web

Было подготовлено 17 сценариев развития атак!

Состояние – один из 17 сценариев

В каждом сценарии предусмотрена эксплуатация

уязвимости определенного типа (SQLi, LFI и т.д.)

Как правило, уязвимостей одного типа несколько!

Вероятность того, что один и тот же сценарий выпадет два

раза подряд, КРАЙНЕ МАЛА!

Но даже если это так, то сами уязвимости будут

различными.

Page 8: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, процесс генерации

Генератор написан на PHP, процесс генерации:

Останавливаются сервисы: веб-сервер, база данных

Удаляется весь контент веб-каталога

Случайным образом выбирается сценарий, а затем

и сама уязвимость (или уязвимости)

Генерируется контент, учетные записи, имена

каталогов и т.д.

Запускаются сервисы

Page 9: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, как пройти?

Заветная учетная запись отображается в системе

администрирования форума. Следовательно, нужно

получить доступ к системе администрирования.

В зависимости от выбранного сценария:

Задается имя каталога

Тип аутентификации (веб-форма, basic)

Сложность пароля

Алгоритм хеширования

Page 10: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарий № 1

Уязвимость: SQL Injection

1. SQL Injection

2. SHA-1 хеш пароля из БД

3. ???????

4. Profit!!!11

Кстати, некоторые из уязвимостей доступны только

после регистрации на форуме.

Page 11: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, SQL Injection

Page 12: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарий № 2

Уязвимость: обход аутентификации в системе

администрирования

1. Найти систему администрирования

2. 1' or 1=1-- 1

3. ???????

4. Profit!!!11

Page 13: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарий № 3

Уязвимость: Local File Inclusion

1. Найти уязвимость

2. Загрузить файл или изображение, содержащее

PHP-код

3. Используя уязвимость выполнить PHP-код

Page 14: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, Local File Inclusion

Page 15: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарий № 4

Уязвимость: Загрузка произвольных файлов

Проверка загружаемого файла (изображение или

вложение) осуществляется некорректно – возможна

загрузка веб-шелла.

1. Подделка MIME-типа файла

2. Загрузка файла с расширением .phtml

Page 16: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, подделка MIME-типа

Используя плагин Tamper Data находим MIME-тип

файла:

Указываем тип, характерный для изображения:

Page 17: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарий № 5

Уязвимость: Classical Blind SQL Injection

1. Classical Blind SQL Injection

2. Учетная запись из БД

3. ???????

4. Profit!!!11

Page 18: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарий № 6

Уязвимость: Чтение произвольных файлов

1. Найти уязвимость

2. Получить контент сценария системы

администрирования

3. Найти в коде логин и MD5 хеш пароля

4. ???????

5. Profit!!!11

Page 19: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарий № 7

Уязвимость: Чтение произвольных файлов

1. Найти уязвимость

2. Получить контент файла .htpasswd

3. Подобрать пароль к хешу

4. ???????

5. Profit!!!11

Page 20: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарий № 8

Уязвимость: SQL Injection в UPDATE-запросе

Лишь немногим сложнее обычной SQL Injection.

Page 21: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарий № 9

Уязвимость: Local File Inclusion

1. Доступ к системе администрирования ограничен

basic аутентификацией

2. Учетная запись в .htpasswd, но пароль сложный

(подобрать не получится)

3. Но можно просто подключить admin/index.php

4. ???????

5. Profit!!!11

Page 22: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, Local File Inclusion

Page 23: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарий № 10

Уязвимости: Local File Inclusion, SQL Injection

1. Получить учетную запись из .htpasswd

2. ½ profit

3. Получить учетную запись из БД

4. ½ profit

5. Profit!!!11

При этом загрузка файлов запрещена.

Page 24: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарий № 11

Уязвимость: Remote Code Execution

Некорректная обработка bb-тегов (preg_replace с

модификатором «e») – классика жанра

Page 25: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарий № 12 hardcore

Уязвимость: SQL Injection в INSERT запросе

Уязвимые параметры – HTTP-заголовки:

HTTP_X_REAL_IP и HTTP_X_FORWARDER_FOR

Многие веб-приложения предусматривают получение

IP-адреса пользователя из приведенных заголовков

(для случая, когда используются проксирующие веб-

сервера).

И не все веб-приложения проверяют данных из HTTP-

заголовков.

Page 26: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарий № 13

Уязвимость: SQL Injection

1. Найти уязвимость

2. Понять, что file_priv = Y

3. Эксплуатируя уязвимость создать веб-шелл

4. ???????

5. Profit!!!11

А вот подобрать пароли к хешам тут будет не просто

Page 27: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарий № 14

Уязвимость: SQL Injection

1. Найти уязвимость

2. Понять, что file_priv = Y

3. Понять, что каталогов, доступных на запись нет

4. Эксплуатируя уязвимость получить контент

сценария admin/index.php

5. Найти учетную запись

6. Profit!!!11

Page 28: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, SQL Injection

Page 29: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарии № 15, 16 и 17

Page 30: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, сценарии № 15, 16 и 17

Уязвимости: SQL Injection, Local File Inclusion

Два типа Web Application Firewall:

Очистка опасных данных

Блокирующий

Реализация примитивная – подключение PHP-сценария

с помощью опции auto_prepend_file.

Page 31: Уязвимости веб-сервисов

Future NowЦарь Горы: Web, способы обхода WAF

Очистка опасных данных$WAFtoDelete = '#(\.\./)|(union)|(select)|(substr)|(copy)|(eval)#i';

foreach($_GET as $key => $value) {

if(is_string($value)) {

$_GET[$key] = preg_replace($WAFtoDelete, "", $value);

}

}

Удаление не рекурсивное: .php?file=…/./…/./…/./…/./…/./etc/passwd

Блокирующий $signature = '#((union)|(substr))(.*?)select#i';

foreach($array as $key => $value) {

if(preg_match($signature, $value)) {

Используется метасимвол «.» без модификатора /s: .php?id=1 and 1=2 union %0a select ...

Page 32: Уязвимости веб-сервисов

Recommended