Новости

Навчання захисту веб-додатків з WebGoat

  1. проект WebGoat
  2. установка WebGoat
  3. ***

Багато хто з сучасних рішень розробляються як веб-додатки. Це просто, зручно і головне доступно. Залишається відкритим головне питання - безпека.

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

проект 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 захищає веб-сервер і працюють на ньому додатки від специфічних атак. Тому крім навчання у WebGoat ще одне призначення - наочно уявити, як працює ModSecurity, допомогти при створенні і тестуванні правил. Власне цим займається окремий субпроект OWASP - OWASP Securing WebGoat using ModSecurity Project [3], задача якого розробка нових правил для ModSecurity дозволяють повністю захистити уразливості представлені в WebGoat, без зміни єдиної рядки коду в останньому. Тобто в ідеалі, ModSecurity повинен блокувати 100% атак спрямованих на "дірявий" WebGoat. Для цього ModSecurity налаштовується в якості проксі-сервера. Можливо, в майбутньому WebGoat буде також представлений і в якості приманки для зломщика (honeypot).
Цікаво, що WebGoat реалізували на Java, який дуже не любимо фахівцями безпеки. Тому на додаток до "своїм" уязвимостям він може містити ще проблеми характерні для Java додатків. До речі назва WebGoat співзвучно зі scapegoat (англ. Цап-відбувайло), який і є емблемою проекту.

установка WebGoat

WebGoat - багатоплатформовий інструмент, його можна запустити в будь-який ОС, в якій працюватимуть Apache Tomcat і Java SDK. Для доступу до лекцій використовується веб-браузер, інтерфейс тільки англійська і очевидно іншого поки не передбачається.
На сайті проекту доступні інструкції по установці в Linux, Windows і Mac OS X, але вони досить поверхневі і не показують суті. Щоб не встановлювати WebGoat при вивчення можна використовувати дистрибутив Damn Vulnerable Linux [4,5], що містить не тільки WebGoat, але і ряд інших корисних інструментів дозволяють проаналізувати захищеність систем.
WebGoat - багатоплатформовий інструмент, його можна запустити в будь-який ОС, в якій працюватимуть Apache Tomcat і Java SDK
Також WebGoat є і в OWASP Live CD [6] дистрибутиві розробляється безпосередньо в OWASP. До складу OWASP Live CD включені основні інструменти, і документація проекту OWASP дистрибутив, призначений для вивчення і тестування роботи веб-додатків. Його основа методика тестування веб-додатків "OWASP Testing Guide v3" [7], в якому на 350 сторінках розписані всі премудрості і тонкощі.
Тестову установку буду робити в Kubuntu 10.4. На сайті проекту WebGoat доступний у вигляді zip архіву містить Tomcat і WebGoat або окремого war файлу. Останній кращий в тому випадку, коли вже є працюючий Tomcat або планується його установка іншим способом (наприклад, з репозитария). Нам буде потрібно JDK, підключаємо в /etc/apt/sources.list репозитарій partner.

$ Grep partner /etc/apt/sources.list ## 'partner' repository. deb http://archive.canonical.com/ubuntu lucid partner deb-src http://archive.canonical.com/ubuntu lucid partner

Встановлюємо пакети з Java і unzip.

$ Sudo apt-get update $ sudo apt-get install sun-java6-bin sun-java6-jdk unzip

Завантажуємо і розпаковуємо архів WebGoat:

$ Wget http://webgoat.googlecode.com/files/WebGoat-OWASP_Standard-5.2.zip $ unzip WebGoat-OWASP_Standard-5.2.zip

Копіюємо в робочий каталог і встановлюємо права доступу для одного разу можна і просто «$ sudo bash webgoat.sh ...» навіщо ??? на завантажувальний скрипт.

$ Sudo mv WebGoat-5.2 / usr / local $ cd /usr/local/WebGoat-5.2/ $ sudo chmod 755 webgoat.sh

Якщо спробувати запустити зараз цей скрипт, швидше за все, отримаємо повідомлення, яке говорить про те що змінна JAVA_HOM E не встановлена.

Please set JAVA_HOME to a Java 1.5 JDK install

Простіше прописати потрібні дані безпосередньо в скрипт. Зберігаємо оригінальну версію.

$ Sudo cp webgoat.sh webgoat.sh.orig

Тепер редагуємо, прописавши в саме початку файлу змінну JAVA_HOME:

$ Sudo nano ./webgoat.sh JAVA_HOME = / usr / lib / jvm / java-6-sun / export JAVA_HOME

Далі в тексті скрипта, йде пошук і установка змінної JAVA_HOME, щоб не прибирати весь код, просто коментуємо функцію його виклику.

# is_java_1dot5

Зберігаємо результат і запускаємо.

$ Sudo ./webgoat.sh start80 Using CATALINA_BASE: ./tomcat Using CATALINA_HOME: ./tomcat Using CATALINA_TMPDIR: ./tomcat/temp Using JAVA_HOME: / usr / lib / jvm / java-6-sun / Open http: //127.0 .0.1 / WebGoat / attack Username: guest Password: guest Or try http: // guest: [email protected]/WebGoat/attack

Якщо 80 порт вже використовується, можна запустити WebGoat на 8080:

$ Sudo ./webgoat.sh start8080

Відкриваємо в браузері сторінку http://127.0.0.1/WebGoat/attack і реєструємося як користувач guest з паролем guest. Самі розробники рекомендують відключити систему з працюючим WebGoat від мережі, так як вона напхана уразливими, що несе потенційну небезпеку. За замовчуванням WebGoat стартує в режимі одного і доступний тільки з локальної системи порти 80 (https 443) або 8080 (https 8443). Це легко змінити, відредагувавши файли в tomcat / conf.
Так порти, на яких приймаються підключення, описані в файлах server_80.xml або server_8080.xml, які і завантажує стартовий скрипт в залежності від параметра. Щоб мати можливість підключатися віддалено і до іншого порту слід відредагувати параметри "Connector address" і "port":

$ Cat tomcat / conf / server_8080.xml

Обмежити доступ до сервера WebGoat тільки з певних адрес легко, досить прописати їх в параметрі allow класу RemoteAddrValve:

Насправді встановлених облікових записів в WebGoat більше, ніж їх підказує документація проекту. Всі їх отримати можна переглянувши файл tomcat-users.xml:

$ Cat tomcat / conf / tomcat-users.xml

Структура запису повинна бути зрозуміла, рядок містить логін, пароль і роль користувача в WebGoat.
Структура запису повинна бути зрозуміла, рядок містить логін, пароль і роль користувача в WebGoat
Натискаємо "Start WebGoat" і переходимо безпосередньо до лекцій. На першій сторінці є посилання на керівництва (в тому числі і відео) які допоможуть зорієнтуватися в самому процесі навчання. Хоча нічого складного немає. Зліва знаходяться лекції, зверху невелике меню, в якому можна отримати підказку, переглянути параметри сесії, Cookies, вихідний код Java і деякі інші.

Щоб отримати більше інформації на додаток до WebGoat слід встановити проксі WebScarab [8]. Він дозволить переглядати процес обміну даними між сервером і клієнтом. Розширення до веб-браузеру Firefox Firebug [9], яке є засобом перегляду вихідного коду, перегляду HTTP і AJAX-запитів, редагування HTML і CSS, отладчиком JavaScript. І щоб переглядати пакети на нижньому рівні додамо сниффер WireShark [10]. Не зайвими будуть різні сканери - мережевий (nmap) і безпеки (Nessus).
Сам процес навчання можна назвати простим, вибираємо лекцію і слідуємо за підказками. Вводимо при необхідності дані. Наприклад, на першому уроці "Http Basics" необхідно ввести ім'я, а сервер його поверне в перевернутому вигляді. Наше завдання, за допомогою названих вище інструментів просто подивитися процес обміну.

***

Безсумнівно з WebGoat слід познайомитися фахівцям так чи інакше займаються безпекою веб-додатків. Короткі уроки допоможуть краще зрозуміти суть проблем, і головне доторкнутися до деяких «таємниць» хакерів.

посилання:
1. Сайт проекту WebGoat - http://code.google.com/p/webgoat/, http://www.owasp.org/index.php/OWASP_WebGoat_Project
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/

» навіщо ?

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: