任意のファイル名文字列に一致する正規表現

任意のファイル名文字列に一致する正規表現

WordPressのインストールがApacheユーザーとして任意のファイルを生成する可能性がある脆弱性の犠牲になった共有ホスティングユーザーがあります。生成されたファイルは明らかにランダムジェネレータを使用して生成されますが、特定のパターンに属します。私もそのグループだけをマッチングすることを考えていましたが、このような性格の発見により合法的なファイルがあまりにも多く見つかりました。これらのサンプル悪意のあるファイルをすべて一致させるには?

8twcoasx.php
hjoeksdp.php
nzpsmujc.php
oiczdqkp.php
wpebruwi.php
wuclgsvz.php
tie9txh5.php
vza6pn12.php
nwfthzli.php
1wovcnq6.php
1fwevaol.php
zscy86d8.php
ikz45skj.php
n70x0aul.php
nwk34bs0.php
ugdnncmz.php
wdcq2zzi.php
8f4w3dmt1z.php
uqv4e2cm2a.php
55zf4u1dp7.php
szfc8v129e.php
oihfoe09fposf.php (occured more often)
Jwlsjd_baaqifg.php (occured more often)

明らかに、私はWordPressのインストールとプラグインを更新するためにユーザーと協力しますが、クエリに入れて問題がまだ存在するかどうかをすばやく確認できる正規表現を使いたいと思います。

私が見ることができるパターンは次のとおりです。

  1. 常に8、10、または13文字です。
  2. 常に*.php

答え1

まず、「パターン」が正確に何であるかを決定する必要があります(正規表現の生成)。私は何も明確に見ることができません。常に.php大文字または小文字、数字、または8、10、または13文字で終わり、その前に来ます_。それ以外は明確ではありません。たとえば、常に数字があるとは限りません。この一般的な「パターン」を一致させるには、^[a-zA-Z0-9_]{8}\.php$10文字または13文字を一致させるには、おそらく多くの誤検出を取得します。

代わりに、現在の変更日に新しいファイルが作成されますか?その場合は、新しい設定の後に修正された新しい疑わしいファイルを検索できます。

find /path/to/directory -newer /path/to/new_config -regextype egrep -regex '.*/([a-zA-Z0-9_]{8}|[a-zA-Z0-9_]{10}|([a-zA-Z0-9_]{13})\.php'

変更日はを使用して変更できますtouch。マルウェアがこれを行うと、アクセス時間-anewer、状態変更時間、-cnewerまたはフィルタリングに基づいてフィルタリングされる可能性があります-newerXY

すべてのファイルが特定のユーザーに属している場合は、その情報を使用してフィルタリングすることもできます。つまり、オプションを追加します-user apache

答え2

これはPHPのマルウェアであり、以前見たことがあります。動画で視聴する必要があります。ベンデクライが電話しました「利益ではなく楽しみのためにウイルスを書く」この特定の攻撃に興味がある場合。

私の貢献の鍵はこれです。ファイル名のmd5を見つけるのではなく(完全に有効なアプローチ)、次のようなものを使用して生成します(ただし、常に$ length = 10なので正確ではありません)。

function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0;$i < $length;$i++) {
        $randomString.= $characters[rand(0, $charactersLength - 1) ];
    }
    return $randomString . ".php";
}

特定の日付より古いファイルをすべて検索するには、次のコマンドを使用する必要があります。

`base64_decode

または eval(base64_decode(

これはどの文字が一致し、どの文字が一致しないかを決定しませんが、私の経験ではおそらく正確に近いです。

私はできます。

  1. サーバーを見てください。
  2. サポート。
  3. 新しいディレクトリにWordPressパラレルバージョン(新規)をインストールします。
  4. 誤検出確認eval(base64_decode(
  5. この文字列に一致するすべてのファイルを分離します。
  6. 上記の正規表現に一致する他のファイルがあることを確認してください。
  7. 孤立したファイルをバックアップします。
  8. 上記の文字列に一致する孤立したファイルをクリーンアップします。
  9. この脆弱性を回避するWordPressパッチを見つけたり、WordPressの新しいバージョンにアップグレードしてください。

答え3

i have used below command to achieve

find . -type f -user "user" username | sed -n '/[a-zA-Z0-9_]\{8,\}.php$/p'

It will display all the files whose len is greater than 8

関連情報