Цитата |
---|
написал: Удалите исходный код уязвимых файлов и запросы к этим файлам!! |
10.02.2025 23:27:25
Это всё хорошо, но проверить наличие уязвимостей в аспро всё равно необходимо, даже если в логах 404. Если вы что-то предприняли и пытаетесь проверить сработало ли, то сначала ждёте посещение файлов аспро (корзины, form, error_log_logic.php и т.д), а потом проверяете наличие новых файлов через bash (на данный момент это новые файлы в папке ajax, а также новые index.php в самых разных директориях сайта, но потом этот принцип изменится скорее всего). Мне в этом помогает git на проекте. Можно какую-нибудь оповещалку заколхозить при попытке создания или изменения файлов проекта.
|
|||||
|
|
10.02.2025 23:31:08
Беглый тест ошибок пока не выявил |
|||
|
|
10.02.2025 23:35:57
|
|||
|
|
11.02.2025 00:05:47
Доброй ночи!
По поводу нового алгоритма взлома - если я правильно понял логику, то с помощью файла /ajax/error_log_logic.php создаётся лог-файл /ajax/js_error.txt, но внутри его содержимое - это вредоносный PHP. А потом в файлах /ajax/form.php и /form/index.php с помощью GET-параметра "url" этот js_error.txt просто инклудится (и исполняется соответственно, раз уж внутри PHP). У себя закрыл так: 1. В error_log_logic.php закомментировал AddMessage2Log (он нужен для какой-то отладки, на рабочем сайте не нужен). 2. В /ajax/form.php закомментировал следующую строчку (это сломает кастомные формы с $form_id = 'TABLES_SIZE', но я у себя только одну такую нашёл "Нашли дешевле", которая не используется). При желании можно не комментировать include, а сделать строгую проверку этого $url_sizes перед ним.
|
|||||
|
|
11.02.2025 13:45:31
|
|||
|
|
11.02.2025 14:10:11
/ajax/error_log_logic - а этого файла у меня вообще никогда и не было, скорее всего это и спасло от вчерашней утренней атаки |
|||
|
|
11.02.2025 14:21:22
|
|||||
|
|
11.02.2025 15:07:27
Кто-то еще применял патч? После него были заражения? Этот патч находит все файлы с уязвимым кодом и меняет его на $arParams = unserialize(urldecode($_REQUEST["PARAMS"]), ['allowed_classes' => false]); Может еще что-то добавляет в аспрошных классах, там не смотрел. |
|||||
|
|
11.02.2025 16:50:51
Но сам я запускать его уже всё равно пока ещё не буду))) пусть настоится ![]() |
|||
|
|
11.02.2025 23:13:49
-
|
|
|
|
12.02.2025 01:08:24
Файл /form/index.php на сайтах уже был удален, но судя по бекапу там прям дыра-дыра и можно было заинклюдить любой файл, чем и пользуются злоумышленники. Файл /ajax/form.php на сайтах есть, шли попытки загрузки инклюды через запрос /ajax/form.php?form_id=TABLES_SIZE&url=/ajax/js_error.txt но вообще не понимаю, каким образом можно было через него загрузить файл, если внутри идет проверка, что загружаемый файл обязательно должен лежать в папке /include/
посмотрел прошлые забекапленные версии, там тоже проверка на папку "/include/" присутствует. или в совсем ранних версия тоже дыра-дыра была и можно было загружать любой файл? |
|||||
|
|
12.02.2025 01:21:43
вышла новая версия патча: дополнительно удаляет (в т.ч. из служебных папок):'/ajax/error_log_logic.php', '/ajax/js_error.php', '/ajax/js_error.txt' и "лечит" /form/index.php и /ajax/form.php способом 'TABLES_SIZE' && false |
|||
|
|
12.02.2025 11:09:22
![]() |
|||||
|
|
12.02.2025 12:52:14
в моем случае
у них в скрипте идет доп. проверка на присутствие в файле кода:
Но когда-то давно дыра в файле судя по всему была, раз ее исправляют. Итого по последним уязвимостям, как понять была дыра и могли сломать (если могли сломать, то скорее-всего сломали): 1. если есть файл /form/index.php — то дыра есть практически наверняка 2. если в файле /ajax/form.php нет кода file_exists($url_sizes) и есть код $form_id === 'TABLES_SIZE' — то дыра есть практически наверняка И по файлу /ajax/js_error.txt — его присутствие означает, что была попытка взлома, но скорее-всего она была неудачная, т.к. при наличии дыры данный файл должен был бы удаляться после загрузки на сервер вредоносного файла. Сам файл js_error.txt — это лог ошибок и не является взломом сайта, а только успешная и опасная подготовка к дальнейшему взлому, если на сайте не закрыта дыра. В любом случае при наличии этого файла: 1) удаляем файл /ajax/error_log_logic.php — именно через него создавался js_error.txt и по мнению Аспро он больше не нужен и его можно удалить 2) удаляем файл /ajax/js_error.txt 3) проверяем наличие дыры (см. выше), если дыры нет — скорее-всего сайт не взломали 4) обязательно смотрим лог!!! |
|||||||
|
|
12.02.2025 13:01:38
|
|||
|
|
12.02.2025 13:17:12
мы обработчик написали на OnPageStart и если запрос к "неправильным" страницам (/form/index.php, /ajax/error_log_logic.php, /js_error.txt и т.п.) или запрос к любой странице содержащей в адресе *ajax* с параметрами file_get_contents, file_put_contents, base64_decode, то сразу стоп и IP-адрес в стоп-лист на долгое время. За два дня две попытки было искать дыру — сразу в бан ушли. Заодно туда прописали запрет на страницы /wp-admin/ и т.п. Только сегодня уже более двадцати раз блокировка срабатала на искателей дыр от WordPress. |
|||
|
|
12.02.2025 13:52:21
|
|||
|
|
12.02.2025 13:53:46
|
|||
|
|
12.02.2025 14:07:52
|
|||
|
|
12.02.2025 14:13:01
сам исходил из последней версии патча от Аспро, у них на удаления стоят следующие файлы из всех директорий (и рабочих и установочных):
раз Аспро их удаляет, значит не особо и нужны они. если удалять не хочется, то тогда закооментировать строку с AddMessage2Log — это обязательно |
|||||
|
|
12.02.2025 14:37:01
Ну смотрите сами. |
|||
|
|
12.02.2025 16:56:28
но решил перестраховаться и банить с избытком, в т.ч. при обращении к '/ajax/show_basket_fly.php' и '/ajax/reload_basket_fly.php' (мы их в проектах не используем), а далее уже разбираться и смотреть логи, кого и почему забанили... и, если что, то вносить правки в логику. за несколько дней защита сработала два раза, в обоих случаях была именно атака с попыткой засунуть вредоносный контент с использованием file_put_contents. |
|||
|
|
13.02.2025 09:54:58
|
|||
|
|
16.02.2025 14:56:37
это код для проверки присутствия в запросе запрещенных команд и прерывания обработки запроса. в моем случае команды file_put_contents и base64_decode находились в заголовке Referer
|
||||
|
|
|||