PHPで簡易的なWeb Shell(ウェブシェル)を作る方法についてまとめました。
WebShellとは
WebShell(ウェブシェル)は、その名のとおりWebサーバー上でシェルコマンド等を実行するファイルです。
WebShellはサーバー攻撃ツールとしてよく出てきます。
攻撃者は何らかの方法でWebサーバーに不正アクセスし、Webサーバー上にWebShellを設置します。
そして、攻撃者はWebブラウザを利用してWebShellを遠隔操作し、WebShell経由でWebサーバー上で不正な操作を行います。
特に、WordPressでは以下のような攻撃パターンが多いです。
- 攻撃者は、WordPressのページをスキャンし、ログインユーザー名を取得(対策をしていないとログインユーザー名は簡単にバレます)。
- 攻撃者は、総当り攻撃や辞書型攻撃で何度もログイン画面でログインを試行し、ログインパスワードを取得する。
- 攻撃者は、WordPressの管理画面に不正ログイン。
- 攻撃者は、管理画面上でWordPressのファイルマネージャー系プラグインをインストール。
- 攻撃者は、ファイルマネージャー系プラグインを使ってWebShell(PHP製)をアップロード。
- 攻撃者は、WebShell経由でWordPressに不正なコンテンツ(フィッシングサイトなど)を設置したり、DDos攻撃やスパムメールの大量送信を行う。
簡易的なWebShell
あくまでWebShellの理解を深めるために簡易的なプログラムを作成します。
今回のプログラムを他人がアクセスできるサーバに置くのは危険ですので、ローカル環境でサイバーセキュリティの学習に試す程度にしてください。
【実行環境】
M1 MacBook
MAMP(PHP7.4.33 + Apache)
MAMPで「htdocs」に以下のPHPファイル(test.php)を保存します。
■/Applications/MAMP/htdocs/test.php
【実行結果】
MAMPでApacheを起動してブラウザ「http://localhost:8888/test.php?cmd=ls%20-a」にアクセスすると、「ls -a」コマンドが実行され、結果がブラウザの画面上に表示されます。
. .. index.php test.php
「http://localhost:8888/test.php?cmd=date」にアクセスすると、「date」コマンドが実行され、結果がブラウザの画面上に表示されます。
Thu Feb 1 22:26:53 JST 2024
コメント