wwwolf の PHP ウェブシェル
私は他のウェブシェルを使うときに頻繁に問題に遭遇しました:
- 対象の一部で動作している古い PHP バージョンと互換性のない新しい PHP 構文機能を使用している。
- リモート URL に関して誤った想定をしており、PHP コードインジェクションやサーバーが(予期する/しない)GET パラメータを壊してしまう。
- 標準出力の内容しか表示せず、stderr を捨ててしまうことが多い。
- 出力表示において特殊文字(
< など)の扱いが不十分。
- ファイルアップロードを許可していないか、対象の設定でサポートされていない/ブロックされている方法しか提供しない。
- 対象が UNIX 系か Windows 系かによって手動での修正が必要。
これらの問題を解決するための私の試みがこれです。他のいくつかのソリューションとは異なり、これは "フル機能の
ポストエクスプロイテーションフレームワーク" になることをほとんど目指していません。その唯一の目標は、KISS
の原則に可能な限り従い、そこから何を構築するにも邪魔にならないよう十分に汎用的に保つことで、対象に足がかりを得るための
安定した信頼できる方法を提供することです。

WhiteWinterWolf の PHP ウェブシェル:
- アクセスを パスワードで保護 できます。
- UNIX 系と Windows 系の両方で修正なしに動作 します。
- PHP の出力バッファをクリア(つまり、攻撃対象のアプリケーションがすでに生成した「ガベージ」コードを破棄)し、PHP コードの実行終了を強制して、最も クリーンで安定した動作 を提供しようとします。
- フォームは POST リクエストとして送信 され、最初にアクセスするために使用された URL とまったく同じ URL(GET パラメータもまったく同じで、追加も削除もされません)を維持します。いかなる想定も行わない ため、ねじれたコードインジェクション技術に適しています。さらに、リモートサーバーは POST データをログに記録しない場合があり、したがって対象で実行された実際のコマンドをログに記録しない可能性があります。
- 賢明なデフォルト値 が適用されます:
- カレントワーキングディレクトリは、実際のカレントワーキングディレクトリに設定されます。これにより、リモートのシステムタイプを簡単に判別できるという追加の利点があります(
/var/www/html と C:\Inetpub\wwwroot の比較)。
- フェッチ元ホストは、対象のサーバーから見たあなたの IP アドレスに設定されます。
- ワーキングディレクトリを自由に設定 でき、その値はコマンド間で保持されます。PHP の
open_basedir 設定がサーバー内を移動する能力を制限する可能性がある場合に備えて、特定の警告メッセージが表示されます。
- 対象にファイルをアップロードするには 2 つの異なる方法 があります:
- リモートの PHP 設定で許可されている場合の古典的なアップロードフォーム。
- 指定されたホストと URL(通常は攻撃者が制御するホスト)からファイルをフェッチします。この機能は、PHP の
url_allow_fopen 設定の制限を回避できる 非常に 基本的な HTTP フェッチ機能を実装しています。HTTP リダイレクトや認証のような凝ったことは処理しませんが、ホスト名の前に tls://203.0.113.37 のように付加することで SSL/TLS を処理できる 可能性があります。
Clear cmd リンクを使用すると、1 回のクリックでコマンド入力フォームフィールドをクリアしてフォーカスを設定 できます。サーバー上でいくつかの任意のコマンドをすばやく実行するのに便利だと思いますが、この機能は JavaScript に依存しています。JavaScript を避けたい場合は、この 1 行を削除できます。ウェブシェルの他の部分には JavaScript は使用されていないため、影響はありません。
このスクリプトは、フォーム設定を次の順序で適用します:
- カレントワーキングディレクトリ。
- アップロードするファイル。
- 実行するコマンド。
これにより、指定したディレクトリにファイルをアップロードし、単一の HTTP リクエストで即座に実行できます。
詳細については、メインプロジェクトページ を参照してください。
このスクリプトは、セキュリティ研究および評価の目的でのみ提供されています。
違法な目的で使用しないでください!