Электронная библиотека

Xakep

Xakep

Юниксоид

Xakep, номер #013, стр. 013-056-1


Рубрику ведут:

Delta (delta@slackware.ru)

Mal (mal@xakep.ru)

Как получить шелл на Юниксовом сервере

Существует огромное количество хостингов, которые, в целях безопасности или экономии ресурсов, не дают пользователям шелл-доступ, в большинстве случаев также на твою директорию ставится chroot (то есть ты не можешь подняться выше своего домашнего каталога), и это всегда очень бесит. Но эти самые хостинги чаще всего дают тебе свою личную cgi-bin папку, тем самым ставя свою безопасность под угрозу. В этой статье я расскажу тебе, как, используя наличие cgi-bin директории и знаний языка Perl, утереть нос этим засранцам и получить желаемый шелл и доступ к другим директориям.

Perl - язык обработки текстов, или Practical Extraction and Report Language, по стилю очень напоминает Си. Следовательно, если ты уже программировал на Си, тебе будет легче научиться Perl'у. Одной из основных особенностей языка Perl является то, что данные в нем не имеют типов. Программы, написанные на языке Perl, не могут быть откомпилированы, а выполняются через интерпретатор, который в данный момент доступен почти для всех платформ. Также хочется сказать несколько слов об авторе - Ларри Уолле (Larry Wall), который 10 лет бесплатно работал над созданием этого языка и в итоге выиграл премию журнала PCMagazine в 1998 году. А кто с ним соперничал? Продукт Microsoft, Visual Studio. Так что делай выводы.

Get started

Для начала то, с чего начинают учить все языки hello world, условия, циклы, массивы...

1) Тривиальное 'Hello world!' на языке perl будет выглядеть так:

#!/usr/bin/perl #Путь к интерпретатору. Набери 'whereis perl'

print "hello world!\n"; #вывод строки, \n означает новую строку

Запустить программу ты можешь, поставив на нее chmod 755 и набрав ./my.pl, где my.pl - имя программы. Или набрав perl -x my.pl, если у тебя нет шелла, то закинув программу на сервер в папку cgi-bin и поставив на нее chmod 755, набрать ее адрес в броузере. Например, www.satanium.ru/cgi-bin/my.pl

2) В Perl'e существуют несколько типов переменных:

Скаляры могут содержать цифры и текст, обозначаются $имя переменной. Например, $a = 1;

Массивы обозначаются @имя массива, он может использоваться целиком,

а может обращаться к какому-либо элементу через индекс.

Например: $evil[0]=1; присваиваем первому элементу массива значение 1, затем

выводим его на экран print "Первый элемент массива evil=$evil[0]\n";

3) Условия выглядят так же, как и в Си. Вот синтаксис их написания:

if(условия)

{действие1;}

elseif (условие)

{действие2;}

else

{действие3;}

Если первое условие выполняется, то производится действие 1, если второе условие выполняется, то производится действие 2, если же не выполняется ни одно из условий, то выполняется действие 3.

Вот пример:

if($i==666)

{print "666 rox da brain\n\a";}

elseif($i==13)

{print "ohhh satan will eat ur soul\n\a";}

else {print "Иди отсюда!\n\a\a\a\a";}

4) В языке Perl существует несколько типов циклов: for, while, foreach и until.

Синтаксис цикла for выглядит так:

For (начальные условия; условия окончания цикла; выполнения действия после каждого прохода)

Содержание  Вперед на стр. 013-056-2