Можно ли вручную вызвать функцию завершения zsh?

Как человек, у которого взломали фронт-энд на базе PHP, внедрили в него код и попытались самостоятельно очистить внедренный код (после восстановления сайта из чистого tarball фреймворка и модификаций, которые я сделал), позвольте мне дать некоторые реальные знания и ответы: единственный реальный ответ для исправления этого - начать все сначала. Попытка очистить код будет ИСКЛЮЧИТЕЛЬНО сложной. Скорее всего, он встроен повсюду, и вы не сможете найти его весь. Также вполне вероятно, что ваша система тоже скомпрометирована, не только PHP, но и сама система может иметь вредоносное программное обеспечение, загруженное через внедренный и обфусцированный код.

Проверенное и верное решение, которое также принято считать единственным разумным вариантом в подобных ситуациях, - это Nuke It From Orbit* и начать заново с чистых резервных копий (или кода с контролем версий). Не только код сайта, но и сам сервер. Код, внедренный в PHP-сайт, может быть запущен чем угодно - от простого сканирования портов до установки полноценного вредоносного ПО на саму ОС, вплоть до руткитов. Поэтому начните сначала, стерев сервер, на котором он находится, уничтожьте кодовую базу сайта и восстановите его из чистого кода с контролем версий или последней чистой резервной копии, которая у вас есть.

(TL;DR, не пытайтесь удалить весь внедренный код, просто начните заново на чистом сервере и восстановитесь из резервных копий или данных репозитория Version Controlled)

Обратите внимание, что я также взломал свой собственный сайт в частной лаборатории и доказал, что обфусцированный код может быть использован для загрузки вредоносного ПО на сервер хоста и на клиентов, посещающих зараженный сервер... вот почему вы должны уничтожить среду и начать заново с чистых резервных копий. Затем, впоследствии, залатайте дыру, которая использовалась для внедрения кода на сайт.

* Если вы не знаете, что это значит, то "Nuke it from orbit" - это разговорный термин, который в основном означает отключение сайта, выключение сервера, стирание всего жесткого диска и начало работы со свежей установки сервера и кодовой базы сайта.

3
11.08.2016, 03:12
2 ответа

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

Вот что я сделал, чтобы связать функцию завершения _man с комбинацией клавиш, чтобы ее можно было вызывать вручную.

Определите функцию-оболочку, которая устанавливает необходимые параметры.

_man_autonomous () {
  eval $_comp_setup
  _man "$@"
}

Зарегистрируйте новый виджет в строковом редакторе:

zle -C complete-man expand-or-complete _man_autonomous

привяжите виджет к Ctrl + T

bindkey '^T' complete-man

Существует пример этого метода с использованием _files в FAQ по zsh .

2
27.01.2020, 21:26

Я не уверен, почему zsh не предоставляет эту функциональность ... К счастью, кто-то сделал взлом: https://github.com/Valodim/zsh-capture-completion

$ capture.zsh 'man gr'
grep
<snip>
groff
<snip>
0
27.01.2020, 21:26

Теги

Похожие вопросы