Обнаружение потенциальных атак SQL-инъекций, а также других проблем безопасности - PullRequest
8 голосов
/ 11 октября 2011

Все мы знаем, что практически невозможно создать большой веб-сайт без одного или двух недостатков.Поэтому я написал небольшой монитор, который проверяет журналы доступа Apache на наличие потенциальных атак SQL-инъекций (среди прочего), и он работает очень хорошо.Я получаю оповещение всякий раз, когда кто-то пытается атаковать, и у меня было так мало ложных срабатываний, что действие по умолчанию теперь состоит в том, чтобы сбросить их в выпадающий список iptables.Это даже помогло мне определить несколько (не связанных с безопасностью) ошибок и удалить их.

Вот мои правила (без учета регистра):

PathInjection = \./\.\./(bin|boot|data|dev|etc|home|lib|lib64|media|mnt|opt|proc|root|sbin|selinux|srv|sys|tmp|usr|var)/

Havij = 0x31303235343830303536

r3dm0v3 = 0x7233646D3076335F68766A5F696E6A656374696F6E

LogicBypass = '.*?(\bor|\band|\bxor|\|\||\&\&).*?--

UnionSelect = union[^a-z-_]+((all|distinct)[^a-z-_]+)?select[^a-z-_]

Что я хотел бы знать, какВы бы обошли эти проверки и все еще производили бы правильную инъекцию?Можете ли вы придумать способ улучшить их, не вводя ложных срабатываний?

Несколько замечаний:

  • Чувствительность к регистру отключена.
  • Я использую MySQL.
  • Записи Havij и r3dm0v3 используются в качестве универсального элемента дляне используйте эти средства автоматизации.
  • Я проверяю строки как в необработанном, так и в URL-кодированном виде.
  • Я не ищу ответов типа "вместо этого сделайте более безопасный код".
  • Я не ищу другой способ сделать это, просто способ улучшить мою текущую логику.

РЕДАКТИРОВАТЬ: Итак, люди, кажется, неправильно поняли мое намерение.Это, наверное, моя вина, так как я не полностью объяснил.Эта функция запрашивается в качестве дополнительной функции для продукта мониторинга и предназначена для обеспечения минимального мониторинга безопасности.В рамках нашего диалога с клиентом и нашей документацией мы подчеркиваем, что это не универсальное решение и не замена надлежащей инфраструктуры безопасности (например, IDS и межсетевого экрана).Это просто информационная служба, которая помогает обеспечить базовое обнаружение угроз и производить статистику о количестве потенциальных атак.Я не пытаюсь написать IDS или брандмауэр.Если бы это зависело от меня, я бы пропустил эту функцию и велел бы им установить полный набор инфраструктуры безопасности с собственными системами мониторинга, но это не мой вызов.В настоящее время я тестирую систему на своем собственном сайте.Сейчас я просто ищу способ улучшить строки регулярных выражений, чтобы сделать это более эффективным.Надеюсь, это немного прояснит ситуацию.

Ответы [ 3 ]

6 голосов
/ 11 октября 2011

Вы говорите о написании IDS.Если ваш продукт не является IDS, просто получите и установите его. Snort хорошо известен и имеет бесплатную версию.

Я не ищу другой способ сделать это, просто способ улучшить мою текущую логику.

Иногда, когда дело доходит до безопасности, неправильный подход просто таков.Как бы я связался с вашей нынешней логикой?Юникод или шестнадцатеричное кодирование.

0 голосов
/ 12 октября 2011

Можете ли вы придумать, как их улучшить, не вводя ложных срабатываний?

Я бы даже не подумал об улучшении этого глупого подхода. Я бы предпочел улучшить саму безопасность сайта.

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

Я не согласен с этим. По крайней мере, для SQL-инъекций. Инъекции - довольно глупая вещь, и защита не имеет большого значения.

0 голосов
/ 12 октября 2011
Внедрение

sql является самым популярным в наши дни. В сети существует множество небезопасных кодов, а также существует несколько способов защитить приложение от атак SQL-инъекций. SQL-инъекция может происходить, когда приложение использует ввод для построения динамических SQL-операторов или когда оно использует хранимые процедуры для подключения к базе данных. Методы использования SQL-инъекций классифицируются в соответствии с типом СУБД и условиями эксплуатации. Уязвимый запрос может реализовывать вставку, обновление, удаление. Можно внедрить SQL-код в любую часть SQL-запроса. Blind SQL-инъекция. Особенности реализации SQL, используемые в различных БД. Успешные SQL-инъекции позволяют злоумышленникам выполнять команды в базе данных приложения, а также захватывать сервер. моя рекомендация:

проверьте Google, как защитить себя от SQL-инъекций

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...