Обнаружение эксплойтов в веб-приложениях и как действовать - PullRequest
4 голосов
/ 09 февраля 2010

Какие существуют способы обнаружения эксплойтов в веб-приложениях PHP / MySQL (проверка на наличие определенных символов или фрагментов кода в массивах GET, POST, COOKIE / использование библиотеки с базой данных, в которой есть все шаблоны для обычных эксплойтов, если что-нибудь существует?) и как мне поступить, если он обнаружен?

Например, если кто-то попытался найти инъекцию SQL в моем веб-приложении PHP / MySQL с помощью метода запроса GET, должен ли я сохранить действие, выполненное пользователем, в базе данных, чтобы приложение отправило мне электронное письмо, IP заблокирует пользователя и отобразит ему / ей сообщение «Извините, но мы обнаружили вредоносное действие в вашей учетной записи, которое будет проверено. Ваша учетная запись была отключена, и некоторые функции могут быть отключены с вашего IP-адреса. Если это ошибка пожалуйста, напишите нам со всеми деталями. "

Спасибо.

Ответы [ 5 ]

2 голосов
/ 09 февраля 2010

На ум приходят три вещи:

  1. защитное кодирование, очистить все входные данные, подготовить SQL-операторы и использовать Suhosin
  2. повысить безопасность вашего сайта, взломав его с помощью сканера уязвимостей
  3. попытки взлома журнала с помощью системы обнаружения вторжений

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

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

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

1 голос
/ 09 февраля 2010

Ваш вопрос двоякий, и я отвечу на вторую часть.

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

1 голос
/ 09 февраля 2010

просто используйте strip_tags () для всех переменных $ _REQUEST и $ _COOKIE, чтобы позаботиться о коде, отображаемом в этих переменных, поскольку для SQL вам, возможно, придется написать регулярное выражение, похожее на запрос, или что-то подобное, но это не должно выдайте, как вы должны всегда mysql_real_escape_string ($ str) все переменные в ваших запросах. попробуйте что-то подобное, хотя.

function look_for_code_and_mail_admin($str) {
    $allowed_tags = "<a>,<br>,<p>";
    if($str != strip_tags($str, $allowed_tags)) {
        $send_email_to = "some@bodys.email";
        $subject = "some subject";
        $body = "email body";
        mail($send_email_to,$subject,$body);   
    }
    return($str);
}
0 голосов

Хм, я не могу вспомнить, когда в последний раз видел сайт, который пытается регистрировать атаки с использованием SQL-инъекций, в которые я не смог проникнуть ..

Вам не нужно беспокоиться о том, что кто-то атакует сайт, поскольку в лучшем случае это субъективно, если что-то является атакой или нет. Что если сайт base64 кодирует некоторые значения и декодирует их до того, как использует его? Ваш IDS не собирается поймать это. Что если пользователь захочет опубликовать фрагмент кода, он будет обнаружен как эксплойт, поскольку содержит SQL? Это пустая трата времени ... Если вам действительно нужно знать, кто-то на вас нападает, просто установите IDS на отдельную машину с доступом только для чтения к входящему трафику. многие IDS сами по себе уязвимы и только усугубят ситуацию.

Используйте стандартные методологии безопасного программирования, используйте параматеризованные SQL-запросы или ORM.

0 голосов
/ 09 февраля 2010

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

Я предлагаю самостоятельно отыскать эксплуатируемые части и при необходимости провести санитарную обработку. У Acunetix есть очень хорошая программа для этого. Если вы не хотите предлагать гигантскую цену за Acunetix, есть несколько очень хороших аддонов Firefox под названием XSS Me и SQL Inject me, которые вы, возможно, захотите изучить.

...