Обнаружение эксплойтов в веб-приложениях и дальнейшие действия

StackOverflow https://stackoverflow.com/questions/2225047

Вопрос

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

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

Спасибо.

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

просто используйте 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);
}

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top