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

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

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

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 • восстанавливаем файлы ядра, ориентируясь

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