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

    У многих людей, как-либо связанных с безопасностью, периодически возникает желание заняться 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,87
    Компания
    Поделиться публикацией
    Похожие публикации
    Комментарии 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
                            Спасибо, добавил в топик

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

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