Регулярное выражение, которое соответствует случайной строке имен файлов

В zsh :

als() {
  until [[ $1 = [/.] ]] {argv[1,0]=$1:h;}; ls -ld -- "$@"
}

POSIXly:

als() (
  while :; do
    case $1 in
      [./]) exec ls -ld -- "$@"
    esac
    set -- "$(dirname -- "$1")" "$@"
  done
)
0
07.06.2019, 20:54
3 ответа

Вам нужно будет определить, что "шаблон" является именно первым (для создания регулярного выражения ). Я не вижу ничего очень ясного. Он всегда заканчивается на .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.

3
28.01.2020, 02:18

Это вредоносное ПО для 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 до новой версии.
1
28.01.2020, 02:18
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
0
28.01.2020, 02:18

Теги

Похожие вопросы