Google Cloud Run で実行されている Ubuntu 20.04.3 Docker コンテナでアプリケーションを起動したり、ターミナル コマンドを実行したりするには?

Google Cloud Run で実行されている Ubuntu 20.04.3 Docker コンテナでアプリケーションを起動したり、ターミナル コマンドを実行したりするには?

Google Cloud RunのクラウドでUbuntu 20.04.3デスクトップを実行しています。コンテナイメージをローカルで実行すると、bash端末を含むすべてのプロセスを実行できます。

ただし、noVNCを介して接続されたGoogle Cloud Runでは、Chrome以外の端末や他のプロセスを起動できません。だから私はいくつかの異なるブラウザベースの端末ソリューションを試してみましたが、これが私が見つけたものです。

Node.jsでSpawnを使用する

SpawnとReverse Shell Node.js Webサーバーを使用してターミナルコマンドを渡すことができます。たとえば、localhost:xxxx/exec?q=ls は、現在の作業ディレクトリにあるファイルを一覧表示します。コマンドを実行することもできます。

WebSSH2とシェリナボックス

どちらのソリューションも、SSHを使用してブラウザクライアントをSSHサーバーに接続します。ログインできますが、コマンドを実行すると、次の出力が表示されます。

root@localhost:~# ls

[1] stopped            ls --color=auto
root@localhost:~# ls

ご覧のとおり、rootでSSHingを試しましたが、Node.jsのgenerateメソッドを使用してシェルコマンドを実行しない限り、まだコマンドを実行できません.

状況に応じてUbuntu、fluxbox、xvfbをローカルで実行し、noVNCを使用してブラウザを介してデスクトップにアクセスする方法は次のとおりです。ローカルでは、すべてがうまく動作します。lsホームフォルダから実行して、そこにどのファイルがあるかを確認できます。

noVNCによるUbuntuデスクトップコンテナイメージ

Google Cloud Run で同じ画像を実行すると表示される様子です。このlsコマンドは次のように返しますstopped [1]

Google Cloud Run では命令は実行されません。

Node.jsリバースシェルの外観は次のとおりです。ここではls、/usr/binフォルダで実行できることがわかります。これがファイルシステムに移動し、どの権限が設定されているかを確認し、Google Cloud Runで実行されているコンテナにコマンドを実行する唯一の方法です。

Google Cloud Runでは、Node.jsリバースシェルを介してコマンドを実行できます。

Node.jsリバースプロキシを使用してファイルに対する権限を軽減しても、WebSSH2またはshellinaboxを使用するときと同じようにコマンドをchmod -R 777 /usr実行することはできません。ls

シェルコマンドとプロセスがルートとして実行されるのを防ぐことができるのは何ですか?

ベストアンサー1

おすすめ記事