Бытует мнение, что взлом это творческий процесс и привязывать его к каким либо алгоритмам не следует. Но на самом деле то не совсем так. Общий порядок действий все таки есть. И я постараюсь рассказать о нем. Так же я буду приводить ссылки по теме.
Итак, у нас есть удаленный сервер и адрес сайта который хоститься на этом сервере. Задача - получить права рут на сервере.
Для начала нам нужно получить хоть какие нибудь права на удаленном сервере. Т.е. нам нужно получить доступ к выполнению команд.
Можно идти по 2 путям.
1 - Рассматривать сайты которые хостятся на сервере и пытаться залить Shell.
2 - Напрямую сканировать сервер и пытаться найти уязвимости у сервисах которые запущены на нем.

Так же можно использовать СИ, но это не входит в рамки данной статьи.

Пожалуй начнем по порядку.

Атака на скрипты сайта.
Итак, нам нужно залить шелл на через уязвимость в скриптах сайта.
Здесь тоже можно поступать по-разному - либо самостоятельно искать уязвимости на сайте, либо определить название и версию скриптов, отправиться на багтрак и там поискать информацию о дырах в данных скриптах. Второй случай, думаю понятен. Например, вы приходите на сайт и видите в низу надпись WordPress XX.XX где ХХ.ХХ - версия движка. После вы идете например на www.securitylab.ru или на www.milw0rm.com там ищете сплоиты или информацию по уязвимостях в данной версии. Использую эту информацию или сплоиты вы сможете залить шелл на сервер тем самым, получив права на выполнение команд. На самом деле багтраков море, достаточно только поискать.
Теперь разберем второй случай - под данную версию движка вы не смогли найти ничего. Теперь придется рассчитывать только на себя. Сначала нужно вручную проверить параметры сайта на фильтрацию т.е. проверить сайт на такие уязвимости, как PHP include, SQL inlection, XSS. С помощью первых двух вы сможете залить шелл, а с помощью XSS сможете украсть куки админа. Что бы не размусоливать эту тему предлагаю вам ознакомиться с ниже приведенными ссылками:

SQL injection -

-----------------------------------------------------------------------
http://ru.wikipedia.org/wiki/%D0%92%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D0%B5_SQL-%D0%BA%D0%BE%D0%B4%D0%B0
http://www.securitylab.ru/contest/212099.php
http://www.xakep.ru/post/19146/default.asp
http://www.whatis.ru/razn/razn13.shtml
------------------------------------------------------------------------


PHP include

-----------------------------------------------------------------------
http://www.izcity.com/data/security/article1001.htm
-----------------------------------------------------------------------


XSS

-----------------------------------------------------------------------
http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B8%D0%BD%D0%B3
http://www.hackzona.ru/hz.php?name=News&file=article&sid=5005&mode=&order=0&thold=0
-----------------------------------------------------------------------


Кроме того, можно скачать себе исходные коды скриптов сайта (если они публичные) и разобрать его по косточкам на известные ошибки.

-----------------------------------------------------------------------
http://www.xakep.ru/post/43786/default.asp
http://www.dreamcheats.ru/t3779.html
https://forum.antichat.ru/showthread.php?t=49184
-----------------------------------------------------------------------

В обще есть много хитростей при атаке на веб-сайт, советую поискать побольше информации в поисковике.

Предположим у тебя получилось залить шелл, ты можешь выполнять команды. На этом пока остановимся и разберем, как еще можно получить такой доступ.

Сканирование и использование эксплоитов.
Сервер может выполнять разные функции - например, транспорт файлов (FTP) или отправка и прием почты (POP3, SMPT) и так далее.
Что бы выполнять эти функции нужный специальные программы - сервисы, которые будут висеть на портах выполнять свои функции.
Например, на сервере открыт 21 порт - этот порт использует протокол FTP. Раз порт открыт значит висит какой то сервис. Например, sendmail.
Для определения открытых портов мы и будет сканировать сервер.
Советую взять сканнер nmap.

$nmap www.site.com

Здесь мы в параметре передали адрес сайта, который присутствует на сервере (хостится).
Предположим, что сканер показал нам, что на сервере открыт 21 порт. На самом деле отрытых портов будет, но для примера возьмем этот.
Теперь нам нужно узнать имя и версию сервиса который тут висит. Для этого можно использовать telnet:

$telnet www.site.com 21

в ответ сервер выдаст нам приветствие и скорее всего имя и версию сервиса.

Сразу же можно определить ОС:

$nmap www.site.com -O

Замечу, что для выполнения этой команды вы должны быть под root.
Всю собранную информацию нужно записать куда-нибудь.
Теперь можно найти удаленный эксплоит для данной версии FTP демона.
Но не стоит тут же искать сплоиты, возомжно проникнуть в систему можно и без них.
Например, в sendmail есть дыра, через которую можно отправить себе файл с паролями.
Достаточно поискать в гугле уязвимости для данной версии. Не стоит так же забывать про ядро системы (версию мы узнали при сканировании)
Ну предположим, что ничего не проктило, теперь череда сплоитов.
Возможно, тебе повезет, и ты сразу найдешь эксплоит под данную версию демона.
Если так, то его нужно скомпилировать:

$gcc -o spoit /home/stranger/sploit.c

Но скорее всего будет куча ошибок, которые придется исправлять.
Для этого нужно знать С++. Если сплоит распространен в сети, то ты возможно сможешь найти уже скомилированую версию, но как правило удаленных эксплоитов не так много. Если удалось скомпилировать, то смело запускай. Не забудь, что ему нужно передать параметры. Обычно эксплоит сам говорит, что нужно вписать.
Вот нескольо ссылок про них:
--------------------------------------------------------------
http://damagelab.org/index.php?showtopic=7538
http://www.winzone.ru/articles/286/
-------------------------------------------------------------

В лучшем случае ты получишь права юзера, от которого был запущен данный демон.

Повышения привилегий.
Итак ты имеешь права, возможно, что ты уже под рутом (смотря каким способом ты проникал в систему). Для того что бы узнать свои права введи

$id

uid=xxx(**********) gid=xxx(********)

Если xxx равны 0, то вы под рутом, в противном случае нужно еще попотеть.
Итак нужно поднять права так чтобы uid=0 gid=0,
стоит опять вспомнить про эксплоиты - для начала изучи доступные дириктории, возможно ты найдешь в них какие либо приложения, для этих приложений нужно найти сплоит и залить на сервер, ну и запустить впоследстии, где искать ты знаешь. На самом деле есть много способов как подняться. Но ведь это всего лишь алгоритм.
Да и взлом - это творческий процесс)