Intereting Posts
Могу ли я получить CONST в классе PHP? Подтверждение того, что статические переменные PHP не сохраняются в запросах array_map show mysql_real_escape_string () ожидает параметр 1 Окончательное решение для использования regex для удаления вложенных тэгов html того же типа? Предупреждение: mail () : ответ SMTP-сервера: 553 Мы не передаем нелокальную почту, извините. а также Наличие нескольких htaccess в корневом каталоге Как показать предупреждение пользователю, если пользователь закрывает браузер? Композитор, игнорирующий файл компоновщика zip dependecies 'composer.json Разбор доменного имени из URL-адреса в PHP IP-адреса сохраняются как 0 при преобразовании с помощью функции PHP ip2long PHP 7: Отсутствует VCRUNTIME140.dll urlencode () символ 'звездочка' (звезда?) Как WordPress читает строки комментариев Как исправить "(# 200) Пользователь не разрешил приложению выполнять это действие" Ошибка при публикации на facebook wal Проблема с португальской кодировкой

Продолжайте находить инъекционный тарабарщик PHP в моих файлах темы WordPress

Я построил настраиваемую тему для сайта клиента и, как я полагаю, продолжает взломать. То, что я нахожу, – это куча табельного кода в верхней части каждого файла темы и плагинов. Все это супер-сжато и не очень легко читать, но оно просто похоже на кучу чисел. Он ничего не выводит на сайт. Единственная причина, по которой я знаю, что это происходит, состоит в том, что добавление кода в плагины ломает плагин, и WP автоматически отключает его. Это произошло примерно 5-6 раз.

После второго раза я понял, что настройка по умолчанию не разрезала его. Поэтому я установил WordFence, и в течение месяца он работал отлично. WordFence начал рисовать картину того, сколько атак было предпринято против сайта в любой момент. Это безумие. Я также изменил все пароли (пользователи, FTP и т. Д.), Изменил префикс таблицы, заблокировал wp-admin и использовал другой URL-адрес для доступа к тире и выполнял почти каждый отдельный элемент в статье Hardening WordPress . Также посоветовал несколько сообщений здесь.

Все в порядке, хотя кажется. После целого месяца успеха плагин и мои меры перестали работать. Бесполезные строки начали появляться в верхней части файлов тем. Но, как ни странно, не файлы плагинов. Я прояснил ситуацию и попробовал пакет безопасности iThemes вместо WordFence. НЕА! Проснулся, чтобы найти сайт был взломан снова.

В дополнение к вышесказанному я также сузил список моих плагинов на несколько доверенных нескольких, которые оказались безвредными на других сайтах: «Исключительные и расширенные пользовательские поля». Я волнуюсь, что каким-то образом я что-то прикрутил в своей теме, но я закодировал дюжину или около того и никогда не имел этой проблемы ни на одном из этих сайтов вообще.

Я не понимаю, что делать. Я чувствую, что если бы я понял, что «взломать», я бы смог лучше бороться с ним, но я в недоумении. Эти вещи очень сложны для Google. Любые рекомендации будут оценены.

Вот ссылка на введенный код

Я однажды нашел эту проблему на сервере, и я, наконец, создал сценарий bash, который ищет этот код, удаляя только верхнюю строку из каждого зараженного PHP-файла. Он решил проблему.

Я поставил здесь, чтобы вы могли использовать его, чтобы избавиться от вредоносного кода, но не забудьте попытаться найти, как был взломан сервер, чтобы вы снова не взломали.

Это довольно простое использование в оболочке bash:

Проверьте, есть ли зараженные файлы

./remove_malware.sh /var/www/wp_path/ 

Очистка зараженных файлов

 ./remove_malware.sh /var/www/wp_path/ clean 

Сценарий ( remove_malware.sh ):

 #!/bin/bash # # This script remove malware of PHP files. # # In this case it will remove some malicious code # from all WordPress PHP files that is at top of # every PHP file. # # The string at the top of every file is: # # <?php if(!isset($GLOBALS["\x61\156\x75\156\x61"])) { $ua=strtolower($_SERVER["\x48\124\x54\120\x5f\125\x53\105\x52\137\x41\107\x45\116\x54"]); if ((! strstr($ua,"\x6d\163\x69\145")) and (! strstr($ua,"\x72\166\x3a\61\x31"))) $GLOBALS["\x61\156\x$ # # This script tries to find the string inside $_SERVER # of the above line at the top of the files to determine # if the file is infected. If you run the script and # nothing seems to be infected but you suspect and you # want to be sure, just open any PHP of WordPress and # check if the malicious line code is present. If is # present but the script did not detect, it is because # the content inside $_SERVER may be diferent. # In these cases, just replace in this script the string # in the -e parameter of grep line with the content of # $_SERVER found in your PHP (remember to escape # the \ with \\\\) and run again this removal script. # # # JavocSoft 2014 # if [[ -z "$1" ]]; then echo "Directory where to find is required." else grep -rnwl $1 --include \*.php -e "\\\\x48\\\\124\\\\x54\\\\120\\\\x5f\\\\125\\\\x53\\\\105\\\\x52\\\\137\\\\x41\\\\107\\\\x45\\\\116\\\\x54" | while read -r filename ; do if [[ ! -z "$2" ]]; then echo "Found file $filename. Cleaning..." awk 'BEGIN {matches=0} matches < 1 && /1/ { sub(/^.*<?php/,"<?php"); matches++ } { print $0 }' $filename > $filename.purged mv $filename $filename.bck mv $filename.purged $filename else echo "Found file $filename." fi done echo "Done." fi 

Один из способов сузить его, было бы print_r (я верю его hex_values). Из вашего pastebin:

$ _SERVER [ "\ x48 \ 124 \ x54 \ 120 \ x5f \ 125 \ x53 \ 105 \ x52 \ 137 \ x41 \ 107 \ x45 \ 116 \ x54"]

 print_r(\x48\124\x54\120\x5f\125\x53\105\x52\137\x41\107\x45\116\x54); 

вывод:

 $_SERVER["HTTP_USER_AGENT"]; 

Эта небольшая часть кода задокументирована в официальном руководстве :

'HTTP_USER_AGENT' Содержимое заголовка User-Agent: от текущего запроса, если таковой имеется. Это строка, обозначающая пользовательский агент, который обращается к странице. Типичный пример: Mozilla / 4.5 [en] (X11; U; Linux 2.2.9 i586). Помимо всего прочего, вы можете использовать это значение с помощью get_browser (), чтобы адаптировать выход вашей страницы к возможностям пользовательского агента.

Чтобы пройти весь код, потребуется некоторое время, потому что часть «тарабарщины» встроена в другие функции.

Небольшое предупреждение, я не эксперт по безопасности, или мастер php, при тестировании какого-либо кода попробуйте использовать песочницу в Интернете, например http://sandbox.onlinephpfunctions.com/