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

Мы все знаем, что практически невозможно создать большой веб-сайт без одного или двух недостатков. Поэтому я написал небольшой монитор, который проверяет журналы доступа 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 используются как универсальное средство для предотвращения использования этих средств автоматизации.
  • Я че cking как необработанные, так и расшифрованные по URL-адресу строки.
  • Я не ищу ответов типа «вместо этого сделайте более безопасный код».
  • Я не ищу другого способа сделать это, просто способ улучшить мою текущую логику.

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

8
задан Polynomial 12 October 2011 в 07:54
поделиться