Демо реализация js сниффера который может быть внедрен на страницу для отлова введенной пользователем информации на странице. Внедрение может проходить либо инъекцией в пакет (к примеру на роутере или прокси сервере) или непосредственно добавление сслыки js скрипта в саму страницу. В скрипт также добавлено шифрование для передачи данных в скрытом виде. Данный скрипт был создан лишь в целях демонстрации данного вектора атаки. Код является сильно избыточным и является прототипным.
При сборке следует обратить внимание на конфигурационный файл который содержит ссылку на сервер приёмник и публичный ключ с помощью которого происходит шифрование исходящей информации. Для сборки нам потребуется webpack.
$ npm install -g webpack
Переходим в директорию ./client и подгружаем необходимые для сборки компоненты
$ cd ./client
$ npm install
Перед процессом сборки js-скрипта укажите необходимые настройки (публичный ключ шифрования и ссылку на сервер-приемник) в файле ./client/js/options/options.es6 После этого запускаем непосредственно процесс сборки
$ NODE_ENV=production webpack
Полученный файл лежит в директории ./public/assets/js/app.js Его в последующем используем при инъекции в html код страниц.
Серверная часть представленна в виде приложения php построенного на базе фреймворка Laravel. Для работы серверного приложения неоходимо предварительно установить php версии >=5.6. Для хранения данных используется БД Mongo. После установки серверного приложения, необходимо в файле ./server/config/keys.php выставить приватный ключдля дешифровки входящих данных. Для работы приложения необхомо подгрузить нужные для работы библиотеки с помощью composer.
$ composer install
Возможные пути внедрения JS кода:
- Подгрузка через JS-расширение браузера или userscript.
- Внедрение ссылки на js файл в http пакет на маршрутизаторах и прокси серверах (затруднительно в случае https). Также возможна эксплуатация данного вектора атаки организацией роутинга посредствоим mitm-атаки.
- Непосредственно внедрение в html страницу со стороны сервера (возможно может быть полезна администраторам ресурса)
MIT