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

Полигоны можно разделить на следующие категории и подкатегории:
Полноценные образы операционных систем с набором уязвимых сервисов, в том числе с уязвимыми web-приложениям Дистрибутивы уязвимых web-приложений (offline) Уязвимые web-приложения (online), приближенные к реальным Уязвимые 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