Если есть доступ к 1 сайту на сервере – как получить к остальным?

Last update: 22 Квітня, 2023

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("'", "&#8243;", "$line");
   $line = str_replace('"', "&#8243;", "$line");
   $getinfo .= $line.'<br/>';
}
echo $getinfo;

5. Полученную информацию с паролями следует сохранить где-то у себя для момента проведения взаиморасчетов. Лучше собрать данные нескольких сайтов, т.к. возможна ситуация, что сайт к которому вы хитростью получили доступ будет удален или перенесен. Если работа не была оплачена – не рекомендую никогда угрожать в письменной или устной форме. Лучше сломать, а потом за деньги помочь починить “а-ля” добрый мастер на все руки.

Как получить доступ к сайту, имея данные доступов в БД?

  1. Подключаемся к БД.
  2. Ищем данные администраторов, меняем у всех e-mail на созданный вами (чтобы никто не получил сведения о смене пароля).
  3. Воспользовавшись формой сброса пароля – сбрасываем пароль кого-либо из администраторов, или создаем нового администратора, если мы не хотим чтобы наши действия были замечены (что весьма вероятно, если у кого-то пропадут доступы к сайту).
  4. По желанию возвращаем старые e-mail в БД другим администраторам.
  5. У вас появился доступ к редактору темы этого сайта, а значит и возможность выполнять php-команды на сервере.

Что дальше? Я вижу три пути:

  1. Призвать человека к благоразумию и попросить оплатить работу.
  2. Наказать человека, напакостив ему (к примеру, разместив вредоносный код).
  3. Продать данные доступа к сайтам, компенсируя таким образом убытки.