Уязвимы по определению

    У многих людей, как-либо связанных с безопасностью, периодически возникает желание заняться pentest'ом, то есть тестом на проникновение. И чаще всего начинают все с pentest'а веб-приложений. Порог вхождения довольно мал (простейшая sqli определяется добавлением кавычки в параметр и эксплуатируется не особо сложнее), но при этом встречаются и довольно сложные задания, которые заставляют потратить пару-тройку дней на ковыряние.
    Но возникает вопрос — где применять теоретические знания, без страха внезапного появления маски-шоу? Под катом проведу небольшой обзор полигонов для экспериментов по pentest'у.

    Полигоны можно разделить на следующие категории и подкатегории:
    1. Полноценные образы операционных систем с набором уязвимых сервисов, в том числе с уязвимыми web-приложениям
    2. Дистрибутивы уязвимых web-приложений (offline)
    3. Уязвимые web-приложения (online), приближенные к реальным
    4. Уязвимые web-приложения (online) в формате CTF


    Дистрибутивы уязвимых web-приложений (offline)


    Уязвимые дистрибутивы предоставляют наибольшую свободу действий, т.к. не нужно лишний раз создавать песочницу для уязвимостей, как это обстоит с online-приложениями.

    Mutillidae

    Проект Mutillidae реализовывает уязвимости, которые описаны в OWASP Top 10. OWASP Top 10 — это ежегодно обновляемый список 10 уязвимостей, на которые необходимо обращать внимание как разработчикам, так и security специалистам.

    По каждой из уязвимостей из Top 10 доступно несколько заданий:


    Есть возможность переключать уровень защищенности приложения, включать подсказки:


    Все скрипты выполняются с полными привилегиями, результат простой command injection на лицо:


    На данный момент доступна версия 2.0.7

    OWASP Webgoat


    Проект в этот раз от OWASP, в комплекте со скриптами идет и web-сервер (TomCat), запускать можно просто на рабочем компьютере одним bat-файлом.

    Существенные отличия от Mutillidae в том, что нужно не просто что-то выполнить, а получить вполне конкретный результат. Когда результат будет достигнут, это будет отмечено в списке всех заданий:



    Для прохождения некоторых заданий нужно вместо взлома наоборот внедрить защиту в код.

    Информация о проекте доступна здесь

    Если при прохождении возникают сложности, то по каждому из заданий есть видео с прохождением:

    yehg.net/lab/pr0js/training/webgoat.php

    Саму ссылку можно найти на странице самим заданием.

    Damn Vulnerable Web App (DVWA)


    Проект аналогичен mutillidae, то есть нет четко поставленного задания, которое нужно пройти, а есть просто набор скриптов со стандартными уязвимостями:
    • Brute Force
    • Command Execution
    • CSRF
    • File Inclusion
    • SQL Injection
    • SQL Injection (Blind)
    • Upload
    • XSS reflected
    • XSS stored


    Результат показывается «as is», то есть максимально приближенно к реальности:


    На данный момент доступна версия 1.0.7

    Уязвимые web-приложения (online), приближенные к реальным



    Тестовые сайты acunetix


    Набор уязвимых сайтов, на которых acunetix показывает свои тесты:

    testasp.vulnweb.com
    testaspnet.vulnweb.com
    testphp.vulnweb.com

    Но покопать уязвимости можно и вручную.

    XSS


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

    canyouxssthis.com/HTMLSanitizer
    html5sec.org/xssme.php
    xssme.html5sec.org

    Уязвимые web-приложения (online) в формате CTF


    Наиболее вкусная (на мой взгляд) часть. Задания проходятся в сети, поэтому не нужно ставить дополнительного софта. И есть четкая цель, которой нужно достигнуть (достать flag).

    Hack This Site

    Набор так называемых миссий, разделенных по уровням сложности. Есть базовые миссии, такие как получить содержимое некоего файла в директории со скриптом и вывести его содержимое:



    Также есть миссии, приближенные к реальной жизни, например, узнать список всех e-mail адресов зарегистрированных пользователей сайта (сайт, само собой учебный, с hackthissite ))

    По каждой миссии есть форум, где можно почитать подсказки или целиком прохождение.

    Регистрироваться и проходить миссии тут

    Enigma




    Похожий проект, присутствуют различные базовые миссии, где пароль (flag) лежит, например, в исходном коде:



    Или где нужно провести самую простую sql-injection:



    И аналогично есть миссии, приближенные к реальным сайтам, где необходимо использовать различные методы для поиска флага:



    CTF, ограниченные по времени

    И наконец, периодически проводятся соревнования в формате CTF, задания различной тематики, от web до реверсинга и forensic. Календарь ближайших мероприятий можно посмотреть здесь:

    capture.thefl.ag/calendar

    На этом же сайте доступны прошлые задания.

    Описания прошедших CTF с прохождением заданий (writeup) обычно выкладывают команды победителей (Leet More, EINDBAZEN, PPP), либо можно читать на специализированных форумах, например, rdot:

    rdot.org/forum/forumdisplay.php?f=64

    Вместо заключения


    Помимо описанных выше полигонов существует еще много всего интересного, но протестировать все не хватает времени, поэтому приведу ссылки на англоязычные блоги:

    www.irongeek.com/i.php?page=security/deliberately-insecure-web-applications-for-learning-web-app-security

    blog.taddong.com/2011/10/hacking-vulnerable-web-applications.html

    community.rapid7.com/community/infosec/blog/2011/12/23/where-can-i-find-vulnerable-machines-for-my-penetration-testing-lab

    g0tmi1k.blogspot.com/2011/03/vulnerable-by-design.html

    UPD: Еще пара ссылок от пользователя VladimirKochetkov:
    www.felipemartins.info/2011/05/pentesting-vulnerable-study-frameworks-complete-list
    code.google.com/p/pentest-bookmarks/wiki/BookmarksList

    UPD: На сайте SecurityLab можно посмотреть описание прохождения этапов HackQuest 2010 — открытых соревнований по защите информации. Материалы отборочного тура PHDays CTF 2011 на предстоящий форум Positive Hack Days (с вариантами задач) выложены здесь.
    Метки:
    Positive Technologies 169,96
    Компания
    Поделиться публикацией
    Похожие публикации
    Комментарии 29
    • +7
      Спасибо за столь полный набор ссылок, коллега.
      Надеюсь, теперь желающие «попробовать свои умения в боевых условиях» найдут себе достойные легальные цели.
      • НЛО прилетело и опубликовало эту надпись здесь
      • НЛО прилетело и опубликовало эту надпись здесь
        • +2
          Меня тоже как-то очень позабавило когда владелец сайта начал угрожать после того как я ему стал рассказывать про уязвимости на его сайте.
          Кстати, уязвимости остались.
        • +1
          Огромное спасибо — действительно практически исчерпывающее ревью
          • 0
            Надеюсь, люди будут чаще тренироваться на кошках, а не на реальных сайтах
          • +2
            Мне вот интересно, на сколько порядков уменьшилась бы актуальность проблемы SQL-инъекций, если бы из PHP и других языков, популярных среди начинающих, исключили поддержку библиотек, позволяющих городить что-то типа:

            $query="select * from users where login=$name";

            Или хотя-бы выпили такие «примеры» из книжек серии «PHP за 24 часа».
            • +3
              Последнее будет сложно сделать, потому что такие книжки часто пишут те, кто потратил на изучение 48 часов.
            • 0
              <оффтоп>Волею судьбы стал администратором десятка сайтов на самописном движке, в котором 100% есть дыры. Подскажите, можно ли проверить эти самые сайты на основные дыры в короткие сроки? Пытался разобраться в постах о SQL инъекциях, но чёрт побери, времени на это надо потратить достаточно много.</оффтоп>
              • 0
                А что там разбираться. Все параметры в запросах должны быть экранированы. Надо делать полное ревью
                • 0
                  Так же даже если в запросе идет сравнение с числом, например WHERE id = 123 то лучше писать WHERE id = «123» ибо в таком случае возможно написать что-то вроде WHERE id = 1 AND SLEEP(20) например
                  • 0
                    Вот я и говорю, разбираться надо. На вскидку я понял о чём вы написали, но чем это грозит, не понимаю…
                    • 0
                      В данном случае грозит тем что База заснет на 20 секунд ) DDOS одним запросом
                  • +1
                    а если параметр придёт 1" OR SLEEP(20) OR "
                    получится вполне себе валидный WHERE id = «1» OR SLEEP(20) OR ""
                    лучше всё байндить
                  • +2
                    Не экранировать надо, а использовать параметризованные запросы.
                    • 0
                      Я имел в виду «как минимум должны быть».
                  • +2
                    Попробуйте Acunetix, XSpider или другие автоматизированные сканеры безопасности. Очень хороший обзор таких приложений есть здесь.
                • +2
                  «Описания прошедших CTF с прохождением заданий (writeup) обычно выкладывают команды победителей (Leet More, EINDBAZEN, PPP), либо можно читать на специализированных форумах, например, rdot:

                  rdot.org/forum/forumdisplay.php?f=64»


                  Или, например, Leet More ^_^ leetmore.ctf.su/
                  • 0
                    Огромное Вам спасибо за статью! Даже понятия не имел, что есть подобные инструменты…
                    • НЛО прилетело и опубликовало эту надпись здесь
                      • –1
                        А ещё существует целый дистрибутив с набором уязвимых демонов и приложений для тренировки в пентестинге — Damn Vulnerable Linux.
                        • 0
                          А статью читали дальше заголовка? :)
                          • 0
                            Читал. Где в ней сказано про DVL?
                    • 0
                      Acunetix вспомнили, а про их Web Vulnerability Scanner не сказали. Хорошая тулза, несмотря на то что полный тест может идти много часов. Но зато в конце подробный отчет.
                      Седьмая версия почти не падает.
                      • 0
                        Отчего же обошли вниманием Gruyere от Google и TestFire от IBM? Стоит добавить в топик IMHO.
                        • +1
                          Еще чуть-чуть ссылок на учебные уязвимые приложения и системы: www.felipemartins.info/2011/05/pentesting-vulnerable-study-frameworks-complete-list/ и подборка наиболее интересных ссылок на тему пентестов:
                          code.google.com/p/pentest-bookmarks/wiki/BookmarksList
                          • 0
                            Спасибо, добавил в топик

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое