Тестирование безопасности веб-
сервисов на примере WCF-
сервисов
Ultra
Light
О чем речь
•
Основные понятия о тестировании
безопасности
•
Особенности поиска уязвимостей в web
сервисах (на примере wcf сервисов)
Кому?
•
У кого:
–
Публичный
сервис
– кто угодно в мире может
начать использовать ваше приложение как
«оружие»
–
Множество пользователей
– есть чем
поживиться (персональные данные)
–
On Demand
– люди покупают подписки. Если
они считают, что есть опасность - они
перестают это делать.
Зачем?
•
Чтобы ограничить свободу действий
потенциальным злодеям
–
Избавиться от простейших уязвимостей
–
Повысить свой авторитет в глазах заказчика
•
Пусть выбеут не вас
–
Усложнить использование атакующим вашего
продукта в качестве инструмента
•
Это интересно и полезно знать
–
Стимулирует познакомиться с продуктом «ближе»
–
Повышает вашу ценность как специалиста
Как это все у «взрослых»
•
Сертификации ПО
–
Для работы с платежами пластиковыми
картами (PCI)
–
Для работы с правительственными структурами
( примеры )
•
Сертификации профессионалов
–
Примеры
•
Наборы инструментов
•
Отдельный недешевый сервис
С чего можно начать
•
Injections (A1)
•
XSS (A3)
•
Insecure Direct Object References (A4)
–
A2 пропущен, т.к. Access Control проблема не
уровня сервиса, а выше.
Was ist das?
•
OWASP
– некоммерческое объединение,
накапливающее знания по тестированию
безопасности.
•
(A1) Injections
– внедрение кода, который
выполнится доверчивым интерпретатором.
•
(A3) XSS
– «отложенная инъекция». Срабатывает в
браузере в момент обращения к ресурсу браузером.
(Не путать с
Cross Site Request Forgery, A8
)
•
(A4) Insecure Direct Object References
–
лишняя
информация в варнингах и эксепшенах позволяющая
злоумышленнику получить информацию для
усовершенствования атаки.
Веб сервисы
•
Не имеют красивого пользовательского
интерфейса в привычном виде
•
Предоставляют доступ к функционалу
приложения для сторонних разработчиков
•
В случае WCF
–
широко используются и внутри приложения
–
часть работы за программиста делает
фреймворк
Что с ними не так
•
Injections через параметры методов.
–
Метод с кучей параметров принимающий еще и sortField –
направляет его напрямую в базу.
•
XSS
–
можно передать другому пользователю системы
«отравленный» объект.
–
Сообщение об ошибке может отображать (выполнять)
вредоносный код
•
Слишком информативные эксепшены и варнинги
•
Все это может быть доступно по разным
протоколам
Исправительные работы
•
Обработка всего, что потом попадет в базу
•
Конфигурация
–
уровня детялизации ошибок в сервисах:
<
behaviors
>
<
serviceBehaviors
>
<
behavior
name
=
"
Default
"
>
<
serviceDebug
includeExceptionDetailInFaults
=
"
false
"
/>
</
behavior
>
</
serviceBehaviors
>
</
behaviors
>
–
Конфигурация запрета встраивания страниц приложения в iframe.
(TBD: фрагмент конфига)
•
И так на разных протоколах
•
Тестировать по wsdl
–
надо сгенерить и склеить все wsdl чтобы передать в сканер
•
Актуальные обновления на сервере
Jquery
•
Можно испльзовать, чтобы прикрепить в
багу и не описывать шаги воспроизведения.
При проверке не надо будет заново все
проделавать, можно только нажать кнопку.
•
Что для этого достаточно знать:
–
как встраивать скрипт в HTML
–
Как посылать запросы на сервер
–
Адрес гугла
Fin
•
Не стоит полагать, будто это что-то гарантирует.
При желании, всегда найдутся умельцы
покруче.
•
Главное – знать меру. Не надо зарываться и
тратить уйму времени.
•
Помните – самолечение опасно, доверьтесь
профессионалам. Если серьезные данные, то
такое «секурити» тестирование не подходит.
•
Однако, это полезно знать тестировщику.
Инструменты:
•
Acunetix – платный, крутой
•
Burp Suite
- дешевле, крутой
•
QualysGuard – он-лайн сканер. Не достанет
за VPN.
•
Jquery – бесплатно, крутой
•
WSDLMerge – склейка всех зависимостей
wsdl файла в единый wsdl
Пример
•
Пример простейшей самописной тулзы,
написанный для прикрепления в баги:
Ссылки:
•
OWASP Top10 security risks, 2013(PDF):
http://owasptop10.googlecode.com/files/OW
ASP%20Top%2010%20-%
202013.pdf
•
MSDN, How To: Prevent Cross-Site Scripting in
ASP.NET -
http://msdn.microsoft.com/en-
us/library/ff649310.aspx
Тестирование безопасности веб-сервисов на примере WCF-сервисов