Моя цель - получить доступ к логам вебсервера (которые находятся вне корневой директории сайта), чтобы понять причину глюков в работе приложения. В корне сайта валяется файлик error_log, но его содерживое не содержит ничего полезного, его происходит ошибка уровнем выше, чем интерпретатор PHP.
Имея FTP доступ, я заливаю phpshell в корень сайта и проверяю под каким пользователем сервер выполняет php скрипты.
phpshell> id uid=500(examplec) gid=500(examplec) groups=500(examplec)
Если имя пользователя состоит из 8 первых символов из названия домена, то это косвенно указывает на стандартную конфигурацию WHM/cPanel, а следовательно интерпретатор PHP на этом сайте работает в режиме CGI/FastCGI. А еще это означает, что мы имеем возможность изменять файлы, которые принадлежат пользователю examplec.
Проверяем, имеет ли этот пользователь валидный shell
phpshell> grep '^examplec:' /etc/passwd examplec:x:500:500::/home/examplec:/bin/bash
Наличие /bin/bash в последнем поле подтверждает, что у пользователя examplec есть рабочий шелл. В принципе уже сейчас можно логиниться через SSH на examplec@example.com, но я не знаю пароль пользователя examplec (у меня есть только пароль от виртуального аккаунта supportuser@example.com).
Чтобы попасть на сервер, мне нужно воспользоваться возможностью логиниться через публичный ключ SSH (я еще не встречал сервер, где бы была отключена такая возможность). Для этого я создаю в домашней директории пользователя директорию .ssh и скачиваю в нее свой открытый ключ SSH.
phpshell> mkdir ~/.ssh phpshell> wget -q -O ~/.ssh/authorized_keys http://sharedsite.com/my-ssh-public-key
Вот теперь можно логиниться через SSH.
Андрей, вариант конечно хороший, а что делать если чтение доступно только для владельца логов (root) ?
ОтветитьУдалитьК сожалению никаких простых, а главное законных способов сделать это, мне неизвестно. В моей ситуации пришлось ждать, пока клиент пришлет root доступ.
Удалить