Если есть доступ к 1 сайту на сервере – как получить к остальным?
Category: PHP code examples, Security
Исходные данные: У нас есть ограниченный (только в папку с определенным сайтом) FTP-доступ, или доступ к панели Администратора cms WordPress. Нужно узнать какие сайты еще есть в этом хостинг-аккаунте, и получить к каким-либо из них доступ.
Уточнения:
- Информацию излагаю для того, чтобы помочь фрилансерам-новичкам защитить себя от нечестных Заказчиков.
- Сведения из статьи могут оказаться бесполезными, если на сервере правильно прописаны настройки (что является редкостью).
- Логика действий будет справедлива и в случае с другими cms.
Инструкция по получению доступов к сайтам на сервере
1. Нужно определить абсолютный путь к выполняемому файлу (путь к сайту сайту, к которому у нас есть доступ):
echo $_SERVER['DOCUMENT_ROOT'];
2. Редактируем представленный ниже код в соответствии с полученной информацией и просматриваем содержимое директории, в которой потенциально размещены все сайты. Обычно это директория с папками, названия которых являются доменными именами. Код:
$dir = '/home/name'; $files = scandir($dir, 1); foreach ($files as $value) { $res .= $value.'<br/>'; } echo $res;
Редактировать в коде выше следует первую строку, содержащую в качестве примера /home/name.
3. Сохранив информацию о имеющихся доменах, мы получаем возможность узнать на какой cms эти сайты путем проверки в браузере, или отредактировав код из пункта (2) и просмотрев имеющиеся внутри файлы.
4. Если выявлен сайт на WordPress – прописываем путь к файлу с паролями и просматриваем его:
$file_handle = fopen("/home/name/site.ru/www/wp-config.php", "r"); while (!feof($file_handle)) { $line = fgets($file_handle); $line = str_replace("'", "″", "$line"); $line = str_replace('"', "″", "$line"); $getinfo .= $line.'<br/>'; } echo $getinfo;
5. Полученную информацию с паролями следует сохранить где-то у себя для момента проведения взаиморасчетов. Лучше собрать данные нескольких сайтов, т.к. возможна ситуация, что сайт к которому вы хитростью получили доступ будет удален или перенесен. Если работа не была оплачена – не рекомендую никогда угрожать в письменной или устной форме. Лучше сломать, а потом за деньги помочь починить “а-ля” добрый мастер на все руки.
Как получить доступ к сайту, имея данные доступов в БД?
- Подключаемся к БД.
- Ищем данные администраторов, меняем у всех e-mail на созданный вами (чтобы никто не получил сведения о смене пароля).
- Воспользовавшись формой сброса пароля – сбрасываем пароль кого-либо из администраторов, или создаем нового администратора, если мы не хотим чтобы наши действия были замечены (что весьма вероятно, если у кого-то пропадут доступы к сайту).
- По желанию возвращаем старые e-mail в БД другим администраторам.
- У вас появился доступ к редактору темы этого сайта, а значит и возможность выполнять php-команды на сервере.
Что дальше? Я вижу три пути:
- Призвать человека к благоразумию и попросить оплатить работу.
- Наказать человека, напакостив ему (к примеру, разместив вредоносный код).
- Продать данные доступа к сайтам, компенсируя таким образом убытки.