【PHP】簡易的なWebShell(ウェブシェル)を作る方法

PHPで簡易的なWeb Shell(ウェブシェル)を作る方法についてまとめました。

WebShellとは

WebShell(ウェブシェル)は、その名のとおりWebサーバー上でシェルコマンド等を実行するファイルです。
WebShellはサーバー攻撃ツールとしてよく出てきます。
攻撃者は何らかの方法でWebサーバーに不正アクセスし、Webサーバー上にWebShellを設置します。
そして、攻撃者はWebブラウザを利用してWebShellを遠隔操作し、WebShell経由でWebサーバー上で不正な操作を行います。

特に、WordPressでは以下のような攻撃パターンが多いです。

  1. 攻撃者は、WordPressのページをスキャンし、ログインユーザー名を取得(対策をしていないとログインユーザー名は簡単にバレます)。
  2. 攻撃者は、総当り攻撃辞書型攻撃で何度もログイン画面でログインを試行し、ログインパスワードを取得する。
  3. 攻撃者は、WordPressの管理画面に不正ログイン
  4. 攻撃者は、管理画面上でWordPressのファイルマネージャー系プラグインをインストール。
  5. 攻撃者は、ファイルマネージャー系プラグインを使ってWebShell(PHP製)をアップロード
  6. 攻撃者は、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

コメント