Как-то, во время прогулок по просторам Интернета, я наткнулся на весьма любопытный скрипт. Назывался он «CGI-Telnet». Это было ни что иное, как интерпретатор
команд операционной системы. Почитал исходник, головой покачал, языком поцокал и со словами «Авось, пригодится…» положил к себе на винт в далёкую папку. На этом бы дело и закончилось, если
бы не статья by Калайчев Феликс: «Примитивный дефейс«. Прочитав её, я вспомнил, что подобный скрипт где-то у меня валялся. Нашёл, прикрутил к своему серверу, поюзал… И вдруг меня посещает идея… Решил проверить… Была у меня шеллка платная. Предоставлялся telnet-доступ и хостинг. Залогинился я туда, запустил Midnight Commander и пошёл шарить по директориям пользователей. И вправду, у некоторых пользователей в папке public_html нашлись файлы с разрешениями rwx-rwx-rwx… Одного такого файла было достаточно, чтобы пользователь оказался порутанным. Как? Очень просто… Рассмотрим два варианта атаки:

Вариант 1

Необходимо:

  • Telnet или SSH доступ к аккаунту.
  • Возможность хоститься там же.
  • Нерадивый пользователь, у которого открыт доступ на public_html и один файл в папке public_html c разрешениями rwx-rwx-rwx (777).
  • CGI/PHP Shell (Неплохой шелл на perl можно взять тут:
    http://www.rohitab.com/cgiscripts/cgitelnet.html)

Цель атаки:

Угон аккаунта атакуемого пользователя.

Подготовка:

Подключаемся к своему аккаунту по ФТП и заливаем туда CGI/PHP шелл. Проверяем, может ли он работать на данном сервере. Скорей
всего сможет, но всякое бывает… Если работает, то отлично. Теперь проверим, есть ли атакуемый пользователь в системе (finger ) Если есть, ждём… Нет? Всё ОК, подготовка на этом закончена.

Атака:

Запускаем MC (на нормальном шелле он должен быть! Но его запуск опционален…) Идём в папку юзера (к примеру, /home/users/pupkin/) Даже, если мы там ничего не видим, это не значит, что там ничего нет 😉 Набираем cd public_html (или cd <чего-то-там>, это зависит от настроек сервера, но чаще всего используется именно
public_html). Находим там файл с разрешениями 777(rwx-rwx-rwx). Если на сервере разрешён запуск cgi и php из любых папок, то всё ОК, если нет, то придётся искать rwx-rwx-rwx файл в cgi-bin, что несколько усложняет ситуацию. В общем, считаем, что файл найден. Теперь открываем его текстовым редактором (я использовал встроенный редактор MC, но подойдёт любой). Удаляем всё, что было в файле. Выбираем «Paste from file» и прописываем путь к файлу CGI/PHP шелла, который накануне залили к себе. Сохраняем файл (у него же rwx для всех, поэтому он сохранится без проблем) Если его расширение не .cgi/.pl/.php, то переименовываем (опять же, rwx позволит и это…) Теперь стучимся к файлу через веб. Вводим пароль, который был заранее указан в файле и получаем возможность выполнять команды на удалённой системе. Теперь можно выполнить passwd, и аккаунт юзера станет твоим… Вот так-то!..

Вариант 2

Необходимо:
См. Вариант 1

Цель атаки:

Незаметное копирование/просмотр/запись файлов, доступных только атакуемому пользователю; незаметный запуск программ от лица атакуемого пользователя.

Подготовка:

Проводим подготовку, описанную в первом варианте. Кроме этого, идём в директорию, где лежит файл, через который мы будем атаковать и копируем его (к себе в папку или просто создаём
backup).

Атака:

Атака производится идентично первому варианту, но вместо passwd выполняем ls, chdir и копирование интересующих файлов. Можно ещё записать пару бинарников или скриптов и привязать их к cron’у… А можно задефейсить странички и файлы с разрешениями 7XX Если не объяснить пользователю, как это было сделано, он долго будет ломать голову. А «особо продвинутые» спишут всё на root’а 🙂

Заметание следов:

Именно в заметании следов и есть кардинальное отличие от первого варианта. А заметание следов производим в обратной последовательности атаке. Берём инфу из бэкапа, созданного при подготовке и записываем её обратно (в тот файл, через который ломали) Также нужно переименовать файл в исходное имя, если его переименовывали при атаке. Также нужно вытереть бэкап. Если он лежит в директории пользователя, то чтобы не было видно способа или факта взлома. Если в твоей директории, то тем более (улика). Также желательно удалить со своего аккаунта CGI/PHP шелл, через который проводился взлом. Разве что в серверных логах останется инфа о операциях с файлами. Но если у порутанного пользователя хватит прав, чтобы почистить логи, то и это не проблема…

В чём же фишка:

А фишка в том, что скрипты сервер запускает с правами владельца. И, раз мы переписываем файл пользователя, то владельцем НАШЕГО скрипта становится АТАКУЕМЫЙ ПОЛЬЗОВАТЕЛЬ.

Как защититься:

Очень просто 🙂 Для чего тебе нужны разрешения rwx-rwx-rwx на файлах, да, к тому же, в public_html?.. На всех твоих файлах и папках должны стоять rwx——- (т.е. доступ только для тебя) На public_html — rwx-r-x-r-x (всем, кроме тебя, только чтение и запуск) на файлах в public_html — rwx-r—r— (только чтение) на исполняемых файлах (cgi/php/asp/shtml/exe) в public_html — rwx-r-x-r-x (чтение+выполнение). При таком раскладе через описанную мной дырку тебя не взломают. Как говорил мой знакомый админ, «Не бывает дырявого и кривого софта, бывают дырявые головы и кривые руки» 🙂

И помни, если ты даже здесь и был, то читал только раздел «Как защититься». А я только его и писал 😉 Ищи 777 и будет тебе джекпот!..

Оставить мнение

Check Also

Охота на Енота. Как вирмейкер спалился сам и спалил заказчиков

В большинстве случаев разоблачения происходят потому, что вирмейкер где-то фундаментально …