Обучение защите веб-приложений с WebGoat

Многие из современных решений разрабатываются как веб-приложения. Это просто, удобно и главное доступно. Остается открытым главный вопрос — безопасность.

Веб-технологии используются практически повсеместно – интернет-магазины, банки, да и просто веб-страницы какой-либо фирмы. Они могут иметь как сложные интерфейсы, так и простенькие с одним двумя полями ввода, для быстрого доступа к информации хранящейся в базе данных. Специалистов привлекают доступность с любой точки планеты, быстрая разработка и независимость от клиентской платформы. Для управления достаточно веб-браузера который давно уже стал стандартным компонентом любой ОС, включая используемых в карманных компьютерах и смартфонах.

Проект WebGoat

К сожалению, доступность веб-приложения отовсюду, имеет и свой минус, приходится уделять дополнительное внимание безопасности решения. А это не простой вопрос. Ведь в формировании результирующего контента участвует несколько элементов – веб-сервер или сервер-приложений, обработчик (HTML, PHP, Python, Perl, Ruby, JavaScript, + AJAX и т.п.), база данных. И это только небольшой список технологий, которые должны работать как единое целое, выдавая результат. Причем конечных решений может быть много. Ведь список тех же веб-серверов насчитывает уже десяток вариантов. Естественно разработчик предусмотреть все возможные проблемы для разных ситуаций просто не в состоянии. В результате получаем целый букет специфический атак направленных на веб-приложения — XSS (Cross-Site Scripting), SQL injection, подмена сессии, подмена прототипа. Все в различных вариантах исполнения. Причем это не болезнь маленьких проектов, уязвимостям подвержены и крупные проекты, развивающиеся уже не один год.
Специалисты безопасности и разработчики должны смотреть на сеть глазами потенциального взломщика, понимать суть атак и видеть проблемные места. Разнообразные руководства, которые легко найти в интернет могут дать лишь теоретические знания. Без их практического закрепления они не очевидны, легко забываются и будут очень поверхностными. Вот для такой ситуации разработчиками OWASP (Open Web Application Security Project) создана специальная обучающая система WebGoat [1], позволяющая в наглядном виде изучать приемы взлома веб-приложений. Реализована база для проведения около 30 различных видов атак. Причем основной упор сделан именно на образовательную сторону вопроса, а не создание уязвимой платформы для опытов. В WebGoat реализованы все сопутствующие элементы – лекции, проверки знаний, лабораторная работа и результирующий экзамен. По ходу обучения ведется статистика, показывающая результат на каждом этапе. Список курсов обширен и затрагивает базовые знания по HTML, контроль доступа, и различные виды атак – XSS, различные виды Injections, Buffer Overflow, работа со CSS и скрытыми полями в формах и так далее. По ходу обучения объясняется суть проблемы, даются все необходимые подсказки и код, этап завершается практической демонстрацией взлома с использованием уязвимости. Пройденная лекция подсвечивается зеленым флажком. Удобно, что в WebGoat уже есть все необходимое, то есть не нужно самостоятельно собирать тестовую среду, чтобы проверить все на практике.
Архитектура WebGoat проста. В базе данных содержатся все лекции. Страница выдаваемая пользователю формируется за счет нескольких сервлетов JSP (JavaServer Page), каждый из которых играет свою роль – собственно страница с заголовком и навигацией (main.jsp), список лекций (CrossSiteScripting.jsp, RoleBasedAccessControl.jsp, SQLInjection.jsp), и контент (EditProfile.jsp и другие).
К слову OWASP — некоммерческая организация, направленная на улучшение безопасности прикладных приложений, все продукты которой выпускаются под свободными лицензиями. Одна из ее разработок — брандмауэр уровня приложений ModSecurity [2] защищающий веб-сервер и работающие на нем приложения от специфических атак. Поэтому кроме обучения у WebGoat еще одно предназначение – наглядно представить, как работает ModSecurity, помочь при создании и тестировании правил. Собственно этим занимается отдельный субпроект OWASP — OWASP Securing WebGoat using ModSecurity Project [3], задача которого разработка новых правил для ModSecurity позволяющих полностью защитить уязвимости представленные в WebGoat, без изменения единой строки кода в последнем. То есть в идеале, ModSecurity должен блокировать 100% атак направленных на “дырявый” WebGoat. Для этого ModSecurity настраивается в качестве прокси-сервера. Возможно, в будущем WebGoat будет также представлен и в качестве приманки для взломщика (honeypot).
Интересно, что WebGoat реализовали на Java, который очень не любим специалистами безопасности. Поэтому в дополнение к “своим” уязвимостям он может содержать еще проблемы характерные для Java приложений. Кстати название WebGoat созвучно со scapegoat (англ. козёл отпущения), который и является эмблемой проекта.
WebGoat — кроссплатформенный инструмент, его можно запустить в любой ОС, в которой будут работать Apache Tomcat и Java SDK. Для доступа к лекциям используется веб-браузер, интерфейс только английский и очевидно другого пока не предвидится.
Внешний вид среды WebGoat
На сайте проекта доступны инструкции по установке в Linux, Windows и Mac OS X, но они весьма поверхностны и не показывают сути. Чтобы не устанавливать WebGoat при изучения можно использовать дистрибутив Damn Vulnerable Linux [4,5], содержащий не только WebGoat, но и ряд других полезных инструментов позволяющих проанализировать защищенность систем. Также WebGoat имеется и в OWASP Live CD [6] дистрибутиве разрабатываемом непосредственно в OWASP. В состав OWASP Live CD включены основные инструменты, и документация проекта OWASP дистрибутив, предназначен для изучения и тестирования работы веб-приложений. Его основа методика тестирования веб-приложений “OWASP Testing Guide v3” [7], в котором на 350 страницах расписаны все премудрости и тонкости.
Статистика по пройденным урокам

Ссылки:

1. Сайт проекта WebGoat — http://code.google.com/p/webgoat/, http://www.owasp.org/index.php/OWASP_WebGoat_Project
2. Яремчук С. Как повысить безопасность веб-приложений //Системный администратор, №2, 2006 г. – С. 60-64.
3. Страница субпроекта OWASP Securing WebGoat using ModSecurity Project — http://www.owasp.org/index.php/OWASP_Securing_WebGoat_using_ModSecurity_Project
4. Сайт Damn Vulnerable Linux — http://www.damnvulnerablelinux.org/
5. Ссылка на ISO образ дистрибутива Damn Vulnerable Linux (1.7 Гб) — http://www.computerdefense.org/dvl/DVL_1.5_Infectious_Disease.iso
6. Страница проекта OWASP Live CD — http://www.owasp.org/index.php/Category:OWASP_Live_CD_Project
7. Страница OWASP Testing Project — http://www.owasp.org/index.php/Category:OWASP_Testing_Project
8. Страница проекта OWASP WebScarab Project — http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project
9. Страница проекта Firebug — http://getfirebug.com/
10. Страница проекта WireShark — http://www.wireshark.org/

Теги:

Понравилась статья? Оставьте комментарий или подпишитесь на RSS рассылку.

Комментарии

Комментариев пока что нет

Оставить комментарий

(required)

(required)