Автоматический поиск SQL Injection с помощью CyD Network Utilities


4 0

Сейчас я перевожу свои проекты на .NET и именно в данный момент полным ходом идет работа над сетевыми утилитами CyD Сетевые утилиты и безопасность. Основная часть модулей перенесена, и сейчас работа кипит над самым сложным и самым интересным модулем - автоматизированной системой поиска уязвимостей на WEB сайтах. Самым интересным тут будут автоматический поиск на SQL инъекцию, XSS уязвимости и инклуд. Работа уже движется к своему завершению, и к концу года я планирую выложить программу в открытый доступ. Те, кто уже купил CyD Network Utilities получат новую версию бесплатно, и окажутся в двойной выгоде, потому что смогут использовать программу на старом движке и на новом. В принципе, тех, кто зарегестрируется до выхода .NET варианта я не смогу лишить такого же удовольствие, так что у всех еще есть время получить этот приятный бонус.

Но я бы не стал писать заметку, только из-за этой новости, потому что она будет висеть на сайте CyD Software Labs, где ей и место. Я завел этот разговор потому, что вчера я завершил написание нового модуля автоматического тестирования на SQL инъекцию и результат мне понравился. Но обо всем по порядку, потому что сам процесс разработки уже был интересным. Автоматизация поиска уязвимостей достаточно интересный процесс и в ближайшее время я перепишу модули поиска файловой инъекции (PHP Include) и поиска XSS уязвимостей.

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

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

Тест SQL Injection (инъекции)

Я взял день на передышку. Вчера вечером пришел домой, выложил новые идеи в коде и модифицировал двиг так, что он должен был учитывать возможность мутирования WEB страниц. Протестировать код сразу же не удалось, потому что интернет отсутствовал. Я запустил игру The Settlers и добил очередной уровень, дав своим мозгам расслабиться. Когда уровень был пройден, интернет восстановился и я запустил тест. После анализа первых страниц, не получающих параметров, анализ перешел на ссылки с датами. Первые же две ссылки дали вероятную SQL Injection. Я опять подумал, что у меня проблема с анализатором и я что-то не так учел в модуле проверки мутации. Там действительно была небольшая ошибка - я условие поставил не в ту сторону. Снова запуск и снова в каждой странице предупреждение на вероятную ошибку.

Я уже хотел снова загрузить The Settlers, чтобы обдумать алгоритм заново, но чтобы думать, нужно же сначала найти возможную проблему. Пришлось ставить точки останова и смотреть, что заставляет движок автоматического анализа материться. Прохожу пошагово, дохожу до определенной точки и вижу реальные признаки SQL Injection, которые нашел движок. Загружаю WEB сайт вручную, начинаю тестировать его вручную и ручной тест тоже показывает признаки ошибки инъекции. Я в шоке начинаю немного нервничать и загружаю исходный код главной страницы в текстовом редакторе. В первом же запросе к базе данных я использую переменную года и месяца, куда попадает выбор пользователя на странице небезопасно. Когда-то я уже писал о том, что у меня есть ошибка SQL инъекции на сайте (Под угрозой взлома). Тогда я ошибку инъекции исправил, но сделал это на работе и исходник исправления не принес домой. При очередном обновлении сайта мое же исправление исчезло и сайт уже давно уязвим.

Сейчас уже ошибка исправлена, но что мне понравилось - новый модуль поиска безопасности в CyD Network Utilities нашел уязвимость. Старый не смог бы этого сделать. Сейчас пару дней потестирую сайты своей программой и если анализатор будет показывать такие же хорошие результаты по поиску SQL инъекции, то останется доделать проверку инклуда и XSS и можно считать, что программа готова.

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

Рекомендую так же почитать мою заметку Автоматизация поиска уязвимостей на WEB сайте на блоге CyD Software Labs.


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


Комментарии

Юрий

21 Ноября 2008

myhonor.tu2.ru

теставая площадка. Писал сам. Я - экономист. :(
Вообще старался использовать больше числовые переменные передающиеся через GET. Соответственно старался сделать их проверку на натуральное число.
single.raven@gmail.com


pat

21 Ноября 2008

А есть что-нибудь на .NET opensource


Михаил Фленов

21 Ноября 2008

Я не видел


иван

25 Мая 2014

зачекай hаvij+pangоlin+sqlmap и будет выхлоп 100%


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

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

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

О блоге

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

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

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

Пишите мне