一般社団法人 全国個人事業主支援協会

COLUMN コラム

はじめに

なぜブラウザでShellを実行したいのか

2021年8月21日~2021年9月4日まで開催されたsetodNoteCTF(https://ctf.setodanote.net/)のPwn問題で、ブラウザ経由でコマンドを実行する環境を提供された。

Linuxのターミナル画面をブラウザで実行できることもあり、CTFの問題より実装が気になってしまった。

ブラウザ上でShellを実行できるメリットとしては、問題を解くにあたりteratermやsshで接続しなくて済むため、初心者が躓きにくくなると考える。

ブラウザでShellを実行できるようにしてどうしたいのか

CTFにおけるPwn問題の実行環境をブラウザ上で提供したい。問題提供者、回答者双方の負担や障壁が少なくなる。

構想

見た目

ブラウザ上でターミナル風の表示となるのは以下のサイトを参考にした。(HTML+JS:textareaタグを使ってブラウザをターミナル風に装う)

見た目と、入力した感じは、上記サイトで再現できたので、あとはどのように実装するか考えた。

処理部分

処理部分はEnterキー押下時に、コマンド部分をjsで切り出して、XHRで通信し、処理結果を画面に表示させる実装とする。

その際、入力されたコマンドを認識するようjsで調整したり、表示する際の見え方等を調整したりした。

作ってみた結果

実装した結果は以下の通り

通常のShellのようにlsコマンドやcatコマンドを実行できることが確認できた。

実装に関しては、入力してEnterキーを入力した際、XHRで通信し、その結果を表示する実装としている。

まとめ

ここまでWebShellをターミナル風に実行できる環境を構築、実行してみた。

ただ、この状態だと、すべての子安堵が実行可能なので、いたずらがいくらでも可能なので、サービスを監視し、定期的にリスタートするcronや実行制限をかけたりと考慮することはいくつかある。

もう少し手を加えてよりセキュアな実行環境を構築していく。

The following two tabs change content below.

田口 仁大

最新記事 by 田口 仁大 (全て見る)

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア