пятница, 28 сентября 2012 г.

Генератор уязвимых динамических сайтов - OWASP Site Generator

OWASP Site Generator - конструктор динамических web-сайтов на основе конфигураций, задаваемых в XML-файлах. Он позволяет быстро создавать Java-приложения, содержащие стандартные уязвимости, как простые, так и сложные, описываемые классификатором WASC. Генератор охватывает широкий круг технологий web-разработки. В конструкторе имеются, например, различные варианты навигации, шаблоны HTML, JavaScript, Flash, Java, форм регистрации и авторизации, поддержка работы с БД и другие возможности. По основному функционалу web-приложения, создаваемые генератором, схожи с уязвимым приложением DVWA, но отличаются тем, что вы можете сами задавать наборы уязвимостей и структуру приложения.

OWASP Site Generator можно использовать:
  • для оценки работы сканеров безопасности web-приложений,
  • для оценка систем защиты web-приложений,
  • для обучения web-разработчиков,
  • как Web Honeypot - приложение-ловушку для злоумышленников,
  • как web-приложение для penetrating testing конкурсов,
  • как учебное пособие для дисциплин, связанных с информационной безопасностью,
  • как инструмент тестировщиков для проведения сравнительных тестов сканеров безопасности, и многого другого.
Некоторые ссылки:
После установки, версия программы 2.0 выглядит как на скриншоте:


Создание уязвимого web-приложения

На вкладке "Create New Site" - "Template" выбираем шаблон для сайта. По умолчанию доступен шаблон JSP.


Переходим на вкладку "Access Control". На ней можно выбрать 2 метода аутентификации: HTML Forms или Basic HTTP, а также добавить или удалить названия пользовательских ролей. При дальнейшей настройке можно будет указать, для каких ролей какие разделы сайта будут доступны.


Переходим на вкладку "Structure Configuration". На ней возможно сделать предварительные настройки иерархии web-приложения.
Приложение может содержать три основных раздела:
  • уязвимости (vulnerabilities) - в этот раздел можно добавлять наборы уязвимостей,
  • информация (info) - в этот раздел можно помещать различные информационные странички,
  • админка (admin) - раздел администрирования сайта.
Для каждого раздела можно указать:
  • количество вложенных уровней,
  • количество директорий в каждом уровне,
  • количество страничек на каждом уровне,
  • тип ссылок на индексных страничках, используемых для навигации по разделам.

После нажатия на кнопку "Finish" на вкладке "Structure Configuration" генератор создаст предварительную структуру web-приложения (Current site tree), которую можно модифицировать, добавляя или удаляя элементы . В каждый раздел или директорию можно добавлять из левого столбца (Add Item to ...) новые web-элементы, странички, директории, а также уязвимости. В таблице справа (Properties for ...) можно просмотреть свойства конкретного элемента приложения, например, тип, имя, путь к элементу, относительно корня проекта и т.п.


Для каждого web-элемента и уязвимости имеется всплывающая подсказка. По умолчанию доступны следующие уязвимые элементы для добавления их в приложение:
  1. Insecure file upload - элемент содержит уязвимость, позволяющую небезопасную загрузку на сервер файлов пользователей.
  2. XSS Basic - элемент содержит уязвимость, позволяющую реализовать простую XSS-атаку.
  3. XSS distributed - элемент содержит уязвимость, позволяющую реализовать более сложную XSS-атаку, распространяющуюся на другие web-страницы.
  4. XSS advanced - элемент содержит уязвимость, позволяющую реализовать сложную XSS-атаку, распространяющуюся на другие web-страницы.
  5. Direct SQL query - элемент содержит уязвимость, позволяющую отправлять запросы напрямую к БД c возможностью просмотра результатов.
  6. Blind SQL query - элемент содержит уязвимость, позволяющую отправлять запросы напрямую к БД без возможности просмотра результатов.
  7. Hidden field - элемент реализует web-формы, содержащие важную информацию (пароли, ключи) в скрытых полях.
  8. Command execution - элемент содержит уязвимость, позволяющую атакующему исполнять команды на сервере.
  9. Command execution (2) - элемент содержит уязвимость, позволяющую атакующему исполнять команды на сервере, включая команды записи в файловую систему.
  10. Show directory - элемент содержит уязвимость, позволяющую просматривать директории.
  11. SQL basic - элемент содержит уязвимость, позволяющую реализовать простую SQL-инъекцию.
  12. SQL medium - элемент содержит уязвимость, позволяющую реализовать более сложную SQL-инъекцию.
  13. SQL advanced - элемент содержит уязвимость, позволяющую реализовать сложную SQL-инъекцию.
  14. Weak password - элемент реализует форму логина, использующую нестойкий пароль и уязвимую к bruteforce-атаке.
  15. User self registration - элемент реализует форму регистрации нового пользователя.
  16. User change password - элемент реализует форму для смены пароля пользователем.
  17. CRUD form - элемент реализует форму, позволяющую выполнять базовые операции с табличными элементами: создавать, читать, обновлять данные, удалять. В случае, если при использовании этого элемента будут возникать ошибки в приложении, например, не будет открываться страничка с таблицей для редактирования, попробуйте заменить в проекте файл crud.jsp на этот:
    https://docs.google.com/open?id=0B-1rf8K04ZS5RldoLUdGOUQ0MzQ
  18. Page - элемент добавляет новую страничку к web-приложению.
  19. Directory - элемент добавляет новую директорию к web-приложению.
После создания структуры и содержимого web-приложения на вкладке "Access Control" можно настроить доступ к его отдельным элементам. Достаточно выбрать нужную роль в таблице слева (User's roles) и двойным щелчком выделить элементы в структуре web-приложения (Site tree), к которым нужно дать доступ.


Просмотреть конфигурацию web-приложения можно на вкладке "View Site Config As XML". Созданный через интерфейс шаблон сайта можно сохранить, и в дальнейшем редактировать, в обычном .xml файле.


После нажатия на кнопку запуска генерации "Generate Web Site" на панели инструментов появится диалог выбора директории для приложения. После указания целевой директории достаточно нажать кнопку "Generate" и через некоторое время в указанной директории будет создано web-приложение с выбранными настройками. На вкладке "Log" можно посмотреть логи всех действий генератора.

Разворачивание сгенерированного web-приложения

В каталоге со сгенерированным приложением будет находиться файл README.txt, в котором описаны шаги по установке приложения. Пусть, например, приложение создано в каталоге <osg_jsp>.
  1. Требуется установить web-сервер Tomcat 5.5 или выше.
  2. Нужно скопировать каталог "db" в любое место на локальном диске, которое будет доступно Tomcat. Например, в "C:\db".
  3. Отредактируйте файл <osg_jsp>/META-INF/context.xml, укажите в нём правильные connectionURL и url к файлу БД, например:
    connectionURL="jdbc:hsqldb:file:C:/db/osg_jsp;ifexists=true"
    url="jdbc:hsqldb:file:C:/db/osg_jsp;ifexists=true"
    Используйте прямые слеши "/" в connectionURL и url даже на Windows-серверах.
  4. Если сгенерированное приложение находится в каталоге, отличном от osg_jsp, необходимо исправить пути context name и docbase в файле <osg_jsp>/META-INF/context.xml.
  5. Скопируйте каталог <osg_jsp> в каталог <tomcat>/webapps, где <tomcat> - путь к установленному Tomcat.
  6. Скопируйте файл <osg_jsp>/WEB-INF/lib/hsqldb.jar в подкаталог <tomcat>/lib.
  7. При необходимости, настройте Tomcat, отредактировав файл <tomcat>/conf/server.xml. Например, укажите в настройках Connector нужный порт, на котором будет работать web-приложение, протокол и таймаут:
    <Connector port="9999" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="9998" />
  8. Запустите Tomcat и проверьте доступность приложения. Например, это может быть путь http://localhost/osg_jsp/
После успешного запуска Tomcat, главное окно приложения может выглядеть аналогично, как на скриншоте: