Автоматический анализ на ошибки


0 0

Человек - существо по своей сути ленивое и большинство в этом мире появилось из-за лени и для облегчения нашей жизни. Но лень - это не зло, это прогресс, потому что таким образом мы упрощаем свою жизнь и повышаем производительность своего труда. Чтобы не искать ошибки ручками на WEB страницах создано множество программ, которые могут проверить сайт на уязвимости и просигнализировать, если найдено что-то подозрительное. Так ли эффективны эти программы? Могут ли они помочь нам? Давай попробуем разобраться.

Откуда берутся ошибки? Я бы выделил две основные проблемы - низкое образование и человеческий фактор. Тотальная нехватка программистов лет пять назад стала превращать в кодеров всех подряд. Ну ладно человек стал программистом без специального образования, но надо же учиться, совершенствоваться, а не отсиживать рабочее место за большую зарплату. Сейчас в Европе и США проблема программистов не такая жесткая, потому что стали использовать офшор и открыли кучу представительств в странах, где с программерами не такая большая проблема, но образование и качество кода создаваемого в офшоре и в представительствах оставляет желать лучшего.

Все мы люди-человеки и все мы ошибаемся, и именно человеческий фактор является второй и более значимой проблемой и причиной половины ошибок. Даже профессионалы могут ошибаться в абсолютно безобидных ситуациях. Чисто машинально можно поставить не тот символ или из-за невнимательности забыть сделать проверку.

Искать ошибки вручную не так уж и сложно, но программисты (я не исключение) не любят тщательно тестировать свое творение, надеясь на правильность кода и на всемогущий авось. Но надежда умирает последней, а точнее, сразу после взлома. Если перефразировать Ленина, то нужно тестировать, тестировать и еще раз тестировать после каждого изменения кода.

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

CyD NET Utils

Сайт: http://www.cydsoft.com
Лицензия: Shareware
Цена: Для России 300р.

Начну свой обзор с той программы, которую знаю лично и очень хорошо, включая исходный код :). Постоянный читатель уже должен догадаться, почему я знаю эту программу, а для тех, кто залез в наш танк только сегодня сообщаю - это моя работа. CyD NET Utils - это набор сетевых утилит, который я создал для облегчения собственной жизни.

Уже достаточно давно в программе появился новый модуль - Security Test, который позволяет протестировать сервер на наиболее популярные уязвимости. На данный момент тестируются только WEB сайты на наиболее популярные ошибки, такие как SQL Injection, XSS, PHP инклудинг и т.д. Алгоритм поиска пока еще не идеален, но постоянно совершенствуется, и обновления выкладываются практически каждый месяц.

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

Давай для теста программы проверим сайт www.apahelpcenter.org. Мне самому интересно, как справиться CyD NET Utils с тестом этого сайта. Дело в том, что на этом сайте я нашел вручную ошибку и точно знаю, что она там есть. Посмотрим, что найдет CyD NET Utils.

Запусти программу и выбирай меню "File/Security test". В появившемся окне нажимаем кнопку Test web server, она первая на панели инструментов окна Security test. Перед тобой появится окно, где нужно указать URL сайта, который необходимо протестировать и настройки соединения (прямой коннект или через прокси сервер). В качестве URL укажем www.apahelpcenter.org/ и нажимаем OK. Понеслась. Надеюсь у тебя хороший коннект с инетом, а не тормознутый GPRS. Хотя алгоритм не сильно напрягает трафик, скорость все же желательна.

У меня коннект не очень быстрый, да и траффик дорогой, поэтому через пять минут я нажал отмену. За это время программа успела протестировать 5 сценариев, и в трех из них найдены уязвимости SQL Injection. Я в шоке от такого программирования. Авторы наверно вообще не задумывались о безопасности.

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

На данный момент программа ищет ошибки в сценариях на PHP и ASP, Macromedia Cold Fusion. Ошибки в сценариях Perl пока добавлять не планирую, потому что этот язык постепенно вымирает с точки зрения WEB кодинга. По крайней мере количество сайтов, написанных на нем сокращается, а новые практически не появляются.

Acunetix Web Vulnerability Scanner

Сайт: http://www.acunetix.com
Лицензия: Shareware
Цена: $349

Разработчиком проги является в недавнем времени малоизвестная, но в последнее время очень сильно раскрученная Acunetix (явно из Германии). Рекламу этой программы очень часто можно встретить в Google ads, и мои глаза уже ребят от этой рекламы.

В трийлной версии нам дозволено тестировать только сайты testphp.acunetix.com, testasp.acunetix.com и testaspnet.acunetix.com. Эти сайты созданы компанией специально для тестирования программы, но не факт, что на других серверах данный сканер безопасности покажет такие же результаты сканирования и найдет хотя бы половину ошибок. Алгоритм поиска мне не известен, а разработчик его не афиширует. В связи с этим, реально проверить качество тестирования невозможно, ведь покупать полную версию ради теста я не могу по финансовым соображениям, а крека для текущей версии в инете я не нашел. Ну, хорошо, будем отталкиваться от того что есть и доступно нам.

Vulnerability Scanner позволяет искать ошибки в сценариях на языках PHP, ASP и ASP.NET. Помимо этого, программа может проверять на ошибки JavaScript сценарии, что можно отнести к преимуществам. Можно тестировать не только через прямой коннект, но и HTTP или SOCKS прокси сервер, что будет очень удобно хакерам для обеспечения анонимности.

Итак, что видим в результате:

  • - багатые, но не подтвержденные боевыми тестами возможности;
  • - красивый и удобный интерфейс;
  • - поиск уязвимостей XSS, SQL-Injection, PHP инклудинг, поиск хакерских запросов по базе google, обход каталога, CRLF Injection, общедоступные резервные копии сценариев.
  • - хорошая служба поддержки, которая всегда отвечает, но не всегда вовремя. На мои вопросы разработчики ответили через три дня (правда два из них были выходными).

И все это за высокую цену и не возможно проверить программу на собственном сервере в реальных условиях. Отдавать 350 баксов за софт, который по какой-то причине может не найти у тебя ошибок - сверх глупо. Я пытался получить халявный код у разработчиков, но не смотря на то, что я представился журналистом и мог бы сказать много приятных слов о программе, если она реально оказалась бы таковой, халявный серийник мне зажали. Я понимаю разработчиков, ведь в интернете журналистом может представиться кто угодно, и все же....

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

Paros

Сайт: parosproxy.org
Автор: paros
Лицензия: Халява

Это не просто программа для сканирования, это прокси сервер, написанный на Java с крутыми возможностями по анализу. В данном случае, под "крутыми возможностями" подразумеваем то, что заявил разработчик. Почему? Читай дальше.

После загрузки, Paros создает на твоей машине прокси. По умолчанию он работает на 8080 порту, порте, ..., ну в общем, ты меня понял. Запускаем браузер и идем в свойства. Установи работу через прокси и укажи локальную машину 127.0.0.1 и порт 8080. Теперь, можешь работать с инетом, а в это время, Paros будет параллельно сканировать открываемые сайты на уязвимости.

Если ты поспешишь и запустишь эту утилиту, то приготовься потерять уйму трафика. Кушает Paros просто сумасшедший трафик. Но это еще не самое страшное. Я скормил проксику Paros все сайты, на которых я точно знаю, что есть ошибки. Пол часа мучений, уйма съеденного трафика и ничего!

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

Итак, эта программа отлично подойдет для анализа пакетов, но для автоматического поиска уязвимостей я бы не рекомендовали ее даже злостному врагу.

Что выбрать?

Когда сайт состоит из одного файла сценария и получает немного параметров, проверить все руками достаточно просто. А если у тебя целый портал, который состоит из сотен сценариев? Тут уже на полноценные ручные тесты может уйти больше времени, чем на кодинг. Делать беглый тест не имеет смысла, потому что велика вероятность что-то упустить, и тогда взлом будет не загорами. Поэтому для облегчения жизни стали появляться программы, автоматизирующие этот процесс.

Может ли программа решить нашу проблему? Решить та может, а вот гарантировать результат - нет. Алгоритмы поиска в разных программах не идеальны и зависят от множества факторов. Какая-та мелочь может повлиять на результат и прога не найдет уязвимости, а вот хакер ручками быстро найдет ошибку.Так что же тогда делать? В случае со средствами безопасности, особенно тестами я всегда рекомендовал использовать несколько разных программ. Если одна не найдет ошибку, то может быть другая увидит что-то интересное. Каждая программа использует свой алгоритм, который может быть эффективным в той ли иной ситуации.

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

- Если вы звоните человеку по телефону и никто не берет трубку - это не значит, что никого нет дома, может быть телефон не работает или его не слышат. Но если вы придете и постучите в дверь вам откроют;

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

Смысл в том, что в зависимости от ситуации положительный результат может дать тот или иной способ, и чтобы быть более менее уверенным, нужно использовать оба. А лучше даже три или четыре программы.

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

Итого

Я просто попытались показать тебе разноплановые программы и примеры того, что они могут найти. Информация быстро устаревает, появляются новые утилиты, а некоторые умирают, так и не получив популярности, но жизнь всегда продолжается и show must go on.

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

С другой стороны, быстрый тест с помощью программ, позволяет гарантировать, что сайт не взломают начинающие, малоопытные хакеры или просто ламеры с набором чужих программ в руках. Не смотря на отсутствие 100% результата, рекомендую использовать автоматические тесты.

На этом спешу откланяться, до новых встреч в эфире.


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

Паника, что-то случилось!!! Ничего не найдено в комментариях. Срочно нужно что-то добавить, чтобы это место не оставалось пустым.

Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне