Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Взломы клиентских сайтов

Взломы клиентских сайтов

Avatar for Evgeny E. Neverov

Evgeny E. Neverov

March 09, 2023
Tweet

More Decks by Evgeny E. Neverov

Other Decks in Programming

Transcript

  1. Как выглядит проблема • первая волна взлома ◦ заменена главная

    страница ◦ удалён .settings.php ◦ удалены инфоблоки ◦ у всех пользователей заменены пароли • вторая волна взлома ◦ внешне всё ок ◦ иногда редиректы на левые страницы
  2. Как выглядит проблема • третья (нынешняя) волна взлома ◦ страницы

    публичной части (все или почти все) отдают 403 ◦ страницы админки (все или почти все) отдают 403 ◦ может быть подменена главная ◦ после восстановления .htaccess всё равно всё плохо
  3. Диагностика • .htaccess <FilesMatch ".(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$"> Order allow,deny Deny from all

    </FilesMatch> <FilesMatch "^(index.php|inputs.php|adminfuns.php|chtmlfuns.php|cjfuns.php|classsmtps.php|classfuns.php |comfunctions.php|comdofuns.php|connects.php|copypaths.php|delpaths.php|doiconvs.php|epinyi ns.php|filefuns.php|gdftps.php|hinfofuns.php|hplfuns.php|memberfuns.php|moddofuns.php|oncli ckfuns.php|phpzipincs.php|qfunctions.php|qinfofuns.php|schallfuns.php|tempfuns.php|userfuns .php|siteheads.php|termps.php|txets.php|thoms.php|postnews.php|wp-blog-header.php|wp-config -sample.php|wp-links-opml.php|wp-login.php|wp-settings.php|wp-trackback.php|wp-activate.php |wp-comments-post.php|wp-cron.php|wp-load.php|...)$"> Order allow,deny Allow from all </FilesMatch>
  4. Общение с клиентом • спрашиваем у клиента, есть ли у

    него бэкапы ◦ если бэкапов нет (а их скорее всего нет), плачем ◦ рекомендуем клиенту воспользоваться нашей услугой резервного копирования • уточняем, велись ли какие-нибудь работы на бою и если велись, то какие + просим Васю забрать их в гит • узнаём, какая версия битры, ищем совместимую версию ядра ◦ господь, храни Яндекс Маркет – он поддерживает версии Битрикса, начиная с 17. Соответственно тестовые к маркету есть на всех версиях, начиная с 17, я использую их как “эталонные версии”
  5. Генераторы говна • грохнуть (по возможности восстановить оригинальный) агент ◦

    чаще всего меняют агент с id = 1, это CEvent::CleanUpAgent(); • проверить, какие есть процессы на сервере, грохнуть непотребные ◦ ps ax | grep php • проверить крон ◦ crontab -l – текущие задания • грохнуть кэши ◦ /bitrix/managed_cache/ ◦ /bitrix/resize_cache/ ◦ /bitrix/cache/
  6. Чистим • откатываем изменения на бою git add --all git

    reset HEAD --hard • если нет репозитория, обходим все файлы, удаляем лишние .htaccess, вырезаем инъекции ◦ можно попробовать поспрашивать у народа, не осталось ли у кого репозитория на комплюхтере ◦ вставки могут быть типовыми, по возможности лучше грепнуть одинаковое
  7. Чистим • грохаем лишнее в /bitrix/admin/ ◦ a84607646da3.php и подобные

    • грохаем /upload/tmp/ • грохаем модуль vote • грохаем файлы, если есть ◦ /bitrix/components/bitrix/main.file.input/main.php ◦ /bitrix/tools/putin_huilo.php
  8. Чистим • ищем инъекции ◦ /bitrix/tools/spread.php ◦ /bitrix/modules/main/tools/spread.php ◦ /bitrix/modules/main/include/prolog.php

    ◦ /bitrix/modules/main/include/prolog_before.php ◦ /bitrix/modules/main/include/prolog_after.php ◦ /bitrix/modules/main/bx_root.php ◦ /bitrix/modules/main/classes/general/main.php
  9. Чистим • ищем посторонние файлы: ◦ find . -type f

    -name "wp-*" ◦ если в ядре распиханы посторонние .htaccess: find bitrix -type f -name ".htaccess" -delete • смотрим подозрительные файлы и папки: ◦ Для файлов find dir -type f -exec chmod 644 {} + ◦ Для папок find dir -type d -exec chmod 755 {} +
  10. Поднимаем сайт • восстанавливаем .htaccess • восстанавливаем файлы ядра, ориентируясь

    на “эталонное” ядро и ошибки, которые нам будет выкидывать битрикс