Содержание статьи
У каждого из команды ][ - свои предпочтения по части софта и утилит для
пентеста. Посовещавшись, выяснилось, что выбор так разнится, что можно
составить настоящий джентльменский набор из проверенных программ. На том и
решили. Чтобы не делать сборную солянку, весь список мы разбили на темы. Поиск
уязвимостей - это определенно одна из интереснейших тем.
Подставив кавычку в нужном месте - и нашел возможность для инъекции?
Проснись! Давно прошли времена, когда пионерские способы помогали найти ошибки
даже в серьезных проектах. Поиск уязвимых мест стал намного более изощренным,
как и техники для успешной эксплуатации уязвимостей. Если раньше худо-бедно
можно было все реализовать вручную, то теперь без вспомогательных инструментов
не обойтись. Последние не только выполнят муторную работу за тебя, но и
подскажут, как можно воспользоваться багой, а в некоторых случаях - даже
автоматизируют процесс эксплуатации. Итак, приступим?
Nikto
Сайт:
www.cirt.net/nikto2
Платформа: Windows, Unix
Назвав свой сканнер "никто" разработчики сильно слукавили. На деле - это
известный сканнер веб-уязвимостей, способный сканировать удаленные хосты и
проводить сложные тесты безопасности. В базе программы имеется информация об
более чем 3500 уязвимых сценариев. Информация об уязвимостях обновляется в
виде специальных баз, подключаемых к программе как плагины. Увы, последний
апдейт приложения был еще в далеком 2007 году, но базы с уязвимостями (http://www.cirt.net/nikto/UPDATES/2.03)
по-прежнему обновляются. Программа даже поддерживает автоматическое обновление
баз, но лучше б этот плюс компенсировался более частыми и серьезными апдейтами.
Прога написана на Perl'е, поэтому вся работа осуществляется из командной
строки. Помимо поиска уязвимых сценариев, Nikto попробуем определить
версию веб-демона, отыскать файлы с открытыми паролями, а также выполнить
десяток других проверок. Полноценная поддержка прокси (с возможностью
авторизации), а также SSL-соединения при правильном подходе гарантируют твою
безопасность. Правда, о незаметном сканированию придется забыть. С самого начала
разработчики сделали упор на скорость скана, не заморачиваясь по поводу
stealth-методов. С другой стороны, Nikto поддерживает ряд методик для
обмана IDS, реализованных в библиотеке LibWhisker, но, увы, и они по большей
части устарели.
IBM Rationa Appscan
Сайт:
www-01.ibm.com/software/awdtools/appscan/
Платформа: Windows
Маститый коммерческий продукт который изначально разрабатывался авторитетной
компанией Watchfire, а потом был куплен IBM. Это уже не любительская поделка
вроде Nikto. Rational Appscan предназначен для аудита WEB-приложений и
содержит не один десяток эвристических методов для корректного изучения каждого
узла. Многие организации готовы выложить за него немалые деньги потому, что он
действительно здорово облегчает работу. Поиск уязвимостей осуществляется
автоматически, главное - правильно задать все параметры сканирования с помощью
специального мастера. На выходе ты получишь отчет о проделанной работе паука, с
помощью которой воссоздается, структура сайта, а также возможных уязвимостях.
Appscan конкретно указывает уязвимые сценарии, распределяя уязвимые места в
соответствии с категорией уязвимостей. SQL Injection, Cross-Site Cripting,
Posion Null Byte Files Retrieval, HTTP response splitting, parameter tampering,
hidden field manipulation, backdoors/debug options, buffer overflows - это все
лишь малая часть списка. Список возможных брешей впечатляет: если взять SQL
Injection, то в отчете ты легко найдешь разделы с возможными слепыми инъекциями,
инъекциями с помощью кукисов, инъекции на странице авторизации и т.д. Причем сам
сканнер покажет, какой именно параметр можно эксплуатировать. Одна из
немаловажных особенностей это сканирование сложных приложений, содержащих обилие
Java Script / AJAX - кода, Adobe Flash вставки. Специалистам по информационной
безопасности Appscan полезен еще и тем, что содержит 40 готовых отчетов о
соответствии требованиям, включая требования стандартов безопасности данных PCI,
ISO 17799, ISO 27001, Basel II, SB 1386 и PABP (Payment Application Best
Practices), что не может не радовать.
HP WebInspect
Сайт: www.hp.com
Платформа: Windows
Этот сканнер, который теперь принадлежит компании HP, также ранее
разрабатывался командой security-специалистов - SPI Dynamics. И это один из
самых удачный сканнеров безопасности. Почему? Ну, во-первых, весь процесс
сопровождается интерактивным отчётом, что позволит быстро войти в курс дела.
Во-вторых, разработчики позаботились о том, чтобы максимально заточить его для
выполнения тестов на проникновение. Объектом исследования могут быть
всевозможные скрипты, динамически обновляемые сервлеты и фреймворки.
WebInspect позволяет выявлять большинство существующих уязвимостей, которые
наиболее часто встречаются на сайтах. В то время как многие простецкие сканнеры
курят в сторонке, WebInspect отлично справляется с анализом сложных Web
2.0 сайтов, построенных на современных JS-фреймворках и повсеместным применением
Ajax. Также как и Appscan, продукт умеет декомпилировать SWF-файлы, т.е.
элементы сайта на Flash'е и анализировать ActionScript код. Причем помимо
непосредственно сканнера, в продукт входит дюжина вспомогательных утилит: для
создания дампа базы данных, используя SQL-инъекцию, фаззер для проверки
передаваемых значений, брутфорс форм, редактор и снифер HTTP запросов и т.д.
Acunetix Web Security Scanner
Сайт: www.acunetix.com
Платформа: Windows
Еще один коммерческий сканнер, который вместе с AppScan и WebInspect, входит
в тройку самых-самых. Продукт серьезно раскрученный, но ему ни за что ни удалось
бы добиться такой популярности, если бы не убойный функционал. Acunetix Web
Security Scanner представляет собой полностью автоматизированный сканнер
уязвимостей. Сначала программа исследует и формирует структуру сайта,
обрабатывая все найденные ссылки и собирая информация обо всех обнаруженных
файлах. Затем приступает к тестированию всех веб-приложения, моделируя ввод
данных с использованием фаззера, использованием подстановок различных параметров
и сниппетов, которые могут помочь задетектить брешь в защите. Среди доступных
для обнаружения уязвимостей все виды SQL injection, Cross site scripting, CRLF
injection и т.д. Важно, что сканнер производит анализ с умом, учитывает
специфику удаленной системы - но для этого для сканирования необходимо выбрать
правильный профиль.
Есть у Acunetix Web Security Scanner фишка, которая заслуживает
особенное внимание - это технология AcuSensor. Стандартные методы сканирования
основываются на анализе ответов, которые возвращает веб-приложение на различные
запросы. AcuSensor позволяет провести намного более глубокое тестирование при
условии, что у тебя на руках есть исходники приложения (форум, чат, CMS, онлайн
магазин - любой публично доступный скрипт). В этом случае можно комбинировать
стандартные механизмы сканирования с глубоким анализом кода, имея четкое
представление о ходе выполнения программы изнутри! Что в результате? В итоге ты
получаешь не просто информацию о возможной уязвимости, но и конкретный кусок
кода, где она найдена, включая номер строки, трейс стека и содержанием
SQL-запроса, который при этом отправляется серверу база данных. И более того -
ты получаешь возможность искать баги, которые при стандартном сканировании найти
практически невозможно. Это касается инъекций в INSERT запросах: отыскать и
эксплуатировать их крайне непросто из-за того, что они не возвращают результата.
На текущий момент технология AcuSensor доступна для PHP и .NET приложений. Супер
фича!
Burp Suite
Сайт:
portswigger.net/suite/
Платформа: Windows, Unix, Mac
По сути, это не одна утилита - а целый комплекс тулз для пентестера. Самая
главная часть программы является Burp Proxy, который устанавливается в качестве
локального веб-сервера и перехватывает весь HTTP/HTTPS трафик. Другие утилиты, а
именно Spider, Intruder, Scanner, Repeater, Sequencer, Decoder и Comparer
связаны как с этой самой прокси, так и между собой. Например, часть
перехваченных Burp Proxy параметров можно протестировать на предмет проверки со
стороны сервера. Для этого достаточно отправить его на растерзание Intruder'у.
Последний заслуживает особенное внимание, потому как именно с его помощью можно
отыскать и SQL-инъекции, и XSS уязвимости - и много чего еще. На вход утилите ты
передаешь объект проверки, определяешь параметры, которые будут изменяться (на
основе специально сформированных шаблонов) и выбираешь тип атаки. Большая часть
пакета предназначены не для автоматического взлома, а для помощи пентестеру.
Зато утилита Scanner, доступная в Pro-редакции, представляют собой полностью
автоматизированный сканнер, способный самостоятельно обнаруживать уязвимости в
веб-приложениях. Любопытным представляется режим "Live scanning", который
проверяет на вшивость те сайты, который ты в данный момент просматриваешь.
Paros Proxy
Сайт: www.parosproxy.org
Платформа: Windows, Unix, Mac
Для того чтобы найти уязвимость нужно, как минимум, иметь перед собой картину
того, что передается между сервером и клиентом по протоколу HTTP/HTPPS: запросы,
кукисы, поля форм. Вдвойне здорово, когда такой HTTP-снифер изначально рассчитан
на поиск уязвимостей. С Paros Proxy ты не просто можешь на лету изменить
сходящие HTTP/HTTPS запросы, логировать собственный траф, но и использовать
встроенные сканнеры, с помощью которых тут же проверять сценарии на наличие
уязвимостей SQL Injection и XSS. Сам Paros Proxy работает в виде прокси-сервера,
собирая всевозможную информацию во время твоего серфинга. Различные виды
сканирования осуществляются за счет плагинов, которые в принципе можно писать
саму. Увы, разработчики не развивают дальше проект, полностью переключившись на
свое коммерческое детище MileSCAN Web Security Auditor (www.milescan.com/hk/).
Wapiti 2.1.0
Сайт:
wapiti.sourceforge.net
Платформа: Windows, Unix, Mac
Консольная утилита для аудита веб-приложений. В основе - знакомый под другим
сканнерам принцип черного ящика (blackbox), когда анализируются не исходники
приложения, а ответы сервера на хитрые запросы с измененными параметрами. Для
этого прога сначала анализирует структуру сайта, ищет доступные сценарии,
анализирует параметры, а затем включает на всю катушку свой фаззер. Продолжая
смаковать до тех пор, пока все уязвимые скрипты не будут найдены. Сейчас в
арсенале методики для определения инъекций в базы данных (включая HP/JSP/ASP SQL
и XPath инъекции), XSS, LDAP инъекции, CRLF баги (HTTP Response Splitting),
ошибки в обработке файлы (локальный и удаленный include, fopen, readfile и
т.д.), возможность выполнения команд (eval(), system(), passtru()). В отличие от
Nikto, который использует базу дырявых сценариев (а я напомню, что обновляется
она не часто), Wapiti настроен на поиск неизвестных уязвимостей.
ProxyStrike
Сайт:
www.edge-security.com
Платформа: Windows, Unix
Активная веб-прокси для поиск уязвимостей в веб-сценариях, с которыми в
данный момент ты имеешь дело. Это особенно актуально для сложных приложений,
построенный на базе JS и Ajax: ведь никакой скрипт не может полностью
сымитировать работу пользователя и проследить за всеми этапами выполнения
приложения. На данный момент разработчиками реализованы модули для поиска SQL-инъекций, XSS и локальных инклудов. Сам процесс использования утилиты выглядит
очень просто. ProxyStrike работает в виде обычной прокси, которая висит
по умолчанию на 8008 порту, но помимо стандартных для прокси действий, она в
фоном режиме выполняет фаззинг параметров, который ты передаешь на сервер. В
результате твоя работы с веб-приложением ничем не выделяется, хотя на самом деле
в этот же самый момент происходят активные действия.
Архитектура приложения изначально серьезно расширяема, и ты можешь сам
реализовать нужный функционал, написав соответствующий плагин.
XSpider
Сайт: www.ptsecurity.ru
Платформа: Windows
Первые строчки кода сканера XSpider были написаны 2 декабря 1998 года,
- за прошедшие с тех пор 11 лет XSpider стал известен каждому российскому
специалисту по информационной безопасности. Тулза с самого начала
разрабатывалась как решение для анализа самых разных системы и обнаружения
широкого круг уязвимостей. И хотя это тема для отдельного обзора, нельзя не
отметить его модуль за анализ веб-приложений, благодаря которому программа и
попала в сегодняшний обзор. Автоматический сканнер быстро анализирует скрипты на
заданном HTTP-сервере и выдает о найденных уязвимостях, в том числе инъекций,
инъекций кода, запуска произвольных программ, получения файлов, межсайтовый
скриптинг (XSS), HTTP Response Splitting. Более того осуществляется поиск и
анализ директорий доступных для просмотра и записи, давая возможность находить
слабые места в конфигурации. А база сканнера, по заявлением разработчика,
ежедневно обновляется новыми уязвимостями и проверками.
sqlmap
Сайт:
sqlmap.sourceforge.net
Платформа: Windows, Unix, Mac
sqlmap - это уже более узкоспециализированная утилита, предназначенная
специально для автоматизации SQL инжекций. Написанная на Python'е тулза может
обнаружить на сайте и эксплуатировать любые SQL инжекции в веб-приложениях.
Причем поддерживаются самые разные методики, включая самые сложные слепые
инъекции. Если sqlmap обнаружил SQL-инъекцию, будь уверен - что-то да ты
накопаешь. Впрочем, ничего не стоит использовать ее в связке с более
универсальными сканнерами. Если Appscan или, скажем, продукт от Acunetix нашел
SQL-уязвимость, ничего не стоит натравить на уязвимый сценарий sqlmap.
Найти более мощного инструмента в паблике достаточно сложно. Во время поиска
багов и эксплуатации уязвимостей скрипт учитывает специфику MySQL, Oracle,
PostgreSQL, Microsoft SQL Server. Помимо этого частично поддерживаются Microsoft
Access, DB2, Informix, Sybase и Interbase. Для того, чтобы понять с какой СУБД,
мы имеем дело, sqlmap использует сложные методики fingerprint'а,
основанные на анализе баннеров сервисов, сообщений об ошибках, форматировании
вывода. Конечно, никакой автоматический скрипт не сможет расковырять столько,
сколько ты можешь сделать вручную вместе с полуавтоматическими средствами. Но
sqlmap - это отличный помощник, эксплуатирующий как самые простые инъекции,
так и последовательность запросов, а также самые сложные слепые (blind)
инъекции. В общем, если возможно что-то вытащить из базы, он не заставить себя
ждать. Возможно, системный баннер, имена текущего пользователя и базы, а также
проверить, является ли юзер администратором. А быть может повезет и с помощью
найденного бага sqlmap тут же вытащит список пользователя с хешами паролей, баз
данных, таблиц, колонок - или вообще сделать дамп всех записей в таблицах, или
выполнить произвольный SQL-запрос. Мало этого, сканнер известно и о багах,
позволяющих читать произвольные текстовые и бинарные файлы на серверах, где
используются MySQL, PostgreSQL и Microsoft SQL Server. Если на сервер
используется magic_quotes_gpc в настройках PHP, Rational Appscan само собой
будет кодировать строку запроса с помощью CHAR() или другой подходящей опции. Да
всех опций и наворотов, которые есть в арсенале не перечислишь - это не просто
утилита, это настоящий musthave!
sqlsus
Сайт: sqlsus.sf.net
Платформа: Windows, Unix, Mac
Специальная утилита для реализации инъекций в базы данных MySQL. С помощью
sqlsus ты намного проще сможешь эксплуатировать найденный баг, получив
структуру базы, внедрив SQL запрос, скачав с сервера нужные файл, закачав бэкдор
и т.д. и т.п. Примечательно, что в качестве инструмента для хранения полученных
дампов используется база SQLite, что чрезвычайно удобно. Можно например сделать
копию базы, таблицы или колонки с уязвимого сервера себе в локальную SQLite базы
и полноценно работать с ней. Помимо этого, в sqlsus реализована несколько других
полезных фич. Если ты не можешь обратиться к базе information_schema, или если
ее не существует, тулза поможет пробрутфорсить название таблиц и колонок. В
арсенале sqlsus и инструменты для реализации Blind-инъекций. Впрочем, для
реализации этого вида атак лучше заюзать следующую утилиту.
bsqlbf-v2
Сайт:
code.google.com/p/bsqlbf-v2/
Платформа: Windows, Unix
Эта тулза специально разработана для эксплуатирования слепых SQL-инъекций.
Причем изначально поддерживалась только MySQL, но в обновленной версии
реализованы методики для 3 других СУБД: MS SQL, PostrgeSQL, Oracle. bsqlbf
написана на Perl и принимает SQL запросы через командную строку и способна
реализовать инъекцию в целочисленные и строковые поля. Всего поддерживается 6
видов слепых инъекций, тип атаки обозначается с помощью ключа для запуска
"-type":
./bsqlbf-v2.3.pl -url
http://192.168.1.1/injection_string_post/1.jsp?p=1 -type 4 -match "true" -cmd
"ping xakep.ru"
В данном примере эксплуатируется уязвимость ORACLE dbms_export_extension
exploit, позволяющая с помощью слепой инъекции выполнить произвольную команду.
На чем потренироваться во взломе?
Попробовать свои силы в проникновении на удаленную систему проще всего на
специальном дистрибутиве Damn Vulnerable Linux (www.damnvulnerablelinux.org).
Среди дырявых сервисов, для которых легко пишется эксплоит, простых паролей для
системных пользователей и прочих бед горе-администора есть и уязвимые
веб-сценарии, на которых ты можешь попрактиковаться. Система легко запускается
под виртуальной машиной VMware или VirtualBox. Другая менее известная сборка с
уязвимыми приложениями, распространяющаяся в виде образа для WMware носит
название Moth (www.bonsai-sec.com/en/research/moth.php).
Помимо этого существует специальный проект - Damn Vulnerable Web App (www.ethicalhack3r.co.uk).
Написанное на PHP/MySQL, приложение содержит самые разные типы уязвимостей,
которые только могут быть у веб-приложений. Если хочешь сэкономить время на
настройку веб-сервера, поставь уже готовые сборки: Denwer (www.denwer.ru)
или XAMPP (www.apachefriends.org/xampp-en.html).
Другие аналогичные проекты: OWASP WebGoat (www.owasp.org/index.php/Category:OWASP_WebGoat_Project),
Mutillidae (www.irongeek.com/i.php?page=security/mutillidae-deliberately-vulnerable-php-owasp-top-10),
Stanford SecuriBench (suif.stanford.edu/~livshits/securibench/).
Площадки для демонстрации способностей своих продуктов, создают и
разработчики коммерческих сканнеров, участвующих в обзоре. Acutenix предлагает
сразу три сайта на разных платформах:
testphp.acunetix.com,
testasp.acunetix.com,
testaspnet.acunetix.com. Тестовый ресурс от HP располагается по адресу
zero.webappsecurity.com.
Родной ресурс от пентестеров IBM -
demo.testfire.net.