ВЗЛОМ? Стерлись некоторые ноды из бд возможно после захода со сканера уязвимостей acunetix-referrer.com

Аватар пользователя Ilya_

Добрый день, уважаемые участники форума.
Drupal Обновлен до последней версии - 7.61.
Вчера заметил переходы со странного сайта - acunetix-referrer.com. Прочитал, что это сканер уязвимости сайтов.

Этот сервис создавал ссылку вида sitename/?wvstest=javascript:domxssExecutionSink(1,%22%27\%22%3E%3Cxsstag%3E()locxss%22)
после чего, возможно, стерлись некоторые статьи из базы данных. На сайте около 500 статей, из которых стерлись 4. Из них 1 типа материала товар, а вторая тип материала услуга.

Как стерлись?
Если зайти на статью, то там есть поля "основной текст", "номер" - обязательное поле "иконка", которое тоже стерлось - обязательное поле" . В типе материала "товар" стерлись все поля, а вот в типе материала "услуга", стерлись поля (вернее данные полей, сами поля в типе материала остались) рандомно. (некоторые почему-то остались).

Далее, сегодня утром обнаружил такие записи в журнале:

PDOException: SQLSTATE[23000]: Integrity CONSTRAINT violation: 1062 Duplicate entry 'node-110-0-0-und' FOR KEY 'PRIMARY': INSERT INTO {field_data_field_fivestar} (entity_type, entity_id, revision_id, bundle, delta, LANGUAGE, field_fivestar_rating, field_fivestar_target) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7); Array ( [:db_insert_placeholder_0] => node [:db_insert_placeholder_1] => 110 [:db_insert_placeholder_2] => 110 [:db_insert_placeholder_3] => service [:db_insert_placeholder_4] => 0 [:db_insert_placeholder_5] => und [:db_insert_placeholder_6] => 20 [:db_insert_placeholder_7] => ) в функции field_sql_storage_field_storage_write() (строка 514 в файле /var/www/drupal/modules/FIELD/modules/field_sql_storage/field_sql_storage.module).
PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect INTEGER VALUE: '-' FOR COLUMN 'field_fivestar_rating' at ROW 1: INSERT INTO {field_data_field_fivestar} (entity_type, entity_id, revision_id, bundle, delta, LANGUAGE, field_fivestar_rating, field_fivestar_target) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7); Array ( [:db_insert_placeholder_0] => node [:db_insert_placeholder_1] => 110 [:db_insert_placeholder_2] => 110 [:db_insert_placeholder_3] => service [:db_insert_placeholder_4] => 0 [:db_insert_placeholder_5] => und [:db_insert_placeholder_6] => - [:db_insert_placeholder_7] => ) в функции field_sql_storage_field_storage_write() (строка 514 в файле /var/www/drupal/modules/FIELD/modules/field_sql_storage/field_sql_storage.module).

судя по журналу, за две минуты было сделано около 800 таких попыток.

Есть бэкап за 10 ноября, и там эти статьи есть.
В период с 10 по 13 ставилось только обновление ядра. с 7.60 до 7.61 и 11 ноября статьи эти были. Никакие модули не ставились
Но я попробовал на localhost обновить версию от 10 ноября и там эти статьи не стерлись. Поэтому допускаю, что есть связь между этими попытками sql запросов и парсера уязвимостей acunetix-referrer.

Вопросы:
1. Есть ли вероятность, что таким образом все же удалось заразить сайт и как это проверить?
2. Стоит ли возвращаться к бэкапу от 10 ноября?
3. Журнал ошибок, я так понял, пишет только неудачные попытки?
4. Как бы Вы поступили в таком случае?
Спасибо.

Тип материала:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя sas@drupal.org
sas@drupal.org 1 месяц назад
1

1. https://www.drupal.org/project/hacked
2. Да + лечение если сайт заражен
3. Ошибки и предупреждения на сайте, есть ещё лог сервера
4. Поднять рабочий, проверить на заражение и на уязвимости, обновить модули по безопасности, поставить антивирусного сторожа.

Аватар пользователя Ilya_
Ilya_ 1 месяц назад

Спасибо.
Какие должны быть модули по безопасности? Стоит только гугл капча и Security review.

Атаки, судя по логам, были XSS и SQL Injection. Атака шла с 6 утра до 10 вечера с разных ip. (банить нет смысла).

Отфильтровав логи веб сервера, я так и не нашел успешную атаку. Везде error, Undefined, denied, и т.д.
Как в итоге получилось удалить 4 статьи, так и не понял.
Единственное, что заинтересовало - это pure-ftpd: (?@scan-13.shadowserver.org) [INFO] New connection from scan-13.shadowserver. - успешное подключение на 1 секунду
и записи вида

site:443/|0||PDOException: SQLSTATE[01000]: Warning: 1265 DATA truncated FOR COLUMN 'field_fivestar_rating' at ROW 1: INSERT INTO {field_data_field_fivestar} (entity_type, entity_id, revision_id, bundle, delta, LANGUAGE, field_fivestar_rating, field_fivestar_target) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7); Array#012(#012    [:db_insert_placeholder_0] => node#012    [:db_insert_placeholder_1] => 162#012    [:db_insert_placeholder_2] => 162#012    [:db_insert_placeholder_3] => psu#012    [:db_insert_placeholder_4] => 0#012    [:db_insert_placeholder_5] => und#012    [:db_insert_placeholder_6] => 1'"#012    [:db_insert_placeholder_7] => #012)#012 IN field_sql_storage_field_storage_write() (line 514 OF /var/www/drupal/modules/FIELD/modules/field_sql_storage/field_sql_storage.module).

а truncated это вроде бы и есть стереть поле. Но вопрос, стерлось ли только то значение, что пытались подставить при атаке, или стерлись и существующие поля сайта?

Аватар пользователя sas@drupal.org
sas@drupal.org 1 месяц назад
1

> Какие должны быть модули по безопасности?
В основном превентивные меры и соблюдение правил , можно еще поставить ограничение сессий https://www.drupal.org/project/session_limit . Конечно четкое разграничение прав на сайте, проверить все, не использовать php filter.
Вот такой сканер есть https://www.drupal.org/project/clamav
Если заразились, то можно пройтись, типа:

Общие действия drupal 7 из консоли под ssh root в папке сайта:
1
rm -rf misc scripts includes modules themes profiles
потом распаковываем aрхив D7
2
index.php может быть только в корне поэтому
find */ -type f -name "index.php" -delete
3
В папке файлов не должно быть *.php
find sites/*/files/ -type f -name "*.php" -delete
4
На settings ставим 444
chmod 444 sites/*/settings.php

Можно так же проверить и потом если нужно добавить -delete
find */ -type f -name ".*.ico"
find */ -type f -name "*.php" -exec grep -i -l -H "\(\$_COOKIE\,\ \$_POST\)" {} \;
find -type f -name "*.ico" -exec grep -i -l -H "stream_context_create\ " {} \;

Аватар пользователя fairrandir
fairrandir 1 месяц назад
sas@drupal.org написал:
rm -rf misc scripts includes modules themes profiles
sas@drupal.org написал:
index.php может быть только в корне
sas@drupal.org написал:
В папке файлов не должно быть *.php

Вот вообще не факт, ни один из пунктов. И раньше об этом уже писали.

Аватар пользователя gun_dose
gun_dose 1 месяц назад
1
fairrandir написал:
Вот вообще не факт, ни один из пунктов. И раньше об этом уже писали.

Вот вообще факт в 99% случаев. Тем более для семёрки. К слову в семёрке файлов с расширением php не так уж много. Большинство - это .tpl.php и .api.php, поэтому часто можно вывести полный список .php-файлов из всего проекта и пробежать глазами.

Аватар пользователя Ilya_
Ilya_ 3 недели назад

Спасибо, откатил к бэкапу, удалил весь движок + контриб модули. Закачал все в орга.
Папка sites чиста. Вирусов не нашел. Права на папки и файлы как нужно.

Как думаете, стоит ли блокировать опасных сканеров уязвимостей?
как здесь https://www.nuevolab.com/blog/archives/380
Спасибо.